基于C6000 DSP NDK的组播网络设计与实现
3 组播传输的配置实现
组播是一种允许一个或多个发送者(组播源)发送相同的数据包到多个接收者(一次的,同时的)的网络技术。组播源把数据包发送到特定组播组,而只有属于该组播组的成员才能接收到数据包。组播可以大大的节省网络带宽,因为无论有多少个目标地址,在整个网络的任何一条链路上只传送单一的数据包。组播的使用提高了主干网络的数据传送效率。组播工作方式如图3所示。本文引用地址:https://www.eepw.com.cn/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,连接的通用性也很强。设计人员可以根据需要来增减网络连接的端口数,实现应用需求。
评论