當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Linux的SoPC應(yīng)用系統(tǒng)設(shè)計(jì)

SoPC(System on Programmable Chip)是一種特殊的嵌入式系統(tǒng)。首先,它是一種SoC系統(tǒng),即由一個(gè)芯片完成系統(tǒng)的主要邏輯功能;其次,它是可編程的片上系統(tǒng),即可配置、可裁減、可擴(kuò)充、可升級(jí),具有硬件系統(tǒng)的可編程性。采用SoPC的設(shè)計(jì),具有很大的靈活性。它可以根據(jù)需要定制各個(gè)硬件模塊,包括處理器、總線、存儲(chǔ)器和通信模塊等,這就使得在一個(gè)芯片上搭建一個(gè)按需定制的SoC系統(tǒng)成為可能。而Linux系統(tǒng)也因?yàn)槠淞己玫目刹脺p、可配置的特點(diǎn)廣泛應(yīng)用于各種嵌入式系統(tǒng),Linux操作系統(tǒng)提供了許多系統(tǒng)級(jí)的應(yīng)用,例如網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)、進(jìn)程調(diào)度、內(nèi)存管理等,同時(shí)Linux是一個(gè)成熟的開源操作系統(tǒng),有豐富的應(yīng)用資源。利用這些資源和強(qiáng)大的系統(tǒng)功能,用戶可以基于嵌入式Linux快速地開發(fā)出面向復(fù)雜應(yīng)用的嵌入式系統(tǒng)。因此,結(jié)合SoPC和Linux優(yōu)勢(shì),可以很好地滿足嵌入式系統(tǒng)根據(jù)需求量體裁衣,去除冗余。本文給出基于Linux的SoPC應(yīng)用系統(tǒng)的開發(fā)方法及一個(gè)具體的嵌入式應(yīng)用開發(fā)實(shí)例。
1 硬件開發(fā)環(huán)境
1.1 開發(fā)平臺(tái)

    本文所采用的開發(fā)平臺(tái)是AVNET公司生產(chǎn)的VIRTEX-II PRO FF1152開發(fā)板,它使用XILINX公司的Virtex-II Pro FPGA芯片XC2VP50-6FF1152C,同時(shí)開發(fā)板還有2個(gè)8MB×32的SDRAM存儲(chǔ)器、2個(gè)RS232接口、一個(gè)以太網(wǎng)接口、1個(gè)LCD顯示屏、8個(gè)LED燈,同時(shí)支持SPI-4.2的高速16bit LVDS接口、iSFP GbE光纖接口、System ACE接口以及一個(gè)P160標(biāo)準(zhǔn)的擴(kuò)展模塊[1]。
1.2 基于PowerPC的片上系統(tǒng)
    XC2VP50-6FF1152C芯片內(nèi)部含有兩個(gè)IBM PowerPC 405核。PowerPC405是32位的RISC處理器,它采用IP植入架構(gòu)的形式整合到XILINX公司的Virtex-II Pro FPGA器件中。
    PowerPC硬核具有許多優(yōu)點(diǎn)適合軟件的開發(fā)設(shè)計(jì)[2]:具有三個(gè)定時(shí)器:即可編程的內(nèi)部定時(shí)器、固定的內(nèi)部定時(shí)器和看門狗定時(shí)器和靈活的存儲(chǔ)管理和用于加強(qiáng)計(jì)算功能的乘法累加指令。PowerPC的強(qiáng)大功能可以勝任許多復(fù)雜應(yīng)用系統(tǒng)對(duì)處理能力和運(yùn)算速度的需求。同時(shí),利用雙核機(jī)制以及操作系統(tǒng)的進(jìn)程調(diào)度可以大幅度地提高處理速度。
    通過XILINX公司的EDK開發(fā)軟件,可以很方便地在Virtex-II Pro系列芯片上搭建自己需要的硬件系統(tǒng)。處理器方面可以選擇硬核IP:PPC405,或者軟核IP:Microblaze;總線有OPB和PLB兩種總線可供選擇;同時(shí),還有豐富的外圍IP可以選擇;在通信方面,分別有支持高速和低速的通信模塊。支持高速的IP有:plb_etherne、opb_ethernet、opb_ethernetlite和plb_gemac等,支持低速的IP有:opb_iic、opb_spi、opb_uart16550和opb_uartlite等;在存儲(chǔ)控制器方面,可選擇的 IP有opb_sdram、opb_ddr、opb_emc、opb_sysace、plb_sdram、 plb_ddr和plb_emc等模塊;其他方面還有支持中斷、定時(shí)、GPIO、PCI等功能的IP模塊。豐富的IP模塊,加上可以利用IPIC(IP Interconnect)連接用戶定制的IP,因而用戶使用CPU時(shí),不需要再另外使用一個(gè)SDRAM控制器芯片,或者另外使用一個(gè)以太網(wǎng)的控制芯片,極其方便。
    可編程片上系統(tǒng)由處理器、總線互連和外圍設(shè)備等組成,典型的基于PowerPC的片上系統(tǒng)的架構(gòu)如圖1所示。

 


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

 


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

 


