InstantContiki3.0 for CC2538dk
继 2013 年InstantContiki2.6 for cc2530dk,再写个关于cc2538dk的。
环境
- 下载安装预装有Contiki的 InstantContiki3.0 Ubuntu虚拟机
- 安装驱动,一般插上板子后会自动安装(无非cp210x、pl2303、ft232、ch341),可以通过以下命令查看:一般会得到:
1
$ lsusb
1
2
3
4
5
6
7user@instant-contiki:~/contiki$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 014: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 002 Device 013: ID 0e0f:0008 VMware, Inc.
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubcc2538demo
官方原网址:
https://github.com/contiki-os/contiki/blob/master/platform/cc2538dk/README.md
1 | cd ~/contiki/examples/cc2538dk |
下载烧录 cc2538-demo.bin
所用工具
可以在window下通过smartRF Flash programmer 2来下载border-router.bin文件到cc2538中
也可以在Linux下通过串口bootloader安装border-router.elf,其中波特率要设置为115200,8N1。
如果想通过串口直接下载,需要手动的设置使能 bootloader,然后使用:
1 | $ makecc2538-demo.upload |
对于官方demo板的方法:按住select键,并复位板子。
另外,通过make cc2538-demo.lst 可以看到编译的信息,有助于调试代码。
串口打印
由于linux中换行以 \n 结尾(用minicom的可忽略)。而windows以 \r\n 结尾,在Windows中调试例程需要修改串口调试工具中的设置。
例如 putty 中,[ \n 转换为 \r\n ]修改设置见下图:
当然,还有最爱 SecureCRT 设置如下:
rpl-border-router 边界路由器
编译
1 | cd ~/contiki/examples/ipv6/rpl-border-router |
##3 2.节点IEEE/RIME/IPv6地址
节点一般会根据它们的IEEE地址(MAC地址)来确定它们的IPV6地址,这个IEEE地址可能直接从cc2538的info页读取到,也可以通过硬编码得到,用户可以在编译的时候定义一个2字节的的值,这个值将用于IEEE地址的两个最低有效位。
设置IEEE地址来源——info页或者硬编码,可以通过定义 ~/contiki/platform/cc2538dk/contiki-conf.h 中的 IEEE_ADDR_CONF_HARDCODED 设定
如果为0 ——从info页中得到;
如果为1 ——从硬编码中得到,即从IEEE_ADDR_CONF_ADDRESS得到。
当然,也可以重新定义IEEE的最低两位地址,通过:
1 | $ make NODEID=0x8888 |
此外,还可以设置使不同的节点具有不同的IEEE地址。IPv6中MAC地址不可以重复!
测试ipv6 border router
(1)修改border-router.c
将#define DEBUG DEBUG_NONE 改为 #define DEBUG DEBUG_PRINT
(2)在project-conf.h中定义了UIP的最大缓冲值(UIP_CONF_BUFFER_SIZE),可以将它改为更大或删除这句话,从而允许更多的的值。
(3)编译:make TARGET=cc2538dk,因为不是在cc2538的工程中编译,所以需要加上目标平台。
(4)下载烧录,参考上面。
(5)编译tunslip6,测试
1 | cd ~/contiki/tools/ |
执行后,不出意外的话看到router的IPV6地址:
1 | user@instant-contiki:~/contiki/tools$ sudo ./tunslip6 aaaa::1/64 -s /dev/ttyUSB0 |
(6)通信测试
Ping6 测试
ping6 aaaa::212:4b00:5af:84e0
1 | user@instant-contiki:~/6lbr/examples/cc2538dk$ ping6 aaaa::212:4b00:5af:84e0 |
打开浏览器,地址栏输入 http://[aaaa::212:4b00:5af:84e0]/ 网页访问测试:
节点联网
(1)编译,下载烧录
1 | cd ~/contiki/examples/webserver-ipv6 |
(2)查看
打开浏览器,地址栏输入 http://[aaaa::212:4b00:5af:84e0]/ 查看节点:
Neighbors
fe80::212:4b00:5af:8444
Routes
aaaa::212:4b00:5af:8444 /128 (via fe80::212:4b00:5af:8444) 1792s
(3)ping6测
1 | user@instant-contiki:~/6lbr/examples/cc2538dk$ ping6 aaaa::212:4b00:5af:8444 |
(4)也可 curl
1 | user@instant-contiki:~/6lbr/examples/cc2538dk$ curl -g http://[aaaa::212:4b00:5af:84e0]/ |
(5)wget 下载 index.html
1 | user@instant-contiki:~/6lbr/examples/cc2538dk$ wget http://[aaaa::212:4b00:5af:84e0]/ |
(6)半导体芯片越做越小,性能越强悍;系统协议越精减,越精简优化。webserver跑在单芯片上也就不稀奇了!