基於Linux的SoPC應用系統設計

來源:互聯網
上載者:User
 

基於Linux的SoPC應用系統設計
[日期:2008-7-30] 來源:中電網  作者:盧 敏, 陳 偉, 鄭靈翔, 吳志雄 [字型: ]

 

SoPC(System on Programmable Chip)是一種特殊的嵌入式系統。首先,它是一種SoC系統,即由一個晶片完成系統的主要邏輯功能;其次,它是可程式化的片上系統,即可配置、可裁減、可擴充、可升級,具有硬體系統的可程式化性。採用SoPC的設計,具有很大的靈活性。它可以根據需要定製各個硬體模組,包括處理器、匯流排、儲存空間和通訊模組等,這就使得在一個晶片上搭建一個按需定製的SoC系統成為可能。而Linux系統也因為其良好的可裁減、可配置的特點廣泛應用於各種嵌入式系統,Linux作業系統提供了許多系統級的應用,例如網路通訊協定的實現、進程調度、記憶體管理等,同時Linux是一個成熟的開源作業系統,有豐富的應用資源。利用這些資源和強大的系統功能,使用者可以基於嵌入式Linux快速地開發出面向複雜應用的嵌入式系統。因此,結合SoPC和Linux優勢,可以很好地滿足嵌入式系統根據需求量體裁衣,去除冗餘。本文給出基於Linux的SoPC應用系統的開發方法及一個具體的嵌入式應用開發執行個體。
1 硬體開發環境
1.1 開發平台

    本文所採用的開發平台是AVNET公司生產的VIRTEX-II PRO FF1152開發板,它使用XILINX公司的Virtex-II Pro FPGA晶片XC2VP50-6FF1152C,同時開發板還有2個8MB×32的SDRAM儲存空間、2個RS232介面、一個乙太網路介面、1個LCD顯示屏、8個LED燈,同時支援SPI-4.2的高速16bit LVDS介面、iSFP GbE光纖介面、System ACE介面以及一個P160標準的擴充模組[1]。
1.2 基於PowerPC的片上系統
    XC2VP50-6FF1152C晶片內部含有兩個IBM PowerPC 405核。PowerPC405是32位的RISC處理器,它採用IP植入架構的形式整合到XILINX公司的Virtex-II Pro FPGA器件中。
    PowerPC硬核具有許多優點適合軟體的開發設計[2]:具有三個定時器:即可程式化的內部定時器、固定的內部定時器和看門狗定時器和靈活的儲存管理和用於加強計算功能的乘法累加指令。PowerPC的強大功能可以勝任許多複雜應用系統對處理能力和運算速度的需求。同時,利用雙核機制以及作業系統的進程調度可以大幅度地提高處理速度。
    通過XILINX公司的EDK開發軟體,可以很方便地在Virtex-II Pro系列晶片上搭建自己需要的硬體系統。處理器方面可以選擇硬核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控制器晶片,或者另外使用一個乙太網路的控制晶片,極其方便。
    可程式化片上系統由處理器、匯流排互連和外圍裝置等組成,典型的基於PowerPC的片上系統的架構1所示。

 

