uboot啟動過程簡要分析筆記
第一階段
本文引用地址:http://www.ex-cimer.com/article/201611/322117.htm1:cup內(nèi)硬件初始化(屏蔽所有中斷,設(shè)置cup的時鐘,存儲控制器初始化,指示燈初始化狀態(tài)為滅,關(guān)閉CPU內(nèi)存指令/緩存);
2:拷貝第二階段代碼到RAM中以備第二階段代碼的執(zhí)行;
3:設(shè)置好堆棧指針存放第二階段代碼的入口地址;
進(jìn)入第二階段
當(dāng)用戶按下任意鍵時進(jìn)入下載模式(此過程只為開發(fā)人員所用得到),如果一段時間內(nèi)用戶沒有任何操作,自動進(jìn)入的啟動加載模式如下(此過程是為了加載操作系統(tǒng)內(nèi)核鏡像和文件系統(tǒng)鏡像):
4:對arm開發(fā)板上硬件資源初始化(至少包含一個串口初始化,因為加載操作系當(dāng)中通常需要通過彩屏接受串口發(fā)來的Linux內(nèi)核版本信息,以及硬件的驅(qū)動的準(zhǔn)備情況等;做到人機(jī)交互)
5:階段2的代碼檢測RAM存在的區(qū)域和容量大小并將其映射到(CPU的整個地址)地址空間中;
6:將操作系統(tǒng)鏡像以及文件系統(tǒng)鏡像從Flash讀取到RAM中;(經(jīng)過一段時間的學(xué)習(xí)突然發(fā)現(xiàn)具體操作中了解了前面幾個步驟并沒有什么卵用僅僅是教科書中的一些內(nèi)容 )
7:在啟動操作系統(tǒng)內(nèi)核之前,需要設(shè)置操作系統(tǒng)內(nèi)核的啟動參數(shù)(如Linux中的ATAG_MEM,ATAG——CNDLINE,等等);
8:哈哈,終于要進(jìn)行操作系統(tǒng)內(nèi)核啟動了,引導(dǎo)程序并將執(zhí)行權(quán)交給操作系統(tǒng);
評論