bootloader是什么意思
大家有沒有想過bootloader的意思?下面是學習啦小編給大家整理的bootloader是什么意思,供大家參閱!
bootloader是什么意思
Bootloader是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,在它完成CPU和相關(guān)硬件的初始化之后,再將操作系統(tǒng)映像或固化的嵌入式應用程序裝在到內(nèi)存中然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動操作系統(tǒng)運行。
BootLoader是在操作系統(tǒng)內(nèi)核運行之前運行??梢猿跏蓟布O備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。
通過這段小程序,可以初始化硬件設備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。
BootLoader背景介紹
Bootloader是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,在它完成CPU和相關(guān)硬件的初始化之后,再將操作系統(tǒng)映像或固化的嵌入式應用程序裝在到內(nèi)存中然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動操作系統(tǒng)運行。[1]
對于嵌入式系統(tǒng),Bootloader是基于特定硬件平臺來實現(xiàn)的。因此,幾乎不可能為所有的嵌入式系統(tǒng)建立一個通用的Bootloader,不同的處理器架構(gòu)都有不同的Bootloader。Bootloader不但依賴于CPU的體系結(jié)構(gòu),而且依賴于嵌入式系統(tǒng)板級設備的配置。對于2塊不同的嵌入式板而言,即使它們使用同一種處理器,要想讓運行在一塊板子上的Bootloader程序也能運行在另一塊板子上,一般也都需要修改Bootloader的源程序。
反過來,大部分Bootloader仍然具有很多共性,某些Bootloader也能夠支持多種體系結(jié)構(gòu)的嵌入式系統(tǒng)。例如,U-Boot就同時支持PowerPC、ARM、MIPS和X86等體系結(jié)構(gòu),支持的板子有上百種。通常,它們都能夠自動從存儲介質(zhì)上啟動,都能夠引導操作系統(tǒng)啟動,并且大部分都可以支持串口和以太網(wǎng)接口。
在專用的嵌入式板子運行GNU/Linux系統(tǒng)已經(jīng)變得越來越流行。一個嵌入式Linux系統(tǒng)從軟件的角度看通??梢苑譃樗膫€層次:
1、 引導加載程序。包括固化在固件(firmware)中的boot代碼(可選),和BootLoader兩大部分。
2、Linux內(nèi)核。特定于嵌入式板子的定制內(nèi)核以及內(nèi)核的啟動參數(shù)。
3、 文件系統(tǒng)。包括根文件系統(tǒng)和建立于Flash內(nèi)存設備之上文件系統(tǒng)。通常用ramdisk來作為rootfs。
4、 用戶應用程序。特定于用戶的應用程序。有時在用戶應用程序和內(nèi)核層之間可能還會包括一個嵌入式圖形用戶界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。
通常,BootLoader是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的BootLoader幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫ootloader歸納出一些通用的概念來,以指導用戶特定的BootLoader設計與實現(xiàn)。
BootLoader啟動過程
Bootloader啟動大多數(shù)都分為兩個階段。第一階段主要包含依賴于CPU的體系結(jié)構(gòu)硬件初始化的代碼,通常都用匯編語言來實現(xiàn)。這個階段的任務有:
基本的硬件設備初始化(屏蔽所有的中斷、關(guān)閉處理器內(nèi)部指令/數(shù)據(jù)Cache等)。
為第二階段準備RAM空間。
如果是從某個固態(tài)存儲媒質(zhì)中,則復制Bootloader的第二階段代碼到RAM。
設置堆棧。
在第一階段中為什么要關(guān)閉Cache?通常使用Cache以及寫緩沖是為了提高系統(tǒng)性能,但由于Cache的使用可能改變訪問主存的數(shù)量、類型和時間,因此Bootloader通常是不需要的。
跳轉(zhuǎn)到第二階段的C程序入口點。
第二階段通常用C語言完成,以便實現(xiàn)更復雜的功能,也使程序有更好的可讀性和可移植性。這個階段的任務有:
初始化本階段要使用到的硬件設備。
檢測系統(tǒng)內(nèi)存映射。
將內(nèi)核映像和根文件系統(tǒng)映像從Flash讀到RAM。
為內(nèi)核設置啟動參數(shù)。
調(diào)用內(nèi)核。
看過bootloader是什么意思的人還看了: