Posts Contiki OS for cc2530F256
Post
Cancel

Contiki OS for cc2530F256

1. 写在前面

平台:CC2530

在Ubuntu 16.04上搭建Contiki的开发环境的过程中,遇到一系列问题,总体来说,开发环境搭建工作是失败的。

只能下载官方已经搭建好开发环境的系统虚拟磁盘文件InstantContiki2.7.zip,该镜像基于Ubuntu 12.04 32bit。

InstantContiki2.7.zip

然后在 VirtualBox 上创建 32 位的 Ubuntu 系统,选择下载好的虚拟磁盘文件,创建虚拟系统,登录密码为 user。 系统自带了 contiki2.6 和 contiki2.7 的源码,需要注意的是,不管是 2.6、2.7 还是从 Github 上重新下载的 3.0,CC2530 运行platform/cc2530dk/udp-ipv6 下的 server 程序时,接收到 client 的消息时会存在重启问题,托管在 Github 上的 contiki-sensinode 项目针对这一问题对官方的contiki os进行了优化。

1
$ git clone https://github.com/g-oikonomou/contiki-sensinode.git

2. 可能出现的问题

(1) 为CC2530编译udp-ipv6下的client时会有错误信息,编译无法通过,需要从源码编译安装SDCC。

需要删除原有的SDCC:

1
$ sudo rm -rf /usr/local/sdcc

然后重新编译安装,安装指南见笔记《SDCC for Contiki》,或者:

https://github.com/contiki-os/contiki/wiki/8051-Requirements#build-your-toolchain-sd

(2) SDCC 在 3.6.0 之后的版本,将 putchar()的原型从 void putchar(char) 改为 int putchar(int) [1],而 contiki 中仍然为 void 类型,因此,使用 3.6.0 版本之后的 SDCC 编译 contiki 工程时会报错。即使将工程文件中的 putchar 函数原型修改为与 SDCC 的 putchar 函数原型一致,编译也无法通过(还有其他问题)。

3. 开发板适配(移植)

Contiki默认配置:

LEDS_GREENP1_0
LEDS_REDP1_1
BUTTON1P0_5

手中有两种板子: 老版的(直针简易牛角座),对应关系为:

LED1 (RED)P1_0
LED2(GREEN)P1_1
S1P0_4
S2P0_5

新版的(弯针简易牛角座),对应关系为:

LED1 (RED) 
LED2(GREEN) 
S1P0_0
S2P0_1

将LED和按键改一致(老版): 将 platform/cc2530dk/dev/button-sensor.h 的第 64 行改为:

1
#define BUTTON1_PIN 4

将 platform/cc2530dk/models.h 的第 98、99 行改为:

1
2
#define LEDS_GREEN 2
#define LEDS_RED 1

4. 总结

试图在Ubuntu 16.04 LTS上搭建开发环境,但在编译安装SDCC和编译Contiki项目的过程中遇到很多困难。

系统信息如下:

Ubuntu 16.04 LTS,Linux version 4.4.0-57-generic (buildd@lgw01-54) ,gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

更换过GCC版本,试过多个版本的SDCC,都没有解决问题。遇到的问题可以分为以下三类:

  • SDCC(v9092)无法编译通过

  • SDCC(v9822)可以编译安装,但是Contiki项目无法编译通过(原因如前文所述)

  • SDCC可以编译安装,Contiki项目可以编译通过,但是示例代码在开发板上运行时无法得到期望的结果。

直接使用官方提供的 InstantContiki2.7,使用针对 cc2530 做过优化的 contiki-sensinode 源码,如果自带的 SDCC 无法顺利完成编译任务,则将其删除,然后下载 v9092 源码,对其做些许修改后编译安装。

参考

[1] http://sdcc.sourceforge.net/doc/sdccman.pdf

[2] http://www.swannonline.co.uk/node/60

[3] http://blog.csdn.net/xukai871105/article/details/23626437

This post is licensed under CC BY 4.0 by the author.