Other Parts Discussed in Thread: TM4C1294NCZAD
我们的设置:
编译器: TI ARM 编译器 v20.2.6.LTS。
CCS 版本:11.2.
MCU: TM4C1294NCZAD
电路板: EK-TM4C129-XL
链接器会根据大小(首先放置最大的段、依此类推)将段放置在存储器中、而不是按照链接器命令文件中指定的顺序放置段。
链接器命令文件如下所示:
存储器
{
闪存(RX):origin = 0x00000000,length = 0x00100000
SRAM (rwx):origin = 0x20000000,length = 0x00040000
}
--heap_size=0x10000
--stack_size=0x800
/*内存中的段分配*/
部分
{
.intvecs :> 0x00000000
.text : > FLASH
.const : > FLASH
.cinit : >闪存
.pinit : > FLASH
init_array:> FLASH
.vtable :>0x20000000
.data : > SRAM
.bss : > SRAM
.sysmem :> SRAM
.stack : > SRAM (高)
}
/*定义栈顶将由初始化例程使用*/
__STACK_TOP =__STACK +__STACK_SIZE;
映射文件中的输出如下所示:
段分配映射
运行 origin load origin length init length atts members
------ ------ ------ ------ ---- ----
20000000 20000000 00010678 00000000 Rw-
20000000 20000000 0000026c 00000000 rw-.vtable
20000270 20000270 00010000 00000000 rw-.sysmem
20010270 20010270 0000021f 00000000 rw-.data
20010490 20010490 000001e8 00000000 rw-.bss
2003f800 2003f800 00000800 00000000 rw-
2003f800 2003f800 00000800 00000000 rw-.stack
正如我们看到的、最大段.sysmem 在.data 和.bss 段之前分配。
我们希望段的分配顺序与链接器命令文件的定义顺序相同。
此致
水平