1.3 CoreConnect的匯流排結構[3]
    匯流排互連是片上系統的一項關鍵技術。本系統採用了CoreConnect的匯流排結構。該匯流排結構是IBM公司開發的一種片上通訊的匯流排互連技術。它的應用使得系統核、外設核、處理器核的複用、串連變得更加容易。這裡,系統核是針對PLB匯流排上的功能IP模組的,而外設核是針對OPB匯流排上的功能模組的。CoreConnect匯流排互連是由本地邏輯匯流排PLB(Peripheral Logic Bus)、片上外圍匯流排 OPB(On chip Peripheral Bus)、一個匯流排橋、兩個判決器,以及裝置控制匯流排DCR(Device Control Register構成的,其結構2所示。

 

2 基於Linux的SoPC系統構建
    系統的構建包括,硬體平台的搭建和Linux作業系統的移植。首先進行項目需求分析,決定實現系統需要的硬體IP核,繼而搭建硬體平台。硬體平台構建完成之後,利用EDK軟體產生相關的硬體參數檔案和裝置驅動檔案。使用者需要利用產生的檔案構建Linux核心,同時需要構建適用於核心的根檔案系統,最後在構建完成的作業系統的基礎上開發所需功能的應用程式介面。其中根檔案系統的構造要考慮核心中提供的服務和功能以及應用程式所需的系統命令等。同樣所要實現的應用功能又影響著核心服務和功能的選擇。根檔案系統、應用程式介面以及核心三者是互相影響的。具體的構建流程圖3所示。

 

2.1 利用EDK搭建硬體系統
    利用EDK8.2軟體搭建硬體系統,因為基於Linux的作業系統設計中,CPU、RAM和匯流排是必須的。由於晶片內部的BRAM只有128kb/s, 而下載Linux核心的.elf檔案通常遠大於這個容量,因此需要使用外部的儲存單元。本文使用opb_sdram儲存控制模組實現此功能。本文使用Uart16550控制模組,能方便地通過RS232連接埠觀察測試的結果。為滿足本文應用的需要,可以使用Uartlite模組實現RS232的COM2連接埠和外部裝置通訊的功能。添加Ethernet_Mac的IP模組,可使用網路連接埠將開發板串連到網路上。為了調試的方便,可以加入GPIO模組。通過GPIO控制LED燈,可顯示系統狀態。若選擇應用程式初始化硬體,當bit資料下載到FPGA系統正常運行時,可以觀察到LED燈被點亮。另外,根據設計需求,也可以掛載使用者定製的IP,以處理使用者的特定的需求。
    選擇參數時,可以使用預設值,而儲存空間參數可以選擇容量大一些的。使用的PowerPC 405硬核,PPC的工作頻率設定為100MHz, 參考時鐘和系統的匯流排頻率也分別設定為100MHz;使用的BRAM模組IBRAM和DBRAM速率分別設定為64Kb/s。最終定製的SoPC硬體系統4所示。

 

2.2  SoPC的Linux系統構建
    在SoPC的硬體系統構建完成之後,利用EDK軟體產生的板級支援包(BSP)配置編譯核心。BSP包含了所選定處理器架構的屬性檔案以及相關硬體的驅動源檔案。將這些檔案加入到Linux核心中,然後配置核心選項選擇對應的處理器架構、所選硬體的驅動模組以及需要的其他核心模組,之後再對完成配置的核心進行編譯,產生Linux的核心image檔案。
    產生核心image檔案之後,還需要產生系統運行所需要的根檔案系統。根檔案系統中包含了嵌入式Linux系統的所有應用程式、庫以及系統配置等相關檔案。根檔案系統中常用的程式和命令可利用開源軟體Busybox構造。構造完成之後,在Busybox產生的目錄和檔案的基礎上再構造根檔案系統的分類樹,並添加相關裝置檔案和設定檔以及系統運行時需要的指令檔,從而形成最終的根檔案系統。至此,就可以將檔案系統作為映像編譯到核心中,也可以通過網路使用NFS檔案系統載入根檔案系統。
3  應用舉例
    以一個多進程的嵌入式Web伺服器用於實現控制遠程裝置的的開發為例,闡述在基於Linux的SoPC系統上開發應用程式的過程。嵌入式Web伺服器的開發包括HTTP協議裁減和具體的應用程式實現。使用者可以通過向Web伺服器發送CGI請求的方式使伺服器通過串口和外部裝置通訊,達到遠端控制的目的。
3.1 HTTP協議裁減
    嵌入式Web伺服器主要基於HTTP協議進行設計,而HTTP協議的實現又是基於TCP/IP協議棧的。在Linux核心中,由於已經包含了TCP/IP協議棧的完整實現,從而為嵌入式Web伺服器的實現提供了很好的基礎。相對於在無作業系統環境的SoPC上實現Web伺服器來說,基於Linux系統的開發可以節省大量的工作。
    HTTP協議是一個屬於應用程式層的物件導向的協議,由於其採用簡捷、快速的方式,適用於分布式超媒體資訊系統[4]。嵌入式Web伺服器根據不同的需要,實現的功能也不同。相對於完整的Web伺服器,它需要實現的功能要簡單得多[5]。本文的嵌入式Web伺服器僅實現協議中最常用的部分。考慮到嵌入式系統的儲存空間和處理能力,對HTTP協議進行了裁減。這不僅可以提高Web伺服器的效率,也可以減少佔用的空間,具有積極的意義。
    當客戶機與Web伺服器進行會話時,客戶機首先通過SOCKET與伺服器建立串連,串連之後便向伺服器提出請求,請求資訊包括希望返回的檔案名稱和客戶機資訊等。客戶機以要求標頭(包括HTTP方法和頭欄位[6])的形式將資訊發送給伺服器。HTTP方法常用的有GET、HEAD、POST,因此本文即採用GET、HEAD、POST三種方法。
    HTTP頭欄位包括general-header、request-header、response-header、entity-header四大類,而每一類中又定義了多個類型[6],其中的大部分都是不常用的,所以應根據需要選定幾種類型。本文設計的伺服器支援以下幾種頭類型:Date、Host、Server、Accept、Connection、Content-Type、Content-Length、Accept-Charset、 Accept-Language。
    伺服器收到一個請求,就會立刻解釋請求中所用到的方法,並開始處理,處理完成之後會發送應答訊息。應答訊息包含了狀態代碼、一些頭欄位以及實體資訊(即客戶請求的伺服器上的資源內容),其中HTTP協議的狀態代碼也有四大類[6]。這些狀態代碼詳細說明了伺服器的狀態、出錯資訊以及對使用者的指示。由於嵌入式Web伺服器只需向使用者提供服務,而無需向使用者反饋具體的狀態,因此,本文實現中只保留特定的幾種錯誤資訊,而省略了大部分的狀態資訊。
3.2 支援多進程的嵌入式Web伺服器的實現
    本系統的設計對HTTP協議進行了裁減,然後利用Linux系統提供的進程調度功能、網路通訊功能(包括SOCKET、TCP串連等),使用C語言編寫了一個支援多進程的Web伺服器。實現的Web伺服器接收用戶端的請求,根據需要選擇傳送檔案通過串口和外部裝置通訊,並將外部裝置返回的結果發送給用戶端。其功能描述如下:在指定的連接埠監聽使用者的HTTP請求,對該請求進行分析解釋並執行相應的操作;將使用者要求的內容或者出錯資訊以HTTP應答的方式返回給使用者。其中,使用者的請求分為CGI請求和非CGI請求,如果是CGI請求,則首先檢查使用者的許可權和檔案是否存在,然後新建立一個進程,並在該子進程中通過串口和外部裝置通訊,最後將串口返回的結果或者出錯資訊傳送給Web伺服器返回給使用者;如果是非CGI請求,則只進行許可權和檔案檢查,如果檢查通過則發送該檔案,否則給出出錯資訊。軟體的工作流程5所示。

 

    本文給出了基於Linux的SoPC開發的方法,並實現了一個具體的應用設計——嵌入式Web伺服器。該設計快速、簡單,而且由於基於Linux作業系統,從而保證了系統的穩定性,同時因為利用了系統的進程調度功能,加快了資訊的處理速度。SoPC和嵌入式Linux作業系統二者的結合,既滿足了嵌入式應用按需定製、量體裁衣的需求,又能開發出穩定而功能強大的嵌入式系統。這在嵌入式應用日益複雜的背景下,具有很大意義和良好的應用前景。
參考文獻
[1]  AVNET. Virtex-II Pro FF1152 development board user’s guide. https://www.em.avnet.com. 2005.
[2]  董代潔.基於FPGA的可程式化SoC設計.北京:北京航空航天大學出版社,2006.
[3]  IBM. Core connect bus architecture. http://www-03.ibm.com/chips/products/coreconnect/. 2004.
[4]  DOUGLAS E C.用TCP/IP進行網際互聯(第一卷):原理、協議與結構. 第四版.林瑤,譯.北京:電子工業出版社, 2001.
[5]  劉殿敏, 李科傑. 基於Linux嵌入式HTTP網路伺服器的設計與實現[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.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.