中國船舶重工集團(tuán)公司第七一五研究所 王承宇
基于AM3359的千兆雙冗余以太網(wǎng)接口模塊設(shè)計
中國船舶重工集團(tuán)公司第七一五研究所 王承宇
千兆以太網(wǎng)具有可靠性高、擴(kuò)展性強(qiáng)、速度快等諸多優(yōu)點,在各個工業(yè)領(lǐng)域得到了廣泛的應(yīng)用。通過雙冗余技術(shù),可以使一個網(wǎng)絡(luò)通道故障后自動切換到另一個正常通道,實現(xiàn)熱備份。本文基于Ti公司的AM3359處理器設(shè)計并開發(fā)了一種千兆雙冘余以太網(wǎng)接口模塊,針對于設(shè)計過程中軟硬件設(shè)計、LWIP協(xié)議的移植等進(jìn)行了詳細(xì)的論述。
千兆雙冘余以太網(wǎng);AM3359;LWIP協(xié)議棧
以太網(wǎng)從10M開始發(fā)展,經(jīng)理多年的變遷,目前已發(fā)展到千兆乃至萬兆以太網(wǎng),在各領(lǐng)域已經(jīng)得到了廣泛地應(yīng)用。以太網(wǎng)具有以下優(yōu)點:(1)可靠性高:網(wǎng)絡(luò)上單一節(jié)點的故障不會對網(wǎng)絡(luò)中其他設(shè)備的通訊產(chǎn)生影響;(2)擴(kuò)展性強(qiáng):所有設(shè)備連接到網(wǎng)絡(luò)交換機(jī)中,網(wǎng)口紙質(zhì)熱插拔;(3)速度快:千兆以太網(wǎng)將提高10倍與百兆網(wǎng)的性能并與現(xiàn)有的10/100以太網(wǎng)標(biāo)準(zhǔn)兼容;(4)采用雙冗余技術(shù)可以在一個網(wǎng)絡(luò)通道出現(xiàn)故障后進(jìn)行自動切換,實現(xiàn)熱備份。AM3359是TI公司最便宜的Cortex A8處理芯片,集成2個MAC并支持Linux、Android和WinCE系統(tǒng)。本文基于AM3359處理器設(shè)計并開發(fā)了一種千兆雙冘余以太網(wǎng)接口模塊,針對硬性設(shè)計與軟件開發(fā)中的難點進(jìn)行了詳細(xì)的論述。
1.1 總體功能與結(jié)構(gòu)
以太網(wǎng)接口模塊主要有DSP、DDR3內(nèi)存、FLASH芯片、PHY芯片、電源芯片等多個部分組成。DSP選用Ti公司的AM3359處理器。該芯片具有一個ARMcortexA8核,最大運行速率可達(dá)1GHz,具有兩個工業(yè)千兆以太網(wǎng)MAC,支持MII、RGMII和MDIO接口程序。DDR3選擇Micron公司MT41K128M16JT,容量為2Gb。FLASH芯片選擇三星公司的K9F4G08U0E,位寬為8bit,容量為4Gb。程序固化在片外FLASH芯片中,當(dāng)系統(tǒng)上電后,將程序加載至DDR3內(nèi)存中運行。物理層芯片選擇TI公司的DP83867IR,該芯片具有8kV的ESD保護(hù)能力,運行功耗僅565mW。由DSP控制兩個物理層芯片提供兩個雙冘余千兆網(wǎng)口實現(xiàn)與外部網(wǎng)絡(luò)的通訊。以太網(wǎng)接口模塊的組成如圖1所示。
圖1 總體組成框圖
1.2 千兆網(wǎng)口設(shè)計
每一個物理層芯片均由一片晶振為其提供25MHz時鐘信號以滿足千兆網(wǎng)的傳輸要求。物理層芯片通過RGMII總線和MDI0總線與DSP連接,RGMII由12個信號組成:6個接收新號RX_CTL、RX_CLK和RX_ D[3:0]以及6個發(fā)送信號TX_CTL、TX_CLK和TX_D[3:0]。在千兆運行過程中,TX_CLK和RX_CLK的時鐘為125MHz,因此為避免一條數(shù)據(jù)總線上不同數(shù)據(jù)線上信號傳播延時造成的偏差,所有信號線的走線長度差異應(yīng)盡可能小。DSP通過MDIO總線可以實現(xiàn)對PHY內(nèi)部寄存器空間和狀態(tài)信息以及配置進(jìn)行訪問。PHY與外部網(wǎng)線之間使用了一個隔離變壓器以保證本地電器與外部電纜之間的直流隔離。
圖2 千兆網(wǎng)口設(shè)計
2.1 LWIP協(xié)議棧
LWIP協(xié)議棧是一套用于嵌入式系統(tǒng)的開源TCP/IP協(xié)議棧,可以移植到操作系統(tǒng)上,也可以在誤操作系統(tǒng)的情況下獨立運行。LWIP的優(yōu)點在于保持TCP/IP協(xié)議的基礎(chǔ)上減少對RAM的占用。一般它要幾十kg的RAM就可以運行,這使LWIP協(xié)議棧適合在小型嵌入式系統(tǒng)中。LWIP協(xié)議棧的主要作用是負(fù)責(zé)處理各層各種協(xié)議,在數(shù)據(jù)收發(fā)過程中完成網(wǎng)絡(luò)數(shù)據(jù)幀封裝與解析并完成ARP功能。
LWIIP協(xié)議棧的移植十分便捷。為適應(yīng)各種不同的硬件環(huán)境,協(xié)議棧中留有底層收發(fā)程序的指針、因此,移植的核心就是根據(jù)格式要求編寫底層收發(fā)程序。移植完成后,當(dāng)需要收發(fā)網(wǎng)絡(luò)幀是,協(xié)議棧便會自動調(diào)用底層收發(fā)程序。
2.2 網(wǎng)絡(luò)數(shù)據(jù)收發(fā)的實現(xiàn)
網(wǎng)絡(luò)數(shù)據(jù)的處理過程主要可以分為兩個部分:底層驅(qū)動程序和協(xié)議棧。底層驅(qū)動程序負(fù)責(zé)讀取PHY收到的網(wǎng)絡(luò)數(shù)據(jù)或?qū)⑺l(fā)送的信息從PHY發(fā)送出去。協(xié)議棧根據(jù)本地與通訊對象的MAC地址、IP地址和端口號完成網(wǎng)絡(luò)數(shù)據(jù)幀的封裝與解析。
圖3 網(wǎng)絡(luò)數(shù)據(jù)收發(fā)流程
在LWIP協(xié)議棧的移植過程中,用戶所要完成的主要工作為協(xié)議棧的初始化以及編寫底層硬件驅(qū)動程序并對應(yīng)函數(shù)在協(xié)議棧中完成綁定。
在初始化主要分為網(wǎng)絡(luò)接口初始化和協(xié)議棧初始化兩個部分。網(wǎng)絡(luò)接口初始化主要完成硬件的初始化。對于本文中的以太網(wǎng)接口模塊,硬件初始化的主要內(nèi)容為通過MDIO讀取PHY內(nèi)部寄存器完成與連接對象的網(wǎng)絡(luò)自動協(xié)商功能。協(xié)議棧初始化主要完成本地IP地址以及端口號的配置。首先使用udp_new()函數(shù)建立UDP控制塊,再調(diào)用udp_bind()函數(shù)綁定本地的IP地址和端口號。為了收到UDP數(shù)據(jù)后能夠正常完成數(shù)據(jù)處理,還需要通過udp_recv()函數(shù)將用戶自定義的網(wǎng)絡(luò)數(shù)據(jù)處理函數(shù)進(jìn)行綁定。
完成上述設(shè)置后LWIP協(xié)議棧當(dāng)收到正確的網(wǎng)絡(luò)數(shù)據(jù)便會自動調(diào)用用戶定義處理函數(shù)對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行處理,調(diào)用udp_sendto()函數(shù)便能實現(xiàn)以太網(wǎng)數(shù)據(jù)的發(fā)送。
AM3359是TI公司最便宜的Cortex A8處理芯片,集成2個MAC具有良好的應(yīng)用前景。本文基于AM3359處理器設(shè)計并開發(fā)了一種千兆雙冘余以太網(wǎng)接口模塊,針對硬性設(shè)計與軟件開發(fā)中的難點進(jìn)行了詳細(xì)的論述。
[1]Adam Dunkels,Design and Implementation of the Lwip TCP/IP Stack,2001.
[2]Texas Instrument,AM335X Sitara Processors Technical Reference Manual,2016.