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

LM3S9B96的μDMA高速網絡驅動程序設計

2013-09-25 03:05:22邵富杰張國利徐云寬
單片機與嵌入式系統應用 2013年12期

邵富杰,張國利,徐云寬

(北京跟蹤與通信技術研究所,北京100094)

引 言

LM3S9B96是德州儀器針對工業應用設計的Cortex-M3核的微控制器,應用領域包括遠程監控、電子販售機、測試和測量設備、網絡設備和交換機、工廠自動化以及火警安防等。LM3S9B96的主頻最高為80MHz,性能可達100DMIPS,其以太網控制器集成了媒體訪問控制器和物理層接口,以太網控制器遵循IEEE 802.3規范,完全支持10BASE-T和100BASE-TX標準[1]。

德州儀器為微控制器LM3S9B96提供了輕量級TCP/IP協議lwIP下的網絡驅動程序,該驅動程序使用數據拷貝方式實現網絡層與發送FIFO(TX FIFO)和接收FIFO(RX FIFO)之間的數據交換,效率低,無法滿足高速網絡通信的要求。文中詳細描述了實時操作系統μC/OS-II環境下,基于微型直接存儲器訪問(Micro Direct Memory Access,μDMA)傳輸的LM3S9B96網絡驅動程序的設計,以提高網絡層與底層FIFO之間數據交換的效率,實現高速網絡通信。

1 LM3S9B96的以太網控制器

LM3S9B96的以太網控制器包含媒體訪問控制器(Media Access Controller,MAC)層和網絡物理層(Network Physical,PHY)2個部分,如圖1所示,以太網控制器內部結構如圖2所示。

圖1 LM3S9B96的以太網控制器

圖2 LM3S9B96的以太網控制器內部結構

LM3S9B96的以太網控制器包含了網絡物理層的自動交叉校驗MDIX、自動協商、時鐘參考、MAC LED控制、媒體獨立接口(Media Independent Interface,MII)寄存器組、發送編碼、脈沖整形、時鐘恢復、接收解碼、載波感應和沖突檢測等單元,用于實現10BASE-T/100BASE-TX的自動協商、MDI與MDIX校驗、數據的編碼發送和解碼接收,以及網絡接口指示燈的控制;也包含了MAC層的TX FIFO、RX FIFO、接收控制、發送控制、數據訪問、獨體媒體接口控制、定時器支持、MAC地址寄存器、中斷控制等單元,用于實現MAC地址的設置、物理層MII寄存器組的設置、中斷的產生和控制、網絡層與MAC層FIFO之間數據的傳輸。

2 網絡驅動程序的作用

網絡驅動程序是網絡層與物理層硬件的直接接口,它屏蔽了物理層硬件的細節,利用物理層硬件,為網絡層提供了接收和發送數據的接口,如圖3所示。

圖3 網絡驅動程序的功能

網絡數據發送時,網絡驅動程序從網絡層接收數據包后,檢查數據發送緩沖隊列和TX FIFO是否為空,若均為空,程序會通過TX FIFO發送數據包;否則將數據包放入發送緩沖隊列,等待TX FIFO為空時,網絡中斷觸發數據發送。網絡數據接收時,RX FIFO從物理層接收數據包后,觸發網絡接收中斷,網絡驅動程序從RX FIFO讀取數據包,并交由網絡層處理。

3 基于μDMA的網絡驅動程序的設計

LM3S9B96內置一個直接存儲器訪問(Direct Memory Access,DMA)控制器,稱之為微型DMA(μDMA)控制器。μDMA控制器所提供的工作方式能夠分載處理器參與的數據傳輸任務,從而更加高效地使用內核以及總線帶寬。

LM3S9B96的以太網控制器支持μDMA功能,具有專用的μDMA通道,通過合理的編程配置,通過μDMA控制器,當需要時自動在網絡控制器的TX FIFO、RX FIFO與存儲器之間傳輸數據,使得以太網MAC具有更高的性能,并大大減輕LM3S9B96內核的數據傳輸負擔。