2.1 利用EDK搭建硬件系統(tǒng)
    利用EDK8.2軟件搭建硬件系統(tǒng),因?yàn)榛贚inux的操作系統(tǒng)設(shè)計(jì)中,CPU、RAM和總線是必須的。由于芯片內(nèi)部的BRAM只有128kb/s, 而下載Linux內(nèi)核的.elf文件通常遠(yuǎn)大于這個(gè)容量,因此需要使用外部的存儲(chǔ)單元。本文使用opb_sdram存儲(chǔ)控制模塊實(shí)現(xiàn)此功能。本文使用Uart16550控制模塊,能方便地通過RS232端口觀察測(cè)試的結(jié)果。為滿足本文應(yīng)用的需要,可以使用Uartlite模塊實(shí)現(xiàn)RS232的COM2端口和外部設(shè)備通信的功能。添加Ethernet_Mac的IP模塊,可使用以太網(wǎng)端口將開發(fā)板連接到網(wǎng)絡(luò)上。為了調(diào)試的方便,可以加入GPIO模塊。通過GPIO控制LED燈,可顯示系統(tǒng)狀態(tài)。若選擇應(yīng)用程序初始化硬件,當(dāng)bit數(shù)據(jù)下載到FPGA系統(tǒng)正常運(yùn)行時(shí),可以觀察到LED燈被點(diǎn)亮。另外,根據(jù)設(shè)計(jì)需求,也可以掛載用戶定制的IP,以處理用戶的特定的需求。
    選擇參數(shù)時(shí),可以使用默認(rèn)值,而存儲(chǔ)器參數(shù)可以選擇容量大一些的。使用的PowerPC 405硬核,PPC的工作頻率設(shè)置為100MHz, 參考時(shí)鐘和系統(tǒng)的總線頻率也分別設(shè)置為100MHz;使用的BRAM模塊IBRAM和DBRAM速率分別設(shè)置為64Kb/s。最終定制的SoPC硬件系統(tǒng)如圖4所示。

 


2.2  SoPC的Linux系統(tǒng)構(gòu)建
    在SoPC的硬件系統(tǒng)構(gòu)建完成之后,利用EDK軟件生成的板級(jí)支持包(BSP)配置編譯內(nèi)核。BSP包含了所選定處理器架構(gòu)的屬性文件以及相關(guān)硬件的驅(qū)動(dòng)源文件。將這些文件加入到Linux內(nèi)核中,然后配置內(nèi)核選項(xiàng)選擇對(duì)應(yīng)的處理器架構(gòu)、所選硬件的驅(qū)動(dòng)模塊以及需要的其他內(nèi)核模塊,之后再對(duì)完成配置的內(nèi)核進(jìn)行編譯,生成Linux的內(nèi)核image文件。
    生成內(nèi)核image文件之后,還需要生成系統(tǒng)運(yùn)行所需要的根文件系統(tǒng)。根文件系統(tǒng)中包含了嵌入式Linux系統(tǒng)的所有應(yīng)用程序、庫(kù)以及系統(tǒng)配置等相關(guān)文件。根文件系統(tǒng)中常用的程序和命令可利用開源軟件Busybox構(gòu)造。構(gòu)造完成之后,在Busybox生成的目錄和文件的基礎(chǔ)上再構(gòu)造根文件系統(tǒng)的目錄樹,并添加相關(guān)設(shè)備文件和配置文件以及系統(tǒng)運(yùn)行時(shí)需要的腳本文件,從而形成最終的根文件系統(tǒng)。至此,就可以將文件系統(tǒng)作為映像編譯到內(nèi)核中,也可以通過網(wǎng)絡(luò)使用NFS文件系統(tǒng)加載根文件系統(tǒng)。
