• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      LM3S9B96的μDMA高速網(wǎng)絡驅(qū)動程序設計

      2013-09-25 03:05:22邵富杰張國利徐云寬
      關鍵詞:驅(qū)動程序中斷以太網(wǎng)

      邵富杰,張國利,徐云寬

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

      引 言

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

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

      1 LM3S9B96的以太網(wǎng)控制器

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

      圖1 LM3S9B96的以太網(wǎng)控制器

      圖2 LM3S9B96的以太網(wǎng)控制器內(nèi)部結(jié)構

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

      2 網(wǎng)絡驅(qū)動程序的作用

      網(wǎng)絡驅(qū)動程序是網(wǎng)絡層與物理層硬件的直接接口,它屏蔽了物理層硬件的細節(jié),利用物理層硬件,為網(wǎng)絡層提供了接收和發(fā)送數(shù)據(jù)的接口,如圖3所示。

      圖3 網(wǎng)絡驅(qū)動程序的功能

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

      3 基于μDMA的網(wǎng)絡驅(qū)動程序的設計

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

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

      LM3S9B96的μDMA網(wǎng)絡驅(qū)動程序主要包含4個單元:初始化程序、數(shù)據(jù)包發(fā)送程序、數(shù)據(jù)包接收程序和中斷處理程序。

      3.1 初始化程序

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

      ①初始化網(wǎng)絡接口結(jié)構體的各個參數(shù),如網(wǎng)絡接口名稱、MAC地址、接口層發(fā)送函數(shù)地址等。

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

      ③配置以太網(wǎng)控制器操作參數(shù),此處需要使能雙工傳輸、發(fā)送填充、自動CRC校驗產(chǎn)生、多播數(shù)據(jù)接收等。

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

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

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

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

      3.2 數(shù)據(jù)包發(fā)送程序

      網(wǎng)絡數(shù)據(jù)的發(fā)送,是在中斷處理程序的協(xié)助下由網(wǎng)絡數(shù)據(jù)包發(fā)送程序?qū)崿F(xiàn)。

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

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

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

      ②表明實際進行網(wǎng)絡數(shù)據(jù)發(fā)送的是stellarisif_transmit()函數(shù)。

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

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

      ④設置μDMA通道為以太網(wǎng)發(fā)送通道,自動傳輸模式,源地址為凈荷數(shù)據(jù)地址,目的地址為TX FIFO地址,傳輸長度(以傳輸數(shù)據(jù)寬度為單位,即以32位或4字節(jié)為單位,實際傳輸?shù)淖止?jié)總長度=傳輸長度х傳輸數(shù)據(jù)寬度)。

      3.3 數(shù)據(jù)包接收程序

      網(wǎng)絡數(shù)據(jù)的接收,是在中斷處理程序的協(xié)助下,由網(wǎng)絡數(shù)據(jù)包接收程序(主要由網(wǎng)絡數(shù)據(jù)接收函數(shù)stellarisif_receive()構成)實現(xiàn)。

      stellarisif_receive()函數(shù)負責以μDMA或內(nèi)核執(zhí)行拷貝方式,從RX FIFO讀取網(wǎng)絡數(shù)據(jù)幀到接收緩沖區(qū)pbuf。其流程如圖4(c)所示,該函數(shù)實現(xiàn)需要以下說明:

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

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

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

      ⑧需要等待中斷處理程序發(fā)送的網(wǎng)絡接收μDMA傳輸結(jié)束信號量,成功獲取該信號量,才能標志此次μDMA傳輸?shù)慕Y(jié)束。

      3.4 中斷處理程序

      中斷處理程序為lwIP協(xié)議棧處理以太網(wǎng)中斷,從底層接收網(wǎng)絡數(shù)據(jù)包,提交給上一層來處理,檢查網(wǎng)絡發(fā)送緩沖隊列、通過以太網(wǎng)MAC層進行數(shù)據(jù)包發(fā)送。

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

      圖4 網(wǎng)絡發(fā)送和接收函數(shù)流程圖

      圖5 以太網(wǎng)中斷服務程序和以太網(wǎng)中斷任務流程圖

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

      ①處理網(wǎng)絡接收和發(fā)送中斷。網(wǎng)絡接收、發(fā)送中斷產(chǎn)生后,程序釋放一個網(wǎng)絡中斷服務信號量,以太網(wǎng)中斷任務獲取該信號量后,調(diào)用stellarisif_receive()函數(shù)讀取數(shù)據(jù)幀,或調(diào)用stellarisif_transmit()函數(shù)發(fā)送數(shù)據(jù)幀。

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

      ③處理網(wǎng)絡發(fā)送通道的μDMA中斷。該中斷產(chǎn)生,表明從發(fā)送緩沖區(qū)pbuf至TX FIFO的μDMA傳輸結(jié)束,此時應置位網(wǎng)絡發(fā)送請求標志,啟動網(wǎng)絡數(shù)據(jù)的物理層傳輸。

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

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

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

      結(jié) 語

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

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

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

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

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

      猜你喜歡
      驅(qū)動程序中斷以太網(wǎng)
      基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設計與實現(xiàn)
      跟蹤導練(二)(5)
      千里移防,衛(wèi)勤保障不中斷
      解放軍健康(2017年5期)2017-08-01 06:27:44
      談實時以太網(wǎng)EtherCAT技術在變電站自動化中的應用
      電子制作(2017年24期)2017-02-02 07:14:44
      一種90W高功率以太網(wǎng)供電系統(tǒng)的設計
      電源技術(2015年7期)2015-08-22 08:48:48
      淺談EPON與工業(yè)以太網(wǎng)在貴遵高速公路中的應用
      AT89C51與中斷有關的寄存器功能表解
      FPGA內(nèi)嵌PowerPC的中斷響應分析
      微處理機(2012年4期)2012-06-13 11:32:24
      驅(qū)動程序更新與推薦
      驅(qū)動程序更新與推薦
      临邑县| 晋中市| 庆城县| 淮阳县| 南和县| 柳江县| 宽城| 咸阳市| 华亭县| 图木舒克市| 广饶县| 灌南县| 濮阳市| 吴川市| 邻水| 佛山市| 鹤壁市| 民县| 福安市| 大田县| 云梦县| 新源县| 酉阳| 磐石市| 江北区| 长沙市| 安龙县| 孟村| 苏尼特左旗| 深州市| 天水市| 措勤县| 瑞金市| 车险| 武冈市| 元江| 万宁市| 宁武县| 广元市| 太仆寺旗| 镇康县|