<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > u-boot啟動(dòng)過(guò)程分析――基于lpc2210的移植代碼

u-boot啟動(dòng)過(guò)程分析――基于lpc2210的移植代碼

作者: 時(shí)間:2012-08-27 來(lái)源:網(wǎng)絡(luò ) 收藏

是一種普遍用于嵌入式系統中的Bootloader。

本文引用地址:http://dyxdggzs.com/article/148524.htm

Bootloader介紹

Bootloader是進(jìn)行嵌入式開(kāi)發(fā)必然會(huì )接觸的一個(gè)概念,它是嵌入式學(xué)院嵌入式工程師職業(yè)培訓班>二期課程中嵌入式linux系統開(kāi)發(fā)方面的重要內容。本篇文章主要講解Bootloader的基本概念以及內部原理,這部分內容的掌握將對嵌入式linux系統開(kāi)發(fā)的學(xué)習非常有幫助!

Bootloader的定義:Bootloader是在操作系統運行之前執行的一小段程序,通過(guò)這一小段程序,我們可以初始化硬件設備、建立內存空間的映射表,從而建立適當的系統軟硬件環(huán)境,為最終調用操作系統內核做好準備。意思就是說(shuō)如果我們要想讓一個(gè)操作系統在我們的板子上運轉起來(lái),我們就必須首先對我們的板子進(jìn)行一些基本配置和初始化,然后才可以將操作系統引導進(jìn)來(lái)運行。具體在Bootloader中完成了哪些操作我們會(huì )在后面到,這里我們先來(lái)回憶一下PC的體系結構:PC機中的引導加載程序是由BIOS和位于硬盤(pán)MBR中的OS Boot Loader(比如LILO和GRUB等)一起組成的,BIOS在完成硬件檢測和資源分配后,將硬盤(pán)MBR中的Boot Loader讀到系統的RAM中,然后將控制權交給OS Boot Loader。Boot Loader的主要運行任務(wù)就是將內核映象從硬盤(pán)上讀到RAM中,然后跳轉到內核的入口點(diǎn)去運行,即開(kāi)始操作系統。在嵌入式系統中,通常并沒(méi)有像BIOS那樣的固件程序(注:有的嵌入式cpu也會(huì )內嵌一段短小的程序),因此整個(gè)系統的加載任務(wù)就完全由Boot Loader來(lái)完成。比如在一個(gè)ARM7TDMI core的嵌入式系統中,系統在上電或復位時(shí)通常都從地址0x00000000處開(kāi)始執行,而在這個(gè)地址處安排的通常就是系統的Boot Loader程序。(先想一下,通用PC和嵌入式系統為何會(huì )在此處存在如此的差異呢?)

Bootloader是特定硬件平臺來(lái)實(shí)現的,因此幾乎不可能為所有的嵌入式系統建立一個(gè)通用的Bootloader,不同的處理器架構都有不同的Bootloader,Bootloader不但依賴(lài)于cpu的體系結構,還依賴(lài)于嵌入式系統板級設備的配置。對于2塊不同的板子而言,即使他們使用的是相同的處理器,要想讓運行在一塊板子上的Bootloader程序也能運行在另一塊板子上,一般也需要修改Bootloader的源程序。

Bootloader的啟動(dòng)方式

Bootloader的啟動(dòng)方式主要有網(wǎng)絡(luò )啟動(dòng)方式、磁盤(pán)啟動(dòng)方式和Flash啟動(dòng)方式。

1、網(wǎng)絡(luò )啟動(dòng)方式

圖1 Bootloader網(wǎng)絡(luò )啟動(dòng)方式示意圖

如圖1所示,里面主機和目標板,他們中間通過(guò)網(wǎng)絡(luò )來(lái)連接,首先目標板的DHCP/BIOS通過(guò)BOOTP服務(wù)來(lái)為Bootloader分配IP地址,配置網(wǎng)絡(luò )參數,這樣才能支持網(wǎng)絡(luò )傳輸功能。我們使用的可以直接設置網(wǎng)絡(luò )參數,因此這里就不用使用DHCP的方式動(dòng)態(tài)分配IP了。接下來(lái)目標板的Bootloader通過(guò)TFTP服務(wù)將內核映像下載到目標板上,然后通過(guò)網(wǎng)絡(luò )文件系統來(lái)建立主機與目標板之間的文件通信,之后的系統更新通常也是使用Boot Loader的這種工作模式。工作于這種模式下的Boot Loader通常都會(huì )向它的終端用戶(hù)提供一個(gè)簡(jiǎn)單的命令行接口。