LM3S9B96的μDMA網絡驅動程序主要包含4個單元:初始化程序、數據包發送程序、數據包接收程序和中斷處理程序。

3.1 初始化程序

網絡驅動初始化程序主要用于初始化網絡接口、設置μDMA參數和網絡中斷[2],具體工作如下:

①初始化網絡接口結構體的各個參數,如網絡接口名稱、MAC地址、接口層發送函數地址等。

②設置MAC地址及其長度、最大傳輸單元大小、網絡接口時鐘。

③配置以太網控制器操作參數,此處需要使能雙工傳輸、發送填充、自動CRC校驗產生、多播數據接收等。

④使能μDMA單元并設置μDMA控制表基地址。

⑤禁止以太網發送通道μDMA,并設置該通道μDMA控制參數——傳輸大小32位,源地址以32位大小自增,目標地址不增加,仲裁大小8位。

⑥禁止以太網接收通道μDMA,并設置該通道μDMA控制參數——傳輸大小32位,源地址不增加,目標地址以32位大小自增,仲裁大小8位。

⑦設置網絡中斷類型,并使能網絡中斷等功能,為了簡化中斷處理,此處僅使能網絡接收和發送中斷,禁止發送錯誤、接收錯誤、接收溢出等其他中斷類型[3]。

3.2 數據包發送程序

網絡數據的發送,是在中斷處理程序的協助下由網絡數據包發送程序實現。

數據包發送程序主要包含2個函數:網絡數據輸出函數stellarisif_output()和網絡數據傳輸函數stellarisif_transmit(),函數流程如圖4(a)、(b)所示。

stellarisif_output()函數并不進行實際的數據發送,它只是將數據包放入緩沖隊列,或者是調用網絡數據傳輸函數進行數據發送。如圖4(a)中標注,該函數需要注意:

①一個新的網絡數據包,必須檢查當前發送緩沖區是否為空。如果發送緩沖區不為空,即使TX FIFO為空,也要把待發送的網絡數據包放入發送緩沖區,這樣才能保證網絡數據先進先出的發送次序。

②表明實際進行網絡數據發送的是stellarisif_transmit()函數。

stellarisif_transmit()函數進行實際的網絡數據發送,它以DMA方式復制網絡數據到TX FIFO,標識中斷處理程序設置網絡發送標志,啟動網絡數據的物理層傳輸;或以內核執行拷貝方式復制網絡數據到TX FIFO,并置位網絡發送標志,啟動網絡數據的物理層傳輸。如圖4(b)中標注,需要注意:

③由于以太網發送通道μDMA的傳輸大小被初始化32位(即傳輸數據寬度為4個字節),而μDMA傳輸要求源地址、目的地址必須按照傳輸數據寬度對齊。因此進行μDMA傳輸前,應首先判斷數據的源地址(即被傳輸的凈荷數據地址)是否為4字節邊界對齊(以太網發送通道μDMA的目的地址為TX FIFO的地址,即0x40048010,已為4字節對齊,無需檢查)。若為4字節地址對齊,才能進行μDMA數據傳輸,否則不能進行μDMA傳輸,只能進行由LM3S9B96內核執行的數據拷貝。需要說明的是,通過合理分配LWIP協議棧的堆內存、緩沖及待發送數據的地址,是可以保證凈荷數據地址為4字節對齊的。

④設置μDMA通道為以太網發送通道,自動傳輸模式,源地址為凈荷數據地址,目的地址為TX FIFO地址,傳輸長度(以傳輸數據寬度為單位,即以32位或4字節為單位,實際傳輸的字節總長度=傳輸長度х傳輸數據寬度)。

3.3 數據包接收程序

網絡數據的接收,是在中斷處理程序的協助下,由網絡數據包接收程序(主要由網絡數據接收函數stellarisif_receive()構成)實現。

