※ 引述《zelkova (*〞︶〝*)》之銘言:
: 最近在自修uboot開機流程
: google看過一些資料之後 我的理解是這樣
: 1. 上電之後
: cpu會到flash或rom位置0x0(看cpu腳位設定), 複製uboot程序到ram中
: 2. uboot拷貝完成後
: 進行driver跟memory的初始化(暫存器), 以及設備的基本測試(看功能是不是正常)
: 3. uboot對裝置初始化完成之後
: uboot會對軟硬體的環境變數進行設置, 最後執行bootm去載入kernel, 離開uboot
: 身邊沒有人可以討論
: 想請各位前輩確認我的理解是不是正確的 謝謝
簡略解說,其實開機方式有很多種,
暫時就依你所認知的作補充,板上強者很多,如有訛誤請不吝指教~
開機之前先區分一下軟硬體部分,通常如下:
HW: 1)SOC(CPU+SRAM)
2)DRAM(SD,DDR或LPDDR等等)
3)其他周邊(UART,LCD等)
SW: 1)OBL(Original Bootloader? On-chip Bootloader?也有人說RomCode,
認知上是寫死在SOC內部的最早loader,也有聽說過用硬體實現的)
2)U-Boot(其實不一定只能用uboot,也有其他各有特色的bootloader可使用,
只要你會porting)
3)kernel(uImage,zImage等,有時候還會有個rootfs,
沒有的話可能是用ramdisk方式與kernel image綁在一起)
我使用過的平台來說
SRAM是內建的,開機通常不需要初始化,可直接存取,容量很小(64KB,128KB,256KB等)
DRAM通常是外掛,需要初始化(通常是MB等級,64MB,128MB...等,要幾G有幾G,
老闆和HW同事說了算XD)
依據你的理解
CPU本身只會預設到最開始的位置0去跑(這要參閱各SOC datasheet)
通常那邊會安排OBL存放
OBL跑起來(XIP,儲存媒體可能是NOR flash在SOC)
去NAND或是SD卡(取決於硬體jumper設定