克磊, 陳小平
(蘇州大學(xué)電子信息學(xué)院,江蘇 蘇州 215006)
隨著嵌入式系統(tǒng)的迅猛發(fā)展,越來越多的嵌入式裝置需要相互連接起來以更好的發(fā)揮作用,傳統(tǒng)的嵌入式裝置利用現(xiàn)場總線或其他特殊的協(xié)議實現(xiàn)相互通信[1]。然而,由于連通的有限性,這些網(wǎng)絡(luò)不能實現(xiàn)對 Internet的無縫對接。設(shè)計的嵌入式網(wǎng)絡(luò)路由控制器以 ARM Cortex-M3微處理器LM3S6965為核心,利用其內(nèi)置以太網(wǎng)媒體訪問控制器,成功移植了 uIP協(xié)議棧,實現(xiàn)客戶端與服務(wù)器的 Internet的無縫連接。
通信路由控制器設(shè)計框圖 1所示,目的是將 uIP協(xié)議棧移植到嵌入式系統(tǒng)中,使其能夠在通信雙方規(guī)定協(xié)議的基礎(chǔ)上,實現(xiàn)與綜合通信系統(tǒng)的網(wǎng)絡(luò)通信,并能通過操作按鍵控制綜合通信系統(tǒng)的工作模式,設(shè)置通信側(cè)路由。指示系統(tǒng)的工作狀態(tài),包括通信側(cè)連通狀態(tài),流量統(tǒng)計。

圖 1 通信路由控制器設(shè)計方案
LM3S6965以太網(wǎng)控制器由一個完全集成的介質(zhì)訪問控制器(MAC)和網(wǎng)絡(luò)物理(PHY)接口器件組成[2]。以太網(wǎng)控制器遵循IEEE802.3規(guī)范,完全支持 10BASE-T和 100BASE-TX標(biāo)準(zhǔn)。MAC層和PHY層分別與ISO模型的第 2和第 1層相對應(yīng)。以太網(wǎng)控制器的基本接口是到 MAC層的一個簡單總線接口。MAC層提供了以太網(wǎng)幀的發(fā)送和接收處理。MAC層還通過一個內(nèi)部的媒體獨立接口給 PHY模塊提供接口。PHY層負責(zé)與以太網(wǎng)的數(shù)據(jù)通信。以太網(wǎng)控制器基本結(jié)構(gòu)如圖 2所示。

圖 2 以太網(wǎng)控制器結(jié)構(gòu)
LM3S6965以太網(wǎng)控制器模塊遵循 10BASE-T/100BASETX IEEE802.3標(biāo)準(zhǔn),只需要一個雙路隔離變壓器就能與網(wǎng)絡(luò)相連[2]。這里采用了一款帶濾波功能的網(wǎng)絡(luò)隔離變壓器。
圖 3為網(wǎng)絡(luò)隔離變壓器的接口電路圖。圖中右側(cè)所標(biāo)TX+、TX-、RX+和 RX-引腳分別與網(wǎng)絡(luò)水晶頭連接;左側(cè)所標(biāo) TXOP、TXON、RXIP和 RXIN引腳分別接至 LM3S6965以太網(wǎng)控制器各數(shù)據(jù)通信端口,其中 TXOP和 TXON表示以太網(wǎng)控制器數(shù)據(jù)輸出差分信號,RXIN和RXIP表示數(shù)據(jù)接收差分信號;另外 PHY還支持 2個 LED信號,用來指示以太網(wǎng)控制器操作的各種狀態(tài),這兩個信號對應(yīng) LED0和 LED1引腳。
uIP是瑞典計算機科學(xué)研究所 Adam Dunkels開發(fā)的。uIP的體系結(jié)構(gòu)如圖 4所示,uIP處于網(wǎng)絡(luò)通信的中間層,其上層協(xié)議稱之為應(yīng)用程序,下層硬件和其它固件稱為網(wǎng)絡(luò)設(shè)備驅(qū)動[3],此處由LM3S6965內(nèi)置以太網(wǎng)控制器構(gòu)成 ISO模型的物理層和數(shù)據(jù)鏈路層。這樣就屏蔽了下層硬件的處理細節(jié),為上層應(yīng)用提供一個統(tǒng)一的接口。在實際的應(yīng)用中用戶只要根據(jù)自己的需要編寫相應(yīng)的應(yīng)用程序來實現(xiàn)具體的應(yīng)用要求而不必過多地考慮硬件接口問題。
通信路由控制器軟件設(shè)計的總體思想是:首先進行系統(tǒng)初始化,包括 LM3S6965系統(tǒng)時鐘、IO端口、定時器、液晶以及看門狗等初始化工作;然后配置以太網(wǎng)控制器寄存器,編寫網(wǎng)絡(luò)設(shè)備驅(qū)動;其次移植uIP協(xié)議棧,運用其豐富的接口函數(shù)處理數(shù)據(jù)包;最后根據(jù)功能需要編寫用戶應(yīng)用程序。

圖 3 網(wǎng)絡(luò)隔離變壓器的接口電路
要使用以太網(wǎng)控制器,外設(shè)必須通過置位 LM3S6965的運行模式時鐘選通控制寄存器 RCGC2的 EPHY 0和 EMAC0位來使能。然后,使用以下步驟來配置以太網(wǎng)控制器。

圖 4 uIP協(xié)議棧體系結(jié)構(gòu)
①編程管理分頻寄存器MACMDV在內(nèi)部 MII上獲得一個 2.5MHz的時鐘;
②編程單個地址 0寄存器 MACIA0和單個地址 1寄存器MACIA 1進行地址過濾;
③使用值 0x16編程發(fā)送控制寄存器 MACTCTL,實現(xiàn)自動 CRC產(chǎn)生、填充和全雙工操作;
④使用值 0x08編程接收控制寄存器 MACRCTL來拒絕帶有壞 FCS的幀;
⑤通過置位 MACTCTL和MACRCTL寄存器的LSB來使能發(fā)送器和接收器。
圖 5為以太網(wǎng)初始化程序設(shè)計流程圖。

