(七)链接脚本代码分析(Makefile源码分析)

(七)uboot.lds文件分析分析(Makefile源码分析)

(1)如果定义了CONFIG_NAND_U_BOOT宏,则链接脚本叫u-boot-nand.lds.如果未定义这个宏则叫u-boot.lds。

(2)从字面意思分析可知CONFIG_NAND_U_BOOT是在Nand下才使用。

(3)实际在board\samsung\x210目录下有u-boot.lds,这个就是链接脚本。我们在分析uboot的编译过程时就要考虑这个链接脚本。


OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*///指定输出可执行文件是elf格式,32位ARM指令,小端*/
OUTPUT_ARCH(arm)//指定输出可执行文件的平台为ARM*/
ENTRY(_start)//指定函数入口点为_start。cpu/arm920t/start.S中定义。用来指定整个程序的入口地址,所谓入口地址就是我们整个程序的开头地址,可以认为是整个程序的第一句指令。有点像C语言中的main()


SECTIONS     //裸机的链接脚本也一样。无非就指定当前地址,然后代码段、数据段、BSS段三个段
{
	. = 0x00000000;   //从0x0位置开始,在裸机中指定程序的链接地址有2种方法:一种是 
                      //Makefile的flags中用-Ttext 0x20000000来指定;第二种是在链接脚本 
                      //SECTIONS开头用.=0x20000000来指                                                          // 定,两种效果相同。这两种技巧可以共同配合的,以-Ttext为准。(uboot的 
                      //最终链接的起始地址是在makefile中用-Ttext来指定的,注意TEXT_BASE变量 
                      //(最终来源是Makefile中配                                                                //置对应的命令中, make_xxx_config中))
   . = ALIGN(4);                //代码以4字节对齐*/

	. = ALIGN(4);      //代码以4字节对齐*/
	.text      :
	{
	  cpu/s5p64xx/start.o	(.text)
	  cpu/s5p64xx/start_irom.o	(.text)
	  cpu/s5p64xx/s5p6440/cpu_init.o	(.text)
	  board/samsung/smdk6440/lowlevel_init.o	(.text)
	  cpu/s5p64xx/nand_cp.o	(.text)
	  cpu/s5p64xx/movi.o (.text)
	  *(.text)
	  lib_arm/div0.o
	}

	. = ALIGN(4);      
	.rodata : { *(.rodata) } //指定只读数据段*/

	. = ALIGN(4);
	.data : { *(.data) }    //指定读/写数据段*/

	. = ALIGN(4);
	.got : { *(.got) }            //指定got段, got段式是uboot自定义的一个段, 非标准段*/

	__u_boot_cmd_start = .;
	.u_boot_cmd : { *(.u_boot_cmd) }   
	__u_boot_cmd_end = .;           //把__u_boot_cmd_end赋值为当前位置,即结束位置*/

	. = ALIGN(4);
	.mmudata : { *(.mmudata) }

	. = ALIGN(4);
	__bss_start = .;                 //把__bss_start赋值为当前位置,即bss段的开始位置*/
	.bss : { *(.bss) }               //指定bss段*/
	_end = .;                        //把_end赋值为当前位置,即bss段的结束位置*/
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值