uboot启动阶段就是start_armboot开始的
init_fnc_t
cpu_init 空的
board_init 初始化dm9000网卡,机器码和启动参数
interrupt_init 中断初始化,uboot不使用中断
env_init
init_baudrate 波特率初始化一般115200,其实第一阶段已经初始化了
serial_init 空的
console_init_f 基本空的,gd->have_console = 1;设置了一个标志位
display_banner 打印version_string
print_cpuinfo 打印CPU时钟的信息
checkboard 检测开发板的名字
init_func_i2c 初始化IIC
dram_init gd->bd->bi_dram中的信息,size和start——address
display_dram_config DRAM的信息,打印DRAM的大小
mem_malloc_init 初始化uboot自己管理的堆内存
mmc_initialize 计算并打印SD卡的大小
env_relocate 环境变量重定位
gd->bd->bi_ip_addr IP Address
gd->bd->bi_enetaddr[reg] MAC Address
devices_init 驱动设备初始化,基本空的
jumptable_init 不关注
console_init_r 第二次控制台初始化,真正的初始化
enable_interrupts 空的
loadaddr,bootfile 环境变量读出初始化全局变量
board_late_init 空的
eth_initialize 空的
x210_preboot_init LCD初始化和显示logo
check_menu_update_from_sd 检查自动更新
main_loop 主循环
启动过程特征总结
(1)第一阶段为汇编阶段、第二阶段为C阶段
(2)第一阶段在SRAM中、第二阶段在DRAM中
(3)第一阶段注重SoC内部、第二阶段注重SoC外部Board内部
移植时的注意点
(1)x210_sd.h头文件中的宏定义
(2)特定硬件的初始化函数位置(譬如网卡)