<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于Linux的SoPC應用系統設計

基于Linux的SoPC應用系統設計

作者:盧敏, 陳偉, 鄭靈翔, 吳志雄 時(shí)間:2008-07-30 來(lái)源:中電網(wǎng) 作者: 收藏

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

本文引用地址:http://dyxdggzs.com/article/86407.htm

  1 硬件開(kāi)發(fā)環(huán)境

  1.1 開(kāi)發(fā)平臺

  本文所采用的開(kāi)發(fā)平臺是AVNET公司生產(chǎn)的VIRTEX-II PRO FF1152開(kāi)發(fā)板,它使用XILINX公司的Virtex-II Pro FPGA芯片XC2VP50-6FF1152C,同時(shí)開(kāi)發(fā)板還有2個(gè)8MB×32的SDRAM存儲器、2個(gè)RS232接口、一個(gè)以太網(wǎng)接口、1個(gè)LCD顯示屏、8個(gè)LED燈,同時(shí)支持SPI-4.2的高速16bit LVDS接口、iSFP GbE光纖接口、System ACE接口以及一個(gè)P160標準的擴展模塊[1]。

  1.2 基于PowerPC的片上系統

  XC2VP50-6FF1152C芯片內部含有兩個(gè)IBM PowerPC 405核。PowerPC405是32位的RISC處理器,它采用IP植入架構的形式整合到XILINX公司的Virtex-II Pro FPGA器件中。
  
  PowerPC硬核具有許多優(yōu)點(diǎn)適合軟件的開(kāi)發(fā)設計[2]:具有三個(gè)定時(shí)器:即可編程的內部定時(shí)器、固定的內部定時(shí)器和看門(mén)狗定時(shí)器和靈活的存儲管理和用于加強計算功能的乘法累加指令。PowerPC的強大功能可以勝任許多復雜應用系統對處理能力和運算速度的需求。同時(shí),利用雙核機制以及操作系統的進(jìn)程調度可以大幅度地提高處理速度。

    通過(guò)XILINX公司的EDK開(kāi)發(fā)軟件,可以很方便地在Virtex-II Pro系列芯片上搭建自己需要的硬件系統。處理器方面可以選擇硬核IP:PPC405,或者軟核IP:Microblaze;總線(xiàn)有OPB和PLB兩種總線(xiàn)可供選擇;同時(shí),還有豐富的外圍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等模塊;其他方面還有支持中斷、定時(shí)、GPIO、PCI等功能的IP模塊。豐富的IP模塊,加上可以利用IPIC(IP Interconnect)連接用戶(hù)定制的IP,因而用戶(hù)使用CPU時(shí),不需要再另外使用一個(gè)SDRAM控制器芯片,或者另外使用一個(gè)以太網(wǎng)的控制芯片,極其方便。

  可編程片上系統由處理器、總線(xiàn)互連和外圍設備等組成,典型的基于PowerPC的片上系統的架構如圖1所示。

  1.3 CoreConnect的總線(xiàn)結構[3]

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

