a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

嵌入式Internet以太網接口的設計與實現

發布時間:  2012/9/5 18:28:28

在電子設備日趨網絡的背景下,目前廣泛使用的以太網及TCP/IP協議已經成為事實上最常用的網絡標準之一,它的高速、可靠、分層及可擴充性使得它在各個領域的應用越來越靈活,很多情況下運用以太網和TCP/IP能夠簡化結構和降低成本。目前關于嵌入式以太網的設計方案不是很多,其中大多是基于單片機的,缺點是速度慢、成本太高。DSP作為一種特殊的嵌入式微處理器系統,具有嵌入的協處理器和用于快速數據處理的并行數據通道,在嵌入式網絡設備中引入DSP技術可以使嵌入式以太網變得更快、更便宜、更容易進行功能擴充。本文介紹了基于TMS320LF2407型的嵌入式系統與LAN91C111型自適應10Mb/s/100Mb/s嵌入式以太網控制芯片的接口電路和實現方法。

1 LAN91C111嵌入式以太網控制器芯片

LAN91C111是SMSC公司推出的為嵌入式應用系統設計的第三代快速以太網控制器。在LAN91C111芯片上集成了CSMA/CD協議的媒體層(MAC)和物理層(PHY),其系統結構圖如圖1所示。該以太網控制器的主要功能特性如下。

(1)自適應地選擇傳輸速率,支持10M/100Mbps。

(2)8KB的內部存儲器用于接收和發送的緩存。

(3)支持突發數據傳輸。

(4)提前發送和接收功能。

(5)支持總線8位、16位和32位的CPU訪問。

該以太網控制器遵循的標準與協議為IEEE頒布的802.3以太網傳輸協議。8~32位數據總線接口單元由控制總線、地址總線和數據總線與外部的CPU控制芯片相連。該單元還集成了E2PROM接口,所有內部寄存器的初始值可先放在E2PROM中,自舉時通過E2PROM接口輸入到芯片中,實現自動初始化。總線仲裁器(Arbiter)監視以太網總線的數據交流情況,一旦發生阻塞,一方面通過總線接口單元與外部CPU聯系,另一方面控制內存控制單元(MMU),實現總線數據協調。內存控制單元控制8KB動態SRAM的存儲情況,實現與DMA控制器之間的數據聯絡。DMA控制器與總線控制器一起控制數據在DMA與以太網協議處理器(EPH)之間的交換。由以太網協議處理器輸出的數據最終經過10M/100M的物理層直接到達以太網總線。

2 硬件電路組成

出于性價比的考慮,采用了DSP控制器作為主CPU。TMS320LF2407是TI公司發布的240X系列中功能最強的一種控制器,有很大的存儲空間(高達32K字的Flash程序存儲器,可擴展外部64K字存儲器和64K字I/O尋址空間),非常適合于處理復雜的TCP/IP協議。

由于LAN91C111是為嵌入式系統設計,其外圍電路相對比較簡單,其硬件接口框圖如圖2所示。LANC91C111內部寄存器可通過地址線A0~A15來訪問。地址總線A1~A15與DSP的A1~A15相連,A0沒有被懸空;數據總線D0~D15與DSP的D0~D15相連,可以傳輸16位數據。D16~D32懸空(因為LF2407是16位數據總線);LAN91C111的片選信號AEN由DSP的外部I/O接口選通信號IS提供。二元件的讀電平RD和寫電平WR分別相連。LAN91C111端的中斷輸出信號INTR0送入DSP的外部中斷腳XINT1觸發中斷。TG110-S050N2是針對10M/100M以太網的變壓濾波器。LAN91C111模塊的Protel原理圖。

3 軟件設計

編寫控制以太網接口程序的步驟如下

3.1μC/OSⅡ實時操作系統的移植

μC/OSⅡ是一種開放源碼的實時嵌入式操作系統,具有很好的實時性。它是可移植、可裁減、可固化的占先式多任務操作系統,其大部分源碼由ANSIC語言編寫。

移植工作包括以下幾個內容:

