cortex A8處理器啟動分析一引導代碼BL0

來源:互聯網
上載者:User

cortex A8是基於ARMv7架構的處理器,主頻可以達到1GHz。基於cortexA8的處理器有三星的S5PC100、S5PV210,TI的OMAP3530,全志的A10等。我有個想法就是把u-boot的2個階段的代碼獨立。第一階段代碼稱為硬體相關BL1,第二階段代碼稱為硬體無關BL2。手上剛好有塊s5pc100的板子,就介紹s5pc100的啟動過程並驗證。我把啟動過程分為3個階段BL0、BL1、BL2。BL0是固化在內部ROM上電就執行的一小段程式,我把自己寫的boot代碼,用於引導u-boot稱為BL2,把u-boot的第二階段代碼用於引導核心稱為BL2。這是我的理解,在接下來我將依次分析BL0、BL1、BL2,並實現BL1代碼引導u-boot,BL2移到核心。

一、什麼是BL0

BL0(1st boot loader)是固化在內部ROM上電就執行的一小段程式。BL0從系統指定的外部儲存空間件(NAND、SD/MMC、OneNAND與USB)中載入第二個引導程式BL1到內部RAM,同時對BL1進行安全檢驗。啟動過程如下:


二、BL0做了些什麼

s5pc100晶片手冊見2.2FUNCTIONAL SEQUENCE,翻譯成中文如下

1.初始化PLL和時鐘,將其設定為固定值;
2.初始化棧和堆地區;
3.初始化指令Cache 控制器;
4.從外部起動裝置中載入BL1;
5.如果起動安全機制開啟,則檢查BL1資料完整性;
6.如果校正通過,則跳轉到0x34010地址處運行;
7.如果校正失敗則停止。

三、S5PC100支援的啟動方式

根據OM[4:0]、B0[5::0]引腳的配置,可以支援不同啟動方式
OM[4]  0:正常模式1:測試模式
OM[3]  0:首先從內部ROM啟動1:從Nor Flash啟動
OM[2:1]00:第二啟動從NAND Flash 01:第二啟動從One NAND10:第二啟動從MMC/SD卡 11:第二啟動從NOR Flash
OM[0] APLL/MPLL輸入選擇
B0[5] 0:第二啟動由OM[2:1]確定1:第二啟動從USB(當OM[2:1]為00時從NAND Flash啟動)
B0[4] 0:ECC加密1::ECC不加密
B0[3] 0
B0[2] 地址周期選擇
B0[1:0]塊大小選擇 00:Small Block(Page 512)10:Large Block(Page 2048) 11:Dlarge Block(Page 4096)

注如果從SD/MMC起動,BL0將SD/MMC最後的9KB資料載入到0x34000處運行;如果從OneNAND 和NAND起動,BL0將開始的16KB資料載入到0x34000處運行。

參考文章:http://www.tuxi.com.cn/6-132-1327758.html 





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.