stellarisif_receive()函數負責以μDMA或內核執行拷貝方式,從RX FIFO讀取網絡數據幀到接收緩沖區pbuf。其流程如圖4(c)所示,該函數實現需要以下說明:

⑤即使分配接收緩沖區pbuf失敗,也需要從RX FIFO中清空該數據幀,以免影響后續的數據幀接收。

⑥進行以太網接收通道的μDMA傳輸前,也需要檢查接收緩沖區pbuf的地址是否為4字節邊界對齊。在LWIP協議棧的堆內存、緩沖分配合理時,每次都以4字節整數倍的長度申請分配接收緩沖區pbuf,是能保證pbuf地址為4字節邊界對齊的,從而實現每次網絡數據接收都通過μDMA實現RX FIFO至pbuf數據拷貝,無需LM3S9B96內核參與。

⑦設置μDMA通道為以太網接收通道,自動傳輸模式,源地址為TX FIFO地址,目的地址為接收緩沖區pbuf地址,傳輸長度(以傳輸數據寬度為單位,即以32位或4字節為單位,實際傳輸的字節總長度=傳輸長度×傳輸數據寬度)。

⑧需要等待中斷處理程序發送的網絡接收μDMA傳輸結束信號量,成功獲取該信號量,才能標志此次μDMA傳輸的結束。

3.4 中斷處理程序

中斷處理程序為lwIP協議棧處理以太網中斷,從底層接收網絡數據包,提交給上一層來處理,檢查網絡發送緩沖隊列、通過以太網MAC層進行數據包發送。

中斷處理程序主要包括2個部分:以太網中斷服務程序lwIPEthernetIntHandler()和以太網中斷任務lwIPInterruptTask(),流程如圖5所示。

圖4 網絡發送和接收函數流程圖

圖5 以太網中斷服務程序和以太網中斷任務流程圖

LM3S9B96的以太網中斷產生時,內核自動跳轉至中斷向量表的57號處(LM3S9B96的以太網中斷向量號),該處定義了“DCD lwIPEthernetIntHandler”,進而轉入中斷服務程序lwIPEthernetIntHandler()執行。如圖5(a)中標注,此程序根據3種不同類型的中斷源進行相應的處理:

①處理網絡接收和發送中斷。網絡接收、發送中斷產生后,程序釋放一個網絡中斷服務信號量,以太網中斷任務獲取該信號量后,調用stellarisif_receive()函數讀取數據幀,或調用stellarisif_transmit()函數發送數據幀。

②處理網絡接收通道的μDMA中斷。該中斷產生,表明從RX FIFO至接收緩沖區pbuf的μDMA傳輸結束,此時應釋放傳輸結束信號量,以解除stellarisif_receive()函數的傳輸結束等待。

③處理網絡發送通道的μDMA中斷。該中斷產生,表明從發送緩沖區pbuf至TX FIFO的μDMA傳輸結束,此時應置位網絡發送請求標志,啟動網絡數據的物理層傳輸。

lwIPInterruptTask()函數負責從RX FIFO讀取網絡數據幀,并提交上層協議處理;或者從發送緩沖隊列讀取并調用stellarisif_transmit()函數發送網絡數據幀,其流程如圖5(b)所示,該函數實現也需要注意:

④以太網中斷任務以阻塞模式等待網絡中斷服務信號量,直至網絡接收或發送中斷產生時,lwIPEthernetIntHandler()釋放該信號量,任務才解除阻塞,開始執行網絡數據幀的接收、發送操作。

⑤無論以太網中斷源為接收中斷,還是發送中斷,以太網中斷任務總是首先調用stellarisif_receive()函數讀取網絡數據幀(若成功讀取數據幀,則提交上層協議處理),然后檢查TX FIFO和網絡發送緩沖隊列,滿足發送條件時,進行數據幀發送操作。此種處理方式,貌似沒有對網絡發送與接收中斷進行有效地區分處理,但事實上,在同時處理大量網絡數據的接收、發送時,具有極高的執行效率。