(1)用匯編語言改寫OS_CPU_A.ASM。

(2)用C語言改寫OS_CPU_C。C。

(3)編寫OS_CPU.H。

(4)適當處理OSMapTbl[]和OSUnMapTbl[]。

①OS_CPU_A.ASM文件包括4個子程序:OSStart-HighRdy、OSCtxsw、OSIntCtxSw和OSTickISR。

1)OSStartHighRdy()函數

當程序執行內核的OSStart函數時,表示多任務系統開始啟動,OSStart函數將調用OSStartHighRdy函數從最高優先級任務的TCB塊中獲得該任務的堆棧指針,通過該指針,依次從該任務的任務堆棧中恢復CPU的現場。由于任務在堆棧初始化時,已經設定了彈出到程序指針寄存器PC的是該任務函數的入口地址,因此,OSStartHighRdy函數只需依次彈出任務棧內容到處理起寄存器,該任務便將得以運行。

2)OSCtxSw()函數

該函數是任務級的上下文切換函數,當任務被阻塞而主動請求CPU開始任務調度時執行,其過程是將當前任務的的CPU現場保存到該任務堆棧中去,然后從OSTCBHighRdy中獲得更高優先級任務的堆棧指針,再從該指針指向的堆棧中恢復此任務的CPU現場,使之繼續執行,從而完成一次任務級別的切換。表2為OSCtxSw函數的偽代碼。

voidOSCtxSw(void){

保存處理器寄存器;/*將欲掛起的任務的CPU寄存器壓入當前堆棧*/

OSTCBCur->OSTCBStkPtr=sp;/*OSTCBCur目前指向的是被打斷的任務TCB,此操作

將該任務的棧頂指針保存到其OSTCBStkPtr中去,便于下次恢復時從這里獲取棧頂指針*/

OSTCBCur=OSTCBHighRdy;/*OSTCBHighRdy指向的是就緒的高優先級任務的TCB,

將其裝載到OSTCBCur中來*/

SP=OSTCBHighRdy->OSTCBStkPtr;/*取得就緒的高優先級任務的棧頂指針*/

恢復該任務的現場();/*于是便可通過剛取得的棧頂指針恢復該任務*/

執行中斷返回指令;/*若OSCtxSw含有軟中斷指令則需中斷返回,本移植不使用軟中斷*/

}

表2OSCtxSw函數的偽代碼

3)OSIntCtxSw()函數

該函數用于中斷級的上下文切換。由于CPU響應時鐘節拍中斷后,處理器從svc進入了irq模式,并進入時鐘節拍中斷服務函數OSTickISR,OSTickISR函數發現若有高優先級任務需要運行,則系統不返回中斷前的任務,而直接調度就緒的高優先級任務使之盡快得到執行,以保證實時性能。但是由于OSTickISR函數一開始已經保存過任務中斷前的CPU現場,因此OSIntCtxSW()不需要再進行類似的操作。當OSTickISR調用OSIntExit函數找出需要運行的更高優先級任務后,OSIntExit會將該任務的TCB指針放在OSTCBHighRdy中,然后OSIntExit在最后調用OSIntCtxSW函數來從OSTCBHighRdy中獲取堆棧指針然后恢復該高優先級任務的現場,使得其繼續執行,并不再返回時鐘節拍中斷服務程序。顯然,OSIntCtxSW函數的過程和OSCtxSW函數的后半部分操作相同,因此,OSCtxSW可以借用OSIntCtxSW的代碼。

4)OSTickISR()函數

在CPU響應時鐘節拍中斷后,程序指針PC發生跳轉后進入該函數,由于OSTickISR調用OSTimeTick函數使得所有的延時節拍不為0的任務延時節拍數減1,并調用OSIntExit函數來找出就緒的高優先級任務,若需要切換,則最后由OSIntCtxSw來完成新任務的調度,否則仍然返回到被時鐘節拍中斷的任務。

