链接脚本文件解释:
SECTIONS
{
ROM_BASE = 0x0;/* image store address (in Flash)*/
. = 0x30000000; 赋值当前地址
Image_RO_Base = .; 只读区域基地址,启动程序中使用的符号
.text : { *(.text) } 代码段
Image_RO_Limit = .; 只读区域长度,启动程序中使用的符号
Image_RW_Base = .; 读/写区域基地址,启动程序中使用的符号
.data : { *(.data) } 数据段,程序中已初始化的全局变量放在该段
.rodata : { *(.rodata) } 只读数据段,程序中的静态全局变量等固定值放在该段
Image_ZI_Base = .; 清0区域基地址,启动程序中使用的符号
.bss : { *(.bss) } 包含未初始化的全局可用的数据,如未初始化的全局变量
Image_ZI_Limit = .; 清0区域长度,启动程序中使用的符号
Image_RW_Limit = .; 读/写区域长度,启动程序中使用的符号
__bss_start__ = .;
__bss_end__ = .;
__EH_FRAME_BEGIN__ = .;
__EH_FRAME_END__ = .;
PROVIDE (__stack = .);
end = .; 结束地址
_end = .;
.debug_info 0 : { *(.debug_info) } 调试信息输出段
.debug_line 0 : { *(.debug_line) }
.debug_abbrev 0 : { *(.debug_abbrev)}
.debug_frame 0 : { *(.debug_frame) }
}
肤浅的理解,请大虾们指教!
本文详细解析了链接脚本文件的各个部分,包括不同段的定义及其在程序启动过程中的作用,例如只读区域、读/写区域、清0区域等,并介绍了如何通过链接脚本控制这些段的布局。
1085

被折叠的 条评论
为什么被折叠?



