博客專欄

EEPW首頁(yè) > 博客 > Linux中bootloader介紹

Linux中bootloader介紹

發(fā)布人:嵌入式Linux 時(shí)間:2023-01-10 來(lái)源:工程師 發(fā)布文章

一個(gè)嵌入式Linux系統(tǒng)從軟件的角度通常分為以下四個(gè)層次:

  • 引導(dǎo)加載程序。包括固化在firmware中的boot代碼(可選),和Bootloader兩大部分。

  • Linux內(nèi)核。

  • 文件系統(tǒng)。

  • 應(yīng)用程序。

Bootloader概念

在嵌入式操作系統(tǒng)中,Bootloader是硬件啟動(dòng)的引導(dǎo)程序,是運(yùn)行操作系統(tǒng)的前提;在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一小段代碼,對(duì)軟硬件進(jìn)行相應(yīng)的初始化和設(shè)定,為最終運(yùn)行操作系統(tǒng)準(zhǔn)備好環(huán)境,類似于X86計(jì)算機(jī)中的BIOS固件;Bootloader不屬于操作系統(tǒng),一般采用匯編語(yǔ)言和C語(yǔ)言開發(fā),需要針對(duì)特定的硬件平臺(tái)(比如arm、powerpc、MIPS等)編寫,Bootloader不但依賴于CPU的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級(jí)設(shè)備的配置。對(duì)于2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運(yùn)行在一塊板子上的Bootloader程序也能運(yùn)行在另一塊板子上,一般也都需要修改Bootloader的源程序。

Bootloader的兩種操作模式

自啟動(dòng)模式:在這種模式下,Bootloader從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)(kernel)加載到RAM中運(yùn)行(讀取bootcmd參數(shù)),整個(gè)過(guò)程并沒(méi)有用戶的介入。

交互模式:在這種模式下(uboot可在倒計(jì)時(shí)按任意鍵進(jìn)入到這種模式),目標(biāo)機(jī)上的Bootloader將通過(guò)串口或網(wǎng)絡(luò)等方式從開發(fā)主機(jī)(Host)上下載內(nèi)核映像和根文件系統(tǒng)映像等到RAM中,可以被 Bootloader寫到目標(biāo)機(jī)上的固態(tài)存儲(chǔ)媒質(zhì)中,或者直接進(jìn)行系統(tǒng)的引導(dǎo)。也可以通過(guò)串口接收用戶的命令。

Bootloader的基本功能
  • 初始化相關(guān)硬件

  • 把bootloader自搬運(yùn)到RAM中

  • 執(zhí)行用戶的命令

  • 訪問(wèn)環(huán)境變量

  • 通過(guò)網(wǎng)絡(luò)/串口通信

  • 讀寫RAM/FLASH

  • 加載并執(zhí)行內(nèi)核

常見的Bootloader
  • Redboot:Redhat公司隨eCos發(fā)布的一個(gè)BOOT方案,是一個(gè)開源項(xiàng)目,Linux操作系統(tǒng)引導(dǎo),在線讀寫Flash。

  • ARMboot:ARM平臺(tái)的開源固件項(xiàng)目,2002年ARMboot終止了維護(hù)。

  • U-Boot:ARMboot并入了PPCBoot,和其他一些平臺(tái)的Loader合稱U-Boot,是目前最常用的bootloader。

  • Blob、Bios-lt、Bootldr、vivi等


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: bootloader

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