基于C6000 DSP NDK的組播網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)
摘要:隨著系統(tǒng)應(yīng)用的復(fù)雜化,很多情況下需要將相同數(shù)據(jù)分發(fā)至不同的使用終端,這也促進(jìn)了網(wǎng)絡(luò)傳輸組播模式的應(yīng)用?;趯?shí)際應(yīng)用需求,以TMS320C6455芯片為核心處理平臺,利用TI公司DSPC6000平臺上的NDK(Net Developer’s Kit)開發(fā)包,對Marvell公司的88E6060(SWI TCH)芯片進(jìn)行配置,實(shí)現(xiàn)了適用于多個(gè)終端進(jìn)行組播方式網(wǎng)絡(luò)通信的嵌入式系統(tǒng)設(shè)計(jì)。經(jīng)過測試驗(yàn)證,該系統(tǒng)工作正常穩(wěn)定,實(shí)現(xiàn)了百兆組播傳輸功能。
關(guān)鍵詞:C6000;88E6060;嵌入式系統(tǒng);NDK;組播網(wǎng)絡(luò)
0 引言
嵌入式系統(tǒng)采用以太網(wǎng)接口傳輸數(shù)據(jù)相對于傳統(tǒng)的串口、并口、1553B總線接口來說具有通用性強(qiáng)、傳輸速度快的特點(diǎn),并且保證了較高的可靠性。TI公司在TMS320C6455(以下簡稱C6000系列高端的芯片中,大多提供了網(wǎng)絡(luò)接口模塊,DSP6455)就是其中典型的一款芯片。它的工作時(shí)鐘可達(dá)1 GHz,片上集成以太網(wǎng)接口模塊EMAC。結(jié)合TI公司推出的NDK(Net DevelopKit)網(wǎng)絡(luò)資源開發(fā)包,可以大大縮短嵌入式系統(tǒng)中網(wǎng)絡(luò)應(yīng)用的開發(fā)周期,并且性能不遜于W5300等專業(yè)網(wǎng)口芯片。由于一片DSP6455只有一個(gè)EMAC接口以及MDIO管理模塊,并且NDK的軟件初始化只查詢一個(gè)PHY口就停止,所以傳統(tǒng)應(yīng)用中,典型設(shè)計(jì)是在該DSP芯片外部接一個(gè)PHY芯片,連接一個(gè)終端設(shè)備,或者通過總線直接連接以太網(wǎng)專用芯片來實(shí)現(xiàn)點(diǎn)對點(diǎn)的網(wǎng)絡(luò)連接。而現(xiàn)在越來越多的嵌入式系統(tǒng)應(yīng)用需要連接多個(gè)終端設(shè)備進(jìn)行組網(wǎng),在網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換。本文選擇利用DSP6455外接Marvell公司的SWITCH芯片(88E6060),該芯片具備6個(gè)端口,每個(gè)端口都具備100M/10M全雙工的通信能力,最終實(shí)現(xiàn)該嵌入式系統(tǒng)與其他兩個(gè)設(shè)備的100 MHz組播方式的網(wǎng)絡(luò)通信。
1 電路原理設(shè)計(jì)
基于TI DSP6455的片內(nèi)EMAC/MDIO模塊、片外SWITCH(88E6060)芯片及其外圍電路的接口設(shè)計(jì),可以快速實(shí)現(xiàn)OSI七層模型中數(shù)據(jù)鏈路層和物理層(MAC+PHY)的組建。DSP6455支持三種接口連接方式,MII/RMII/GMII。MII接口(Media Independent Intetface)以及RMII(Reduced Media Independent Interface)接口分別為媒體獨(dú)立接口和縮減媒體獨(dú)立接口,它們支持10M/100M工作模式。GMII接口的全稱是吉比特媒體獨(dú)立接口(Gigabil Media Independent Interface),它支持10M/100M/1 000M三種工作模式。因?yàn)檫x取的88E6060只支持百兆MII/RMII的接口方式,本設(shè)計(jì)采用MII的接口方式進(jìn)行連接,信號連接框圖如圖1所示。
設(shè)計(jì)過程中,使用88E6060的port5作為MII接口與DSP6455的EMAC接口進(jìn)行連接,port0~port4可以任意使用,作為PHY對外進(jìn)行連接。本設(shè)計(jì)以應(yīng)用port0和port1為例進(jìn)行說明,其他情況相似。配置時(shí)將88E6060的ENABLE_MII5和DISABLE_MII4管腳懸空,通過其內(nèi)部上拉/下拉使能port5的MII口,DSP6455通過MDIO接口對88E6060的內(nèi)部PHY寄存器進(jìn)行訪問,通過EMAC接口發(fā)送和接收網(wǎng)絡(luò)數(shù)據(jù)。
2 NDK的配置與使用
TI公司的NDK(Net Develop Kit)開發(fā)包是基于DSP/BIOS進(jìn)行工作的,開發(fā)包已經(jīng)集成網(wǎng)絡(luò)開發(fā)所需函數(shù),行使OSI七層模型中傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的功能,并按網(wǎng)絡(luò)開發(fā)所需將中斷和任務(wù)進(jìn)行配置。當(dāng)NDK開發(fā)環(huán)境配置好之后,就可以利用傳輸語句進(jìn)行數(shù)據(jù)的發(fā)送和接收。傳統(tǒng)情況下,NDK只適用于對單一的PHY進(jìn)行配置連接,一旦連接建立便中止查詢其他的PHY是否可用。本例由于DSP6455外接一片SWIT CH芯片,理論上可以將所有能使用的PHY進(jìn)行初始化并建立連接,所以需要對原有的工作流程進(jìn)行改造,工作流程對比如圖2所示。
改造后的NDK運(yùn)行流程最重要的是實(shí)現(xiàn)對其他外部有效PHY的配置。配置過程需要添加MDIO控制函數(shù)來對PHY進(jìn)行初始化操作。本文使用的PHY為SWITCH芯片的PHY0與PHY1口,所以需要添加對兩個(gè)使用口進(jìn)行初始化的語句,來完成對SWITCH芯片的配置工作,初始化代碼如下:
MDIO_phyRegWrite(0,0x0,0x1100);
MDIO_phyRegWrite(1,0x0,0x1100);
在MDIO_phyRegWrite(uint phyIdx,uint phyReg,Uint16 data)函數(shù)中,參數(shù)phyIdx為所配置PHY的識別ID,參數(shù)phyReg為需要配置的寄存器序號,參數(shù)data為具體的配置值。兩語句完成了SWITCH芯片PHY0與PHY1口的控制寄存器的初始化操作,使這兩個(gè)PHY接口處于激活狀態(tài),如果外部出現(xiàn)網(wǎng)絡(luò)連接請求,便會(huì)進(jìn)行連接。同時(shí)通過MDIO_phyRegRead(uint phyIdx,uint phyReg,Uint16*pdata)函數(shù)來查詢PHY的工作狀態(tài),如果一段時(shí)間仍未連接上,就轉(zhuǎn)入配置流程,進(jìn)行重新配置。具體PHY寄存器的地址以及位置信息參照88E6060的數(shù)據(jù)手冊。
評論