999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

LwIP在LPC23/24XX以太網MAC控制器上的移植與應用

2014-07-25 08:59:48施純啟吳景東
網絡安全與數據管理 2014年19期
關鍵詞:嵌入式

施純啟,吳景東

(福州大學 數學與計算機科學學院,福建 福州 350108)

0 引言

隨著Internet的廣泛應用和通信技術的飛速發展,越來越多的應用場合需要將嵌入式設備接入以太網。得益于微電子技術的進步,許多嵌入式控制芯片集成了以太網MAC控制器,NXP公司推出的LPC23/24XX系列微控制器便是其中的代表,該系列微控制器在嵌入式領域使用量大,應用范圍廣。LwIP輕量級TCP/IP協議棧是一套用于嵌入式網絡系統的開放源碼[1],具有較完整的TCP/IP功能,特別適合在資源緊張的微控制器上使用。本文以LPC23/24XX系列微控制器和DM9161A以太網PHY器件為硬件基礎,根據LPC23/24XX以太網MAC控制器的特性來移植LwIP協議棧,實現一個低成本的嵌入式網絡系統。

1 系統硬件設計

LPC23/24XX系列微控制器使用了一個可在72 MHz頻率下運行的ARM7內核,包含1個10/100 Mb/s以太網模塊,該模塊位于獨立的AHB總線上,有16 KB的SRAM和DMA控制器[2]。本文采用該系列中的LPC2378進行實驗。

DM9161A是目前常見的一款低成本物理層收發器,在以太網PHY層使用,通過介質無關接口MII或簡化介質無關接口RMII連接到以太網MAC層[3]。DM9161A的接線圖如圖1所示。

LPC2378微控制器的以太網模塊通過10個引腳與DM9161A相連,如圖2所示。

2 LPC23/24XX以太網控制器結構與模塊功能描述

LPC23/24XX微控制器的以太網模塊包含一個全功能的10/100 Mb/s以太網MAC控制器,通過配置DMA硬件來提高性能[4]。以太網模塊通過操作控制寄存器組,實現半雙工或全雙工操作、流量控制、接收包過濾以及LAN上喚醒等各種功能,其結構如圖3所示。

MAC控制器通過RMII接口與DM9161A進行連接,RMII接口可以在幾乎不修改代碼的情況下兼容大部分PHY器件。以太網模塊中的DMA管理器利用描述符數組和狀態數組來工作。描述符和狀態充當以太網硬件和驅動程序之間的接口,描述符用來設置對應緩沖區的首地址和控制信息,狀態符存儲著對應收發數據最新的狀態信息。描述符數組和狀態數組在邏輯上是一個環形隊列結構,在接收和發送數據的過程中,它們會有3種不同的狀態:空狀態、部分滿狀態和滿狀態,如圖4所示。

對描述符數組的操作采用生產者/消費者模式,在接收過程中,以太網MAC控制器是生產者,RxProduceIndex寄存器為數組索引;驅動程序是消費者,RxConsumeIndex寄存器為數組索引。在發送過程中,驅動程序是生產者,TxProduceIndex寄存器為數組索引;MAC控制器是消費者,TxConsumeIndex寄存器為數組索引。描述符還有一個擁有者的屬性,只有描述符的擁有者才能對它的值進行讀寫。驅動程序通過將TxProduceIndex/RxConsumeIndex寄存器加1,能夠將描述符和狀態的擁有權移交給MAC控制器。MAC控制器通過更新TxProduceIndex/RxConsumeIndex寄存器將描述符和狀態的擁有權移交給驅動程序。

圖1 DM9161A接線圖

圖2 LPC2378微控制器與DM9161A引腳連接圖

圖3 LPC23/24XX以太網模塊結構框圖

3 LwIP協議棧的移植

LwIP協議棧的移植工作分兩個部分,分別是網絡接口層的實現和操作系統模擬層的移植。

3.1 網絡接口層的實現

LwIP源碼給出了網絡接口驅動程序的整體框架,用戶需要自己完成的函數主要有3個[5],分別是:

⑴網絡接口初始化函數low_level_init()。該函數用來對網絡接口進行初始化,任何與初始化網絡接口有關的操作都可以在該函數內實現。如對網絡接口有關參數進行配置、完成網絡芯片硬件上所需的初始化操作等。

⑵網絡接口輸入函數low_level_input()。該函數為到達的數據包分配pbuf,并將數據包從網絡接口轉移到pbuf鏈中。

⑶網絡接口輸出函數low_level_output()。該函數實現真正的數據包發送過程。當需要發送數據包時,數據包裝載在事先已分配好的pbuf中,由該函數負責將數據包發送至指定的網絡接口中。

