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)特定硬件的初始化函數位置(譬如網卡)