OS_CPU_C.C文件:本文件僅包括一個OSTaskStkInit()子程序。該函數模仿TI公司的I$SAVE庫函數對任務堆棧進行初始化,被函數OSTaskCreate()和OSTaskCreateExt()所調用并返回任務堆棧初始化后的指針值。注意:2407A的堆棧與一般MCU不同,芯片本身的堆棧(以下簡稱US)只有8級,無法作為系統堆棧使用,所以C編譯器將它內部的2個寄存器AR0和AR1保留。AR1作為堆棧指針SP,AR0用做堆棧中臨時變量指針FP(在匯編程序中不要使用這2個寄存器,如果必須使用,要關中斷,并注意保存和恢復)。編譯器將函數和中斷壓進US,并將其返回地址彈出放在SP(AR1)指向的堆棧中,保留當前環境,不同的是函數只保留程序要使用的寄存器,中斷要調用I$SAVE保存所有寄存器,返回時要跳轉到(不是調用)I$REST(這2個函數可以在RTS.SRC中看到源代碼)恢復寄存器。這2個函數就像8086中的中斷進入和指令IRET,是移植的基礎。

OS_CPU.H文件:內容可根據μC/OS-Ⅱ中80x86的內容進行修改。

適當處理OSMapTbl[]和OSUnMapTbl[]:移植時還需要對μC/OSⅡ的OSMapTbl[]和OSUnMapTbl[]2個表進行適當處理,否則會出現尋址錯誤而使μC/OSⅡ無法正常運行,這是移植能否成功的重要因素之一。由于TMS320LF2407的存儲器采用的是哈佛結構,Flash存儲器(或外擴的ROM)位于程序區,因此可按如下方法處理:將μC/OSⅡ中OSMapTbl[]和OSUnMapTbl[]的數據類型從“INT8Uconst”改為“INT8U”,并在鏈接器命令文件(.CMD)中將“.cinit”塊分配到Flash存儲器(或外擴的ROM)中,鏈接選項用“.C”(ROM初始化)。這樣,在程序運行時自動對數據區的RAM進行初始化,即運行時自動將“.cinit”塊中的數據復制到數據區的RAM中。

按需要配置OS_FG.H,修改CPU中斷向量表和外設向量表后,根據實際需要對其他文檔中的內容進行相應設置即可。至此,μC/OSⅡ在TMS320LF2407上的移植就完成了。

3.2LAN91C111的編程

對LAN91C111主要包括初始化、發送數據包和接收數據包三部分。

3.2.1初始化

上電后,LAN91C111內部的寄存器的值設置為缺省值,CPU根據需要設置它里面的Configuration、Base和IndividualAddress寄存器,以保證它正常工作。

3.2.2發送數據包流程

(1)DSP向控制器發送ALLOCATEMEMORY命令(設置MMUCOM寄存器,通常設置為0x0020)。MMU負責在控制器內部的packetbuffer中為待發送的包分配存儲空間。

(2)DSP查詢中斷狀態寄存器中的ALLOCINT位,直到該位被置為1,也可以設置中斷掩碼中的ALLOCINT位,然后等待硬件中斷,這時MMU已經分配好存儲空間。而且TXpacketnumber放在AllocationResult寄存器中。

(3)將AllocationResult寄存器中的packetNumber拷貝到PacketNUMBER寄存器中,設置Pointer寄存器(設置為TX、WR、AUTOINC,即0x4000)。然后將包的數據從upperlayer發送隊列傳送到控制器的數據寄存器。要求依次寫人StatusWord、ByteCount、destinationaddress、sourceaddress、packetsize、packetdata和controlword。

(4)DSP向控制器發送“ENQUEUEPACKETNUMBERTOTXFIFO”命令(設置MMUCOM寄存器,通常設置為Ox00C0),該命令將PacketNumber寄存器中的packetnumber拷貝到TXFIFO,說明發送的包已經放入隊列中。同時設置傳輸控制寄存器中的TXENA位,啟動transmitter。到目前為止,DSP的設置工作已完成,它可以空閑,直到接收到一個控制器產生的發送中斷。

