ZHCUAU3J January 2018 – March 2024
使用链接器命令文件句法中包含的 LOAD_START()、RUN_START() 和 SIZE() 操作符,可避免一些维护负担。例如,链接器命令文件可标注为以下形式,而不必编译应用以生成 .map 文件:
SECTIONS
{
.flashcode: { app_tasks.c.obj(.text) }
load = FLASH, run = PMEM,
LOAD_START(_flash_code_ld_start),
RUN_START(_flash_code_rn_start),
SIZE(_flash_code_size)
...
}
在本例中,LOAD_START()、RUN_START() 和 SIZE() 运算符指示链接器创建三个符号:
符号 | 说明 |
---|---|
_flash_code_ld_start | .flashcode 段的加载地址 |
_flash_code_rn_start | .flashcode 段的运行地址 |
_flash_code_size | .flashcode 段的大小 |
然后可在复制表中引用这些符号。每次链接应用时,复制表中的实际数据将自动更新。此方法省去了节 12.8.1中所述流程的步骤 1。
虽然维护复制表的工作显著减少,但您还有责任使复制表内容与链接器命令文件中定义的符号保持同步。理想情况下,链接器会自动生成引导复制表。这样可避免两次编译应用,而且 无需再显式管理引导复制表的内容。
有关 LOAD_START()、RUN_START() 和 SIZE() 运算符的更多信息,请参阅节 12.5.9.7。