《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > LwIP在LPC23/24XX以太網MAC控制器上的移植與應用
LwIP在LPC23/24XX以太網MAC控制器上的移植與應用
2014年微型機與應用第19期
施純啟,吳景東
福州大學 數學與計算機科學學院,福建 福州 350108
摘要: 針對嵌入式設備接入以太網的需求,搭建了基于LPC23/24XX微控制器和DM9161A器件的硬件平臺,在對LPC23/24XX以太網MAC(介質訪問控制層)控制器的特性進行分析的基礎上,開發和移植LwIP協議棧的網絡接口層和操作系統模擬層,實現了一個低成本嵌入式網絡系統。通過對該系統進行TCP性能測試并在上面實現一個簡單的WEB服務器,表明了該系統效率較高,具有實用價值。
Abstract:
Key words :

  摘 要: 針對嵌入式設備接入以太網的需求,搭建了基于LPC23/24XX微控制器和DM9161A器件的硬件平臺,在對LPC23/24XX以太網MAC(介質訪問控制層)控制器的特性進行分析的基礎上,開發和移植LwIP協議棧的網絡接口層和操作系統模擬層,實現了一個低成本嵌入式網絡系統。通過對該系統進行TCP性能測試并在上面實現一個簡單的WEB服務器,表明了該系統效率較高,具有實用價值。

  關鍵詞: LPC23/24XX;DM9161A;LwIP;嵌入式網絡技術

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所示。

001.jpg

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

002.jpg

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

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

003.jpg

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

004.jpg

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

3 LwIP協議棧的移植

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

  3.1 網絡接口層的實現

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

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

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

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

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

  3.1.1 初始化過程

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

  3.1.2 接收過程


005.jpg

  以圖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所示。

006.jpg

 ?、葡鬟f。提供了進程之間傳遞數據的功能,具體可以使用郵箱方法來傳遞。其結構和函數接口如表2所示。

007.jpg

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

008.jpg

 ?、冗M程管理。對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左右。

009.jpg

4 嵌入式WEB服務器的實現

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

010.jpg

5 結論

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

