新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Altera FPGA無(wú)操作系統(tǒng)的LWIP移植

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

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

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

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

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

1 移植過(guò)程及設(shè)計(jì)流程

1.1 系統(tǒng)的組成

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

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

1.2 系統(tǒng)硬件設(shè)計(jì)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最后一個(gè)頭文件lwipopts.h,其包含用戶(hù)對(duì)協(xié)議棧內(nèi)核的參數(shù)設(shè)置,在內(nèi)核的opt.h文件中,包含了內(nèi)核所有參數(shù)的默認(rèn)配置,當(dāng)用戶(hù)在lwipopts.h中配置相關(guān)參數(shù),若用戶(hù)對(duì)某個(gè)參數(shù)未配置,則內(nèi)核將使用opt.h中的默認(rèn)值。需注意,在移植時(shí)重新定義某些內(nèi)核參數(shù)是必要的,否則協(xié)議棧可能無(wú)法正常運(yùn)行。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: SOPC Builder NiosⅡ LWIP

評(píng)論


相關(guān)推薦

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

關(guān)閉