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