新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于PXA255的嵌入式Linux應(yīng)用平臺的構(gòu)建

基于PXA255的嵌入式Linux應(yīng)用平臺的構(gòu)建

作者: 時間:2012-03-22 來源:網(wǎng)絡(luò) 收藏

1 引言

(Embedded Linux)是指對Linux經(jīng)過小型化裁剪后,能夠固化在容量僅有幾十萬字節(jié)的存儲器芯片或單片機(jī)中,應(yīng)用于特定嵌入式場合的專用Linux操作系統(tǒng)。是由很多體積小且性能高的微內(nèi)核系統(tǒng)組成,在內(nèi)核代碼完全開放的前提下,不同領(lǐng)域和不同層次的用戶可以根據(jù)自己的應(yīng)用需要很容易地對內(nèi)核進(jìn)行改造,在低成本的前提下,設(shè)計和開發(fā)出真正滿足自己需要的嵌入式系統(tǒng)。

隨著電子市場的發(fā)展壯大,高性能低功耗的多媒體手提設(shè)備和無線設(shè)備越來越受到市場的歡迎,Intel XScale PXA255處理器正是針對這一情況推出的。它采用Intel XScale微結(jié)構(gòu)體系框架,采用ARMV5TE的7級超流水線,可以工作在200MHz、300MHz、400MHz下,集成了許多常用的外圍接口,功能強(qiáng)大。本文將介紹如何在Intel XScale PXA255上構(gòu)建應(yīng)用平臺。

一個嵌入式Linux系統(tǒng)的構(gòu)建由以下步驟組成:加載引導(dǎo)程序、交叉編譯環(huán)境下加載和編譯和與之配套的根文件系統(tǒng)等,下面就逐步介紹各個步驟的實(shí)現(xiàn)情況。

2.1 加載引導(dǎo)程序

引導(dǎo)程序是系統(tǒng)加電啟動后運(yùn)行的第一段軟件代碼?;貞浺幌翽C的體系結(jié)構(gòu)我們可以知道,PC機(jī)中的引導(dǎo)加載程序由BIOS(其本質(zhì)就是一段固件程序)和位于硬盤MBR中的引導(dǎo)程序一起組成。而在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動任務(wù)就完全由Bootloader來完成。Bootloader的啟動流程一般分為兩個階段:stage1和stage2。在 stage1中的代碼通常用匯編語言實(shí)現(xiàn),以提高系統(tǒng)運(yùn)行的效率,而stage2中通常用C語言實(shí)現(xiàn),目的是實(shí)現(xiàn)更復(fù)雜的功能和取得更好的代碼可讀性和可移植性。

在stage1中Bootloader主要完成以下工作:

項(xiàng)目基金:國家自然科學(xué)基金(50678099)

(1)基本的硬件初始化。

(2)為加載stage2準(zhǔn)備RAM空間。

(3)拷貝stage2到RAM空間中。

(4)設(shè)置堆棧指針sp,這是為執(zhí)行stage2的C語言代碼做好準(zhǔn)備。

在stage2中Bootloader主要完成以下工作:(1)用匯編語言跳轉(zhuǎn)到main入口函數(shù)。(2)初始化本階段要使用到的硬件設(shè)備。(3)檢測系統(tǒng)的內(nèi)存映射。(4)加載內(nèi)核映像和根文件系統(tǒng)映像。(5)設(shè)置內(nèi)核的啟動參數(shù)。

本平臺中的Bootloader選擇的是U-Boot(Universal Bootloader),是遵循GPL條款的開放源碼項(xiàng)目。其源碼目錄、編譯形式與很相似,事實(shí)上,不少U-Boot源碼就是相應(yīng)的 源程序的簡化,尤其是一些設(shè)備的驅(qū)動程序,這從U-Boot源碼的注釋中就能體現(xiàn)這一點(diǎn)。就目前為止,U-Boot對PowerPC系列處理器支持最為豐富,對Linux的支持最完善。

在http://sourceforge.net/projects/u-boot下下載最新版本的U-Boot,移植之前需要仔細(xì)閱讀u-boot目錄下的readme文件,其中對如何移植做了簡要的介紹。為了減少移植的工作量,可以在include / config目錄下選一個和要移植的硬件相同或相似的開發(fā)板,根據(jù)硬件平臺的配置情況和參考現(xiàn)有的源碼,對配置文件進(jìn)行修改和配置,如修改和配置 FLASH信息、SDRAM信息、網(wǎng)絡(luò)配置、處理器配置、中斷、開發(fā)版參數(shù)設(shè)置等。之后用make命令生成映像文件下載并燒寫到FLASH中。

2.2 交叉編譯環(huán)境下加載和編譯Linux內(nèi)核

2.2.1 建立交叉編譯環(huán)境

所謂交叉編譯是指當(dāng)主機(jī)系統(tǒng)和目標(biāo)系統(tǒng)的體系結(jié)構(gòu)與操作系統(tǒng)不兼容時,將在主機(jī)系統(tǒng)上編譯的可執(zhí)行程序應(yīng)用到目標(biāo)系統(tǒng)上運(yùn)行的編譯方法。嵌入式系統(tǒng)通常是一個資源受限的系統(tǒng),因此直接在嵌入式系統(tǒng)的硬件平臺上編寫軟件比較困難,有時候甚至是不可能的。所以需要建立交叉編譯環(huán)境,下載hybus- arm-linux-R1.1.tar.gz到/usr/local目錄下。


上一頁 1 2 3 4 下一頁

評論


相關(guān)推薦

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

關(guān)閉