基于C6000 DSP NDK的組播網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)
3 組播傳輸?shù)呐渲脤?shí)現(xiàn)
組播是一種允許一個或多個發(fā)送者(組播源)發(fā)送相同的數(shù)據(jù)包到多個接收者(一次的,同時的)的網(wǎng)絡(luò)技術(shù)。組播源把數(shù)據(jù)包發(fā)送到特定組播組,而只有屬于該組播組的成員才能接收到數(shù)據(jù)包。組播可以大大的節(jié)省網(wǎng)絡(luò)帶寬,因?yàn)闊o論有多少個目標(biāo)地址,在整個網(wǎng)絡(luò)的任何一條鏈路上只傳送單一的數(shù)據(jù)包。組播的使用提高了主干網(wǎng)絡(luò)的數(shù)據(jù)傳送效率。組播工作方式如圖3所示。本文引用地址:http://www.ex-cimer.com/article/148013.htm
組播的實(shí)現(xiàn)主要有兩個條件:主機(jī)的網(wǎng)絡(luò)接口支持組播(支持IP地址與MAC地址的轉(zhuǎn)換);有一套用于加入、離開、查詢的組管理協(xié)議,即IGMIP,這兩個條件NDK都進(jìn)行了支持。以該嵌入式系統(tǒng)應(yīng)用為例,在NDK中進(jìn)行組播傳輸配置步驟如下:
(1)加入組IGMPJoinHostGroup(inet_addr(McSend Addr),1);這里的McSendAddr為DSP6455使用的IP地址,本語句是將這個IP地址加入到組播組中。
(2)創(chuàng)建新的傳輸socket,協(xié)議為UDP傳輸協(xié)議。
SOCKET send=INVALID_SOCKET;
send = socket (AF_INET, SOCK_DGRAM, IPPRO TO_UDP);
(3)設(shè)定傳輸?shù)刂放渲媒Y(jié)構(gòu)體
soutl為發(fā)送地址配置的結(jié)構(gòu)體,BrSendPort為發(fā)送的端口號,BrSendAddr為發(fā)送的組播地址,IPv4中組播分配的地址范圍為224.0. 0.0 ~239.255.255.255,即D類保留地址,可以從中選擇任意值配置。
(4)綁定發(fā)送socket與地址配置結(jié)構(gòu)體
bind(send,(PSA)soutl,sizeof(sourl));
(5)準(zhǔn)備好數(shù)據(jù)后發(fā)送
sentCnt=sendto(send, (void*)source,num,0,soutl,sizeof(sout1));
經(jīng)過上述步驟的配置,就可以根據(jù)應(yīng)用需求,將嵌入式系統(tǒng)中需要外傳數(shù)據(jù)通過組播網(wǎng)絡(luò)傳輸出去。
4 測試結(jié)果與結(jié)論
本文設(shè)計(jì)嵌入式系統(tǒng)在工作時,同時與另外兩臺PC終端通過網(wǎng)線進(jìn)行連接,實(shí)驗(yàn)連接示意圖如圖4所示。嵌入式系統(tǒng)配置為本地IP:192.168.0.3,組播發(fā)送地址IP:239.1.1.3,終端1配置為本地IP:192.168.0.6,終端2配置為本地IP:192.168.0.7。
通過CCS3.3調(diào)用程序加載并運(yùn)行,在終端1與終端2觀察本地連接均連接成功,在終端1對嵌入式系統(tǒng)與終端2進(jìn)行ping操作,顯示為通路;在終端2對嵌入式系統(tǒng)與終端1進(jìn)行ping操作,顯示為通路,證明網(wǎng)絡(luò)設(shè)備之間點(diǎn)點(diǎn)聯(lián)通,具備組播網(wǎng)絡(luò)傳輸條件。
嵌入式系統(tǒng)采集數(shù)據(jù)后,通過以太網(wǎng)以組播方式傳輸至終端1與終端2,利用VC++編寫的軟件,在239.1.1.3的組播地址中正確接收到發(fā)送數(shù)據(jù)。
嵌入式系統(tǒng)準(zhǔn)備好數(shù)據(jù)后進(jìn)行循環(huán)發(fā)送,在終端1與終端2運(yùn)行Ethreal軟件進(jìn)行檢測,傳輸速率平均達(dá)到12.1 MB/s,滿足百兆以太網(wǎng)傳輸速率。
5 結(jié)語
本設(shè)計(jì)創(chuàng)新使用DSP6455外接SWITCH芯片的連接方式,通過對NDK軟件配置流程的重新設(shè)計(jì),在嵌入式系統(tǒng)上成功實(shí)現(xiàn)了組播模式的數(shù)據(jù)傳輸。網(wǎng)絡(luò)連接建立后,每個點(diǎn)都可以作為系統(tǒng)中通信數(shù)據(jù)的發(fā)送源和接收端,并可根據(jù)需求來選擇是否加入組播組接收數(shù)據(jù)發(fā)送端的下傳數(shù)據(jù)。這種方式特別適合應(yīng)用于嵌入式系統(tǒng)外接多個數(shù)據(jù)采集記錄裝置的情況,使用起來非常靈活。外接終端設(shè)備可以是定制嵌入式系統(tǒng),也可以是普通PC,連接的通用性也很強(qiáng)。設(shè)計(jì)人員可以根據(jù)需要來增減網(wǎng)絡(luò)連接的端口數(shù),實(shí)現(xiàn)應(yīng)用需求。
評論