一、開發板啟動過程
EMMC:相當于電腦的外存,斷電不丟失
????????開發板上電后首先運行SOC內部iROM中固化的代碼(BL0),這段代碼先對基本的軟硬件環境(時鐘等...)進行初始化,然后再檢測撥碼開關位置獲取啟動方式,然后再將對應存儲器中的uboot搬移到內存,然后跳轉到uboot運行
????????uboot開始運行后首先對開發板上的軟硬件環境做進一步初始化,然后將linux內核、設備樹(dtb)、根文件系統(rootfs)從外部存儲器(或網絡)搬移到內存,然后跳轉到linux運行
設備樹(dtb):存儲硬件設備信息,linux和dtb加起來才是一個完整的Linux內核?
根文件系統(rootfs):根文件系統不屬于linux,本質是一些文件,Linux運行之前需要用到這些文件。
????????linux開始運行后先對系統環境做初始化,當系統啟動完成后,Linux再從內存中(或網絡)掛載根文件系統?
地址映射表
? ? ? ? 一上電,芯片就會先執行IROM里的程序,這里就放著BL0,但是這段代碼不是開源的我們不知道它寫了什么。
0202 0000-0206 0000這段地址是三星設計的一塊內存
1000 0000-1400 0000這段地址是特殊功能寄存器,之前裸機開發用到的寄存器大多在這段地址中。
4000 0000-A000 0000這1.5G是留給擴展內存的
A000 0000-FFFF FFFF這1.5G也是預留給擴展內存的
二、系統移植步驟
uboot移植 ?
linux內核移植(包含設備樹) ?
根文件系統移植