4、contiki系统开发-UDP-IPV6数据传输功能测试

来源:互联网 发布:产品优化方案模板 编辑:程序博客网 时间:2024/06/05 12:05

contiki系统开发-UDP-IPV6数据传输功能实现与测试

前面几节完成了基本环境的搭建,这里进行测试,按照以往的习惯,先啃“硬骨头”,这一次计划先实现“比较复杂”的网络通讯。


书归正传,现在开始:

1)在终端下进入cc2530dk/udp-ipv6例程目录:“~/contiki-sensinode-cc-ports/examples/cc2530dk/udp-ipv6$ ”

2)输入make进行编译,这个过程有点小长,耐心等待一下

注意:该步骤如果出现没有安装src_cat什么之类的提示,说明你少安装了srecord,那就apt-get install srecord,安装完成后再重新make编译。


关于srecord是什么用处,这里穿插扫盲一下:

SRecord是一个强有力的工具,处理可编程只读存储器的文件,包括摩托罗拉S-Record,英特尔十六进制,Tektronix十六进制和二进制,因为两者的输入和输出,所有过滤器可以应用到所有的文件格式。


3)编译成功后可以在下面找到client.hex和server.hex可执行文件


user@instant-contiki:~/contiki-sensinode-cc-ports/examples/cc2530dk/udp-ipv6$ ls *.hex
client_back.hex  client.hex  server_back.hex  server.hex
user@instant-contiki:~/contiki-sensinode-cc-ports/examples/cc2530dk/udp-ipv6$ 


4)拷贝至windows目录下进行测试,发现server并没有收到client的数据,为什么呢?哈哈,聪明的你一定猜中啦,地址就没有搞定嘛。



可以看到server一直在监听3000端口的数据,但是client的数据一致没有发过来,原因就是地址不对嘛,继续改进。

关于MAC地址如何转换为IPV6地址,请参阅文档:这里有详细介绍。

5)输入gedit client.c&,编辑文件



MAC地址到IPV6地址的映射方法【摘自xukai博文】:


图1 IPv6和EUI-64地址变化(摘自xugai)

    【1】原MAC48地址为39-A7-94-07-CB-D0,从中间断开插入FF-FE,变为39-A7-94--FF-FE-07-CB-D0。
    【2】第7个比特反转(从左往右数),变为3B-A7-94-FF-FE-07-CB-D0
    【3】加入网络前缀,若前缀为链路本地地址则网络前缀为FE-80-00-00-00-00.
            IPV6地址最终为FE-80-00-00-00-00-00-00-3B-A7-94-FF-FE-07-CB-D0
            可简写为FE80::3BA7:94FF:FE07:CBD0

通过查找获取到server的MAC地址为:00 12 4B 00 01 27 A7 A6

CC2530符合IEEE802.15.4标准,在出厂时便有一个IEEE地址,IEEE802.15.4地址共有8字节(IEEE802.15.4分为长地址8字节和短地址2字节)。由于CC2530的IEEE地址共有8字节,扩展IPv6地址时便可省略上文提到的步骤1,只执行步骤2和步骤3即可。

如何获得CC2530 IEEE地址
使用SmartRF Flash Programmer便可获得CC2530地址,通过CC2530仿真器连接CC2530目标板即可。此时CC2530的IEEE地址为00 12 4B 00 01 27 A7 A6。那么链路本地地址为FE-80-00-00-00-00-00-00-02-12 4B 00 01 27 A7 A6,请注意IEEE地址的首字节00被翻转为02
可简写为 FE80::212:4B00:127:A7A6
 

更改如下:



重新make编译,获取hex文件


5)将重新编译完成的固件下载至客户端



总结:从上面可以看出,client和server已经运行起来了,看样子还是很稳定的,今天晚上冻他们一夜,明天看看效果,`(*∩_∩*)′

0 0
原创粉丝点击