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