摘 要: 利用XILINX公司的EDK軟件搭建一個基于PowerPC的片上系統(tǒng),并且在定制的SoPC系統(tǒng)上移植Linux系統(tǒng),最后利用此系統(tǒng)完成了一個具體的嵌入式應(yīng)用系統(tǒng)設(shè)計。實驗表明,這種基于Linux的SoPC應(yīng)用系統(tǒng)設(shè)計,很好地結(jié)合了SoPC和Linux系統(tǒng)的優(yōu)點,用戶可以根據(jù)需要靈活地定制出軟硬件平臺,滿足復(fù)雜多變的嵌入式需求,加速產(chǎn)品的開發(fā)。
關(guān)鍵詞: SoPC; Linux; 嵌入式
SoPC(System on Programmable Chip)是一種特殊的嵌入式系統(tǒng)。首先,它是一種SoC系統(tǒng),即由一個芯片完成系統(tǒng)的主要邏輯功能;其次,它是可編程的片上系統(tǒng),即可配置、可裁減、可擴充、可升級,具有硬件系統(tǒng)的可編程性。采用SoPC的設(shè)計,具有很大的靈活性。它可以根據(jù)需要定制各個硬件模塊,包括處理器、總線、存儲器和通信模塊等,這就使得在一個芯片上搭建一個按需定制的SoC系統(tǒng)成為可能。而Linux系統(tǒng)也因為其良好的可裁減、可配置的特點廣泛應(yīng)用于各種嵌入式系統(tǒng),Linux操作系統(tǒng)提供了許多系統(tǒng)級的應(yīng)用,例如網(wǎng)絡(luò)協(xié)議的實現(xiàn)、進程調(diào)度、內(nèi)存管理等,同時Linux是一個成熟的開源操作系統(tǒng),有豐富的應(yīng)用資源。利用這些資源和強大的系統(tǒng)功能,用戶可以基于嵌入式Linux快速地開發(fā)出面向復(fù)雜應(yīng)用的嵌入式系統(tǒng)。因此,結(jié)合SoPC和Linux優(yōu)勢,可以很好地滿足嵌入式系統(tǒng)根據(jù)需求量體裁衣,去除冗余。本文給出基于Linux的SoPC應(yīng)用系統(tǒng)的開發(fā)方法及一個具體的嵌入式應(yīng)用開發(fā)實例。
1 硬件開發(fā)環(huán)境
1.1 開發(fā)平臺
本文所采用的開發(fā)平臺是AVNET公司生產(chǎn)的VIRTEX-II PRO FF1152開發(fā)板,它使用XILINX公司的Virtex-II Pro FPGA芯片XC2VP50-6FF1152C,同時開發(fā)板還有2個8MB×32的SDRAM存儲器、2個RS232接口、一個以太網(wǎng)接口、1個LCD顯示屏、8個LED燈,同時支持SPI-4.2的高速16bit LVDS接口、iSFP GbE光纖接口、System ACE接口以及一個P160標準的擴展模塊[1]。
1.2 基于PowerPC的片上系統(tǒng)
XC2VP50-6FF1152C芯片內(nèi)部含有兩個IBM PowerPC 405核。PowerPC405是32位的RISC處理器,它采用IP植入架構(gòu)的形式整合到XILINX公司的Virtex-II Pro FPGA器件中。
PowerPC硬核具有許多優(yōu)點適合軟件的開發(fā)設(shè)計[2]:具有三個定時器:即可編程的內(nèi)部定時器、固定的內(nèi)部定時器和看門狗定時器和靈活的存儲管理和用于加強計算功能的乘法累加指令。PowerPC的強大功能可以勝任許多復(fù)雜應(yīng)用系統(tǒng)對處理能力和運算速度的需求。同時,利用雙核機制以及操作系統(tǒng)的進程調(diào)度可以大幅度地提高處理速度。
通過XILINX公司的EDK開發(fā)軟件,可以很方便地在Virtex-II Pro系列芯片上搭建自己需要的硬件系統(tǒng)。處理器方面可以選擇硬核IP:PPC405,或者軟核IP:Microblaze;總線有OPB和PLB兩種總線可供選擇;同時,還有豐富的外圍IP可以選擇;在通信方面,分別有支持高速和低速的通信模塊。支持高速的IP有:plb_etherne、opb_ethernet、opb_ethernetlite和plb_gemac等,支持低速的IP有:opb_iic、opb_spi、opb_uart16550和opb_uartlite等;在存儲控制器方面,可選擇的 IP有opb_sdram、opb_ddr、opb_emc、opb_sysace、plb_sdram、 plb_ddr和plb_emc等模塊;其他方面還有支持中斷、定時、GPIO、PCI等功能的IP模塊。豐富的IP模塊,加上可以利用IPIC(IP Interconnect)連接用戶定制的IP,因而用戶使用CPU時,不需要再另外使用一個SDRAM控制器芯片,或者另外使用一個以太網(wǎng)的控制芯片,極其方便。
可編程片上系統(tǒng)由處理器、總線互連和外圍設(shè)備等組成,典型的基于PowerPC的片上系統(tǒng)的架構(gòu)如圖1所示。

1.3 CoreConnect的總線結(jié)構(gòu)[3]
總線互連是片上系統(tǒng)的一項關(guān)鍵技術(shù)。本系統(tǒng)采用了CoreConnect的總線結(jié)構(gòu)。該總線結(jié)構(gòu)是IBM公司開發(fā)的一種片上通信的總線互連技術(shù)。它的應(yīng)用使得系統(tǒng)核、外設(shè)核、處理器核的復(fù)用、連接變得更加容易。這里,系統(tǒng)核是針對PLB總線上的功能IP模塊的,而外設(shè)核是針對OPB總線上的功能模塊的。CoreConnect總線互連是由本地邏輯總線PLB(Peripheral Logic Bus)、片上外圍總線 OPB(On chip Peripheral Bus)、一個總線橋、兩個判決器,以及設(shè)備控制總線DCR(Device Control Register構(gòu)成的,其結(jié)構(gòu)如圖2所示。

2 基于Linux的SoPC系統(tǒng)構(gòu)建
系統(tǒng)的構(gòu)建包括,硬件平臺的搭建和Linux操作系統(tǒng)的移植。首先進行項目需求分析,決定實現(xiàn)系統(tǒng)需要的硬件IP核,繼而搭建硬件平臺。硬件平臺構(gòu)建完成之后,利用EDK軟件生成相關(guān)的硬件參數(shù)文件和設(shè)備驅(qū)動文件。用戶需要利用生成的文件構(gòu)建Linux內(nèi)核,同時需要構(gòu)建適用于內(nèi)核的根文件系統(tǒng),最后在構(gòu)建完成的操作系統(tǒng)的基礎(chǔ)上開發(fā)所需功能的應(yīng)用程序接口。其中根文件系統(tǒng)的構(gòu)造要考慮內(nèi)核中提供的服務(wù)和功能以及應(yīng)用程序所需的系統(tǒng)命令等。同樣所要實現(xiàn)的應(yīng)用功能又影響著內(nèi)核服務(wù)和功能的選擇。根文件系統(tǒng)、應(yīng)用程序接口以及內(nèi)核三者是互相影響的。具體的構(gòu)建流程圖如圖3所示。