結 語

本文針對德州儀器的微控制器LM3S9B96,提出了一種面向高速網絡的、基于μDMA的網絡驅動程序設計方案,該設計方案充分利用了LM3S9B96的μDMA、網絡中斷等資源,大大提高了TCP/IP協議棧的網絡層與底層FIFO之間數據交換的效率。實驗測試表明,該網絡驅動設計方案較之內核拷貝方式實現的網絡驅動程序,通信效率提高了十余倍。

由于大多數德州儀器Cortex-M3核的微控制器的以太網控制器結構都非常相似,因此文中針對微控制器LM3S9B96提出的網絡驅動程序設計方案,可適用于大多數德州儀器Cortex-M3核的微控制器的網絡驅動程序設計。

[1] Texas Instruments.Stellaris LM3S9B96微控制器數據手冊,2012:855-857.

[2] 楊進,邱兆坤.SOPC中自定義FIFO接口與DMA數據傳輸[J] .單片機與嵌入式系統應用,2008(8):78.

[3] Texas Instruments.LM3S9B96ROM User’s guide,2010:279-289.

主站蜘蛛池模板: 亚洲日本在线免费观看| 亚洲日韩欧美在线观看| 97一区二区在线播放| 国产尤物jk自慰制服喷水| 精品亚洲欧美中文字幕在线看| 六月婷婷综合| 国产精品无码作爱| 在线免费亚洲无码视频| 在线观看欧美精品二区| 欧美乱妇高清无乱码免费| 91日本在线观看亚洲精品| 91年精品国产福利线观看久久| 久久精品国产电影| 国产青榴视频| 国产性生大片免费观看性欧美| 日日噜噜夜夜狠狠视频| 国产99久久亚洲综合精品西瓜tv| 特级毛片免费视频| 国产农村精品一级毛片视频| 久久精品免费国产大片| 91精品情国产情侣高潮对白蜜| 亚洲自拍另类| 国产v精品成人免费视频71pao | 亚洲精品国产综合99| 香蕉久久国产精品免| 国产高清自拍视频| 国产精品久久久精品三级| 国产无码精品在线| 久久成人免费| 日韩高清欧美| 永久天堂网Av| 欧美不卡二区| 啪啪啪亚洲无码| 在线精品亚洲一区二区古装| 中文字幕亚洲无线码一区女同| 欧美三级视频网站| 亚洲精品日产AⅤ| 99久久精品国产综合婷婷| 九色综合伊人久久富二代| 欧美成人午夜视频免看| 国产精品三级专区| 四虎精品黑人视频| 婷婷六月综合| 91福利在线观看视频| 成年人国产网站| 午夜日本永久乱码免费播放片| 欧美精品高清| 波多野结衣无码AV在线| 欧美综合激情| 亚洲美女操| 亚洲—日韩aV在线| 在线观看国产黄色| 国产精品福利导航| 日韩成人在线视频| 狠狠ⅴ日韩v欧美v天堂| 国产女主播一区| 亚洲人成电影在线播放| 亚洲国产中文精品va在线播放 | 亚洲一区二区精品无码久久久| 91久久夜色精品国产网站| 玖玖免费视频在线观看| 91丝袜乱伦| 玖玖免费视频在线观看| a级免费视频| 亚洲无限乱码一二三四区| 在线观看热码亚洲av每日更新| 欧美综合一区二区三区| 特级欧美视频aaaaaa| 国产丝袜精品| 久久久精品久久久久三级| 国产视频a| 国产免费网址| 中日韩一区二区三区中文免费视频| 亚洲国产欧美目韩成人综合| 国产尤物jk自慰制服喷水| 丁香综合在线| 亚洲精品成人7777在线观看| 日韩中文欧美| 91人妻在线视频| 亚洲成人黄色在线观看| 亚洲精品天堂在线观看| 91亚洲视频下载|