Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
您好!
我使用用于 Sitara 的 SYBIOS 的 Linux/gcc 编译工程。
最近 、我不得不将堆大小增加到24MB、并注意到堆区域包含在二进制文件中、因此也增长到了24MB 以上。
我使用的工具链:arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (发布)
这是我的堆配置:
VAR mainHeap = HeapMem.create() mainHeap.size = 25165824; mainHeap.sectionName =".biosheap"; Memory.defaultHeapInstance = mainHeap; Program.sectMap[".c_int00"]= new Program.SectionSpec (); Program.sectMap[".c_int00"].loadAddress = 0x8000000; Program.sectMap[".c_int00"].runAddress = 0x8000000; Program.sectMap[".biosheap"]= new Program.SectionSpec (); Program.sectMap[".biosheap"].runSegment ="DDR2"
Program.sectMap[".biosheap"].type ="空载";
它会生成 linker.cmd 段:
biosheap (NoLoad):{*(.biosheap)}> DDR2
objdump 显示:
尺寸 VMA LMA 文件离开 Algn .biosheap 01800000 80027040 80027040 00037040 2** 3. ALloc .bss 0002f748 81863930 81863930 0187392c 2**3. 分配
尺寸输出:
文本 数据 BSS 十进制 十六进制
231373 44892 25507656 25783921 1896e71
得到的二进制大小:25573676
看起来、段类型"NoLoad"被忽略。 将其更改为"DSECT"也不起作用。
有人可以帮助我解决这个问题吗?
提前感谢!