(5)當控制器傳送完包以后,內存中的第1個字(16位)被CSMA/CD寫入相應的狀態字,然后將TXFIFO中的packetnumber移到TXcompletionFIFO,當TXcompletionFIFO不為空時產生中斷。

(6)DSP接收到中斷后,開始執行中斷處理程序,它讀入中斷狀態寄存器,如果產生發送中斷,則從FIFO端口寄存器讀入發送包的PacketNumber,并將它寫入Packet Number寄存器。然后從內存中讀入狀態字(包括設置Pointer寄存器為TX、RD、AUTOINC,即0x6000,然后從數據寄存器中讀入包的狀態字),它是EPH寄存器的鏡像,根據狀態字判斷包發送是否成功。如果成功則DSP向控制器發布RELEASE命令(設置MMUCOM寄存器,設置為Ox00A0),控制器將釋放發送包所使用的存儲空間,同時設置TXINTAcknowledge寄存器,它將TXcompletionFIFO中的packetnumber清除。有二種產生發送中斷的方案:①每發送一個包產生一個中斷。②每發送一個序列的包產生一個中斷。通過控制寄存器的AutoRelease位來選擇這二種方案,而且這二種方案所使用的發送中斷位也有所不同。

TXINT:當TXcompletionFIFO不為空時置0;

TXEMPTYINT:當TXFIFO為空時置1;

AUTORELEASE:如果置為1,發送包成功后,packetnumber不寫到TXcompletionFIFO中,而且它所使用的存儲空間被自動釋放。

(7)選擇使用“每發送一個包產生一個中斷”方案:允許TXINT中斷,AUTORELEASE=0,這種方案的流程如上所示。

(8)選擇使用“每發送一個序列的包產生一個中斷”方案:允許TXEMPTYINT和TXINT,AUTORELEASE=1,當發送完FIFO中的最后一個包后,產生TXEMPTYINT中斷。當發生嚴重的發送錯誤時,產生TXINT中斷,同時將發送失敗的包的packetnumber保存到FIFOPorts寄存器,這樣DSP就可以知道發送過程停止了。該方案可以減少DSP的負擔,而且存儲空間的釋放也更迅速。當AUTORELEASE=1時,DSP不能得到成功發送包的packetnumber。

3.2.3接收數據包流程

(1)DSP設置接收控制寄存器中的RXEN位,允許接收包。

(2)含有正確地址的包被接收到,從MMU請求存儲空間,并分派一個packetnumber,內部的DMA邏輯產生連續的地址,并將接收到的字寫到內存中。如果超界,則包被丟棄,存儲空間被釋放。當檢測到包結束時,狀態字被寫到接收包的最前面,bytecount寫到第2個字。如果CRC校驗正確,則packetnumber被寫到RXFIFO。當RXFIFO非空時,產生RCVINT中斷;如果CRC校驗不正確,則存儲空間被釋放,而且不產生中斷。

(3)DSP接收到中斷后開始執行中斷處理程序,它讀入中斷狀態寄存器,如果產生接收中斷(RCVINT位為1),則可以從FIFO端口寄存器得到接收的包的packetnumber,而且可以從數據寄存器將接收包傳送到DSP的內存或外存中。當處理結束時,DSP向處理器發布REMOVEANDRELEASEFROMTOPOFRX命令(即設置寄存器MMUCOM,設置為0x0060),釋放使用的存儲空間和packetnumber。

4結束語

對以太網和快速以太網的自動協商模式使LAN91C111具有很高的性價比,應用領域廣泛。本設計利用LAN91C111和DSP芯片組成嵌入式以太網通信系統,能夠正確地接入快速以太網,具備10M/100Mbps、全雙工/半雙工自適應等多種功能,符合IEEE802.3/802.3u-100Base-TX/lOBase-T規范,實現的嵌入式以太網接口支持RJ45和以太網的連接,可以通過以太網接入Internet,以實現從Internet上監控嵌入式設備。


