新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于Altera FPGA無操作系統(tǒng)的LWIP移植

基于Altera FPGA無操作系統(tǒng)的LWIP移植

作者: 時間:2016-09-12 來源:網(wǎng)絡 收藏

由于環(huán)境的特殊性,不僅要求設備具有較高的性能,也對設備的體積功耗等提出了嚴格的要求。為增加系統(tǒng)運行的可靠性,硬件設備需盡可能的緊湊。在滿足系統(tǒng)運行需求的前提下,硬件中分立元件越少越好?;诂F(xiàn)場可編程門陣列(FPGA)的以太網(wǎng)設計是一個較好的解決方案。

本文引用地址:http://2s4d.com/article/201609/303790.htm

SOPC Builder是一種特殊的嵌入式系統(tǒng),其是片上系統(tǒng),即由單個芯片完成系統(tǒng)的主要邏輯功能,并具有靈活的設計方式,可裁剪、可擴充和升級、且具備軟硬件在系統(tǒng)可編程功能。嵌入式處理器是Altera公司推出的采用哈佛結構、具有32位指令集的第二代可編程軟核處理器,其最大優(yōu)勢是模塊化的硬件結構,在設計階段根據(jù)實際需求來增減外設的種類和數(shù)量。是瑞士計算機科學院的Adam Dunkela等開發(fā)出的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。一般情況下,既可移植到操作系統(tǒng)上,又可在無操作系統(tǒng)的情況下獨立運行。實現(xiàn)的主要優(yōu)點是在保持TCP/IP協(xié)議主要功能的基礎上,又減少了其對RAM的占用,這使得LWIP協(xié)議適合在嵌入式系統(tǒng)中使用。

1 移植過程及設計流程

1.1 系統(tǒng)的組成

以軟核為核心,在FPGA中搭建存儲器、DMA、三速以太網(wǎng)MAC等多種外設的SOPC系統(tǒng),在片外配置三速以太網(wǎng)物理層芯片(PHY)。通過對TCP/IP協(xié)議棧的移植以及基于UDP協(xié)議的網(wǎng)絡編程實現(xiàn)以太網(wǎng)應用。系統(tǒng)整體設計方案如圖1所示,系統(tǒng)設計主要分整體硬件電路設計、基于FPGA的SOPC系統(tǒng)設計和系統(tǒng)軟件設計。

基于Altera FPGA無操作系統(tǒng)的LWIP移植

1.2 系統(tǒng)硬件設計

硬件模塊主要由FPGA模塊、網(wǎng)絡接口模塊及電源模塊等組成。核心器件是FPGA,其作為SOPC系統(tǒng)的搭載平臺,并對其他硬件進行控制。網(wǎng)絡接口模塊選用Marvell公司的三速以太網(wǎng)物理層芯片88e1111,硬件結構如圖2所示。

基于Altera FPGA無操作系統(tǒng)的LWIP移植

1.3 使用搭建硬件環(huán)境

用SOPC Builder工具從處理器內核和開發(fā)套件提供的外設列表中選取合適的CPU,存儲器以及各自的外圍器件,并定制和配置其作用;分配外設地址及中斷號;設定復位地址;最后生成系統(tǒng)。硬件開發(fā)使用Quanus II和 CUI處理器庫選擇并配置外設。設計中除了必要的外設外還需添加MAC子層,MAC是以太網(wǎng)控制器的核心,主要提供與上層協(xié)議間的接口及與PHY設備間的介質無關接口,并對以太網(wǎng)數(shù)據(jù)包進行封裝、解封裝以及錯誤監(jiān)測等。設計選擇三速以太網(wǎng)(10/100/1 000 Mbit·s-1)MAC,其結構如圖3所示。

基于Altera FPGA無操作系統(tǒng)的LWIP移植

FIFO用于緩存接收或發(fā)送的數(shù)據(jù)。設計采用M9K存儲器塊作為FIFO,設置發(fā)送FIFO為2 048×32 bit,接收FIFO設置為512×32 bit,因系統(tǒng)主要用于向上位機傳送數(shù)據(jù)并接收上位機控制命令,因此接收FIFO需求較小。