參考文獻

  [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.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久久综合网站| 1024日韩| 免费在线观看精品| 国产精品盗摄久久久| 久久久久久婷| 欧美精品一区视频| 久久精品一区二区| 亚洲免费婷婷| 午夜精品久久久久久| 欧美在线网站| 免费亚洲电影| 亚洲天堂网在线观看| 国产麻豆精品久久一二三| 欧美午夜精品一区二区三区| 一区二区三区四区五区视频| 日韩视频在线观看一区二区| 亚洲丁香婷深爱综合| 在线看国产一区| 麻豆精品视频在线| 亚洲女女女同性video| 久久亚洲一区二区三区四区| 久久亚裔精品欧美| 激情久久中文字幕| 欧美精品videossex性护士| 美女精品自拍一二三四| 亚洲另类在线视频| 欧美日韩一区二区三区四区五区| 欧美在线视频一区二区| 久久一区二区三区超碰国产精品| 久久久久一区| 在线视频你懂得一区二区三区| 一区二区三区国产精华| 国产欧美日韩精品丝袜高跟鞋| 亚洲精品网站在线播放gif| 日韩视频免费观看高清完整版| 国产精品日韩精品| 国产老女人精品毛片久久| 国产精品亚洲美女av网站| 国产亚洲一级| 欧美日韩视频免费播放| 欧美电影免费网站| 久久av一区二区三区亚洲| 亚洲一区二区在线看| 久久久蜜臀国产一区二区| 久久久精品动漫| 亚洲成人在线| 国产精品美女久久久免费| 国产精品久久久对白| 国产精品午夜久久| 一区二区三区高清不卡| 亚洲第一福利在线观看| 在线精品视频在线观看高清| 91久久综合亚洲鲁鲁五月天| 亚洲最黄网站| 在线一区免费观看| 亚洲字幕在线观看| 久久精品国产综合| 亚洲亚洲精品三区日韩精品在线视频| 亚洲天堂网在线观看| 国产午夜精品在线观看| 欧美一区二区在线免费观看| 在线观看视频免费一区二区三区| 欧美国产日韩一区二区| 99在线|亚洲一区二区| 亚洲第一在线综合在线| 欧美视频一区二区在线观看| 久久国内精品视频| 免费日韩视频| 中文久久乱码一区二区| 午夜欧美大片免费观看| 国产精品成人免费| 亚洲电影一级黄| 亚洲欧美日韩综合| 91久久综合| 欧美日韩在线电影| 宅男噜噜噜66一区二区66| 亚洲欧美日本在线| 亚洲午夜视频在线观看| 有坂深雪在线一区| 樱桃国产成人精品视频| 欧美丰满高潮xxxx喷水动漫| 日韩系列在线| 欧美一区二区在线免费观看| 久久久久免费视频| 欧美日韩中文在线观看| 美日韩精品免费| 蜜乳av另类精品一区二区| 国产精品国产三级国产aⅴ浪潮| 亚洲视频一区二区| 久久精品中文| 性色一区二区| 亚洲黄网站在线观看| 在线成人欧美| 国产日韩欧美夫妻视频在线观看| 激情亚洲一区二区三区四区| 国产精品v欧美精品v日韩精品| 国产亚洲欧美色| 激情综合色综合久久综合| 美女网站在线免费欧美精品| 在线日韩视频| 免费欧美在线视频| 欧美成人福利视频| 亚洲综合欧美日韩| 午夜精品美女久久久久av福利| 免费不卡在线视频| 亚洲乱码一区二区| 午夜在线播放视频欧美| 国内精品视频666| 久久久久九九九九| 国产精品日韩一区| 欧美在线资源| 精品成人在线视频| 久久这里有精品15一区二区三区| 亚洲欧美制服中文字幕| 欧美一区亚洲一区| 久久久国产精品一区二区中文| 国产精品影音先锋| 国产日韩亚洲欧美| 国产欧美在线视频| 亚洲国产精品第一区二区| 国产精品综合色区在线观看| 久久永久免费| 亚洲黄色一区二区三区| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩久久久久久| 蜜臀a∨国产成人精品| 久久久久久亚洲综合影院红桃| 久久久无码精品亚洲日韩按摩| 久久久久久久久一区二区| 久久国产综合精品| 久久一区亚洲| 国产区欧美区日韩区| 久久精品av麻豆的观看方式| 久久综合伊人77777尤物| 欧美日韩中字| 久久免费视频观看| 国产精品久久久久三级| 欧美亚日韩国产aⅴ精品中极品| 欧美性视频网站| 欧美激情视频免费观看| 国内综合精品午夜久久资源| 亚洲欧美日韩国产综合| 久久九九热re6这里有精品| 久久精品1区| 国产一区再线| 一个人看的www久久| 欧美四级在线观看| 国产精品久久777777毛茸茸| 欧美日韩午夜在线| 欧美顶级少妇做爰| 亚洲午夜国产成人av电影男同| 国产精品毛片高清在线完整版| 香蕉久久一区二区不卡无毒影院| 国产精品国产精品| 久久精品人人做人人爽电影蜜月| 国内精品久久久久影院 日本资源| 欧美激情久久久久| 亚洲国产高潮在线观看| 蜜臀久久99精品久久久久久9| 久热精品视频在线免费观看| 国产美女扒开尿口久久久| 一区二区欧美在线| 亚洲视频 欧洲视频| 在线观看日韩国产| 在线精品视频免费观看| 国产精品免费网站在线观看| 欧美精品一区二区视频| 女仆av观看一区| 欧美天堂亚洲电影院在线观看| 欧美激情日韩| 欧美涩涩网站| 日韩网站在线| 99综合精品| 久久一区亚洲| 中国亚洲黄色| 国产亚洲欧美另类中文| 欧美性做爰猛烈叫床潮| 国产精品久久国产愉拍| 性亚洲最疯狂xxxx高清| 激情欧美一区二区三区| 可以免费看不卡的av网站| 久久精品亚洲精品| 亚洲福利视频二区| 亚洲精品激情| 一区二区三区欧美在线观看| 亚洲三级影院| 国产欧美精品在线播放| 国产日韩欧美制服另类| 午夜精品久久久久久久久久久久| 亚洲福利视频三区| 欧美激情精品久久久久久免费印度| 午夜精品久久久99热福利| 亚洲国产精品第一区二区| 国产综合在线视频| 蜜桃精品一区二区三区| 99re6热在线精品视频播放速度| 欧美日韩午夜剧场| 久久久精品国产免费观看同学| 欧美成人亚洲成人日韩成人| 亚洲欧美日韩在线| 国产亚洲精品成人av久久ww| 亚洲精品一二三| 亚洲午夜精品国产| 欧美一区二区三区四区高清| 在线观看欧美日韩| 欧美成人综合| 噜噜噜噜噜久久久久久91| 性欧美暴力猛交另类hd| 久久久久国产精品一区三寸| 噜噜噜久久亚洲精品国产品小说| 欧美一级久久久久久久大片| 欧美激情久久久| 亚洲精选视频免费看| 欧美激情一区二区三区成人| 亚洲精品一区在线| 亚洲自拍都市欧美小说| 老司机免费视频一区二区三区| 在线观看日产精品| 亚洲综合激情| 午夜亚洲视频| 国产精品免费看久久久香蕉| 欧美高清视频在线播放| 1024精品一区二区三区| 国产欧美三级| 欧美一区1区三区3区公司| 国模私拍视频一区| 国产精品爽爽爽| 亚洲国产精品久久久久婷婷老年| 国产午夜亚洲精品羞羞网站| 国产精品久久久久9999| 尤物视频一区二区| 亚洲成人在线免费| 亚洲欧洲一区二区三区久久| 欧美破处大片在线视频| 亚洲一区不卡| 亚洲欧美激情视频| 亚洲丶国产丶欧美一区二区三区| 欧美精品二区三区四区免费看视频| 国产一区二区三区日韩欧美| 亚洲国产日韩一级| 黑人巨大精品欧美一区二区小视频| 亚洲小说欧美另类婷婷| 中文久久精品| 国产在线视频欧美| 在线亚洲免费| 亚洲——在线| 亚洲韩国一区二区三区| 日韩视频精品| 伊人天天综合| 亚洲精品色婷婷福利天堂| 亚洲毛片av在线| 久久久久这里只有精品| 亚洲一本大道在线| 亚洲人www| 香蕉精品999视频一区二区| 欧美日韩国产免费| 欧美四级剧情无删版影片| 亚洲激情电影中文字幕| 欧美日韩成人综合天天影院| 国际精品欧美精品| 国产老肥熟一区二区三区| 亚洲视频成人| 国产精品日韩在线观看| 欧美日韩精品欧美日韩精品| 久久精品国产2020观看福利| 一区二区三区在线观看欧美| 亚洲午夜激情网站| 欧美一区二区观看视频| 欧美在线高清| 尤物九九久久国产精品的特点| 有坂深雪在线一区| 亚洲一区免费观看| 免费在线观看成人av| 欧美一区二区免费观在线| 国产精品一区二区欧美| 国产综合香蕉五月婷在线| 欧美精品免费看| 亚洲区在线播放| 樱桃成人精品视频在线播放| 久久久亚洲国产天美传媒修理工| 一本色道久久精品| 国产精品高潮久久| 国产精品人人爽人人做我的可爱| 欧美国产在线电影| 在线视频欧美精品| 久久综合中文色婷婷| 亚洲精品久久久久| 永久免费精品影视网站| 影音先锋国产精品| 国产揄拍国内精品对白| 新片速递亚洲合集欧美合集| 欧美日韩网址| 国产精品综合视频| 国内欧美视频一区二区| 在线精品视频免费观看| 在线看无码的免费网站| 国产精品一区免费视频| 麻豆精品一区二区综合av| 中文高清一区| 免费在线欧美黄色| 久久精品人人做人人爽电影蜜月| 亚洲一区二区免费| 亚欧美中日韩视频| 国产精品亚发布| 一本色道久久精品| 久久一区二区三区av| 久久香蕉国产线看观看av| 最新国产拍偷乱拍精品| 欧美中文字幕在线视频| 在线日韩中文| 亚洲女同精品视频| 久久久久中文| 精品不卡一区二区三区| 国产精品欧美经典| 久久永久免费| 国产一区二区中文字幕免费看| 午夜精品成人在线视频| 一区二区电影免费观看| 国产一区二区三区在线观看网站| 国产精品一区二区女厕厕| 一本色道精品久久一区二区三区| 一区二区三区在线观看欧美| 在线看日韩av| 久久精品国产99国产精品澳门| 欧美一区三区三区高中清蜜桃| 欧美日韩午夜剧场| 日韩视频一区二区在线观看| 欧美一区二区三区在线观看视频|