嵌入式linux软件平台--uboot引导流程

2019-07-12 14:40发布

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)