根据之前写的《u-boot makefile内容分析》里中写到的,u-boot执行make之后最终会使用
u-boot-1.1.6/board/100ask24x0/u-boot.lds来做为链接文件。
以下是此文件的简单分析
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")//定义3种输出文件的格式。若有命令行选项-EB(大端),则使用第二个输出格式,有命令行指定-EL(小端),则使用第三个格式。否则使用默认的default输出格式。
/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
OUTPUT_ARCH(arm)//设置输出文件的体系架构。
ENTRY(_start)//ENTRY(SYMBOL);将SYMBOL的值设置成入口地址。一般设置为_start。
SECTIONS
{
. = 0x00000000; //链接地址 值会加上-Ttext 0x33F80000的偏移
. = ALIGN(4);//代码以4字节对齐,在分配地址时,以4的整数倍分配
.text ://代码段
{
cpu/arm920t/start.o (.text)
board/100ask24x0/boot_init.o (.text)
*(.text)
}
. = ALIGN(4);//只读数据段
.rodata : { *(.rodata) }
. = ALIGN(4);//数据段
.data : { *(.data) }
. = ALIGN(4);
.got : { *(.got) }
. = .;
__u_boot_cmd_start = .; //把__u_boot_cmd_start赋值为当前地址,.代表当前地址
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;
. = ALIGN(4);
__bss_start = .;//把__bss_start赋值为当前地址
.bss : { *(.bss) }
_end = .;
}
本文深入解析了U-Boot的链接文件u-boot.lds,详细介绍了其如何定义输出格式、体系架构及入口地址,同时分析了代码段、只读数据段、数据段等各部分的链接地址和对齐方式,帮助读者理解U-Boot的内存布局。


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



