u-boot 链接脚本内容分析

本文深入解析了U-Boot的链接文件u-boot.lds,详细介绍了其如何定义输出格式、体系架构及入口地址,同时分析了代码段、只读数据段、数据段等各部分的链接地址和对齐方式,帮助读者理解U-Boot的内存布局。

根据之前写的《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 = .;
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值