链接定位文件

在系统级别的嵌入式开发中需要使用链接定位文件,该文件描述代码链接定位的有关信息,包括代码段,数据段地址等,链接器必须使用该文件对整个系统的代码做正确的定位。本例中在RAM调试和固化时使用的链接定位文件不相同,下面是固化时使用的链接定位文件:
SECTIONS 
{
. = 0x000000;                 赋当前地址为0
.text : { *(.text) };    代码段,在这里标识从0开始放置程序代码
.rodata : { *(.rodata) };只读数据段,程序中静态全局变量等固定值放在该段 
Image_RO_Limit = .;   只读区域长度,启动程序中使用的符号
. = 0x0400000;          赋当前地址为0x400000
Image_RW_Base = .;  读写区域基地址,启动程序中使用的符号
.data : { *(.data) };   数据段, 程序中已初始化的全局变量放在该段
Image_ZI_Base = .;    清零区域基地址, 启动程序中使用的符号
.bss : { *(.bss) };      包含未初始化的全局可用的数据, 如未初始化的全局变量
Image_ZI_Limit = .;   清零区域长度, 启动程序中使用的符号
end = .;                    结束地址 
.debug_info          0 : { *(.debug_info)  };   调试信息输出段
.debug_line          0 : { *(.debug_line)  }  
.debug_abbrev           0 : { *(.debug_abbrev)} 
.debug_frame       0 : { *(.debug_frame) } 
}

在RAM调试时使用的链接定位文件:
SECTIONS 
{
. = 0x000000;                 赋当前地址为0
.text : { *(.text) };    代码段,在这里标识从0开始放置程序代码
Image_RO_Limit = .;   只读区域长度,启动程序中使用的符号
Image_RW_Base = .;  读写区域基地址,启动程序中使用的符号
.rodata : { *(.rodata) };只读数据段,程序中静态全局变量等固定值放在该段 
.data : { *(.data) };   数据段, 程序中已初始化的全局变量放在该段
Image_ZI_Base = .;    清零区域基地址, 启动程序中使用的符号
.bss : { *(.bss) };      包含未初始化的全局可用的数据, 如未初始化的全局变量
Image_ZI_Limit = .;    清零区域长度, 启动程序中使用的符号
end = .;                    结束地址 
.debug_info          0 : { *(.debug_info)  };   调试信息输出段
.debug_line          0 : { *(.debug_line)  }  
.debug_abbrev           0 : { *(.debug_abbrev)} 
.debug_frame       0 : { *(.debug_frame) } 
}

你可能感兴趣的:(嵌入式)