2 基于Linux的SoPC系統構建

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

  2.1 利用EDK搭建硬件系統

  利用EDK8.2軟件搭建硬件系統,因為基于Linux的操作系統設計中,CPU、RAM和總線(xiàn)是必須的。由于芯片內部的BRAM只有128kb/s, 而下載Linux內核的.elf文件通常遠大于這個(gè)容量,因此需要使用外部的存儲單元。本文使用opb_sdram存儲控制模塊實(shí)現此功能。本文使用Uart16550控制模塊,能方便地通過(guò)RS232端口觀(guān)察測試的結果。為滿(mǎn)足本文應用的需要,可以使用Uartlite模塊實(shí)現RS232的COM2端口和外部設備通信的功能。添加Ethernet_Mac的IP模塊,可使用以太網(wǎng)端口將開(kāi)發(fā)板連接到網(wǎng)絡(luò )上。為了調試的方便,可以加入GPIO模塊。通過(guò)GPIO控制LED燈,可顯示系統狀態(tài)。若選擇應用程序初始化硬件,當bit數據下載到FPGA系統正常運行時(shí),可以觀(guān)察到LED燈被點(diǎn)亮。另外,根據設計需求,也可以?huà)燧d用戶(hù)定制的IP,以處理用戶(hù)的特定的需求。

  選擇參數時(shí),可以使用默認值,而存儲器參數可以選擇容量大一些的。使用的PowerPC 405硬核,PPC的工作頻率設置為100MHz, 參考時(shí)鐘和系統的總線(xiàn)頻率也分別設置為100MHz;使用的BRAM模塊IBRAM和DBRAM速率分別設置為64Kb/s。最終定制的SoPC硬件系統如圖4所示。

  2.2  SoPC的Linux系統構建

  在SoPC的硬件系統構建完成之后,利用EDK軟件生成的板級支持包(BSP)配置編譯內核。BSP包含了所選定處理器架構的屬性文件以及相關(guān)硬件的驅動(dòng)源文件。將這些文件加入到Linux內核中,然后配置內核選項選擇對應的處理器架構、所選硬件的驅動(dòng)模塊以及需要的其他內核模塊,之后再對完成配置的內核進(jìn)行編譯,生成Linux的內核image文件。

  生成內核image文件之后,還需要生成系統運行所需要的根文件系統。根文件系統中包含了嵌入式Linux系統的所有應用程序、庫以及系統配置等相關(guān)文件。根文件系統中常用的程序和命令可利用開(kāi)源軟件Busybox構造。構造完成之后,在Busybox生成的目錄和文件的基礎上再構造根文件系統的目錄樹(shù),并添加相關(guān)設備文件和配置文件以及系統運行時(shí)需要的腳本文件,從而形成最終的根文件系統。至此,就可以將文件系統作為映像編譯到內核中,也可以通過(guò)網(wǎng)絡(luò )使用NFS文件系統加載根文件系統。