3  應(yīng)用舉例
    以一個(gè)多進(jìn)程的嵌入式Web服務(wù)器用于實(shí)現(xiàn)控制遠(yuǎn)程設(shè)備的的開發(fā)為例,闡述在基于Linux的SoPC系統(tǒng)上開發(fā)應(yīng)用程序的過程。嵌入式Web服務(wù)器的開發(fā)包括HTTP協(xié)議裁減和具體的應(yīng)用程序?qū)崿F(xiàn)。用戶可以通過向Web服務(wù)器發(fā)送CGI請(qǐng)求的方式使服務(wù)器通過串口和外部設(shè)備通信,達(dá)到遠(yuǎn)程控制的目的。
3.1 HTTP協(xié)議裁減
    嵌入式Web服務(wù)器主要基于HTTP協(xié)議進(jìn)行設(shè)計(jì),而HTTP協(xié)議的實(shí)現(xiàn)又是基于TCP/IP協(xié)議棧的。在Linux內(nèi)核中,由于已經(jīng)包含了TCP/IP協(xié)議棧的完整實(shí)現(xiàn),從而為嵌入式Web服務(wù)器的實(shí)現(xiàn)提供了很好的基礎(chǔ)。相對(duì)于在無操作系統(tǒng)環(huán)境的SoPC上實(shí)現(xiàn)Web服務(wù)器來說,基于Linux系統(tǒng)的開發(fā)可以節(jié)省大量的工作。
    HTTP協(xié)議是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其采用簡(jiǎn)捷、快速的方式,適用于分布式超媒體信息系統(tǒng)[4]。嵌入式Web服務(wù)器根據(jù)不同的需要,實(shí)現(xiàn)的功能也不同。相對(duì)于完整的Web服務(wù)器,它需要實(shí)現(xiàn)的功能要簡(jiǎn)單得多[5]。本文的嵌入式Web服務(wù)器僅實(shí)現(xiàn)協(xié)議中最常用的部分??紤]到嵌入式系統(tǒng)的存儲(chǔ)空間和處理能力,對(duì)HTTP協(xié)議進(jìn)行了裁減。這不僅可以提高Web服務(wù)器的效率,也可以減少占用的空間,具有積極的意義。
    當(dāng)客戶機(jī)與Web服務(wù)器進(jìn)行會(huì)話時(shí),客戶機(jī)首先通過SOCKET與服務(wù)器建立連接,連接之后便向服務(wù)器提出請(qǐng)求,請(qǐng)求信息包括希望返回的文件名和客戶機(jī)信息等??蛻魴C(jī)以請(qǐng)求頭(包括HTTP方法和頭字段[6])的形式將信息發(fā)送給服務(wù)器。HTTP方法常用的有GET、HEAD、POST,因此本文即采用GET、HEAD、POST三種方法。
    HTTP頭字段包括general-header、request-header、response-header、entity-header四大類,而每一類中又定義了多個(gè)類型[6],其中的大部分都是不常用的,所以應(yīng)根據(jù)需要選定幾種類型。本文設(shè)計(jì)的服務(wù)器支持以下幾種頭類型:Date、Host、Server、Accept、Connection、Content-Type、Content-Length、Accept-Charset、 Accept-Language。
    服務(wù)器收到一個(gè)請(qǐng)求,就會(huì)立刻解釋請(qǐng)求中所用到的方法,并開始處理,處理完成之后會(huì)發(fā)送應(yīng)答消息。應(yīng)答消息包含了狀態(tài)碼、一些頭字段以及實(shí)體信息(即客戶請(qǐng)求的服務(wù)器上的資源內(nèi)容),其中HTTP協(xié)議的狀態(tài)碼也有四大類[6]。這些狀態(tài)碼詳細(xì)說明了服務(wù)器的狀態(tài)、出錯(cuò)信息以及對(duì)用戶的指示。由于嵌入式Web服務(wù)器只需向用戶提供服務(wù),而無需向用戶反饋具體的狀態(tài),因此,本文實(shí)現(xiàn)中只保留特定的幾種錯(cuò)誤信息,而省略了大部分的狀態(tài)信息。