本文出自:億恩科技【www.ibaoshan.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    色欲久久久天天天综合网精品| AVTT天堂网AV无码| 人妻少妇精品视频一区二区三区| 国产最新AV在线播放不卡| AV网站免费线看精品| 亚洲AV极品无码专区亚洲AV | 亚洲欧美日韩一区二区三区在线| 人妻在夫面前被性爆| 精品久久人人做人人爽综合| 成人无码WWW免费视频| 亚洲婷婷综合色高清在线| 日日摸夜夜添夜夜添无码国产| 久久精品A一国产成人免费网站| 大肉大捧一进一出视频| 伊人久久大香线蕉AV波多野结衣| 透过校服的乳尖 揉捏| 男朋友要再做一次才同意分手| 国产午夜手机精彩视频| 4444亚洲人成无码网在线观看| 性饥渴的少妇AV无码影片| 欧美一区二区在线视频| 精品久久人妻AV中文字幕 | 最新在线精品国产福利| 亚洲A∨无码男人的天堂 | 99RE66热这里只有精品3| 亚洲AV少妇高潮30p| 人人妻人人爽人人澡欧美二区| 九九九影视电影高清全集观看| 隔壁邻居是巨爆乳寡妇| 尤物爽到高潮潮喷视频大全| 无码人妻一区二区三区免费视频 | 日韩爆乳一区二区无码| 久久久久久综合网天天| 国产AⅤ无码旗袍丝袜美腿| 中文字幕无码免费久久| 亚洲AV无码成人精品区在线播放| 日本老熟妇毛茸茸| 看全色黄大色黄大片 视频| 国产精品久久久久久妇女| AV鲁丝一区鲁丝二区鲁丝三区| 亚洲精品无码久久| 孰妇XXXXXX的性生话| 免费一看一级毛片少妇丰满2| 国模无码一区二区三区不卡| 成人乱婬AV日日摸夜夜爽| 在线亚洲专区高清中文字幕| 亚洲AV免费高潮喷水| 日本乱偷人妻中文字幕久久| 久久久WWW免费人成精品| 国产精品VIDEOSSEX久久发布| FREE嫩白18SEX性HD处| 亚洲熟妇AV一区二区三区漫画| 忘忧草在线播放WWW网| 欧美极品少妇XXXXⅩO69| 久久AⅤ无码AV高潮AV喷吹| 国产成人一卡2卡3卡4卡| ASS中国人体欣赏PICS| 亚洲性色AV片在线观看网址| 无码人妻在线视频| 人妻无码一区二区视频| 巨粗进入警花哭喊求饶| 国精产品W灬源码1688伊在| 大肥女BBWBBWHD视频| 中文激情在线一区二区| 亚洲丰满熟妇XXXX在线观看| 太太其实你也很想要的对吧| 欧美日韩不卡合集视频| 国产无遮挡又黄又大又爽 | 精选AV种子无码专区| 国产精品久久一国产精品胖虎| 办公室的秘密2中文字幕| 中文无码一区二区视频在线播放量 | 亚洲综合色婷婷七月丁香| 无码动漫在线观看漫画| 人妻久久久精品99系列A片| 久久午夜无码免费| 国内精品久久久久久99| 丰满少妇高潮在线播放不卡| AV天堂久久天堂AV色综合| 野花日本大全免费观看10中文| 无码人妻一区二区三区免费N鬼沢| 日本成熟人妻HD| 男人的天堂AV网站 | CHINA丰满人妻VIDEOS| 亚洲制服丝袜无码AV在线| 亚洲 日韩 欧美 成人 在线| 色综合久久精品亚洲国产消防| 看全色黄大色黄大片 视频| 国偷自产AV一区二区三区| 国产9在线 | 欧洲| WWW性久久久COM| 中文字幕AV无码一区电影DVD| 亚洲乱亚洲乱妇无码| 无码天堂亚洲国产AV麻豆| 日おめでとうございます| 奶头被客人玩的又红又肿| 久久久国产精品亚洲一区| 国内偷自第一区二区三区| 国产精品美女久久久浪潮AV| 岛国片无删减上线| YY111111少妇影院理论片| 中文字幕人妻互换激情| 亚洲字幕AV一区二区三区四区| 亚洲AV之男人的天堂网站| 无码人妻精品一区二区三区66| 色8久久人人97超碰香蕉987| 欧洲做爰XXXⅩ富婆视频| 男女体裸下00动态视频| 久久午夜夜伦鲁鲁片免费无码影院| 国产在线拍揄自揄拍免费下载| 国产成人一区二区青青草原| 成人污污污WWW网站免费| YY111111少妇影院无码| 337P粉嫩日本欧洲亚洲大胆艺| 一二三四在线观看免费中文吗| 亚洲国产精品一区二区久久HS| 亚洲Ⅴ国产V天堂A无码二区| 无码国产孕妇一区二区免费AV| 少妇饥渴XXHD麻豆XXHD骆| 人善交XUANWEN200| 欧美日韩国产免费一区二区三区 | 乳欲人妻办公室奶水| 欧美整片欧洲熟妇色视频| 免费AV一区二区三区无码| 久久久久免费精品国产| 精品深夜av无码一区二区老年| 国自产精品手机在线观看视频| 国产人成无码视频在线观看| 国产精品久久久久久影视 | 国产乱人伦偷精品视频AAA| 高清VPSWINDOWS另类乱| 刺骨PO不吃肉干嘛| 潮喷失禁大喷水AⅤ无码| NARUTOMANGA无尽纲手| 7777久久亚洲中文字幕蜜桃| 中文在线8资源库| 尤物蜜芽国产成人精品区| 亚洲综合国产精品第一页| 亚洲日韩在线中文字幕综合| 亚洲国产精品无码久久九九大片| 亚洲AV无码成H人在线观看| 小雪被老汉玩遍各种方式| 无码人妻久久一区二区三区| 完全着衣の爆乳お姉さんが| 少妇无码一区二区三区| 日产乱码一二三区别免费一| 人妻无码ΑV中文字幕久久琪琪布| 欧美视频一区二区三区| 欧美极品少妇XXXX亚洲精品| 欧美成人精品午夜免费影视| 男女作爱在线播放免费网站| 母与子之间的阴阳调和| 免费人妻AV无码专区| 免费观看电视在线高清| 久久水蜜桃网国产无线网欧美日韩 | 成人毛片100免费观看| 成·人免费午夜无码不卡| JIZZ成熟丰满韩国女人.| JAPANESEⅩⅩⅩHD日本| AV一区二区三区人妻少妇| BBOX撕裂BASS俄罗斯| GAY2022空少被体育生暴菊| 中文字幕不卡乱偷在线观看| 中国自产一战二战三战来源| 中国BGMBGMBGM老妇网站| 中文字幕人成乱码中国| 性欧美亚洲XXXX乳在线观看| 51久久精品人人搡人人玩| 最新国产精品拍自在线观看| 中文字幕精品一二三四五六七八| 中文字幕巨爆区乳爆系列| 18禁真人床震无遮挡免费 | 阿娇张开两腿实干13分钟完整版| 暴行JAPANESE人妻| 成熟人妻换╳╳╳╳| 国产白嫩护士被弄高潮| 国产精品乱码久久久久软件| 国产在线观看无码免费视频| 狠狠亚洲婷婷综合色香五月加勒比| 精品久久久久久无码人妻热| 久久久久99精品成人片牛牛影视| 久久亚洲日韩看片无码| 男女啪啪高潮无遮挡免费| 欧美一区二区三区性视频野战 | 成人网站在线进入爽爽爽| 国产98在线 | 免费| 国产精品久久久久久久久久免费 | 亚洲AV图片一亚洲AV| 亚洲精品成人片在线观看精品| 亚洲欧美成人中文日韩电影网站| 亚洲热妇无码Av在线播放| 野花高清在线观看免费3中文| 中文无码AV一区二区三区| 真实国产乱人伦在线视频播放| 8V蜜桃网最新电影| 2023年新番肉食系| 啊灬啊灬啊灬快高潮视频| 超薄肉色丝袜一二三四区| 成人免费看的A级毛片| 国产激情久久久久影院小草|