這3個函數的實現都與網絡接口的硬件特性密切相關,其實就是相當于為以太網MAC控制器編寫驅動程序。初始化函數low_level_init()對應的是控制器的初始化配置過程,輸入函數low_level_input()對應的是控制器的數據接收過程,輸出函數low_level_output()對應的是控制器的數據發送過程。下面只詳細討論以太網MAC控制器的初始化和數據接收過程,而數據發送過程與接收過程的實現相似,本文不進行詳述。

圖4 描述符與狀態數組的三種狀態

3.1 .1 初始化過程

驅動程序在初始化過程需要為DMA管理器分配描述符數組和狀態數組。發送和接收功能都有各自的描述符和狀態數組,這些數組的基址存放在TxDescriptor/TxStatus和RxDescriptor/RxStatus寄存器中。而描述符數組中描述符的數目需使用減1編碼寫入到TxDescriptorNumber/RxDescriptorNumber寄存器中,狀態與描述符的數目相同。在初始化數組之后,需要為描述符分配幀緩沖區,描述符的Packet字段使用對應緩沖區的基址來填充,而其Size字段需要填入緩沖區的大小。緩沖區的大小根據具體情況而定,范圍在1 B ~ 2 KB之間,緩沖區太小緩沖效果不明顯,影響網絡性能,太大則會占用太多的控制器存儲空間。

3.1 .2 接收過程

以圖5為例,在初始化之后,這個例子中的描述符和狀態數組長度為4,描述符數組的基址為0x7FE010EC,狀態數組的基址為0x7FE011F8,每個描述符分配到的幀緩沖區大小為8 B。

假設幀數據共有19 B,因為幀緩沖區大小為8 B,因此幀數據將存儲在3個緩沖區中。在將最初的8 B幀數據寫入1號緩沖區之后,接收DMA管理器將繼續填充2號緩沖區。因為幀數據還沒結束,1號緩沖區的狀態中的LastFrag位應為0,RxSize字段應為7(8個字節,采用減1編碼)。2號緩沖區的操作與1號緩沖區相同。在將最后3 B幀數據寫入3號緩沖區之后,幀數據到達末尾,3號緩沖區狀態應為:LastFrag=1,RxSize=2。依據前面提到的生產者/消費者操作模式,在上述例子中,當驅動程序沒有將RxConsumeIndex加1時,接收DMA管理器不能讀取新的描述符,因為描述符數組處于滿狀態。只有在驅動程序將接收數據傳送給了LwIP主線程并且對RxConsumeIndex進行更新之后,DMA管理器才能繼續讀取描述符并接收數據。接收完一幀數據后,驅動程序將把3個緩沖區中的信息組成的完整幀數據封裝為pbuf的形式,提交給協議棧內核進行處理。

3.2 操作系統模擬層的移植

為了提高可移植性,LwIP協議棧源碼并不實現操作系統中的具體操作,而是定義了協議棧與操作系統之間的接口函數,稱之為操作系統模擬層。本文使用 μC/OS-II開源實時操作系統來實現操作系統模擬層。

操作系統模擬層主要實現以下4大功能:

⑴進程同步。此功能提供了多個進程之間的同步操作,可以使用信號量來實現這個功能。其結構和函數接口如表1所示。

⑵消息傳遞。提供了進程之間傳遞數據的功能,具體可以使用郵箱方法來傳遞。其結構和函數接口如表2所示。

圖5 接收過程實例

⑶定時與超時處理。LwIP在初始化時會為協議棧進程注冊多個定時與超時處理函數,當定時與超時事件發生時便會調用相應的函數進行處理,操作系統模擬層提供的接口函數能返回這些定時與超時事件的所在位置。其函數接口如表3所示。

⑷進程管理。對LwIP協議棧的進程進行管理和維護,主要指創建進程。具體結構和函數接口如表4所示。

μC/OS-II操作系統中包含了關于郵箱、信號量和隊列機制的操作函數,在這些函數的基礎上進行簡單的封裝和修改,可以實現LwIP系統模擬層中郵箱與信號量的操作[6]。但需要注意的是LwIP和 μC/OS-II對郵箱機制的實現不一樣。在LwIP中,為了提高協議棧通信的效率,要求郵箱中能夠存放多條消息,而 μC/OS-II中的郵箱最多只能傳遞一條消息。所以這里采用 μC/OS-II提供的隊列操作函數,因為隊列中可以存放多條消息。

接下來要實現的是與等待超時相關的函數。協議棧的穩定運行需要設定多種內部定時器,如TCP定時器、ARP定時器等。

最后,初始化協議棧時,系統要為內核創建一個主進程,這里可以對 μC/OS-II的任務創建函數OSTaskCreate做簡單的封裝,便可以得到所需要的進程創建函數。

3.3 TCP性能測試

