Bootloader介紹和啟動


一、Bootloader的介紹

 

1.什么是Bootloader

Bootloader是硬件啟動的引導程序,是運行操作系統的前提。在操作系統內核或用戶應用程序運行之前運行的一段小代碼。對硬件進行相應的初始化和設定,最終為操作系統准備好環境。

 

2.Bootloader的特點

Bootloader不屬於操作系統,一般采用匯編語言和C語言開發。需要針對特定的硬件平台編寫。在移植過程時,首先為開發板移植Bootloader。Bootloader不但依賴於CPU的體系架構,而且依賴於嵌入式系統板級設備的配置。

 

3.Bootloader的操作模式

自啟動模式:在這種模式下,Bootloader從目標機上的某個固態存儲設備上將操作系統加載到RAM中運行,整個過程並沒有用戶的介入。

交互模式:在這種模式下,目標機上的Bootloader將通過串口或網絡等通信手段從開發板上下載內核映射和根文件系統映像等待RAM中。可以被Bootloader寫到目標機上的固態存儲媒介質中,或者直接進入系統的引導。也可以通過串口接收用戶的指令。

二、Bootloader的基本功能

初始化相關硬件 把Bootloader自搬移到內存中 執行用戶指令 加載並執行內核

 

三、Bootloader的啟動

 

Bootloader的啟動一般分為兩個階段

 

下圖是拿s5pc100 cortex a8的板子芯片圖形做介紹

拿已經固化到nand flash中的Bootloader為例

 

第一步:當CPU啟動后運行地址為0x00000000就是IROM的第一塊代碼處BL0,而Bootloader存放在nand flash中,其中開頭的一塊代碼BL1(大小為16K)存放到IRAM(SRAM)中。而在BL0的代碼會自動跳轉到BL1處,執行BL1出的代碼,進行一些相關硬件的初始化。BL1處還有一個拷貝指令,就是將nand flash中的Boot-

loader代碼拷貝到DRAM中。當BL1中代碼運行完之后將會自動跳轉到DRAM中。

BL1代碼中作用:

初始化基本硬件

把Bootloader搬到內存中

初始化異常 模式

設置堆棧指針並將bss段清零,為后續的C代碼做准備

跳到第二段代碼

 

第二步:執行BL1跳轉到的代碼BL2

 

BL2的作用:

初始化本階段要使用的硬件

將壞境變量添加到內核中

讀取環境變量

下載執行

 轉載自 http://blog.csdn.net/cxj582667366/article/details/42194273


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM