1 引言
嵌入式系統(tǒng)是以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ), 軟硬件可裁, 符合應(yīng)用系統(tǒng)對功能、可靠性、體積、功耗等嚴格要求的專用系統(tǒng)。SOPC技術(shù)作為一門全新的綜合性電子設(shè)計技術(shù), 結(jié)合了片上系統(tǒng)SOC和PLD、FPGA各自的優(yōu)點, 集成了CPU、DSP、存儲器、外圍I /O及可編程邏輯, 它涵蓋了嵌入式系統(tǒng)設(shè)計技術(shù)的全部內(nèi)容, 是目前嵌入式系統(tǒng)設(shè)計的中堅力量。隨著SOPC技術(shù)的發(fā)展, FPGA規(guī)模的不斷擴大, 將處理器嵌入到FPGA 中成為必然的發(fā)展趨勢。Xilinx公司結(jié)合其Virtex- II pro等芯片在FPGA中嵌入了PowerPC處理器硬核。在FPGA中嵌入處理器一方面可以充分發(fā)揮FPGA 吞吐率大,資源豐富等優(yōu)勢, 另一方面結(jié)合處理器的特點, 在內(nèi)嵌的處理器中編寫C代碼完成既定任務(wù), 實現(xiàn)FPGA與DSP處理器的結(jié)合, 這也是今后發(fā)展的必然趨勢。
對于嵌入式系統(tǒng)而言, 應(yīng)用程序可以沒有操作系統(tǒng)而直接在芯片上運行, 但隨著應(yīng)用復(fù)雜度的不斷增加, 多任務(wù)需要合理的調(diào)度, 系統(tǒng)資源、系統(tǒng)函數(shù)以及專有函數(shù)接口需要得到充分的利用, 此時選配嵌入式操作系統(tǒng)開發(fā)平臺便顯得尤為重要。因為只有這樣才能保證程序執(zhí)行的實時性和可靠性, 并減少開發(fā)時間, 提高軟件質(zhì)量。而Linux作為一個免費的操作系統(tǒng), 由于其具有開放源代碼、內(nèi)核穩(wěn)定、功能強大、可裁剪和低成本的特性, 而倍受嵌入式開發(fā)者的青睞。
本系統(tǒng)結(jié)合Xilinx公司推出的基于SOPC技術(shù)的嵌入式處理器PowerPC硬核, 在XUP Virtex2II Pro開發(fā)平臺上, 將Linux操作系統(tǒng)嵌入到PowerPC405處理器中, 最后給出了一個成功運行的測試實例。
2 SOPC技術(shù)及PowerPC硬核介紹
所謂SOPC( System On Programmab le Chip)即可編程的片上系統(tǒng), 在一片系統(tǒng)芯片上通過編程來實現(xiàn)一整套嵌入式系統(tǒng)的搭建。SOPC技術(shù)盡可能在單片F(xiàn)PGA上集成大規(guī)模的完整的電子系統(tǒng), 包括處理器系統(tǒng)、外設(shè)控制器系統(tǒng)、存儲器、DSP系統(tǒng)、通信系統(tǒng)和普通的數(shù)字電路邏輯等, 從而使得電子電路系統(tǒng)在功能、規(guī)模、可靠性、體積、功耗、性能指標、上市周期及其硬件升級等多方面達到綜合上的最優(yōu)化; SOPC設(shè)計技術(shù)是一門全新的綜合性電子設(shè)計技術(shù), 涉及面很廣, 它將普通EDA 技術(shù)、計算機系統(tǒng)、嵌入式系統(tǒng)、工業(yè)自動化控制系統(tǒng)、DSP及無線電等融為一體, 涵蓋了嵌入式系統(tǒng)設(shè)計技術(shù)的全部內(nèi)容; 同時它結(jié)合了SOC 和PLD、FPGA 各自的優(yōu)點, 集成了CPU、DSP、存儲器、外圍I/O及可編程邏輯, 用戶可以利用SOPC平臺自行設(shè)計各種高速高性能的DSP處理器或特定功能的CPU處理器, 從而使得電子系統(tǒng)設(shè)計進入了一個全新的模式[ 1]。
Xilinx公司結(jié)合其高端芯片Virtex- II Pro和Virtex 4 FPGA推出了全新的嵌入式開發(fā)系統(tǒng), 利用先進的IP植入技術(shù), 實現(xiàn)以硬核PowerPC405或軟核Microblaze 32位處理器為核心的SOPC系統(tǒng)。本系統(tǒng)將L inux操作系統(tǒng)移植到內(nèi)嵌于芯片Virtex-II Pro的PowerPC405硬核中, 并完成了相應(yīng)的測試, 其開發(fā)平臺是ML300。
PowerPC405是一個32位、采用IBM. PowerPC體系結(jié)構(gòu)的嵌入式處理器。它的運行頻率高達400MH z; 具有5階段流水線; 32* 32bit通用寄存器;增強的指令和數(shù)據(jù)片上存儲器控制器, 直接與嵌入式塊RAM接口; 支持JTAG調(diào)試和跟蹤; 新的輔助處理器單元(APU)控制器, 使CPU管道直接與FPGA 架構(gòu)接口; 同時支持用戶定義的指令等等, 這些都使得移植Linux 到該目標板上成為可能。另外PowerPC405處理器采用IBM CoreConnect總線技術(shù), 該總線結(jié)構(gòu)由處理器局部總線( PLB)、片上外設(shè)總線(OPB)和設(shè)備控制寄存器總線(DCR)組成。PLB總線為片內(nèi)的高速數(shù)據(jù)通道, 通常連接高速外設(shè)、DMA存儲控制器等; OPB總線通常用于連接速率較低的片上外設(shè), 如串口、鍵盤等; PLB總線和OPB總線通過總線橋接器相連。DCR 總線用于實現(xiàn)PowerPC的通用寄存器與邏輯設(shè)備控制寄存器的數(shù)據(jù)通信。
嵌入式系統(tǒng)設(shè)計涉及了硬件和軟件的開發(fā)以及兩者的綜合設(shè)計。針對Linux的移植問題, 硬件部分采用的開發(fā)工具是Xilinx公司提供的功能強大、操作簡單的工具集EDK911。EDK自帶了許多工具和IP, 主要包括Xilinx平臺工作室XPS、軟件開發(fā)套件SDK和XMD, 可方便的規(guī)劃、設(shè)計并生成整個片上系統(tǒng)的硬件和軟件結(jié)構(gòu)。軟件部分主要指內(nèi)核配置部分在L inux操作系統(tǒng)下完成, 最終的檢測部分則在XMD下實現(xiàn)。
將Linux嵌入到PowerPC中的設(shè)計流程見圖1。
3 搭建硬件平臺及軟件平臺設(shè)置
311 硬件平臺設(shè)置
針對實際的需要及現(xiàn)有的硬件條件, 利用EDK開發(fā)工具, 搭建具有下面特性的硬件平臺。
( 300MHz處理器時鐘頻率;
( FPGA JTAG編譯;
( 串口OPB- UARTLITE (波特率9600, 數(shù)據(jù)寬度8位, 無奇偶校驗);
( CF卡控制器SysACE;
( 256MB內(nèi)存DDR以及LED, 以上各個部件都有中斷支持。具體的硬件信息如圖2所示。通過執(zhí)行EDK中的命令Generate Bitstream產(chǎn)生包含上述信息的比特流文件( led-linux. bit)。
312 軟件平臺設(shè)置
硬件比特流文件產(chǎn)生之后, 需要配置相應(yīng)的軟件信息生成軟件板級支持包BSP。在EDK中打開軟件平臺設(shè)置, 在操作系統(tǒng)選項選擇linux- 2- 6, 如圖3 所示。在OS and L ibraries選項設(shè)置系統(tǒng)相應(yīng)的參數(shù), 如圖4所示, 這些參數(shù)的值依賴于之前的硬件平臺設(shè)置。Connected- periphs 選項用于設(shè)置Linux系統(tǒng)中需要支持的硬件設(shè)備(主要包括串口,DDR, CF 卡控制器, 中斷, 燈等), Memory size 為DDR 內(nèi)存容量設(shè)置大?。?256MB 對應(yīng)的值為0x10000000), uart bus block freq設(shè)置為總線時鐘頻率( 100MH z), rootfs type為所選根文件系統(tǒng)類型(選擇默認選項sysace), 需要注意的是這里選擇的類型只代表系統(tǒng)工作時根文件的默認類型, 具體使用的類型可以在L inux內(nèi)核編譯過程中修改, 當(dāng)根文件類型設(shè)置為ramd isk 類型時, ramd isk size設(shè)置ram2d isk大小。sysace partition 用于設(shè)置CF 卡的分區(qū)情況。
相應(yīng)的參數(shù)設(shè)置完成后, 運行Generate Librar ies and BSPs選項, 就可以生成與具體硬件相匹配的板級支持包( BSP)了, 該支持包存于\ppc405- 0 \ libsrc\ linux- 2- 6- v1- 00- a \linux文件夾中。
4 嵌入式Linux系統(tǒng)構(gòu)建
411 建立交叉編譯環(huán)境
交叉編譯是嵌入式研發(fā)過程中的一項重要技術(shù)[ 8], 它的主要特征是某機器中執(zhí)行的程式代碼不是在本機編譯生成的, 而是由另一臺機器編譯生成, 一般稱前者為目標機, 后者為主機。采用交叉編譯主要在于多數(shù)嵌入式目標系統(tǒng)沒有足夠的資源供編譯過程使用, 只能將編譯工程轉(zhuǎn)移到高性能的主機中進行。
Linux的交叉編譯環(huán)境的建立主要包括以下幾個部分:
( 針對目標系統(tǒng)的編譯器gcc(本系統(tǒng)使用的是gcc- 31414);
( 針對目標系統(tǒng)的二進制工具binutils(本系統(tǒng)使用的是binutils- 2115);
( 目標系統(tǒng)的標準c庫glibc(本系統(tǒng)使用的是glibc- 21315);
( 目標系統(tǒng)的linux內(nèi)核頭文檔。
為避免復(fù)雜、繁瑣的交叉編譯環(huán)境的建立過程,本系統(tǒng)中利用現(xiàn)成的腳本文件crosstool- 0143來完成PowerPC交叉編譯環(huán)境的建立。首先下載建立交叉編譯環(huán)境所需要的各個編譯工具(上面提到的),解壓crosstool20143. tar. gz, 在得到的文件夾中找到與使用平臺相對應(yīng)的arch: demo2powerpc2405. sh。打開該文件并修改相關(guān)源文件的存放地址。TAR2 BALLS- DIR 為gcc、glibc 等源代碼包的存放地址,RESULT- TOP 是交叉編譯環(huán)境的安裝目錄。修改eval - ca t powerpc2405. dat gcc2411102glibc221316.dat. sh a l.l sh2notestls, 將其改為適合XUP平臺的dat文件, 本系統(tǒng)中使用的是gcc231414和glibc221315。修改完成后執(zhí)行demo- powerpc2405. sh即可生成針對Powerpc405的交叉編譯環(huán)境。
412 添加BSP文件和配置內(nèi)核
從網(wǎng)站上下載virtex的linux開發(fā)樹linux22162 xlnx22124, 該內(nèi)核源代碼包含有xilinx的硬件信息,因此可以直接使用而不用更新。
將212節(jié)中生成的板級支持包BSP中相關(guān)的文件拷貝到內(nèi)核源代碼的相關(guān)文件夾中, 其中最重要、也是需要特別關(guān)注的文件是包含有當(dāng)前系統(tǒng)硬件平臺信息的xparameters- m B00. h, 將其放置在Xparameters文件夾中。
在配置內(nèi)核之前, 首先需要修改關(guān)系整個內(nèi)核配置、編譯信息的控制文件Makefile, 這里主要是修改硬件平臺信息和交叉編譯工具信息。
ARCH: = ppc
CROSS- COMPILE = powerpc24052linux2gnu2
在Linux平臺上運行makemenuconfig配置內(nèi)核模塊, 這里選擇的是最小系統(tǒng)配置。
內(nèi)核配置過程復(fù)雜, 源代碼中某些特性的錯誤添加可能會導(dǎo)致無法正常編譯, 或者無法正常運行。因此在配置內(nèi)核時最好先生成最小、可以保證運行的。 con fig文件, 再根據(jù)需要添加一些特性。內(nèi)核配置完成后, 執(zhí)行make 命令, 編譯linux內(nèi)核, 生成zImage. elf文件。
利用XMD工具對生成的內(nèi)核進行檢驗, 檢查配置的內(nèi)核是否可以正常運行。XMD是Xilinx為PowerPC提供的一種軟件調(diào)試方法, 它通過命令行的形式實現(xiàn)PowerPC 代碼的開發(fā)與調(diào)試。使用XMD進行調(diào)試時, 首先將包含硬件信息的ledlinux.bit文件下載到開發(fā)板中, 打開XMD, 輸入命令dow zImage. el,f 即將內(nèi)核配置文件下載到目標板中, 觀察串口端的輸出, 如圖5所示。如果內(nèi)核配置的有問題, 串口端顯示將停滯在Now booting the kerne,l 此時需要我們重新配置內(nèi)核。
4. 3 制作根文件系統(tǒng)
根文件系統(tǒng)是L inux系統(tǒng)不可或缺的組件, 用于控制對數(shù)據(jù)文件及設(shè)備的存取, 提供對文件和目錄的分層組織形式、數(shù)據(jù)緩存及對文件存取權(quán)限的控制。根文件系統(tǒng)一般包括以下目錄: /dev設(shè)備文件目錄, / lib共享函數(shù)庫目錄, /proc 內(nèi)核情況的映射虛目錄, /mnt其他磁盤系統(tǒng)掛接點, /etc系統(tǒng)配置文件存放目錄, /boot引導(dǎo)加載程序所使用的靜態(tài)文件, /sb in 系統(tǒng)程序目錄, /b in 基本應(yīng)用程序目錄, /usr其他工具以及用戶程序的存放處。根文件系統(tǒng)根據(jù)系統(tǒng)具體的需要有不同的類型, 如RAM disk根文件系統(tǒng), JFFS2根文件系統(tǒng), TMPFS根文件系統(tǒng)等。本系統(tǒng)中采用的是RAM disk根文件系統(tǒng),下面詳細介紹該文件系統(tǒng)的構(gòu)建過程。
RAM disk根文件系統(tǒng)的制作首先是定義RAM大小及支持的文件系統(tǒng)格式, 如圖6所示, 并將該系統(tǒng)加載到定義好的RAM disk 中。根文件系統(tǒng)由目錄樹、庫函數(shù)及系統(tǒng)程序和基本的應(yīng)用程序等組成,構(gòu)建它時首先創(chuàng)建dev、proc、bin、sbin、etc、lib 等目錄, 接著將目錄里所需文件移植進該文件系統(tǒng)中。Kingauf詳細介紹了根文件系統(tǒng)的制作, 并且編寫了mkrootfs. sh腳本文件, 為簡化起見, 我們通過修改并運行mkrootfs. sh腳本文件制作根文件系統(tǒng)。制作過程中需要注意的是Kingauf制作的腳本文件中沒有包含設(shè)備文件, 因此設(shè)備文件需要另行添加。根文件系統(tǒng)制作完成后, 將它拷貝到定義好的RAM disk中, 經(jīng)壓縮后放置在內(nèi)核對應(yīng)的文件夾中, 此時RAM disk根文件系統(tǒng)就制作完成了。
根文件系統(tǒng)的檢測也是利用XMD工具完成的。在Linux操作系統(tǒng)下使用make zImage. in itrd命令重新編譯內(nèi)核, 該命令將文件系統(tǒng)信息包含在內(nèi)核文件中。把生成的內(nèi)核文件zImage. in itrd elf拷貝到工程文件夾下。在XMD界面下, 輸入命令dow zImage. in itrd. el,f 將包含文件系統(tǒng)信息的內(nèi)核文件下載到開發(fā)板中, 待串口輸出-# 。 時, 表示內(nèi)核文件下載成功, 此時可以通過輸入命令如cd, find等, 來檢測根文件系統(tǒng), 如圖7所示。
4. 4 生成ACE文件及CF卡分區(qū)
使用XMD工具可以方便的對內(nèi)核文件、根文件系統(tǒng)及程序源代碼進行檢測, 但在具體的應(yīng)用中, 操作系統(tǒng)等都應(yīng)該是自行引導(dǎo)的, 而并非手動加載, 實際中有很多方法可以解決這一問題, 可以通過構(gòu)建bootloader引導(dǎo)程序, 也可以通過CF卡直接引導(dǎo)。本系統(tǒng)采用了第二種方法, 它的制作過程需要注意兩個方面, 即生成ACE格式文件和對CF卡分區(qū)并對其進行格式化, 下面分別對這兩個方面進行介紹。
適合開發(fā)板m B00的ACE 格式文件是在Cyg2 win shell中成功運行圖8中的程序代碼而產(chǎn)生的。
為了最大限度的模擬正常的Linux, 我們將CF卡分為/boot分區(qū), /swap分區(qū)和/根分區(qū), 具體的分區(qū)過程是利用函數(shù)fdisk來完成的。系統(tǒng)設(shè)計中使用的是2G的CF 卡, 分區(qū)后的效果為/boot分區(qū)大小為32MB, 分區(qū)類型為FAT16, 用于存放system.ace文件; /swap分區(qū)大小為256MB, 類型屬于L inux Swap( 82 ); 其余空間分配給/根分區(qū), 其類型為Linux( 83), 用于存放根文件系統(tǒng)。格式化/boot分區(qū)時運行的命令是mkdosfs ) s 64 ) F 16 ) R 1 F: ,將該分區(qū)格式化為dos文件系統(tǒng); 格式化/swap分區(qū)時運行的命令為mkswap /dev/hde2, 將該區(qū)格式化為swap文件系統(tǒng); 格式化/根分區(qū)運行的命令是mke2fs /dev/hde3, 將該分區(qū)格式化為ext2 文件類型。CF卡格式化完成后, 將制作好的ACE 文件sys2 tem. ace拷貝到CF卡中, 同時將開發(fā)板上的啟動路徑選為從CF卡啟動, 打開開發(fā)板電源后, 本地引導(dǎo)Linux并載入運行, 在串口上看到提示符-# 。 后, 移植成功。
5 具體應(yīng)用及結(jié)論
為了檢測及充分利用定制的操作系統(tǒng), 發(fā)揮PowerPC硬核的優(yōu)勢, 驗證SOPC 技術(shù)結(jié)合FPGA實現(xiàn)信號處理設(shè)計的可行性, 系統(tǒng)中我們編寫了簡單的設(shè)備驅(qū)動程序, 實現(xiàn)操作系統(tǒng)與硬件外設(shè)及FPGA中IP的通信, 并編寫應(yīng)用程序代碼點亮了目標板上的燈。從而驗證了操作系統(tǒng)可以正常工作并能完成預(yù)期的任務(wù), 同時驗證了SOPC 技術(shù)、操作系統(tǒng)與FPGA完美結(jié)合來完成信號處理任務(wù)的可能性。
本系統(tǒng)中實現(xiàn)了在PowerPC中定制特定的硬件系統(tǒng), 編譯交叉環(huán)境, 最終將L inux操作系統(tǒng)下載到PowerPC中, 從而實現(xiàn)了嵌入式系統(tǒng), Linux操作系統(tǒng)與FPGA的結(jié)合, 為完成信號處理任務(wù)提供了一種新的方法。在今后的研究工作中, 可以在PowerPC中嵌入基于復(fù)雜應(yīng)用的IP核, 如FFT、FIR 等處理模塊, 結(jié)合Linux操作系統(tǒng)的特點, 完成大型系統(tǒng)的構(gòu)建, 提高系統(tǒng)的可移植性, 方便后續(xù)的開發(fā)。
評論
查看更多