Uboot运行分析(二) .

本文详细介绍了U-Boot的配置过程及各段代码的作用,包括指定输出格式为32位ARM指令的小端模式、确定程序入口点、设置不同类型的内存段如.text、.rodata、.data等,并对.bss段进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.youkuaiyun.com/yangxingbo0311/article/details/7333957

 

24 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")指定输出可执行文件是elf格式,32位ARM指令,小端
 25 OUTPUT_ARCH(arm)指定输出可执行文件的平台为ARM
 26 ENTRY(_start)


其中,ENTRY(_start)指明程序的入口点为_start标号。=0x00000000指明目标代码的起始地址为0x00000000。这一段地址可以是SDRAM的起始地址;

. = ALIGN(4);表示以四字节对齐

    .text   :
     {
       cpu/s3c24xx/start.o   (.text)        代码的第一个代码部分,指明start.S是入口程序代码,被放到代码段的开头
       cpu/s3c24xx/s3c2416/cpu_init.o    (.text)
       cpu/s3c24xx/onenand_cp.o  (.text)
       cpu/s3c24xx/nand_cp.o (.text)
       cpu/s3c24xx/movi.o (.text)
       *(.text)
     }


 40     . = ALIGN(4);     以四字节对齐
 41     .rodata : { *(.rodata) } 指定只读数据段,RO段
 42     . = ALIGN(4);
 43     .data : { *(.data) }指定读/写数据段,RW段,表示从0x00000000开始放置所有目标文件的代码段
 44     . = ALIGN(4);
 45     .got : { *(.got) }指定got段,got段式是uboot自定义的一个段,非标准段。

 46
 47     . = .;

 48     __u_boot_cmd_start = .;  __u_boot_cmd_start赋值为当前位置,即起始位置
 49     .u_boot_cmd : { *(.u_boot_cmd) }指定u_boot_cmd段,uboot把所有的uboot命令放在该段
 50     __u_boot_cmd_end = .;__u_boot_cmd_end赋值为当前位置,即结束位置
 51
 52     . = ALIGN(4);
 53     .mmudata : { *(.mmudata) }
 54
 55     . = ALIGN(4);
 56     __bss_start = .;__bss_start赋值为当前位置,即bss段的开始位置
 57     .bss : { *(.bss) }指定bss段
 58     _end = .;把
_end赋值为当前位置,即bss段的结束位置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值