2、磁盤(pán)啟動(dòng)方式

這種方式主要是用在臺式機和服務(wù)器上的,這些計算機都使用BIOS引導,并且使用磁盤(pán)作為存儲介質(zhì),這里面兩個(gè)重要的用來(lái)啟動(dòng)linux的有LILO和GRUB,這里就不再具體說(shuō)明了。

3、flash啟動(dòng)方式

這是我們最常用的方式。Flash有NOR Flash和NAND Flash兩種。NOR Flash可以支持隨機訪(fǎng)問(wèn),所以可以直接在Flash上執行,Bootloader一般是存儲在Flash芯片上的。另外Flash上還存儲著(zhù)參數、內核映像和文件系統。這種啟動(dòng)方式與網(wǎng)絡(luò )啟動(dòng)方式之間的不同之處就在于,在網(wǎng)絡(luò )啟動(dòng)方式中,內核映像和文件系統首先是放在主機上的,然后經(jīng)過(guò)網(wǎng)絡(luò )傳輸下載進(jìn)目標板的,而這種啟動(dòng)方式中內核映像和文件系統則直接是放在Flash中的,這兩點(diǎn)在我們的使用中都用到了。

U-boot的定義

U-boot,全稱(chēng)Universal Boot Loader,是由DENX小組的開(kāi)發(fā)的遵循GPL條款的開(kāi)放源碼項目,它的主要功能是完成硬件設備初始化、操作系統搬運,并提供一個(gè)控制臺及一個(gè)指令集在操作系統運行前操控硬件設備。U-boot之所以這么通用,原因是他具有很多特點(diǎn):開(kāi)放源、支持多種嵌入式操作系統內核、支持多種處理器系列、較高的穩定性、高度靈活的功能設置、豐富的設備驅動(dòng)源碼以及較為豐富的開(kāi)發(fā)調試文檔與強大的網(wǎng)絡(luò )技術(shù)支持。另外u-boot對操作系統和產(chǎn)品研發(fā)提供了靈活豐富的支持,主要表現在:可以引導壓縮或非壓縮系統內核,可以靈活設置/傳遞多個(gè)關(guān)鍵參數給操作系統,適合系統在不同開(kāi)發(fā)階段的調試要求與產(chǎn)品發(fā)布,支持多種文件系統,支持多種目標板環(huán)境參數存儲介質(zhì),采用CRC32校驗,可校驗內核及鏡像文件是否完好,提供多種控制臺接口,使用戶(hù)可以在不需要ICE的情況下通過(guò)串口/以太網(wǎng)/USB等接口下載數據并燒錄到存儲設備中去(這個(gè)功能在實(shí)際的產(chǎn)品中是很實(shí)用的,尤其是在軟件現場(chǎng)升級的時(shí)候),以及提供豐富的設備驅動(dòng)等。

u-boot源代碼的目錄結構

1、board中存放于開(kāi)發(fā)板相關(guān)的配置文件,每一個(gè)開(kāi)發(fā)板都以子文件夾的形式出現。

2、Commom文件夾實(shí)現u-boot行下支持的命令,每一個(gè)命令對應一個(gè)文件。

3、cpu中存放特定cpu架構相關(guān)的目錄,每一款cpu架構都對應了一個(gè)子目錄。

4、Doc是文檔目錄,有u-boot非常完善的文檔。

5、Drivers中是u-boot支持的各種設備的驅動(dòng)程序。

6、Fs是支持的文件系統,其中最常用的是JFFS2文件系統。

7、Include文件夾是u-boot使用的頭文件,還有各種硬件平臺支持的匯編文件,系統配置文件和文件系統支持的文件。

8、Net是與網(wǎng)絡(luò )協(xié)議相關(guān)的代碼,bootp協(xié)議、TFTP協(xié)議、NFS文件系統得實(shí)現。

9、Tooles是生成U-boot的工具。

對u-boot的目錄有了一些了解后,啟動(dòng)代碼的就方便多了,其中比較重要的目錄就是/board、/cpu、/drivers和/include目錄,如果想實(shí)現u-boot在一個(gè)平臺上的,就要對這些目錄進(jìn)行深入的。

u-boot的啟動(dòng)過(guò)程


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>