“Thread:SysBIOS”中讨论的其它部件
工具/软件:TI C/C++编译器
您好,
我的配置如下:
- Sitara ARM3359
-Code Composer Studio版本CCS 7.1 .........0
-SYS/BIOS 6.45 .01.29 实时操作系统
- XDC工具3.32。00.06
-编译器GNU v 4.9 3 (Linaro)
-- SysBIOS SDK 2.1 .3.2
*为了监视信息,我将数据存储在由new()指令分配的数组中(此大小:0x100万字节)。
如您所知,new()指令在堆段中分配对象。
*我创建一个包含多个部分的平台,其中包括堆的部分:DDR3Heap部分(RAM末尾的0x8100万):
*在am335x_app.cfg文件中,我使用以下指令初始化堆:
bios.heapSize = 0x100万;
bios.heapSection ="systemHeap";
Program.sectMap["systemHeap"]="DDR3Heap";
*可以在映射文件中看到结果:
系统堆 0x8100万 0x100万 D:\projects\Pilotage\6_Products\CNumDsp2015\src\AxisDriver\AM335x_debug\configPkg\package\config\AM335x_app_pa8fg.oa8fg.
0x8100万 ti_SysBIOS_States_HeapMem_Instance_State_0_buf__A
*我的问题是生成的二进制文件(AxisDriver_SPI.bin)的大小异常增加(34 MB而不是900Kb)。
经过多次试验后,我发现此大小取决于:
- DDR3Slow结束和DDR3Heap开始之间的偏移(0x8001000000 -(0x800E5000+ 0x9000))。
-DDR3Heap部分的大小(0x100万)。
我用这个文件来编程Sitara,不可能对它进行编程,使它变慢。
我不明白为什么在数据空间(平台窗口)中配置的堆 会影响二进制文件。
是否有强制链接程序从链接程序映射中删除DDr3Heap部分的选项?
感谢你的帮助。
JMV