3  應用舉例

  以一個(gè)多進(jìn)程的嵌入式Web服務(wù)器用于實(shí)現控制遠程設備的的開(kāi)發(fā)為例,闡述在基于Linux的SoPC系統上開(kāi)發(fā)應用程序的過(guò)程。嵌入式Web服務(wù)器的開(kāi)發(fā)包括HTTP協(xié)議裁減和具體的應用程序實(shí)現。用戶(hù)可以通過(guò)向Web服務(wù)器發(fā)送CGI請求的方式使服務(wù)器通過(guò)串口和外部設備通信,達到遠程控制的目的。

  3.1 HTTP協(xié)議裁減

  嵌入式Web服務(wù)器主要基于HTTP協(xié)議進(jìn)行設計,而HTTP協(xié)議的實(shí)現又是基于TCP/IP協(xié)議棧的。在Linux內核中,由于已經(jīng)包含了TCP/IP協(xié)議棧的完整實(shí)現,從而為嵌入式Web服務(wù)器的實(shí)現提供了很好的基礎。相對于在無(wú)操作系統環(huán)境的SoPC上實(shí)現Web服務(wù)器來(lái)說(shuō),基于Linux系統的開(kāi)發(fā)可以節省大量的工作。

  HTTP協(xié)議是一個(gè)屬于應用層的面向對象的協(xié)議,由于其采用簡(jiǎn)捷、快速的方式,適用于分布式超媒體信息系統[4]。嵌入式Web服務(wù)器根據不同的需要,實(shí)現的功能也不同。相對于完整的Web服務(wù)器,它需要實(shí)現的功能要簡(jiǎn)單得多[5]。本文的嵌入式Web服務(wù)器僅實(shí)現協(xié)議中最常用的部分??紤]到嵌入式系統的存儲空間和處理能力,對HTTP協(xié)議進(jìn)行了裁減。這不僅可以提高Web服務(wù)器的效率,也可以減少占用的空間,具有積極的意義。

  當客戶(hù)機與Web服務(wù)器進(jìn)行會(huì )話(huà)時(shí),客戶(hù)機首先通過(guò)SOCKET與服務(wù)器建立連接,連接之后便向服務(wù)器提出請求,請求信息包括希望返回的文件名和客戶(hù)機信息等??蛻?hù)機以請求頭(包括HTTP方法和頭字段[6])的形式將信息發(fā)送給服務(wù)器。HTTP方法常用的有GET、HEAD、POST,因此本文即采用GET、HEAD、POST三種方法。

  HTTP頭字段包括general-header、request-header、response-header、entity-header四大類(lèi),而每一類(lèi)中又定義了多個(gè)類(lèi)型[6],其中的大部分都是不常用的,所以應根據需要選定幾種類(lèi)型。本文設計的服務(wù)器支持以下幾種頭類(lèi)型:Date、Host、Server、Accept、Connection、Content-Type、Content-Length、Accept-Charset、 Accept-Language。

  服務(wù)器收到一個(gè)請求,就會(huì )立刻解釋請求中所用到的方法,并開(kāi)始處理,處理完成之后會(huì )發(fā)送應答消息。應答消息包含了狀態(tài)碼、一些頭字段以及實(shí)體信息(即客戶(hù)請求的服務(wù)器上的資源內容),其中HTTP協(xié)議的狀態(tài)碼也有四大類(lèi)[6]。這些狀態(tài)碼詳細說(shuō)明了服務(wù)器的狀態(tài)、出錯信息以及對用戶(hù)的指示。由于嵌入式Web服務(wù)器只需向用戶(hù)提供服務(wù),而無(wú)需向用戶(hù)反饋具體的狀態(tài),因此,本文實(shí)現中只保留特定的幾種錯誤信息,而省略了大部分的狀態(tài)信息。

  3.2 支持多進(jìn)程的嵌入式Web服務(wù)器的實(shí)現

  本系統的設計對HTTP協(xié)議進(jìn)行了裁減,然后利用Linux系統提供的進(jìn)程調度功能、網(wǎng)絡(luò )通信功能(包括SOCKET、TCP連接等),使用C語(yǔ)言編寫(xiě)了一個(gè)支持多進(jìn)程的Web服務(wù)器。實(shí)現的Web服務(wù)器接收客戶(hù)端的請求,根據需要選擇發(fā)送文件通過(guò)串口和外部設備通信,并將外部設備返回的結果發(fā)送給客戶(hù)端。其功能描述如下:在指定的端口監聽(tīng)用戶(hù)的HTTP請求,對該請求進(jìn)行分析解釋并執行相應的操作;將用戶(hù)要求的內容或者出錯信息以HTTP應答的方式返回給用戶(hù)。其中,用戶(hù)的請求分為CGI請求和非CGI請求,如果是CGI請求,則首先檢查用戶(hù)的權限和文件是否存在,然后新創(chuàng )建一個(gè)進(jìn)程,并在該子進(jìn)程中通過(guò)串口和外部設備通信,最后將串口返回的結果或者出錯信息傳送給Web服務(wù)器返回給用戶(hù);如果是非CGI請求,則只進(jìn)行權限和文件檢查,如果檢查通過(guò)則發(fā)送該文件,否則給出出錯信息。軟件的工作流程如圖5所示。

  本文給出了基于Linux的SoPC開(kāi)發(fā)的方法,并實(shí)現了一個(gè)具體的應用設計——嵌入式Web服務(wù)器。該設計快速、簡(jiǎn)單,而且由于基于Linux操作系統,從而保證了系統的穩定性,同時(shí)因為利用了系統的進(jìn)程調度功能,加快了信息的處理速度。SoPC和嵌入式Linux操作系統二者的結合,既滿(mǎn)足了嵌入式應用按需定制、量體裁衣的需求,又能開(kāi)發(fā)出穩定而功能強大的嵌入式系統。這在嵌入式應用日益復雜的背景下,具有很大意義和良好的應用前景。

參考文獻

[1]  AVNET. Virtex-II Pro FF1152 development board user’s guide. https://www.em.avnet.com. 2005.
[2]  董代潔.基于FPGA的可編程設計.北京:北京航空航天大學(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é)議與結構. 第四版.林瑤,譯.北京:電子工業(yè)出版社, 2001.
[5]  劉殿敏, 李科杰. 基于Linux嵌入式HTTP網(wǎng)絡(luò )服務(wù)器的設計與實(shí)現[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.

 

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: 嵌入式 SoPC SoC Linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>