2017.9版本uboot启动至命令行几个重要函数为:_start,_main,board_init_f,relocate_code,board_init_r。
?
一 、程序的入口:_start
对于任何程序,入口函数是在链接时决定的,uboot的入口是由链接脚本决定的。uboot下armv7链接脚本默认目录为u-boot-2017.09\arch\arm\cpu\u-boot.lds。
由链接文件u-boot.lds的ENTRY(_start)可知,程序的入口在_start。
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS
{
......
. = 0x00000000;
. = ALIGN(4);
.text :
{
*(.__image_copy_start)
*(.vectors)
CPUDIR/start.o (.text*)
*(.text*)
}
?
在u-boot-2017.09版本中,入口_start在u-boot-2017.09\arch\arm\lib\vectors.S中,
_start:
#ifdef CONFIG_SYS_DV_NOR_BOOT_CFG
.wordCONFIG_SYS_DV_NOR_BOOT_CFG
#endif
breset
ldrpc, _undefined_instruction
ldrpc, _software_interrupt