在为 STM32 MCU 开发代码时,我将一些结构放入自定义内存部分:
struct MyStruct structName;
__attribute__((__section__("my_section"))) __attribute__((__used__)) const struct MyStruct *const mystruct1 = &x
链接器生成了额外的符号,__start_my_section_
并且__stop_my_section_
. 在调试 MCU 时编译后,我看到它__start_my_section_
包含一个有效值,例如 0x20000468 但__stop_my_section_
不正确,等于 0。
在 .map 文件中,__stop_my_section_
还包含一个有效值:
0x20000470 __stop_my_section_ = .
怎么了?我没有向链接器脚本添加任何内容,链接器自动创建了该部分并放置在 bss 中。