Uboot啓動流程分析

uboot的第一階段做了哪些工作
(1)構建異常向量表
(2)設置CPU爲SVC模式
(3)關看門狗
(4)開發板供電置鎖
(5)時鐘初始化
(6)DDR初始化
(7)串口初始化並打印”OK”
(8)重定位
(9)建立映射表並開啓MMU
(10)跳轉到第二階段

uboot啓動2階段總結(啓動流程回顧、重點函數標出)
(1)第二階段主要是對開發板級別的硬件、軟件數據結構進行初始化。
(2)
init_sequence
cpu_init 空的
board_init 網卡、機器碼、內存傳參地址
dm9000_pre_init 網卡
gd->bd->bi_arch_number 機器碼
gd->bd->bi_boot_params 內存傳參地址
interrupt_init 定時器
env_init
init_baudrate gd數據結構中波特率
serial_init 空的
console_init_f 空的
display_banner 打印啓動信息
print_cpuinfo 打印CPU時鐘設置信息
checkboard 檢驗開發板名字
dram_init gd數據結構中DDR信息
display_dram_config 打印DDR配置信息表
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內部

移植時的注意點
(1)x210_sd.h頭文件中的宏定義
(2)特定硬件的初始化函數位置(譬如網卡)

uboot啓動內核的總結
啓動4步驟
第一步:將內核搬移到DDR中
第二步:校驗內核格式、CRC等
第三步:準備傳參
第四步:跳轉執行內核

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章