當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]嵌入式Internet以太網(wǎng)接口的設(shè)計與實現(xiàn)

摘要: 基于DSP和較新的自適應(yīng)10M/100M嵌入式以太網(wǎng)控制器芯片LAN91C111,介紹了嵌入式系統(tǒng)的軟硬件實現(xiàn)方法。

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

1  LAN91C111嵌入式以太網(wǎng)控制器芯片

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

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

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

(3) 支持突發(fā)數(shù)據(jù)傳輸。

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

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

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

2  硬件電路組成

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

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

3  軟件設(shè)計

編寫控制以太網(wǎng)接口程序的步驟如下。

3.1 μC/OSⅡ?qū)崟r操作系統(tǒng)的移植

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

移植工作包括以下幾個內(nèi)容:(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()函數(shù)

當程序執(zhí)行內(nèi)核的OSStart函數(shù)時,表示多任務(wù)系統(tǒng)開始啟動, OSStart函數(shù)將調(diào)用OSStartHighRdy函數(shù)從最高優(yōu)先級任務(wù)的TCB塊中獲得該任務(wù)的堆棧指針,通過該指針,依次從該任務(wù)的任務(wù)堆棧中恢復CPU的現(xiàn)場。由于任務(wù)在堆棧初始化時,已經(jīng)設(shè)定了彈出到程序指針寄存器PC的是該任務(wù)函數(shù)的入口地址,因此,OSStartHighRdy函數(shù)只需依次彈出任務(wù)棧內(nèi)容到處理起寄存器,該任務(wù)便將得以運行。

2)OSCtxSw()函數(shù)

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

  void OSCtxSw(void) {

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

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

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

  OSTCBCur = OSTCBHighRdy; /*OSTCBHighRdy 指向的是就緒的高優(yōu)先級任務(wù)的TCB,

  將其裝載到OSTCBCur 中來*/

  SP = OSTCBHighRdy->OSTCBStkPtr; /*取得就緒的高優(yōu)先級任務(wù)的棧頂指針*/

  恢復該任務(wù)的現(xiàn)場(); /*于是便可通過剛?cè)〉玫臈m斨羔樆謴驮撊蝿?wù) */

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

  }

表2 OSCtxSw函數(shù)的偽代碼

3) OSIntCtxSw() 函數(shù)

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

4) OSTickISR()函數(shù)

在CPU響應(yīng)時鐘節(jié)拍中斷后,程序指針PC發(fā)生跳轉(zhuǎn)后進入該函數(shù),由于OSTickISR調(diào)用OSTimeTick函數(shù)使得所有的延時節(jié)拍不為0的任務(wù)延時節(jié)拍數(shù)減1,并調(diào)用OSIntExit函數(shù)來找出就緒的高優(yōu)先級任務(wù),若需要切換,則最后由OSIntCtxSw來完成新任務(wù)的調(diào)度,否則仍然返回到被時鐘節(jié)拍中斷的任務(wù)。

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

③OS_CPU.H文件:內(nèi)容可根據(jù)μC/OS-Ⅱ中80x86的內(nèi)容進行修改。

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

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

3.2 LAN91C111的編程

  對LAN91C111主要包括初始化、發(fā)送數(shù)據(jù)包和接收數(shù)據(jù)包三部分。

3.2.1 初始化

上電后,LAN91C111內(nèi)部的寄存器的值設(shè)置為缺省值,CPU根據(jù)需要設(shè)置它里面的Configuration、Base和Individual Address寄存器,以保證它正常工作。

3.2.2 發(fā)送數(shù)據(jù)包流程

(1)DSP向控制器發(fā)送ALLOCATE MEMORY命令(設(shè)置MMUCOM寄存器,通常設(shè)置為0x0020)。MMU負責在控制器內(nèi)部的packet buffer中為待發(fā)送的包分配存儲空間。

(2)DSP查詢中斷狀態(tài)寄存器中的ALLOC INT位,直到該位被置為1,也可以設(shè)置中斷掩碼中的ALLOC INT位,然后等待硬件中斷,這時MMU已經(jīng)分配好存儲空間。而且TX packet number放在Allocation Result寄存器中。

(3)將Allocation Result寄存器中的packet Number拷貝到Packet NUMBER寄存器中,設(shè)置Pointer寄存器(設(shè)置為TX、WR、AUTOINC,即0x4000)。然后將包的數(shù)據(jù)從upper layer發(fā)送隊列傳送到控制器的數(shù)據(jù)寄存器。要求依次寫人Status Word、Byte Count、destination address、source address、packet size、packet data和control word。

(4)DSP向控制器發(fā)送“ENQUEUE PACKET NUMBER TO TX FIFO”命令(設(shè)置MMUCOM寄存器,通常設(shè)置為Ox00C0),該命令將Packet Number寄存器中的packet number拷貝到TX FIFO,說明發(fā)送的包已經(jīng)放入隊列中。同時設(shè)置傳輸控制寄存器中的TXENA位,啟動transmitter。到目前為止,DSP的設(shè)置工作已完成,它可以空閑,直到接收到一個控制器產(chǎn)生的發(fā)送中斷。

(5)當控制器傳送完包以后,內(nèi)存中的第1個字(16位)被CSMA/CD寫入相應(yīng)的狀態(tài)字,然后將TX FIFO中的packet number移到TX completion FIFO,當TX completion FIFO不為空時產(chǎn)生中斷。

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

  TX INT:當TX completion FIFO不為空時置0;

  TX EMPTY INT:當TX FIFO為空時置1;

  AUTO RELEASE:如果置為1,發(fā)送包成功后,packet number不寫到TX completion FIFO中,而且它所使用的存儲空間被自動釋放。

(7)選擇使用“每發(fā)送一個包產(chǎn)生一個中斷”方案:允許TX INT中斷,AUTO RELEASE=0,這種方案的流程如上所示。

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

3.2.3 接收數(shù)據(jù)包流程

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

(2)含有正確地址的包被接收到,從MMU請求存儲空間,并分派一個packet number,內(nèi)部的DMA邏輯產(chǎn)生連續(xù)的地址,并將接收到的字寫到內(nèi)存中。如果超界,則包被丟棄,存儲空間被釋放。當檢測到包結(jié)束時,狀態(tài)字被寫到接收包的最前面,byte count寫到第2個字。如果CRC校驗正確,則packet number被寫到RX FIFO。當RX FIFO非空時,產(chǎn)生RCV INT中斷;如果CRC校驗不正確,則存儲空間被釋放,而且不產(chǎn)生中斷。

(3)DSP接收到中斷后開始執(zhí)行中斷處理程序,它讀入中斷狀態(tài)寄存器,如果產(chǎn)生接收中斷(RCV INT位為1),則可以從FIFO端口寄存器得到接收的包的packet number,而且可以從數(shù)據(jù)寄存器將接收包傳送到DSP的內(nèi)存或外存中。當處理結(jié)束時,DSP向處理器發(fā)布REMOVE AND RELEASE FROM TOP OF RX命令(即設(shè)置寄存器MMUCOM,設(shè)置為0x0060),釋放使用的存儲空間和packet number。

4  結(jié)束語

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