u-boot在SPL的配置的基础上,需要添加对使用内存的初始化,网口驱动,usb驱动,env配置管理,载入kernel并引导启动,kernel引导cmdline配置,u-boot下支持的命令实现等内容.
编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
代码流程
reset: (arch/arm/cpu/armv7/start.s)
Set the cpu to SVC32 mode
board_init_f (arch/arm/lib/board.c)
initialize global data
(*init_fnc_ptr)() /* 逐个调用init_sequence数组中的初始化函数 */
timer_init
env_init
init_baudrate
serial_init
console_init_f
display_banner
init_func_i2c
relocate_code (arch/arm/cpu/armv7/start.s)
board_init_r (arch/arm/lib/board.c)
enable_caches(arch/arm/lib/cache.c)
board_init (arch/arm/cpu/armv7/am33xx/board.c)
serial_initialize
mem_malloc_init
env_relocate
stdio_init
jumptable_init
console_init_r
arch_misc_init
interrupt_init
enable_interrupts
board_late_init
main_loop(common/main.c)
initialize hash parser for uboot (common/hush.c)
find bootdelay from hash table (common/cmd_nvedit.c)
find bootcmd from hash table (common/cmd_nvedit.c)
watch for bootdelay seconds for autoboot stop (common/main.c)
read and parse bootcmd (common/hush.c)