?
隨著性能的逐漸提高以及成本的不斷降低,FPGA在嵌入式領(lǐng)域的應(yīng)用日益廣泛。本文介紹了PetaLinux操作系統(tǒng)的特點(diǎn)和目錄結(jié)構(gòu),并分析了基于MLD的BSP自動(dòng)生成技術(shù),最后總結(jié)了PetaLinux操作系統(tǒng)移植的具體方法。這對(duì)設(shè)計(jì)基于MicroBlaze處理器的嵌入式系統(tǒng)具有重要指導(dǎo)意義。
FPGA生產(chǎn)商Xilinx公司提供了全面的嵌入式處理器解決方案,包括PowerPC、MicroBlaze和PicoBlaze三款RISC結(jié)構(gòu)的處理器核。其中,MicroBlaze是32位嵌入式軟核處理器解決方案,支持CoreConnect總線的標(biāo)準(zhǔn)外設(shè)集合,具有兼容性、可配置性以及重復(fù)利用性,能夠根據(jù)成本和性能要求提供高性價(jià)比的處理性能。
支持MicroBlaze處理器的嵌入式操作系統(tǒng)很多,比如uc/os—II、BuleCat ME Linux、RTA MB、ThreadX、PetaLinux等等。本文介紹了PetaLogix公司發(fā)布的PetaLinux操作系統(tǒng),并分析了Xilinx公司所使用BSP自動(dòng)生成技術(shù)。最后總結(jié)出PetaLinux操作系統(tǒng)在MicroBlaze平臺(tái)上的移植方法和步驟。
1 PetaLinux操作系統(tǒng)介紹
PetaLinux操作系統(tǒng)是面向MicroBlaze軟核處理器的全功能嵌入式Linux操作系統(tǒng)。其發(fā)布采用了“all inone”的整合方式,將針對(duì)MicroBlaze處理器定制的Linux2.4/z.6內(nèi)核源碼、U—boot源碼、相關(guān)的開(kāi)發(fā)工具以及開(kāi)發(fā)板參考硬件平臺(tái)配置,集成在一個(gè)壓縮包內(nèi)發(fā)行,極大地方便了開(kāi)發(fā)人員的使用。該操作系統(tǒng)主要具有以下幾大特點(diǎn):
①針對(duì)FPGA嵌入式開(kāi)發(fā)的特點(diǎn)采用了板級(jí)支持包。
②自動(dòng)生成工具,可以根據(jù)用戶定義的嵌入式硬件平臺(tái)信息自動(dòng)生成板級(jí)支持包,簡(jiǎn)化了操作系統(tǒng)的移植。
③PetaLinux發(fā)布的源碼樹(shù)中包含了部分常用IP核的驅(qū)動(dòng)程序(如GPIO、EthernetLite、UartLite等),減少了用戶移植、編寫(xiě)驅(qū)動(dòng)程序的工作量。
④根據(jù)設(shè)計(jì)的不同需求,可以通過(guò)配置菜單將PetaLinux配置成without MMU support和MMU support兩種版本,即ttClinux和標(biāo)準(zhǔn)Linux。
PetaLinux包含了大量的腳本命令(如petalinux-copy-autoconfig、petalinux-new-platform、petalinux-new—app等),給用戶的使用提供了便捷條件。
頂級(jí)目錄下各子目錄的結(jié)構(gòu)和功能如圖1所示。在PetaLinux的目錄結(jié)構(gòu)中有硬件、軟件和工具3個(gè)頂級(jí)目錄,分別包含與之相關(guān)的文件和代碼。針對(duì)宿主機(jī)操作系統(tǒng)不同的shell類型,具有C shell和Bash shell兩種PetaLinux環(huán)境變量設(shè)置腳本。
?
2 基于MLD的BSP生成技術(shù)
在嵌入式系統(tǒng)中,BSP(Board Support Package,板級(jí)支持包)是指給目標(biāo)板提供特定操作系統(tǒng)支持的代碼,介于底層硬件和操作系統(tǒng)之間,是完成嵌入式操作系統(tǒng)移植和相關(guān)驅(qū)動(dòng)程序開(kāi)發(fā)的關(guān)鍵。
Xilinx公司在嵌入式開(kāi)發(fā)軟件)a玲中采用了以MLD(Microprocessor Library Definition,微處理器庫(kù)定義)專有格式為基礎(chǔ)的動(dòng)態(tài)可定制的BSP生成技術(shù),實(shí)現(xiàn)了BSP和軟件庫(kù)的自動(dòng)化生成。每個(gè)操作系統(tǒng)和庫(kù)都有各自唯一的MLD文件和與之相關(guān)的1℃L(Tool Command Language,工具命令語(yǔ)言>文件。MLD文件是數(shù)據(jù)定義文件,通過(guò)XPS中設(shè)置的一組參數(shù)來(lái)定義庫(kù)和操作系統(tǒng)。這些參數(shù)值將保存在XPS內(nèi)部數(shù)據(jù)庫(kù)中,在輸出生成時(shí)供腳本文件使用。TCL文件是腳本文件,包含了一組可以訪問(wèn)整個(gè)設(shè)計(jì)數(shù)據(jù)庫(kù)的程序。XPS軟件通過(guò)調(diào)用它來(lái)創(chuàng)建定制BSP。利用m生成BSP的流程如圖2所示。
?
3 PetaLinux內(nèi)核的移植方法
3.1搭建交叉開(kāi)發(fā)環(huán)境
為了便于在Windows平臺(tái)下開(kāi)發(fā)基于PetaLinux的嵌入式系統(tǒng),本文利用VMWare虛擬機(jī)軟件來(lái)搭建交叉開(kāi)發(fā)環(huán)境,如圖3所示。首先,在主機(jī)的Windows平臺(tái)上安裝虛擬機(jī)軟件,然后通過(guò)虛擬機(jī)來(lái)安裝紅帽子企業(yè)版Red Hat Enterprise 4,最后在桌面Linux系統(tǒng)中安裝PetaLinux源碼樹(shù)。Windows和Linux兩種系統(tǒng)間的數(shù)據(jù)交換通過(guò)設(shè)置共享目錄來(lái)實(shí)現(xiàn)。
?
PetaIJnux操作系統(tǒng)采用整合方式發(fā)布,下載的壓縮包內(nèi)已經(jīng)包含了完整的交叉開(kāi)發(fā)工具鏈,安裝方法非常簡(jiǎn)單。
(1)建立工作目錄
在Linux操作系統(tǒng)的終端模式下運(yùn)行“mkdir/home/embed”命令,新建embed文件夾作為嵌入式開(kāi)發(fā)的工作目錄。
?
(2)解壓壓縮包
通過(guò)共享目錄把PetaLogix公司發(fā)布的壓縮包petalinux-v0.40一rc2.tar.gz拷貝到embed工作目錄中。然后在終端模式下運(yùn)行“tar-zxvf petalinux-v0.40一rc2.tar.gz”解壓縮命令。解壓縮完成后,在工作目錄中會(huì)生成一個(gè)與壓縮包相同名稱的文件夾,PetaLinux內(nèi)核源碼、U.boot源碼以及開(kāi)發(fā)工具等資源均在其中的各個(gè)目錄中。
(3)設(shè)置環(huán)境變量
PetaLinux系統(tǒng)已經(jīng)為用戶編寫(xiě)好了設(shè)置環(huán)境變量的腳本文件settings.sh和settings.csh。用戶只需要根據(jù)宿主機(jī)操作系統(tǒng)shell的類型,運(yùn)行相應(yīng)的環(huán)境變量配置腳本即可完成PetaLinux開(kāi)發(fā)環(huán)境的設(shè)置。需要注意的是,每次進(jìn)入終端模式都必須運(yùn)行一次環(huán)境變量配置腳本。
(4)查看交叉編譯器版本
在終端模式下運(yùn)行microblaze-uclinux-gcc-v命令,查看編譯器的版本信息。如果交叉開(kāi)發(fā)工具鏈安裝沒(méi)有問(wèn)題,運(yùn)行命令后在終端窗口將出現(xiàn)圖4所示的版本信息。
?
3.2為目標(biāo)板創(chuàng)建BSP
在XPS軟件中生成板級(jí)支持包的具體方法如下:
(1)安裝板級(jí)支持包自動(dòng)生成工具
PetaLinux在發(fā)布時(shí)已經(jīng)提供了完備的MLD和TCL文件,位于壓縮包hardware/edk—user—respository目錄下。安裝的方法非常簡(jiǎn)單,直接將edk—user—respository目錄下的petalinux vl一00一a和petalinux vl一00一b兩個(gè)文件夾,拷貝到EDK安裝路徑x:\Xilinx\10.1\EDK\sw\lib\bsp下即可(其中,X指Windows系統(tǒng)中的磁盤(pán)盤(pán)符)。當(dāng)重新啟動(dòng)XPS時(shí),PetaLinux操作系統(tǒng)選項(xiàng)便出現(xiàn)在Software>Software Platform Settings>Software Plat—form>OS下拉列表框中。
(2)構(gòu)建基于MicroBlaze的嵌入式硬件平臺(tái)
利用XPS軟件中的BSB向?qū)軌蚩焖贅?gòu)建簡(jiǎn)單的嵌入式系統(tǒng),而且可以通過(guò)添加IP Catalog中提供的IP核,或者用戶根據(jù)需求自己設(shè)計(jì)的IP核來(lái)進(jìn)一步完善嵌入式系統(tǒng)的功能,完成基于MieroBlaze的SOPC硬件系統(tǒng)的設(shè)計(jì)。
(3)配置軟件平臺(tái)
在XPS軟件界面中,選擇Software菜單中Software Platform Settings選項(xiàng)。彈出的對(duì)話框中有Software Platform、OS and Libraries和Drivers三個(gè)選項(xiàng)卡。在Software Platform選項(xiàng)卡的OS下拉列表框中選擇PetaLinux操作系統(tǒng),在Version下拉列表框中選擇1.00.b版本,如圖5所示。當(dāng)僅限于使用Linux2.4內(nèi)核時(shí),也可以選擇1.00.a(chǎn)版本。
?
在OS and Libraries選項(xiàng)卡中根據(jù)目標(biāo)板的實(shí)際情況為操作系統(tǒng)設(shè)置相關(guān)參數(shù)。相關(guān)參數(shù)的設(shè)置情況如表1所列。
?
(4)生成板級(jí)支持包
在XPS軟件中,選擇Software菜單中的Generate Libraries and BSPs選項(xiàng),系統(tǒng)調(diào)用庫(kù)生成工具Libgen依據(jù)用戶定義的硬件平臺(tái)自動(dòng)生成板級(jí)支持包,并保存在工程目錄\microblaze_O\libsrc\petalinux_vl_00_b\src下。同時(shí),在上一級(jí)目錄中將生成包含了硬件平臺(tái)完整描述信息的配置文件,即用于2.4內(nèi)核的auto-config.in文件和用于2.6內(nèi)核的Kconfig.a(chǎn)uto文件。
當(dāng)硬件平臺(tái)發(fā)生更改時(shí),必須再次運(yùn)行Generate libraries and BSPs選項(xiàng),重新生成BSP。
3.3 為PetaLinux操作系統(tǒng)傳遞配置信息
PetaLinux操作系統(tǒng)中的AutoConfig結(jié)構(gòu)允許將硬件配置信息傳遞到Bootloader和Linux內(nèi)核配置中,并利用EDK工程目錄中的MSS文件為特定硬件平臺(tái)自動(dòng)配置內(nèi)核和Bootloader。下面介紹具體實(shí)現(xiàn)方法。
(1)創(chuàng)建并配置新平臺(tái)
這里以用戶使用自行設(shè)計(jì)的目標(biāo)板為例,首先為目標(biāo)板建立一個(gè)新的設(shè)計(jì)平臺(tái),在終端模式下運(yùn)行以下命令。
cd/home/embed/petalinux-vO.40一rc2/software/petalinux-dist
petalinux-new-platform-k 2.6-v Xilinx—P newl800
make menueonfig
命令執(zhí)行后,將創(chuàng)建一個(gè)名稱為newl800的平臺(tái),同時(shí)進(jìn)入終端式內(nèi)核配置菜單。利用上下光標(biāo)鍵選擇Vendor/Product Selection選項(xiàng),單擊回車鍵進(jìn)入下一級(jí)菜單。在該菜單中選擇供應(yīng)商和產(chǎn)品,如圖6所示。
?
(2)拷貝EDK工程文件
拷貝EDK工程文件到/hardware/use-platform路徑下,該路徑是腳本工具默認(rèn)的操作位置。通過(guò)共享文件夾將整個(gè)工程文件夾拷貝到Linux環(huán)境中。
(3)傳遞配置信息
系統(tǒng)配置過(guò)程中將利用auto-eonfig.in文件、或者Kconfig.a(chǎn)uto文件中硬件信息為內(nèi)核構(gòu)建Makefile文件。PetaLinux提供的腳本命令可以快速地將該文件拷貝到PetaLinux源碼樹(shù)中。直接在終端模式下運(yùn)行petalinuxcopy-autoconfig腳本命令即可。
3.4 配置和編譯PetaLinux內(nèi)核
Linux內(nèi)核支持多種配置方法,其中“make menuconfig”方法基于文本圖形化終端來(lái)顯示配置菜單,是目前使用最廣泛的配置方法。在終端模式下運(yùn)行“make menuconfig”命令即可進(jìn)入配置界面,再選擇Kernel/Library/Default Selection選項(xiàng),設(shè)置內(nèi)核版本為linux一2.6.X。同時(shí),選中customize kernel settings和customize vendor/usersettings選項(xiàng),即可進(jìn)行內(nèi)核設(shè)置和用戶功能設(shè)置。
Linux內(nèi)核配置選項(xiàng)眾多,實(shí)際上大部分選項(xiàng)可以使用默認(rèn)值,只有少部分需要用戶根據(jù)所使用硬件平臺(tái)的實(shí)際情況以及對(duì)操作系統(tǒng)的功能需求來(lái)進(jìn)行選擇。內(nèi)核配置完成后,選擇保存退出。在終端模式下運(yùn)行“make all”命令,系統(tǒng)便開(kāi)始編譯內(nèi)核及相關(guān)應(yīng)用。編譯過(guò)程時(shí)間比較長(zhǎng),通過(guò)觀察終端上顯示的編譯信息,可以了解編譯的進(jìn)度、出現(xiàn)的錯(cuò)誤和警告信息等。如果內(nèi)核配置沒(méi)有問(wèn)題,則編譯成功后,在/software/petalinux-dist/images目錄下將生成各種不同格式的鏡像文件。
3.5 下載內(nèi)核
生成的內(nèi)核文件是否正確,需要通過(guò)在實(shí)際硬件環(huán)境中運(yùn)行來(lái)檢驗(yàn)。在調(diào)試階段下載內(nèi)核到目標(biāo)板一般可以通過(guò)JTAG、串口、以太網(wǎng)和USB接口來(lái)進(jìn)行數(shù)據(jù)傳輸。為了方便調(diào)試,這里通過(guò)JTAG接口采取XMD調(diào)試方式,動(dòng)態(tài)加載和啟動(dòng)PetaLinux。具體步驟如下:
(1)連接硬件調(diào)試環(huán)境
通過(guò)JTAG電纜連接PC機(jī)和目標(biāo)板的JTAG接口,作為內(nèi)核下載通路;通過(guò)串行電纜連接PC機(jī)串口和目標(biāo)板串口,作為控制臺(tái)通路;通過(guò)5類網(wǎng)絡(luò)電纜連接PC機(jī)網(wǎng)口和目標(biāo)板網(wǎng)口,作為以太網(wǎng)測(cè)試通路。
(2)設(shè)置軟件環(huán)境
使用Windows XP自帶的超級(jí)終端工具作為控制臺(tái)軟件??刂婆_(tái)參數(shù)設(shè)置為:波特率115 200 b/s,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn),無(wú)流量控制。PC機(jī)的IP地址設(shè)置為192.168.0.1,同時(shí)關(guān)閉Windows XP的防火墻。
(3)配置FPGA
啟動(dòng)XPS開(kāi)發(fā)平臺(tái),選擇Device Configuration菜單中的Download Bitstream選項(xiàng),下載硬件比特流文件download.bit。
(4)利用XMD加載內(nèi)核鏡像到外部存儲(chǔ)器
將/software/petalinux-dist/images目錄下的二進(jìn)制格式的image.bin文件復(fù)制到Windows主機(jī)中的EDK工程目錄下。啟動(dòng)XMD命令行界面,輸入以下命令
dow-data imge.bin 0x86000000
其中,0x86000000是外部存儲(chǔ)器的起始地址。當(dāng)內(nèi)核鏡像加載到存儲(chǔ)器之后,在XMD命令行中繼續(xù)輸入
con 0x86000000
如果內(nèi)核文件沒(méi)有錯(cuò)誤,MicroBlaze將啟動(dòng)PetaLinux操作系統(tǒng),系統(tǒng)的啟動(dòng)信息將輸出到超級(jí)終端上。
(5)登錄系統(tǒng)
內(nèi)核啟動(dòng)完成后將顯示“uClinux login:”,提示用戶輸入用戶名和密碼登錄系統(tǒng)。輸入用戶名root和密碼root,即可登錄PetaLinux操作系統(tǒng)。此時(shí)串口作為PetaLinux操作系統(tǒng)的控制臺(tái),通過(guò)超級(jí)終端軟件來(lái)接收串口數(shù)據(jù)和發(fā)送串口數(shù)據(jù)。在超級(jí)終端上運(yùn)行l(wèi)s命令,即可顯示根文件系統(tǒng)下的目錄結(jié)構(gòu)。
結(jié)語(yǔ)
Xilinx公司的MicroBlaze軟核處理器一直處于不斷發(fā)展和完善的狀態(tài),應(yīng)用范圍也將越來(lái)越廣泛。本文詳細(xì)介紹了PetaLinux操作系統(tǒng),并總結(jié)出了PetaLinux操作系統(tǒng)的移植方法,這對(duì)設(shè)計(jì)基于MicroBlaze處理器的嵌入式系統(tǒng)具有重要的指導(dǎo)意義。
評(píng)論