第二阶段主要是对开发板级别的硬件、软件数据结构进行初始化。 一、主要函数 uboot启动第2阶段 init_sequence cpu_init 空的 board_init 网卡和机器码和内存传参地址 dm9000_pre_init 网卡 gd->bd->bi_arch_number 机器码 gd->bd->bi_boot_params 内存传参地址 mem_malloc_init 初始化uboot自己维护的堆管理器的内存 mmc_initialize inand/SD卡的SoC控制器和卡的初始化 env_relocate 环境变量重定位 gd->bd->bi_ip_addr gd数据结构赋值 gd->bd->bi_enetaddr gd数据结构赋值 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内部 3、移植时的注意点 (1)x210_sd.h头文件中的宏定义 (2)特定硬件的初始化函数位置(譬如网卡)