3.2 支持多進(jìn)程的嵌入式Web服務(wù)器的實(shí)現(xiàn)
    本系統(tǒng)的設(shè)計(jì)對(duì)HTTP協(xié)議進(jìn)行了裁減,然后利用Linux系統(tǒng)提供的進(jìn)程調(diào)度功能、網(wǎng)絡(luò)通信功能(包括SOCKET、TCP連接等),使用C語(yǔ)言編寫了一個(gè)支持多進(jìn)程的Web服務(wù)器。實(shí)現(xiàn)的Web服務(wù)器接收客戶端的請(qǐng)求,根據(jù)需要選擇發(fā)送文件通過串口和外部設(shè)備通信,并將外部設(shè)備返回的結(jié)果發(fā)送給客戶端。其功能描述如下:在指定的端口監(jiān)聽用戶的HTTP請(qǐng)求,對(duì)該請(qǐng)求進(jìn)行分析解釋并執(zhí)行相應(yīng)的操作;將用戶要求的內(nèi)容或者出錯(cuò)信息以HTTP應(yīng)答的方式返回給用戶。其中,用戶的請(qǐng)求分為CGI請(qǐng)求和非CGI請(qǐng)求,如果是CGI請(qǐng)求,則首先檢查用戶的權(quán)限和文件是否存在,然后新創(chuàng)建一個(gè)進(jìn)程,并在該子進(jìn)程中通過串口和外部設(shè)備通信,最后將串口返回的結(jié)果或者出錯(cuò)信息傳送給Web服務(wù)器返回給用戶;如果是非CGI請(qǐng)求,則只進(jìn)行權(quán)限和文件檢查,如果檢查通過則發(fā)送該文件,否則給出出錯(cuò)信息。軟件的工作流程如圖5所示。

 


    本文給出了基于Linux的SoPC開發(fā)的方法,并實(shí)現(xiàn)了一個(gè)具體的應(yīng)用設(shè)計(jì)——嵌入式Web服務(wù)器。該設(shè)計(jì)快速、簡(jiǎn)單,而且由于基于Linux操作系統(tǒng),從而保證了系統(tǒng)的穩(wěn)定性,同時(shí)因?yàn)槔昧讼到y(tǒng)的進(jìn)程調(diào)度功能,加快了信息的處理速度。SoPC和嵌入式Linux操作系統(tǒng)二者的結(jié)合,既滿足了嵌入式應(yīng)用按需定制、量體裁衣的需求,又能開發(fā)出穩(wěn)定而功能強(qiáng)大的嵌入式系統(tǒng)。這在嵌入式應(yīng)用日益復(fù)雜的背景下,具有很大意義和良好的應(yīng)用前景。
參考文獻(xiàn)
[1]  AVNET. Virtex-II Pro FF1152 development board user’s guide. https://www.em.avnet.com. 2005.
[2]  董代潔.基于FPGA的可編程SoC設(shè)計(jì).北京:北京航空航天大學(xué)出版社,2006.
[3]  IBM. Core connect bus architecture. http://www-03.ibm.com/chips/products/coreconnect/. 2004.
[4]  DOUGLAS E C.用TCP/IP進(jìn)行網(wǎng)際互聯(lián)(第一卷):原理、協(xié)議與結(jié)構(gòu). 第四版.林瑤,譯.北京:電子工業(yè)出版社, 2001.
[5]  劉殿敏, 李科杰. 基于Linux嵌入式HTTP網(wǎng)絡(luò)服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程,2004,(23):193-195.
[6]  FIELDING R, GETTYS J, MOGUL J, et al.RFC2616: Hypertext transfer protocol——HTTP/1.1. The Internet Engineering Task Force, June 1999.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