本帖最后由 恶魔花花 于 2015-9-29 15:34 编辑
在开始这篇教程之前,首先要感谢一下阿莫电子论坛的qingwei_cui大神开创了国内contiki在CC2530上移植的先河。
开始之前先介绍一下什么是6LoWpan和Contiki!
一、6LoWpan
6LoWPAN是一种基于IPv6的低速无线个域网标准,即IPv6 over IEEE 802.15.4的通信协议。
6LowPan工作组的研究重点为适配层、路由、报头压缩、分片、IPv6、网络接入和网络管理等技术,目前已提出了适配层技术草案.其他技术还在探讨中。
6LowPan技术底层采用IEEE 802.15.4规定的PHY层和MAC层,网络层采用IPv6协议。由于IPv6中,MAC支持的载荷长度远大干6LowPan底层所能提供的载荷长度,为了实现MAC层与网络层的无缝链接,6Low-Pan工作组建议在网络层和MAC层之间增加一个网络适配层,用来完成包头压缩、分片与重组以及网状路由转发等工作。
说白了,6LowPan就是一种和比zigbee高级一点的,可以将设备接入互联网的一种通信协议。
二、Contiki
Contiki是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传感器网络,由瑞典计算机科学学院(Swedish Institute of Computer Science)的AdamDunkels和他的团队开发。Contiki完全采用C语言开发,可移植性非常好,对硬件的要求极低,能够运行在各种类型的微处理器及电脑上,目前已经移植到8051单片机、MSP430、AVR、ARM、PC机等硬件平台上。Contiki适用于存储器资源十分受限的嵌入式单片机系统,典型的配置下Contiki只占用约2Kbytes的RAM以及40Kbytes的Flash存储器。Contiki是开源的操作系统,适用于BSD协议,即可以任意修改和发布,无需任何版权费用,因此已经应用在许多项目中。 -----------------------------------------------------------------------------------------------------------------------------------------
然后,我们来看一下怎么将Contiki安装到BPI-M2上,然后编译成功,在移植到CC2530上。
1、在BPI-M2上安装Contiki- git clone git://contiki.git.sourceforge.net/gitroot/contiki/contiki
复制代码
2、定制SDCC
CC2530需要SDCC的支持才能完成编译。
先安装SDCC:- sudo apt-get install sdcc
复制代码
然而,我们下载的并不是SDCC的安装包,而是SDCC的源代码,需要我们把它编译成一个SDCC安装包。
在编译之前我们需要做一些准备工作:
安装Boost C++Libraries:- sudo apt-get install libboost-graph-dev
复制代码
安装srecord:- sudo apt-get install srecord
复制代码
然后将目录调至 opt:然后通过SVN下载SDCC:- sudo svn co -r 7100 https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc/
复制代码 这里的7100为SDCC的版本号,建议使用7100的,也可以使用其他版本。
下载完成后可以在 opt/sdcc目录下看到以下文件:
下载完成后需要对SDCC进行配置以支持CC2530,先输入命令:- sudo nano /opt/sdcc/device/lib/incl.mk
复制代码 将最后一行MODELS = small medium large修改为:MODELS = small large huge
接着修改TAGETS配置:- sudo nano /opt/sdcc/device/lib/Makefile.in
复制代码 将TARGETS += models small -mcs-stack-auto替换为TARGETS += models model -mcs-stack-auto
然后执行配置的三个步骤:configure、make、make install ,在这之前,需呀安装一些必要的工具:
安装bison:- sudo apt-get install bison
复制代码 安装flex:- sudo apt-get install flex
复制代码 然后将路径调至 /opt/sdcc:进行配置:进行编译:进行安装:注意:上面的MAKE过程可能需要时间较长,发热较严重,建议大家谨慎操作!
然后进行configure使SDCC支持8051:- sudo ./configure --disable-gbz80-port --disable-z80-port --disable-ds390-port \
- --disable-ds400-port --disable-pic14-port --disable-pic16-port \
- --disable-hc08-port --disable-r2k-port --disable-z180-port \
- --disable-sdcdb --disable-ucsim
复制代码 然后再执行一遍make 和make install:- sudo make
- sudo make install
复制代码 安装完成后可以用:来验证是否安装成功。命令分别对应的是查看SDCC的版本,以及查看SDCC可执行文件的路径。
最后就可以进行编译和下载了,在这里我们可以对Contiki提供的例子进行编译和下载:
编译前将目录调整至 home/contiki/examples/cc2530dk- cd home/contiki/examples/cc2530dk
复制代码 然后随便编译一个目录下的例子文件,在这里我选的是blink-hello.c编译完成后在当前目录下会生成一个blink-hello.hex文件,然后我们将这个文件发到windows上,我是用邮箱发的,使用windows上的smartRF Flash Programmer将hex文件下载到CC2530上,上电以后用USB转串口线将CC2530和电脑相连接,打开电脑上的串口调试软件,波特率设置为115200,如果移植成功的话,在窗口调试软件上将会收到如下信息:
-------------------------------------------------------------------------------------------------------------------------------------
其实这个过程在Linux系统上都是可以实现的,比如在Ubuntu系统上也可以,当然在树莓派上也是可以实现的。除此之外也有基于Ubuntu的Instant Contiki系统,Instant Contiki系统已经集成了Contiki的代码库与开发环境,只需要简单的配置就可以实现上述的功能。 |