引言
隨著FPGA(Field Prograromable Gate Array,,現場可編程門陣列)技術的迅速發(fā)展,,SOPC(Systam On a Prograromable Chip,可編程片上系統)作為一種特殊的嵌入式微處理器系統,,已逐漸成為一個新興的技術方向,。SOPC融合了SoC和FPGA各自的優(yōu)點,并具備軟硬件在系統可編程,、可裁減,、可擴充、可升級的功能,。其核心是在FPGA上實現的嵌入式微處理器核,,而如何針對特定的微處理器選擇合適的嵌入式操作系統是SOPC開發(fā)的難點之一。本文針對Xilinx公司的MicroBlaze軟核,,介紹了PetaLinux嵌入式操作系統及其移植方法,,研究了PetaLinux的相關配置和啟動方案。
1 基于MicroBlaze處理器的系統設計
1.1 MicroBlaze處理器簡介
MicroBlaze軟核處理器是一種針對Xilinx FPGA器件而優(yōu)化的功能強大的微處理器。它內部采用RISC架構的32位指令和數據總線,,支持CoreConnect片上總線的標準外設計集合,,具有兼容性和重復利用性,且可根據性能需求和邏輯區(qū)域成本任意裁減,,極大地擴展了應用范圍,,其最精簡的核只需要將近400個Slice。
MicroBlaze的CoreConnect總線,、它能夠將FPGA內各種不同的IP核連接到一起構成一個完整的系統。CoreConnect總線是一個總線標準的集合,,它包括PLB總線(Processor Local Bus,,處理器本地總線),LMB總線(Local Memory Bus,,高速本地存儲器總線),,FSL(Fast Simplex Link,快速單連接)總線,,以及XCL(Xilinx CacheLink)總線等,。
1.2 系統結構和外部設備概述
本系統主要是在Virtex-4開發(fā)板上構建一個以MicroBlaze處理器為中心的嵌入式信號處理系統,在FPGA內部實現系統的總線架構,、數據存儲,、地址譯碼、外設接口等系統部件和功能,。各功能部件在FPGA內部都以IP核的形式構建并連接,,整個系統的結構框圖如圖1所示。
其中,,SysACE用于存放文件系統和應用程序配置文件,,INTC用來實現中斷控制;GPIO和UART 16550用于系統調試,,自定義IP核DDC用來實現數字接收機下變頻功能,,這些外設通過PLB總線與MicroBlaze處理器和DDR相連;用于快速傅里葉變換的自定義IP核FFT通過FSL總線與Micr-oBlaze內部通用寄存器直接相連,,實現了數據的快速傳輸,;DDR通過XCL總線與MicroBlaze處理器相連,實現了MicroBlaze處理器對片外存儲器的高速訪問,。
1.3 嵌入式操作系統的選擇
選用PetaLinux嵌入式操作系統,。它是PetaLogix公司專門針對FPGA的片上系統設計的嵌入式Linux開發(fā)套件,在滿足應用工程的邏輯編程能力和對嵌入式Linux要求的同時,,可極大地縮短產品開發(fā)周期,。PetaLinux作為專門針對于Xilinx FPGA的嵌入式Linux解決方案,不但提供了專門的BSP生成器,而且提供了眾多的參考設計,,可以幫助設計者快速掌握PetaLinux的配置方法,。PelaLinux內核正在不斷的完善之中,且不斷地加入基于Xilinx FPGA嵌入式系統IP核的設備驅動,,比如XilinxUSB,、SysACE、FSL總線設備驅動,、10/100/1000M三態(tài)以太網MAC等,。這些設備驅動極大地減輕了嵌入式系統開發(fā)者的工作量,縮短了產品開發(fā)的周期,。
2 PetaLinux系統移植
在SOPC硬件系統構建完成后,,就要針對此結構配置操作系統內核,下面介紹具體步驟,。
2.1 建立交叉編譯環(huán)境
嵌入式系統開發(fā)一般采用交叉編譯的方法,,即在宿主機上對內核和應用程序進行編譯,生成目標機處理器可執(zhí)行的二進制位流文件,,將此文件下載到目標機運行,。PetaLinux針對MicroBlaze處理器建立了交叉編譯器,運行source./settings.sh腳本,,系統會自動建立交叉環(huán)境,。
2.2 建立硬件平臺
PetaLinux為每個應用工程建立一個文件夾,里面保存該工程的硬件配置,。在移植PetaLinux時,,只需選擇相應的硬件平臺,內核就會讀取該工程文件夾下的配置文件,。使用PetaLinux-new-platform命令建立硬件平臺,,如果使用MMU(虛擬內存管理單元),則在此命令后添加-m選項,。硬件平臺建立起來后,,運行make menuconfig命令,在Vendor/Product Seletion選項中,,選擇該硬件平臺,。
另外,還需將在EDK下生成的配置文件轉換成Linux操作系統可以識別的格式,。在工程文件夾下運行PetaLinux-copy-autoconfig命令,,自動完成格式轉換,并拷貝配置文件到已選擇的工程文件夾下,。
2.3 添加自定義設備驅動
本系統自定義了IP核,,因此必須開發(fā)驅動程序并將其添加到PetaLinux配置中,。添加自定義設備驅動主要步驟如下:
①在平臺配置目錄下Makefile文件中添加語句platobj-$(CONFIG_PETALOGIX_DDC)+=ddc.o和$(obj)/ddc.o:.config使設備初始化函數ddc.C與內核配置相關聯;
②在驅動程序所在目錄下的Makefile文件中添加obj-$(CONFIG_PETALOGIX_DDC)+=ddc_adapter.o使設備驅動程序ddc_adapter.c與內核配置相關聯,;
③修改設備驅動程序所在目錄下的Kconfig文件,,使配置內核時可以選擇該設備驅動,并添加以下語句:
通過以上文件的修改,,就可以在配置PetaLinux內核時選擇自定義的設備驅動,。
2.4 配置PetaLinux內核
由于Linux內核的可裁減性,能夠方便地對內核進行修改,、裁減,、編譯,最終移植到一個嵌入式系統中,。運行圖形編輯工具make menuc-onfig命令,,對內核和系統環(huán)境進行配置。
在內核配置的設備驅動選項中,,一定要選擇與系統硬件配置一致的硬件設備驅動,否則內核編譯時就會出錯,。針對本系統的硬件配置,,主要配置以下幾項驅動:
①[Block devices]塊設備。選擇Xilinx SystemACEsupport,。
②[Misc device]混雜設備,。選擇FSL FIFO driver,然后進入FSL Channel Selection,,選擇FIFO on FSLO,,并選擇自添加設備驅動Pet-aLogix DDC101 Driver。
③[Network device support]網絡設備,。選擇Ethernet(1000Mbit)子菜單中的Xilinx 10/100/1000 LLTEMAC support,。
④[Character devices]字符設備。選擇Serial drivers子菜單中的8250/16550 and compatible serial support和Console on 8250/16550 and compatible serial port,。
文件系統選項中,,默認選擇了ext2、romfs和cramfs文件系統,,其他文件系統可以根據需要自行選擇,。本系統需要掛載DOS文件系統的CF卡,因此進行以下配置:
①[DOS/FAT/NT Filesystems],。選擇MSDOS fssupport,。
②[Native Language Support]。選擇Codepage 437(United States,,Canada),。
內核配置中的其他配置可以根據目標系統的不同靈活配置,,配置完成后保存退出,自動進入系統環(huán)境配置菜單,。系統環(huán)境配置是對Peta-Linux的屬性,、命令進行配置,主要有以下幾個選項:
①[System Settings]系統設置,。配置系統的網絡地址,、默認用戶名、默認登陸密碼和所用根文件系統等內容,。
②Core Applications]內核應用,。主要配置內核的常用特性。
③[Network Applications]網絡應用,。配置網絡應用時的相關命令,。
④[Miscellaneous Applications]混雜應用。配置系統內核中的命令,。
⑤[BusyBox],。配置系統內核中的命令。
PetaLinux已經設置好了編譯規(guī)則,,因此配置完成后,,依次執(zhí)行命令make dep、make clean,、make all,,建立文件依賴關系,清除舊的文件,,編譯內核,,生成內核image。
3 PetaLinux啟動方案
經過編譯的PetaLinux內核image文件主要有image.bin,、image.elf,、image.ub。根據選擇image文件的不同,,PetaLinux有4種啟動方案:XMD下載啟動,、TFTP網絡下載啟動、Flash啟動和SysACE CF卡啟動,。其中,,XMD和TFTP網絡下載啟動方案,在每次系統上電后都必須重新下載,,適用于系統調試,;Flash啟動方案在系統上電后自動從Flash中讀取配置文件,但Flash燒寫速度較慢,,更改系統配置較為不便,。因此,,本系統選用SysACECF卡啟動方案。
使用SysACE CF卡啟動PetaLinux,,先將硬件比特流文件和image.elf制作成ACE文件,,再復制到CF卡中,配置CF卡啟動PetaLinux,。制作ACE文件,,可在EDKShell窗口運行命令:
xmd-tcl genace.tcl(命令工具)
-jprog-board m1402(所需的開發(fā)板)
-hw implementation/download.bit(生成的比特流文件)
-elf image.elf(編譯Linux內核生成的可執(zhí)行網表文件)
-ace system.ace(需生成的ACE文件)
成功后,適合于ML-402開發(fā)板的ACE文件就生成了,。
Linux運行需要根文件系統的支持,,啟動時必須加載文件系統以支持系統的運行,而image.elf中不包含文件系統,。因此,,使用SysACE CF卡啟動時必須手動加載文件系統。在編譯PetaLinux內核時,,已經生成了以romfs文件夾為名稱的文件系統,,所以只需將CF卡分區(qū)和格式化,然后掛載此文件系統,。具體步驟如下:
①將CF卡掛載到Linux系統中,,運行命令fdisk/dev/sda把CF卡分成3個區(qū)。第1分區(qū)存放system.ace文件,,第2分區(qū)為Linux Swap交換分區(qū),,第3分區(qū)存放根文件系統,。
②Linux下格式化第3分區(qū)為ext2文件系統,,運行命令mke2fs/dev/sda3。在/ete/fstab下輸入命令/dev/sda3/mnt/rootfs auto defaults,,user,,noauto 0 0。把設備sda3掛在/mnt/rootfs文件下,,文件系統為默認的ext2,,普通用戶,能掛載,,不轉儲,,啟動時不掃描文件系統。通過命令mount/mnt/rootfs掛載該目錄,,這樣就可以把根文件系統rootfs拷貝到CF卡的該分區(qū)上,。
③Windows下格式化第1分區(qū)為FAT32文件系統,把system.ace復制到這個分區(qū),。
④Linux下格式化第2分區(qū)為交換分區(qū),,運行命令mkswap/dev/sda2,。
一切準備就緒后,插入CF卡,,開啟電源,,就可以從CF卡啟動PetaLinux。
結語
本文介紹了一種可用于MicroBlaze處理器的嵌入式Linux操作系統——PetaLinux,,并詳細討論了其內核配置和啟動方案,。通過移植Peta-Linux,本文開發(fā)的SOPC可以直接用于實際工程,。該嵌入式操作系統移植快速,、簡單,由于其基于Linux2.6內核,,可以保證較高的穩(wěn)定性,。因此,在SOPC應用日益復雜的背景下具有較高的實用價值,。
本文創(chuàng)新點:實現了PetaLinux在MicroBlaze處理器的移植,,并成功實現PetaLinux中自定義硬件設備驅動的添加和SysACE CF卡的啟動方案。