boot2010.03 Makefile分析(2)

从这个链接脚本可以看出,uboot将整个程序进行了如下的布置
.text :
.rodata :
.data :
.got :
.u_boot_cmd :
.mmudata :
.bss :
代码段被首先链接,在代码段内第一个就是start.s 因为这就是uboot启动的第一条代码的地方,看一下map文件
Memory Configuration

Name                  Origin                        Length                Attributes
*default*            0x00000000            0xffffffff

Linker script and memory map

0x00000000  . = 0x0
0x00000000 . = ALIGN (0x4)

.text                0x57e00000                  0x27b8c
cpu/arm1176/start.o(.text)
.text                0x57e00000                  0x440              cpu/arm1176/start.o
                        0x57e00040                                          _end_vect
                        0x57e0004c                                          _bss_start
                        0x57e00050                                          _bss_end
                        0x57e00048                                          _armboot_start
                        0x57e00114                                          copy_from_nand
                        0x57e00000                                          _start

从map文件中,可以看到0x57e00000=_start 被放到了一条的位置(0x57e00000就是链接脚本指定的连接地址)
接着打开cpu/arm1176/start.S

.globl _start

_start: b reset

#ifndef CONFIG_NAND_SPL

ldr pc, _undefined_instruction

ldr pc, _software_interrupt

ldr pc, _prefetch_abort

ldr pc, _data_abort

ldr pc, _not_used

ldr pc, _irq

ldr pc, _fiq

第一条语句 b reset就被放到了_start的位置,这样uboot启动之后,就会开始执行这条语句,uboot的移植也会从这开始分析了

完。

Thanks a lot!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/03ffeedce437e4e765fc05b217f2c0f6.html