圖 5 以太網(wǎng)控制器初始化流程
以太網(wǎng)控制器發(fā)包過程為:發(fā)送一個幀,就使用數(shù)據(jù)寄存器 MACDATA將該幀寫入緩存 TX FIFO;然后置位發(fā)送請求寄存器 MACTR的NEWTX位啟動發(fā)送過程;當(dāng) NEWTX位被清零后,TX FIFO就可用于下個幀的發(fā)送。
以太網(wǎng)控制器收包過程為:接收一個幀,就必須等到幀包數(shù)目寄存器MACNP的NPR域為非零值;然后使用 MACDATA寄存器開始將幀從緩存RX FIFO中讀出;當(dāng)幀被讀取后,NPR域的值減 1;當(dāng)RX FIFO中沒有幀時,NPR將讀出為零。
以太網(wǎng)控制器接收發(fā)送數(shù)據(jù)包流程如圖 6、圖 7所示。

圖6 以太網(wǎng)控制器接收數(shù)據(jù)包
圖 8詳細地描述了uIP是如何處理數(shù)據(jù)包。其中,宏定義UIP_CONNS表示同時開通的 TCP連接最大值;函數(shù) uip_arp_ipin()表示對即將到來的 IP包的 ARP處理;函數(shù) uip_arp_out()表示向外發(fā)送的 IP包的偽以太網(wǎng)報頭并確認(rèn)是否需要發(fā)送 ARP請求[4];函數(shù) EthernetPacketPut()表示通過 Ethernet MAC方式發(fā)送數(shù)據(jù)包。

圖8 uIP數(shù)據(jù)處理流程
通信路由控制器作為客戶端與綜合通信系統(tǒng)服務(wù)器實現(xiàn)Internet無縫連接,基于 uIP協(xié)議,以IP數(shù)據(jù)包的格式與通信主機按照規(guī)定協(xié)議進行定向網(wǎng)絡(luò)通信,所涉及的網(wǎng)絡(luò)數(shù)據(jù)主要分為服務(wù)器通信模塊各端口的狀態(tài)與流量信息,以及網(wǎng)絡(luò)路由控制器發(fā)送給服務(wù)器各通信端口的路由控制字。
通信路由控制器功能流程如圖 9、圖 10和圖 11所示。

圖 9 狀態(tài)監(jiān)控流程

圖10 手動控制路由流程

圖 11 自動分配路由流程
應(yīng)用程序?qū)IP協(xié)議棧作為一個主程序運行在一個單系統(tǒng)任務(wù)中,主控制循環(huán)重復(fù)做兩件事,一是檢查從網(wǎng)絡(luò)中發(fā)過來的數(shù)據(jù)包,二是檢查周期計時是否發(fā)生。當(dāng)有網(wǎng)絡(luò)事件或計時事件發(fā)生時,uIP會調(diào)用 UIP_APPCALL()對事件進行處理[5]。為了將用戶的應(yīng)用程序掛接到uIP中,程序設(shè)計中將宏 UIP_APPCALL()定義成實際的應(yīng)用程序函數(shù)名 tcp_appcall()。
當(dāng)客戶端需要監(jiān)測服務(wù)器各端口狀態(tài)流量時,必須先根據(jù)雙方規(guī)定協(xié)議調(diào)用 uip_send()接口函數(shù)定時發(fā)送請求命令字給服務(wù)器端,當(dāng)服務(wù)器收到請求后再以規(guī)定IP包格式返回包含流量信息數(shù)據(jù),應(yīng)用程序在 main函數(shù)對數(shù)據(jù)處理;當(dāng)網(wǎng)絡(luò)路由控制器需要對服務(wù)器各端口通信路由進行手動控制分配時,同樣根據(jù)協(xié)議,結(jié)合按鍵發(fā)送相關(guān)控制字,通信主機根據(jù)控制字分配路由。
通信路由控制器特點是直接利用LM3S6965內(nèi)置以太網(wǎng)控制器模塊,成功移植了精簡TCP/IP協(xié)議uIP,并在此基礎(chǔ)上編寫控制通信路由的用戶應(yīng)用程序,使其構(gòu)成符合 TCP/IP通訊協(xié)議規(guī)范的4級層次結(jié)構(gòu),使嵌入式系統(tǒng)自己實現(xiàn)網(wǎng)絡(luò)通信的功能,從而能進一步實現(xiàn)對網(wǎng)絡(luò)通信的控制。不僅為基于uIP協(xié)議棧的嵌入式網(wǎng)絡(luò)通信控制提供了一個切實可行的廉價解決方案,而且同樣適用于遠程監(jiān)測,如列車報站、報警裝置。
[1]彭少熙,孫政順,杜繼宏.家庭網(wǎng)絡(luò)中的嵌入式 Internet方案[J].電子技術(shù)應(yīng)用,2001,27(10):47-50.
[2]周立功.ARM Cortex-M3開發(fā)指南[M].廣州:廣州致遠電子有限公司,2008.
[3]張永濤,黃丹丹,李歐.uIP協(xié)議分析及其應(yīng)用[J].信息工程大學(xué)學(xué)報,2006,7(02):147-149.
[4]宋素萍,邵明省.基于AVR的VoIP數(shù)據(jù)傳遞設(shè)計[J].通信技術(shù),2008,41(09):218-220.
[5]吳志華,申功勛,唐李征,等.嵌入式GPS由GPRS接入Internet的實現(xiàn)[J].微計算機信息,2007,23(03):256-258.