1.Board.c
void start_armboot (void)
{
//
gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));
//init_sequence一系列的初始化
for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr)
//uboot要引导加载内核,就要具备读写flash的能力(NOR FLASH)
flash_init ();
//内存申请
mem_malloc_init (_armboot_start - CFG_MALLOC_LEN);
//nand flash init
nand_init(); /* go init the NAND */
//环境变量
env_relocate ();
//
main_loop ();
}
init_sequence
init_fnc_t *init_sequence[] = {
cpu_init, /* basic cpu dependent setup */
board_init, /* basic board dependent setup */
dram_init, /* configure available RAM banks */
mem_malloc_init, /* dependant on dram_init */
interrupt_init, /* set up exceptions */
timer_init,
serial_init,
env_init, /* initialize environment */
init_baudrate, /* initialze baudrate settings */
serial_init, /* serial communications setup */
display_banner,
display_dram_config,
NULL,
};
void main_loop (void)
{
//启动内核
s = getenv ("bootcmd");
run_command (s, 0);
}
在uboot启动时快速按任意键,可以进入uboot命令行
(1)env print 打印环境变量