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