要分析 uboot的启动流程,首先要找到“入口”,找到第一行程序在哪里。程序的链接是由 链接脚本来决定的,所以通过链接脚本可以找到程序的入口。如果没有编译过 uboot的话链接 脚本为 arch/arm/cpu/u-boot.lds。但是这个不是最终使用的链接脚本,最终的链接脚本是在这个 链接脚本的基础上生成的。编译一下 uboot,编译完成以后就会在 uboot根目录下生成 u-boot.lds文件,如图
注意只有编译 u-boot以后才会在根目录下出现 u-boot.lds文件!
u-boot.lds,内容如下
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
. = 0x00000000;
. = ALIGN(4);
.text :
{
*(.__image_copy_start)
*(.vectors)
arch/arm/cpu/armv7/start.o (.text*)
*(.text*)
}
. = ALIGN(4);
.rodata : { *(SORT_BY_ALIGNMENT