用戶可輕松將這款高穩(wěn)健操作系統(tǒng)安裝到目標(biāo)FPGA平臺(tái)上,以供嵌入式設(shè)計(jì)項(xiàng)目使用。
從最初不起眼的膠合邏輯開始,F(xiàn)PGA已經(jīng)歷了漫長(zhǎng)的發(fā)展道路。當(dāng)前FPGA的邏輯容量和靈活性已將其帶入了嵌入式設(shè)計(jì)的中心位置。目前,在單個(gè)可編程芯片上可實(shí)現(xiàn)一個(gè)完整系統(tǒng),這種架構(gòu)有助于軟硬件的協(xié)同設(shè)計(jì),并能將軟硬件應(yīng)用進(jìn)行集成。
這些基于FPGA的嵌入式設(shè)計(jì)種類需要穩(wěn)健的操作系統(tǒng)。PetaLinux應(yīng)運(yùn)而生,已成為眾多嵌入式設(shè)計(jì)人員青睞的對(duì)象。它以開源免費(fèi)的方式提供,支持包括賽靈思MicroBlaze? CPU和ARM?處理器在內(nèi)的多種處理器架構(gòu)。要將PetaLinux移植到特定的FPGA上,必須針對(duì)目標(biāo)平臺(tái)定制、配置和構(gòu)建內(nèi)核源代碼、引導(dǎo)載入程序、器件樹和根文件系統(tǒng)。
對(duì)于PES大學(xué)和C-DOT的一個(gè)設(shè)計(jì)項(xiàng)目而言,我們的研發(fā)團(tuán)隊(duì)準(zhǔn)備移植PetaLinux并在采用Kintex?-7 XC7K325T FPGA的賽靈思KC705評(píng)估板上運(yùn)行多個(gè)PetaLinux用戶應(yīng)用。結(jié)果證明整個(gè)過(guò)程相當(dāng)便捷。
選擇PetaLinux的原因
在詳細(xì)介紹具體做法之前,有必要花點(diǎn)時(shí)間來(lái)探討針對(duì)基于FPGA的嵌入式系統(tǒng)提供的操作系統(tǒng)選項(xiàng)。PetaLinux是FPGA上最常用的操作系統(tǒng),另外還有μClinux 和Xilkernel。μClinux為L(zhǎng)inux發(fā)行版,是一款包含小型Linux內(nèi)核的移植型Linux操作系統(tǒng),適用于無(wú)存儲(chǔ)器管理單元(MMU)的處理器[1]。μClinux配備有各種庫(kù)、應(yīng)用和工具鏈。Xilkernel就其本身而言,是一款小型、高穩(wěn)健性、模塊化內(nèi)核,能夠提供高于μClinux 的定制性能,有助于用戶通過(guò)定制內(nèi)核來(lái)優(yōu)化其設(shè)計(jì)尺寸與功能[2]。
同時(shí),PetaLinux也是一款完整的Linux發(fā)行版及開發(fā)環(huán)境,適用于基于FPGA的片上系統(tǒng)(SoC)設(shè)計(jì)。PetaLinux包含預(yù)配置二進(jìn)制可引導(dǎo)映像、面向賽靈思器件的完全可定制Linux 以及配套提供的PetaLinux軟件開發(fā)套件(SDK)[3]。其中SDK包括用于自動(dòng)完成配置、構(gòu)建和部署過(guò)程中各種復(fù)雜工作的工具和實(shí)用程序。賽靈思提供可免費(fèi)下載的PetaLinux開發(fā)包,其中包括針對(duì)各種賽靈思FGPA開發(fā)套件而設(shè)計(jì)的硬件參考項(xiàng)目。同時(shí)包含在內(nèi)的還有適用于賽靈思FPGA的內(nèi)核配置實(shí)用程序、交叉編譯器等軟件工具、硬件設(shè)計(jì)創(chuàng)建工具以及大量其它設(shè)計(jì)輔助功能。
據(jù)報(bào)道,Xilkernel 的性能優(yōu)于μClinux[4],而PetaLinux的性能又優(yōu)于Xilkernel [5]。由于這個(gè)原因,特別是由于已針對(duì)我們賽靈思目標(biāo)板提供的軟件包原因,我們?yōu)槲覀兊捻?xiàng)目選擇了PetaLinux。移植PetaLinux的另一大優(yōu)勢(shì)是用戶可以輕松實(shí)現(xiàn)遠(yuǎn)程編程。這就意味著用戶可使用遠(yuǎn)程接入方式,通過(guò)遠(yuǎn)程登錄,采用新的配置文件(或比特流文件)加載FPGA目標(biāo)板。
有兩種方法可以創(chuàng)建用于構(gòu)建PetaLinux系統(tǒng)的軟件平臺(tái):在Linux終端上使用PetaLinux命令或通過(guò)下拉菜單使用GUI。
開始安裝
下面詳細(xì)介紹我們項(xiàng)目團(tuán)隊(duì)安裝PetaLinux的方法。第一步,我們下載了PetaLinux軟件包12.12版以及用于Kintex-7目標(biāo)板的電路板支持包(BSP)。然后運(yùn)行了PetaLinux SDK安裝程序,并在控制臺(tái)上使用下列命令把SDK安裝到了/opt/Petalinux-v12.12-final目錄下:
@ cd /opt
@ cd /opt/PetaLinux -v12.12-final-full.tar.gz
@ tar zxf PetaLinux-v12.12-final-full.tar.gz
隨后,我們把從賽靈思網(wǎng)站獲得的PetaLinux SDK許可證復(fù)制并拷貝到.xilinx和.Petalogix文件夾中。接下來(lái),我們使用下列命令獲取適當(dāng)設(shè)置,設(shè)置了SDK的工作環(huán)境:
@ cd /opt/PetaLinux-v12.12-final
@ source settings.sh
為驗(yàn)證工作環(huán)境是否設(shè)置正確,我們使用了以下命令:
@ echo $PETALINUX
如果環(huán)境設(shè)置正確,將顯示PetaLinux的安裝路徑。在本案例中,PetaLinux的安裝路徑是 /opt/PetaLinux-v12.12-final。
圖1:用于用戶設(shè)置的Linux終端窗口截屏
接下來(lái)的工作是安裝BSP,其中包含必要的設(shè)計(jì)文件、配置文件和預(yù)構(gòu)建軟硬件包。這些軟硬件包已經(jīng)通過(guò)測(cè)試,可隨時(shí)下載到目標(biāo)板上。另外軟件包還可用于在快速仿真器(QEMU)系統(tǒng)仿真環(huán)境下的引導(dǎo)。為了安裝BSP,我們?cè)趐ath /opt中創(chuàng)建了一個(gè)名為“bsp”的文件夾,并使用下列命令復(fù)制了KC705 BSP的ZIP文件:
@ cd /opt/PetaLinux-v12.12-final-full
@ source settings.sh
@ source /opt/Xilinx/14.4/ISE _DS/settings32.sh
@ PetaLinux-install-bsp /bsp/Xilinx-KC705
-v12.12- final.bsp
構(gòu)建為新平臺(tái)定制的PetaLinux系統(tǒng),有兩種創(chuàng)建和配置軟件平臺(tái)的方法。一種方法是使用Linux終端,在PetaLinux命令對(duì)應(yīng)的路徑位置使用PetaLinux命令,如圖1所示。第二種方法是通過(guò)下拉菜單使用GUI,如圖2所示。您可使用其中任何一種方法來(lái)選擇平臺(tái),配置Linux內(nèi)核,配置用戶應(yīng)用和構(gòu)建鏡像。在操作系統(tǒng)安裝完成后,就可使用PetaLinux控制臺(tái)。而使用GUI則需要完成PetaLinux SDK插件的安裝。完成該插件的安裝后,就可使用PetaLinux Eclipse SDK中提供的PetaLinux GUI設(shè)置各種配置(圖2)。該GUI具有各種特性,如用戶應(yīng)用和庫(kù)開發(fā),以及PetaLinux及硬件平臺(tái)的調(diào)試、構(gòu)建和配置等。
硬件構(gòu)建
我們?yōu)轫?xiàng)目使用了基于Kintex-7 FPGA的KC705評(píng)估板。設(shè)計(jì)需要的硬件接口有用于監(jiān)控輸出的RS232接口、用于編程FPGA的JTAG接口以及用于遠(yuǎn)程編程的以太網(wǎng)接口。除了PetaLinux SDK,所推薦設(shè)計(jì)需要的其它軟件還包括Xil-inx Platform Studio (XPS) [6,7] 和賽靈思軟件開發(fā)套件(SDK)[7]。
圖2:用于用戶設(shè)置的PetaLinux SDK菜單截屏
在該嵌入式設(shè)計(jì)的硬件部分,我們的第一項(xiàng)任務(wù)就是使用XPS中的基本系統(tǒng)構(gòu)建器(BSB)設(shè)計(jì)基于MicroBlaze處理器的硬件平臺(tái)。BSB允許選擇目標(biāo)板上提供的一系列外設(shè)。您還可根據(jù)應(yīng)用需求添加或刪除外設(shè)。我們所推薦應(yīng)用采用的內(nèi)核或外設(shè)集包括帶8Mb存儲(chǔ)器的外部存儲(chǔ)器控制器、在中斷情況下啟用的定時(shí)器、波特率為115,200Bps的RS232 UART、以太網(wǎng)、非易失性存儲(chǔ)器以及
LED。完成選擇后,我們就獲得了硬件外設(shè)及其總線接口(圖3)。對(duì)于基于MicroBlaze處理器的設(shè)計(jì),PetaLinux需要支持MMU的CPU。因此我們?cè)赬PS窗口中雙擊MicroBlaze_0實(shí)例,選擇了帶MMU的低端Linux。
圖3:FPGA的硬件配置
此時(shí)硬件設(shè)計(jì)已完成?,F(xiàn)在可以使用第一階段引導(dǎo)載入程序引導(dǎo)該內(nèi)核。
接下來(lái),我們使用三步轉(zhuǎn)換流程將硬件配置轉(zhuǎn)換為比特流。首先,我們使用XPS生成了代表嵌入式硬件平臺(tái)的網(wǎng)表。隨后,我們將設(shè)計(jì)映射到FPGA邏輯中。最后我們將實(shí)現(xiàn)的設(shè)計(jì)轉(zhuǎn)換為能夠下載到FPGA上的比特流。XPS的最終輸出是system.bit和sys-tem_bd.bmm文件。
生成比特流后,我們將硬件平臺(tái)描述導(dǎo)出到SDK,以便在SDK中觀察目標(biāo)硬件平臺(tái)。導(dǎo)出的系統(tǒng)xml文件包含SDK編寫應(yīng)用軟件并在目標(biāo)硬件平臺(tái)上對(duì)其進(jìn)行調(diào)試所需的信息。我們的下一項(xiàng)任務(wù)是使用Xilinx Tools → Repository → New 在SDK中添加一個(gè)PetaLinux庫(kù),然后選擇PetaLinux的安裝路徑。在本實(shí)例中,該路徑為$PetaLinux/Hardware/edk_user_repository。
接下來(lái),我們使用File → Board support package → PetaLinux創(chuàng)建了PetaLinux BSP。我們根據(jù)所需的應(yīng)用選擇必要的驅(qū)動(dòng)程序,配置了PetaLinux BSP。隨后我們通過(guò)構(gòu)建BSP并創(chuàng)建和配置第一階段的引導(dǎo)載入程序應(yīng)用(fs-boot),引導(dǎo)了內(nèi)核。該BSP可建立硬件和引導(dǎo)應(yīng)用之間的交互。SDK的輸出為fs-boot.elf??墒褂脭?shù)據(jù)到存儲(chǔ)器轉(zhuǎn)換器命令data2mem
將system.bit、system_bd.bmm和fs-boot.elf 合并為一個(gè)名為download.bit的統(tǒng)一比特流文件,用作最終的FPGA比特流。
此時(shí)硬件設(shè)計(jì)已完成,其它方面還包括一個(gè)MicroBlaze內(nèi)核和運(yùn)行其上的PetaLinux操作系統(tǒng)?,F(xiàn)在我們可以使用第一階段的引導(dǎo)載入程序引導(dǎo)內(nèi)核。
構(gòu)建軟件
完成硬件平臺(tái)的構(gòu)建后,我們使用下列命令創(chuàng)建了針對(duì)硬件的定制PetaLinux軟件平臺(tái):
$ cd/opt/PetaLinuxv12.12
$ PetaLinux-new-platform –c –v –p
其中–c 為支持的CPU類型(這里是MicroBlaze處理器)、–v 為廠商名稱(這里是賽靈思),而–p 則為產(chǎn)品名稱(這里是KC705)。軟件平臺(tái)的配置文件在安裝PetaLinux的目錄下生成,即/opt/PetaLi-nuxv12.12/software/ PetaLinux-dist/vendors/Xilinx/ KC705。
圖4:內(nèi)核配置菜單
為定制與硬件匹配的軟件平臺(tái)模板,我們使用PetaLinux-copy-autoconfig命令將現(xiàn)有平臺(tái)配置與內(nèi)核配置進(jìn)行了合并。該命令可生成硬件配置文件Xilinx-KC705.dts、xparame-ters.h 和 config.mk。
我們使用GUI(PetaLinux SDK → Kernel Configuration)打開內(nèi)核配置菜單,配置了Linux內(nèi)核。此外,您也可以在Linux終端上使用下列命令完成該工作:
$ cd /opt/PetaLinux_v12.12 $ PetaLinux-config-kernel
我們?cè)趦?nèi)核配置彈出窗口中啟用該應(yīng)用的驅(qū)動(dòng)程序(如圖4所示)。為通過(guò)用戶空間輸入/輸出(UIO)接口訪問(wèn)設(shè)備,完成所提出的工作,我們?cè)趦?nèi)核配置菜單中啟用了UIO驅(qū)動(dòng)程序。
內(nèi)核配置完成后,我們?cè)O(shè)計(jì)了一些應(yīng)用。PetaLinux可提供用于C語(yǔ)言和C++編程的用戶應(yīng)用模板[8]。這些模板包括應(yīng)用源代碼和Makefile文件,方便為目標(biāo)芯片配置和編譯應(yīng)用并將其安裝在根文件系統(tǒng)中。創(chuàng)建新的PetaLinux用戶應(yīng)用,既可使用GUI(File → PetaLinux New Application),也可在Linux終端上輸入下列命令:
$ cd /opt/PetaLinux_v12.12 $ PetaLinux-config-apps
隨后我們?yōu)樵撚脩魬?yīng)用起了個(gè)文件名。在本實(shí)例中,我們創(chuàng)建了gpio-dev-mem-test和gpio-uio-test用戶應(yīng)用,并根據(jù)應(yīng)用要求修改了模板源代碼。
接下來(lái)我們使用GUI構(gòu)建了PetaLinux系統(tǒng)映像(如圖2所示)。此外,您還可以在Linux終端上使用make命令完成該任務(wù),如下圖所示:
$ cd $PETALINUX/software/ PetaLinux-dist $ make
支持操作系統(tǒng)(OS)和定制用戶應(yīng)用的軟件平臺(tái)以及我們前文討論過(guò)的硬件設(shè)計(jì)現(xiàn)已可供使用。
評(píng)論
查看更多