移植工作完成后,為了測試TCP的性能,在系統上建立了一個簡單的TCP回顯服務器,接著利用網絡性能測試工具Jperf進行TCP帶寬測試,測試結果如圖6所示。可以看出帶寬穩定在3 342 kb/s左右。

4 嵌入式WEB服務器的實現

為了驗證系統的實用性,這里實現了一個簡單的嵌入式WEB服務器,該WEB服務器可以響應來自瀏覽器的HTTP GET請求,并在發送請求的瀏覽器上顯示請求頁面。在PC上的瀏覽器中輸入服務器的IP地址,測試結果如圖7所示,表明該系統運行良好,具有實用價值。

表1 同步功能接口

表2 消息傳遞接口

表3 定時與超時處理功能接口

表4 進程管理功能接口

5 結論

圖6 TCP帶寬測試結果

本文介紹了一種采用集成以太網MAC的微控制器和外接PHY器件,實現嵌入式以太網接口的方案,并在上面完成了LwIP協議棧的移植與應用。本方案采用了較新的電子器件和計算機技術,具有高效率、兼容多種PHY器件、低成本與易于實現等優點,適合中低檔的嵌入式設備接入以太網的應用領域。

圖7 WEB服務器測試結果

[1] 肖樂,李兵,邱雅.一種高速嵌入式遠程監控系統的研究與實現[J].微型機與應用,2010, 29(5):55-57.

[2] LPC23XX User manual(Rev. 4.1)[EB/OL].[2012-9-05]http://www.nxp.com/documents.

[3] 張東,胡榮貴,徐海. ARM7芯片W90N740以太網接口設計及驅動開發[J].微型機與應用,2010,29(10):18-21.

[4] 扶文樹,何軍,陳國勝,等.LPC23xx的自適應以太網通信接口設計[J].單片機與嵌入式系統應用,2008(6):72-74.

[5] 朱升林.嵌入式網絡那些事:LwIP協議深度剖析與實戰演練[M].北京:水利電力出版社,2012.

[6] JLABROSSE J.嵌入式實時操作系統μC/OS-II[M].邵貝貝,譯.北京:北京航空航天大學出版社,2003.

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 国产精品污污在线观看网站| 国产精品色婷婷在线观看| 亚洲专区一区二区在线观看| 日日拍夜夜嗷嗷叫国产| 国产成人禁片在线观看| 欧美黄网站免费观看| 国产成人久视频免费| 2022精品国偷自产免费观看| 毛片视频网| 国产99视频在线| V一区无码内射国产| 99re经典视频在线| 强奷白丝美女在线观看| 国产丝袜无码一区二区视频| 免费在线色| 久久精品无码国产一区二区三区| 国产美女91呻吟求| 欧美啪啪网| 日韩欧美高清视频| 欧美一区日韩一区中文字幕页| 一级一毛片a级毛片| 91成人免费观看| 欧美精品二区| 久久婷婷综合色一区二区| 欧美一区二区自偷自拍视频| 精品国产成人三级在线观看| 国产二级毛片| 天堂在线www网亚洲| 亚洲h视频在线| 波多野结衣一区二区三区四区视频| 国产在线欧美| 在线毛片网站| 尤物视频一区| 国产精品浪潮Av| 久久国产精品77777| 日韩av高清无码一区二区三区| 毛片三级在线观看| 大香伊人久久| 国产免费久久精品99re不卡 | 免费观看欧美性一级| 亚洲天堂网在线观看视频| 国产性爱网站| 亚洲欧洲日韩国产综合在线二区| 日韩精品无码不卡无码| 欧美啪啪网| 毛片免费观看视频| 欧美日韩一区二区在线播放| 全部毛片免费看| 中文字幕在线看| 狠狠色丁香婷婷| 欧美一级99在线观看国产| 波多野结衣视频网站| 九九久久精品免费观看| 国产精品久久久久久久久| 丝袜亚洲综合| 波多野结衣第一页| 国产一国产一有一级毛片视频| 成人免费黄色小视频| 亚洲精品日产AⅤ| 久久五月视频| 欧美国产在线一区| 少妇被粗大的猛烈进出免费视频| 日韩一区精品视频一区二区| 人妻中文久热无码丝袜| 免费高清毛片| 亚洲人成高清| 久久性视频| 亚洲va在线∨a天堂va欧美va| 19国产精品麻豆免费观看| 亚洲中文字幕av无码区| 中文精品久久久久国产网址| 色噜噜在线观看| 最新亚洲人成无码网站欣赏网 | 亚洲午夜18| 欧美啪啪网| 国产美女无遮挡免费视频| 青青青国产视频手机| 国产剧情国内精品原创| 国产人免费人成免费视频| 国产在线拍偷自揄拍精品| 欧美人与动牲交a欧美精品| 亚洲天堂.com|