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