最大化LabVIEW for ARM目标的堆内存



主要软件:
主要软件版本: 2009
主要软件修正版本: N/A
次要软件: N/A

问题:
我使用NI用于ARM微控制器的LabVIEW嵌入式模块(LabVIEW for ARM),我想把微控制器目标的可用堆内存设置为最大。我如何实现?


解答: LabVIEW 2010+

你可以通过进入应用程序生成规范的属性,选择Advanced Compiling Options类,确认Optimize Heap Size勾选框被打钩,来实现最大化堆大小。


当生成应用程序时,将会显示一个报告。从报告中你可以看到有多少内存被用作堆,以及它被最大化至使用所有可用的内存。

LabVIEW 2009 (and older)

你可以通过以下步骤来实现最大化堆内存量:
  1. 和平常的方式一样,生成你的工程、VI以及嵌入式程序(在应用程序生成规范下面)。



  2. 在项目浏览器窗口,右键单击目标并选择Show Keil uVision。



  3. 右键单击生成的应用,选择Rebuild All。


  4. 在Keil uVision中,右键单击LabVIEW文件夹,选择Open .\LabVIEW.Map。



  5. 定位现在内存中可用于堆的容量。
    在LabVIEW.Map文件中,定位以“Execution Region RW_IRAM1 (Base: 0xXXXXXXXX, Size: 0xXXXXXXXX, Max: 0xXXXXXXXX,”开头并包含如下图中对“HEAP”声明的代码段(接近文件的底部)。



    .................


  6. 计算有多少可用的内存
    从上面的信息中(在LabVIEW.Map文件中)可以注意到,堆存放的实际内存量(“Size”)为0x00005a78字节。同样可以注意到内存的最大可用量(“Max”)为0x00008000字节。两个值的差(Max - Size)为0x00002588字节。(0x00008000 - 0x00005a78 = 0x00002588)。
     0x00002588字节内存没有被使用,你可以给堆内存增加相应的数量。

  7. Keil uVision中,选择你的处理器的.s文件(例子中是LPC2300.s)。


  8. 在汇编代码中找出以关键词“Heap_Size”开头的行。在这行中声明了堆可用的内存量。



  9. 将初始堆内存声明的容量加上没有使用的内存的量(上面第六步计算得到)。在这个例子中,0x00004000 + 0x00002588 = 0x00006588。如果将新堆大小声明为0x00006588字节,那么所有的没有使用的内存将可供堆使用。



  10. 选择File>>Save。

  11. 在项目浏览器窗口,右键单击生成的应用,选择Rebuild All。



  12. 右键单击生成的应用,选择Run。


相关链接: NI LabVIEW Embedded Module for ARM Microcontrollers
KnowledgeBase 4TLCSB09: Why does my ARM Application Crash when Guard Code is Turned Off?
KnowledgeBase 4QT79R6E: LabVIEW Embedded Module for ARM Microcontrollers 1.1 Known Issues and Readme
KnowledgeBase 4W0H18XY: Why Does My ARM Code Continually Pause or Generate a Runtime Error?

附件:





报告日期: 01/18/2010
最近更新: 05/23/2013
文档编号: 55HBF9XY