基于Xscale的PC/104 Linux系統(tǒng)構(gòu)建
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 引言
PC/104是一種專門為嵌入式控制而定義的工業(yè)控制總線。其實(shí)質(zhì)是一種緊湊的IEEE-P996總線規(guī)范。PC/104的信號(hào)定義和PC/AT基本一致,但電氣和機(jī)械規(guī)范完全不同,是一種優(yōu)化的、低功耗的、小型的、堆棧式結(jié)構(gòu)的嵌入式控制系統(tǒng)[1]。
基于嵌入式PC/104的操作系統(tǒng)多為DOS或者Windows。采用DOS系統(tǒng)無圖形窗口,交互能力差;采用Windows系統(tǒng)則需要昂貴的版權(quán)費(fèi),成本高,且存在安全問題。
ARM(Advanced RISC Machines) 公司是全球領(lǐng)先的16/32位RISC微處理器知識(shí)產(chǎn)權(quán)設(shè)計(jì)供應(yīng)商[2]。 ARM處理器具有體積小、功耗低、性能優(yōu)良且成本低廉等優(yōu)點(diǎn),與PC/104的工作環(huán)境對(duì)其提出的要求相符,而且Linux具有開放源碼的特點(diǎn),用戶不必為昂貴的版權(quán)費(fèi)用擔(dān)心。因此,研究以基于ARM的Xscale處理器替代傳統(tǒng)的X86架構(gòu)的PC/104處理器,并以嵌入式Linux系統(tǒng)替代DOS或 Windows系統(tǒng)具有重要意義。
2 PC/104目標(biāo)硬件平臺(tái)介紹
本文采取博創(chuàng)公司的UP-PXA270 PC/104 CPU模塊作為構(gòu)建Linux的目標(biāo)硬件平臺(tái)。該模塊采用Intel PXA270 Xscale低功耗處理器,主頻104MHZ~520MHZ,集成了64M的SDRAM,有16M的Nor Flash存儲(chǔ)軟件程序及重要數(shù)據(jù),提供了CF卡接口、USB接口、VGA接口、LVDS接口、串口、以太網(wǎng)接口。
3 Linux系統(tǒng)在PC/104上的實(shí)現(xiàn)
3.1 內(nèi)核的選擇與下載
目前,Linux已經(jīng)正式發(fā)布了2.6.20內(nèi)核版本,綜合考慮先進(jìn)性和穩(wěn)定性兩個(gè)因素,本
文不采用最新的2.6.20版本,而是采用更穩(wěn)定和成熟的2.6.10版本,該版本可從下面的網(wǎng)址
http://www.arm.linux.rog.uk/下載。
3.2 交叉編譯環(huán)境的建立
由于宿主機(jī)和目標(biāo)板的處理器架構(gòu)不同,需要建立交叉編譯環(huán)境。在宿主機(jī)上完成程序的開發(fā)和編譯,在目標(biāo)板上執(zhí)行,可以充分利用宿主機(jī)的高性能,有效提高編譯效率。
主機(jī)采用商用版Redhat-Linux9.0,以解決基于Windows虛擬機(jī)環(huán)境存在兼容性及對(duì)速度產(chǎn)生影響等問題。
本文在X86架構(gòu)上的主機(jī)上采用針對(duì)ARM的工具鏈進(jìn)行開發(fā),開發(fā)工具鏈采用UP-PXA270 PC/104 CPU模塊配套光盤中提供的交叉編譯器arm-linux-gcc,安裝步驟如下:
以超級(jí)用戶root登陸,并打開一個(gè)shell,依次執(zhí)行如下操作:
1) #mkdir/usr/local/arm;創(chuàng)建開發(fā)工具目錄;
2) #cd/usr/local/arm;進(jìn)入該目錄;
3) #tar xvzf arm_linux_gcc.tar.gz;解壓縮交叉編譯工具;
4) #export PATH=/usr/local/arm/3.2.1/bin:¥PATH。設(shè)置環(huán)境變量。
便可完成安裝,建立好交叉編譯環(huán)境。
3.3 Boot Loader移植
引導(dǎo)加載程序Boot loader是在操作系統(tǒng)內(nèi)核運(yùn)行前運(yùn)行的一小段程序。用來完成硬件和軟件運(yùn)行環(huán)境的初始化,建立內(nèi)存空間映射圖,以便最終調(diào)用操作系統(tǒng)內(nèi)核。作用與PC機(jī)上的BIOS基本相同,是最底層的引導(dǎo)程序。
本文采用了功能最多、最具彈性的被最為積極開發(fā)和維護(hù)的開放源碼的bootloader,即U-BOOT。它除了提供引導(dǎo)功能外,還提供監(jiān)控程序的功能,該功能在系統(tǒng)開發(fā)期間非常有用。
Boot Loader移植操作如下:
首先確定在cpu./xscale/和board./pxa270下存在xscale.c和pxa270.c兩個(gè)文件,然后在根目錄下輸入:make pxa270_config得到U-Boot.bin映像文件,最后用JTAG燒錄到FLASH,完成Boot Loader的移植。
3.4 Linux內(nèi)核的配置與裁減
Linux內(nèi)核已經(jīng)發(fā)展到2.6.20版本,功能非常強(qiáng)大,但是,體積也變的異常龐大。因此,必須針對(duì)PC/104目標(biāo)板的硬件配置進(jìn)行裁減。
根據(jù)目標(biāo)板PXA270的資源配置,采用make menuconfig配置內(nèi)核,將有關(guān)CPU、內(nèi)存管理、JFFS2文件系統(tǒng)支持、串口支持、網(wǎng)口支持編譯進(jìn)內(nèi)核,將音頻、觸摸屏接口、LVDS接口作為模塊編譯,需要時(shí)動(dòng)態(tài)載入,這樣編譯下來的內(nèi)核只有300KB左右,大大減小了內(nèi)核的體積,減輕了目標(biāo)板有限的存儲(chǔ)空間和內(nèi)存的壓力。
編譯并生成鏡像命令如下:
1)#tar jxvf my-linux-2.6.10..tar.bz2
2)#ln –s linux-2.6.10 linux
3)#cd linux
4)#make clean
5)#make dep
6)#make bzImage
3.5 文件系統(tǒng)的選擇和建立
根據(jù)文件系統(tǒng)的特性[5]和PC/104目標(biāo)板的硬件環(huán)境,選擇JFFS2作為PC/104目標(biāo)板的文件系統(tǒng)。JFFS2文件系統(tǒng)具有垃圾回收功能維護(hù)空間,并且它的元數(shù)據(jù)的結(jié)構(gòu)允許文件系統(tǒng)的寫入操作,故可提供對(duì)使用Flash系統(tǒng)而言非常重要的斷電可靠性和損耗平衡特性,能應(yīng)對(duì)PC104工作時(shí)的突發(fā)事件,避免系統(tǒng)由于突發(fā)事件造成崩潰,從而提高系統(tǒng)的安全性。
商用發(fā)行版Red Hat的文件系統(tǒng)內(nèi)容來自GNU,體積龐大,不適合做嵌入式系統(tǒng)的文件系統(tǒng),而Busybox是小型嵌入式系統(tǒng)常用的一個(gè)套件,它可以根據(jù)配置執(zhí)行ash shell的基本功能,以及幾十個(gè)小應(yīng)用程序的功能,而大小只有300K左右,是目前嵌入式領(lǐng)域最活躍的系統(tǒng)應(yīng)用套件。故本文使用Busybox系統(tǒng)套件。
將全部的文件系統(tǒng)移植到目標(biāo)板之前,需要用mkfs.jffs2工具打包。具體移植操作如下:
1) 解壓根文件系統(tǒng),生成root目錄。
#tar jxf up-netpxa270_fs.tar.bz2
2) 解壓busybox
#cd up-techpxa270/kernel/02_root
#tar zxf busybox-1.00-pre9.tar.gz
#cd busybox-1.00-pre9
3) 配置安裝busybox
#make menucongfig
4) 生成JFFS2文件系統(tǒng)
#/mkfs.jffs2 -r root -o rootfs.img -e 0x20000 --pad=0xd00000
移植好文件系統(tǒng)后,便可以通過U-boot引導(dǎo),并掛載該文件系統(tǒng)根分區(qū)啟動(dòng)Linux。
4 系統(tǒng)測(cè)試
開發(fā)的基于Xscale的PC/104 Linux系統(tǒng)硬件如圖1所示。室溫25℃,通風(fēng)良好條件下,經(jīng)測(cè)試,系統(tǒng)能夠啟動(dòng)并穩(wěn)定運(yùn)行(如圖2),通過PING命令測(cè)試表明,系統(tǒng)能夠與外網(wǎng)連通(如圖3),且工作穩(wěn)定,系統(tǒng)構(gòu)建成功。
5 結(jié)論
以博創(chuàng)公司的UP-PXA270 PC/104 CPU模塊作為構(gòu)建Linux的目標(biāo)硬件平臺(tái),采用商用版Redhat-Linux9.0建立交叉編譯環(huán)境;利用U-BOOT進(jìn)行Boot Loader移植,用make menuconfig配置內(nèi)核;將音頻、觸摸屏接口、LVDS接口作為模塊編譯,以減小內(nèi)核的體積;并根據(jù)文件系統(tǒng)的特性,使用Busybox系統(tǒng)套件進(jìn)行文件系統(tǒng)移植。測(cè)試結(jié)果表明,本文構(gòu)建的基于Xscale處理器的PC/104Linux系統(tǒng)能夠正常啟動(dòng)并與外網(wǎng)穩(wěn)定通訊,為PC/104在工業(yè)控制領(lǐng)域的廣泛應(yīng)用提供了新的途徑,提出的移植方法具有普遍的借鑒價(jià)值。[!--empirenews.page--]
今后,需要在此基礎(chǔ)上,研究并實(shí)現(xiàn)易于使用、界面友好的圖形用戶接口,提高系統(tǒng)的人機(jī)交互性和操作便捷性。
本文作者創(chuàng)新觀點(diǎn):首次提出以Xscale處理器架構(gòu)的PC/104板作為Linux系統(tǒng)的移植目標(biāo)平臺(tái)并進(jìn)行系統(tǒng)構(gòu)建。
參考文獻(xiàn)
[1] 包乃蘭,寧立革,林濤,郭計(jì)策.一種嵌入式系統(tǒng)控制方案的研究[J].微計(jì)算機(jī)信息,2005,9-2:62-64
[2] 王田苗. 嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)[M].北京:清華大學(xué)出版社,2003.
[3] 鄒淼,包啟亮.PC/104下嵌入式Linux操作系統(tǒng)優(yōu)化方案[J].光電工程,2004,12(31):152-155
[4] 蔡勇,戰(zhàn)興群,張炎華等. 基于嵌入式Linux的“北斗一號(hào)”衛(wèi)星導(dǎo)航系統(tǒng)軟件設(shè)計(jì)[J].中國慣性技術(shù)學(xué)報(bào),2005(13):54-58
[5] Karim Yaghbmour. 構(gòu)建嵌入式LINUX系統(tǒng)[M]. 北京:中國電力出版社,2006.