在與PHY通信一側,三速以太網(wǎng)MAC核提供RGMII接口,工作在全雙工模式,并提供PHY管理接口。其中,PHY管理接口提供4個信號,分別是數(shù)據(jù)管理時鐘MDC、管理數(shù)據(jù)輸入MDIO_in、管理數(shù)據(jù)輸出MDIO_out:以及管理數(shù)據(jù)輸出使能MDIO_oen。由于在PHY芯片上只有時鐘MDC和雙向數(shù)據(jù)接口MDIO,所以MAC與PHY對接時中間需要一個雙向三態(tài)緩沖器,連接電路如圖4所示。

基于Altera FPGA無操作系統(tǒng)的LWIP移植

1.4 系統(tǒng)軟件設計LWIP的移植

LWIP的移植可分為兩大類,第一類是只移植內核核心,此時用戶應用程序的編寫只能基于raw/callback API進行;第二類是移植內核核心和上層API函數(shù)模塊,此時用戶可使用3種API進行編程,即除了raw/callback API外,還有sequentia API和BSD-style socket API。本文進行的是第一種移植,該移植較為簡單,移植者只需完成頭文件的定義,同時根據(jù)使用的具體網(wǎng)卡情況完成ethernetif.c中函數(shù)的編寫。

介紹LWIP的源代碼結構。解壓后,源代碼目錄共有doc、src和test 3個文件夾。其中,doc文件夾下包含了幾個與協(xié)議棧使用相關的文本文檔,較為重要的文件有兩個:rawa pi.txt為告訴讀者如何使用協(xié)議棧的raw/callback API進行編程,其通過直接與協(xié)議棧內核函數(shù)交互以實現(xiàn)編程;sys_arch.txt在移植時被使用到,其中描述了移植說明,規(guī)定了移植者需實現(xiàn)的函數(shù)、宏定義等。Test文件夾則是LWIP提供的一些協(xié)議棧的內核測試程序。文件夾src包含了協(xié)議棧內核的所有源代碼。

在NiosⅡ中建立新工程,添加srccore文件夾下的所有文件,同時包括其下IPV4文件夾中的所有文件。應該注意,這里添加了較多的文件,但其中有些是可條件編譯的,如文件sys.c,若不提供操作系統(tǒng)模擬層的文件,則該文件不會被編譯。接著添加netif文件夾中的loopif.c、etharp.c、ethernetif.c文件到工程中,同時在源文件目錄下新建lwipopts.h、perf.h和cc.h這3個頭文件,并同時將其添進工程。這3個頭文件是內核要求用戶在移植時需完成的頭文件。

Cc.h文件主要完成協(xié)議棧內部使用的數(shù)據(jù)類型定義,用戶應根據(jù)具體編譯器和處理器特性定義這些數(shù)據(jù)類型的長度;此外,cc.h文件還要完成臨界代碼的保護、協(xié)議棧調試信息輸出相關的宏和大小端的定義等。

Perf. h文件是與系統(tǒng)統(tǒng)計和測量相關的頭文件,該頭文件和平臺的處理器密切相關,本文平臺無需使用任何統(tǒng)計和測量功能。因此,該頭文件中的兩個宏直接定義為空。

最后一個頭文件lwipopts.h,其包含用戶對協(xié)議棧內核的參數(shù)設置,在內核的opt.h文件中,包含了內核所有參數(shù)的默認配置,當用戶在lwipopts.h中配置相關參數(shù),若用戶對某個參數(shù)未配置,則內核將使用opt.h中的默認值。需注意,在移植時重新定義某些內核參數(shù)是必要的,否則協(xié)議??赡軣o法正常運行。


上一頁 1 2 下一頁

關鍵詞: SOPC Builder NiosⅡ LWIP

評論


相關推薦

技術專區(qū)

關閉