ZHCU947E June 2015 – January 2023
默认情况下,链接器在指定的存储器范围内从低地址到高地址分配输出段。或者,用户可以通过使用 SECTION 指令声明中的 HIGH 位置说明符,使链接器在存储器范围内从高地址到低地址分配某个段。用户可使用 HIGH 位置说明符将 RTS 代码与应用程序代码分开,这样一来应用程序中的微小变化就不会导致存储器映射发生较大变化。
例如,给定以下 MEMORY 指令:
MEMORY
{
RAM : origin = 0x0200, length = 0x0800
FLASH : origin = 0x1100, length = 0xEEE0
VECTORS : origin = 0xFFE0, length = 0x001E
RESET : origin = 0xFFFE, length = 0x0002
}
以及附带的 SECTIONS 指令:
SECTIONS
{
.bss : {} > RAM
.sysmem : {} > RAM
.stack : {} > RAM (HIGH)
}
用于放置 .stack 段的 HIGH 说明符会使链接器尝试将 .stack 分配到 RAM 存储器范围内的更高地址。.bss 和 .sysmem 段将分配到 RAM 中的较低地址。GUID-DB9E7BF8-D27E-4331-947B-F35568875948.html#GUID-DB9E7BF8-D27E-4331-947B-F35568875948 所示为映射文件的一部分,其中展示了在 RAM 中为典型程序分配给定段的位置。