1.前言
    【更多contiki和物联网笔记请参考——物联网学习笔记——索引博文】

    【如果您使用的Instant Contiki版本为2.7 请忽略此文,Instant Coniti2.7中已经安装好了SDCC版本为8804,那么使用CC2530就没什么难度了】
图 contiki 2.7中的SDCC版本

本人现阶段为linux小白(2014年4月,学习玩树莓派之后稍微好些,从小白变为了菜鸟),但contiki的开发多数基于linux,这给个人的学习带来非常大的困难,跌跌撞撞好不容易在IAR上实现了点对点通信。但IAR平台开发contiki和linux平台开发contiki毕竟有所不同,所以尝试一下linux平台开发也有必要。

    在学习的过程中遇到了非常多的困难,大概有:
    【困难】6年前购买的笔记本电脑无法安装vmwave player,导致无法安装instant contiki(2014年4月,把该台笔记本安装了Debian,旧电脑当新电脑用)【解决办法】拿了第一个月的工资买了一台新笔记本,成功安装instant contiki,并完成了make和下载程序,总算克服了linux学习的PC关。
    【困难】linux知识匮乏。【解决办法】购买和阅读相关linux图书,其中包括韦东山的图书,浏览了韦东山视频,购买了树莓派并不断”折腾“,逐渐克服了学习linux的心理关。【树莓派学习笔记——索引博文】
    【困难】无线平台选择,纠结于CC2430,CC2530和STM32W。【解决方法】购买图书,阅读资料,从老型号开始学习。最后才发现平台类似,关键了解无线通信的基本概念,例如调制解调,发送和接收FIFO,功率和信道等概念。【CC2530 RF部分使用 ——实现点对点收发 】
    下面就来说说instant contiki中安装SDCC过程,并最终实现make和hex文件的下载。在公司电脑偷偷尝试了几遍,在自己电脑中也尝试了很多遍,出现了很多细节错误,最后才实现了make hello-world。所以说大家学习contiki一定要耐心。
    【硬件平台说明】从淘宝购买某CC2530模块。
2.安装instant contiki
2.1 下载Instant Contiki
    【contiki-2.6/contiki-2.7】
    文件大小约为2.0G,解压后约为5.0G,请下载之前准备好硬盘空间。
2.2 安装VMWare Player
    VMWare Player为免费软件,可以放心使用。
2.3. 进入Instant Contiki.
    请注意,密码为user
2.4 剩余问题
    【未安装SDCC】
    Instant contiki其实就是ubuntu,在ubuntu的基础上安装了cooja和msp430的编译环境,可以说instant contiki是一个完善的开发环境,但是并没有安装SDCC,而CC2530正需要SDCC的支持才可以完成编译。
    【无法设置共享目录】
    需要解决共享目录问题,否则instant contiki的make生成的hex文件无法通过smartRF Flash Programmer下载至目标板,为了解决这个问题需要安装vmware-tools。(或者设置共享目录,通过复制粘贴也可以实现”共享“)
3.定制SDCC
    在开始定制SDCC之前,有以下几点需要说明,这也是上文提到的细节错误。如果不熟悉linux中从源代码安装软件,可以尝试从源代码安装python,源代码安装apache,练习两次那么安装SDCC就熟练多了。
    【1】使用sudo apt-get install sdcc指令安装SDCC,在instant contiki中无法完成cc2530的编译,所以需要下载SDCC的源代码进行编译,这个过程本质为一个定制SDCC的过程。
    【2】下载的并不是安装包,而是SDCC的源代码。简单的说这些SDCC的源代码可以编译成一个SDCC安装包。
    【3】关于SDCC的版本编号,建议安装7100版本,虽然最新的版本为8447,但是实际安装的过程存在问题。
            contiki-wiki中说明,SDCC的版本7102到8719存在问题,最新可用的版本为8737(截止2014年4月)。
    【4】关于文件目录。在下面的具体过程中需要多次切换文件目录,一般的情况下第三方软件下载于opt目录。
3.1 必要的前提准备
3.1.1 安装Boost C++ Libraries
    指令:sudo apt-get install libboost-graph-dev
3.1.2 安装srecord 

    指令:sudo apt-get install srecord
    以上两个部分安装的过程中都有可能出现下载速度非常缓慢的情况,如果您今天心情好,可以耐心等待;如果您今天心情不好,请改天再试试。如果你实在无法忍受请修改ubuntu软件源。
3.2 下载SDCC源代码
3.2.1 调整目录至opt
    在下载SDCC源代码之前,最好把目录调整为opt。(SDCC源代码包随便您放在哪里目录)
    指令:cd /opt
3.2.2 通过SVN命令下载SDCC
    接着使用svn命令获得位于sourceforge的sdcc源代码,其中7100为版本号,建议使用该版本
    指令:sudo svn co -r 7100 https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc/
    【特别注意】SDCC的版本7102到8719存在问题,最新可用的版本为8737(截止2014年4月)
    【技巧提示】虽然在控制台中无法使用ctrl-c和ctrl-v,但是可以使用右击+paste,这样可以加快输入的速度并避免错误。
    【技巧提示】SVN为版本库管理工具,相关的工具还包括HG和GIT。
    下载完之后,可以在opt/sdcc目录下看到以下文件:

图1 opt/sdcc文件夹内容

3.3 配置SDCC
    需要修改两处配置文件,个人喜欢使用gedit。
3.3.1 修改MODELS配置
    指令:sudo gedit /opt/sdcc/device/lib/incl.mk
    将最后一行
    MODELS = small medium large
    替换为
    MODELS = small large huge
    替换结果如图所示:

图2 修改iMODELS
3.3.2 修改TAGETS配置
    指令:sudo gedit /opt/sdcc/device/lib/incl.mk
    将某行
    TARGETS += models small-mcs51-stack-auto
    替换为
    TARGETS += models model-mcs51-stack-auto
    【技巧提示】如果找不到该行可以通过search搜索以下。
    替换结果如图所示:
图3 修改TAGETS
3.4 配置三步曲——configure、make、make install
    开始之前需要使用cd命令把路径转移至opt/sdcc,以便进行configure和make。在开始这三部曲之前,最好先对这三个过程有所了解。(以下3点来自百度知道)
    【1】 配置sudo ./configure 
./configure命令就是执行当前目录的名为configure的脚本,主要的作用是对即将安装的软件进行配置。
    【2】编译sudo make
make的基本用处是自动根据makefile里的指令来编译源文件。
    【3】 安装sudo make install
make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径——默认/usr/local/bin
3.4.1 configure
    该步骤的主要作用使得SDCC仅支持8051,而禁止对其他MCU的支持。输入以下指令,由于指令较长建议使用paste。
指令:  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
    由于指令较长,使用了'\"实现续行功能。”./“代表当前路径,configure为一个可执行文件,后面的若干disable为设置参数,即静止其他类型的MCU。
3.4.2 make
输入指令:sudo make
3.4.3 make install
指令:sudo make install
3.5 验证安装
    安装完成需要验证以下安装是否正确,可以回到home目录,输入以下命令:
    指令:sdcc -v
    查看SDCC版本编号,如果SVN操作时输入的版本号为7100,此时查看到的版本也应为7100。
    指令:which sdcc
    查看SDCC该可执行文件路径。该路径应该为/usr/local/bin/sdcc

图4 检查SDCC是否安装成功
4.执行三部曲——编译、下载和运行
    如果SDCC安装成功,那么contiki就会变得非常简单。和IAR环境下开发一样,首先需要编译工程以便生成hex文件,然后使用smartRF Flash Programmer下载该hex文件至目标板,之后便可通过串口调试助手等工具观察程序运行情况。
4.1 编译
    在编译之前,需要使用cd命令调整目录至/contiki/example/cc2530dk
    cd ~/contiki/examples/cc2530dk
    【技巧提示】 ''~"为home,其实为/home/user。(2014年4月,我当时真的纠结好久,的确不明白~波浪线的用处,好囧)
    接着便是编译文件,例如编译blink-hello
    make blink-hello
    初次编译时间可能比较长,下图为编译结果和生成的hex文件。

图5 编译结果

图6 生成HEX结果
4.2 下载
    该步骤可以回到windows中,如果设置共享目录可以把hex文件转移至共享目录,若没有设置共享目录,可以直接复制hex文件,然后在windows某文件中粘贴。PS:虽然复制粘贴的方式如此简单,但是刚上手linux的时候连这个都不敢尝试,总想着通过某种指令完成操作,例如复制文件,粘贴文件,解压缩文件。后来发现这些操作在ubuntu中和windows中几乎是一样的,非常方便。
    接着便可通过smartRF Flash Programmer下载hex文件,操作如下图所示:
图7 下载HEX至目标板
4.3 运行
    通过串口调试助手观察结果。简单的说,blink-hello.c中定义了两个任务,一个任务每4S运行一次,另一任务每1S运行一次,两个任务均通过串口打印数据。该例子主要演示contiki中protothread机制如何实现任务的并发(或者达到类似并发的效果)。运行结果如下图所示,代码会在以后的博文中分析。请注意,波特率需要设定为115200-8-N-1。
图8 运行结果
5.总结
    其实contiki的实践过程非常简单,如果按照本文下载安装SDCC的话需要不到2个小时的时间,下载一个例子也不会超过5分钟。现在看看这些过程都非常简单,但是却前后花费了1年多的时间。回想起自己刚刚入门学习ARM,也经历了前期憧憬与畏惧,买书学习,购置开发板,迷茫于IDE和仿真器,写代码调试等过程,到最终熟练使用差不多也花费了1年的时间。现在回过头来看看学习contiki和STM32都是”美妙“的过程,先要有想法接着就是不气馁地不断实践。
    如果有关于contiki的问题,可以邮件xukai19871105@126.com

Instant Contiki相关推荐

  1. Instant Contiki 安装笔记——SDCC和CC2530

    1.前言     [更多contiki和物联网笔记请参考--物联网学习笔记--索引博文]     [如果您使用的Instant Contiki版本为2.7 请忽略此文,Instant Coniti2. ...

  2. 实操 VM Player和Instant Contiki安装

    一.VMWare Player 精简版VMware Workstation VMware Player最大的不同之处就是省去了制作虚拟机的功能,就像其名字一样,它只是一个系统"播放器&quo ...

  3. 物联网操作系统 - Contiki

    What is Contiki? Contiki is an open source operating system for the Internet of Things. Contiki conn ...

  4. contiki STM32移植

    1.contiki简介 [2016年6月更新 强烈建议各位使用arm-none-eabi-gcc工具链,推荐在Instant Contiki中开发Contiki应用,不推荐使用IAR] "C ...

  5. contiki学习笔记 clock部分

    1.前言     contiki是一款小型开源,易于移植的多任务操作系统,专门为无线传感网设计,适合内存受限制的网络系统.国内的研究和应用还处于初级阶段,甚至还不知道这个contiki如何发音,也没有 ...

  6. contiki 学习笔记 leds实现部分

    1.前言     contiki是一款小型开源,易于移植的多任务操作系统,专门为无线传感网设计,适合内存受限制的网络系统.国内的研究和应用还处于初级阶段,甚至还不知道这个contiki如何发音,也没有 ...

  7. contiki 参考

    文章出处 http://www.amobbs.com/thread-5515866-1-1.html 搞zigbee算是国内第一批了,很早就知道6lowpan.用cc2430时,从研究http://w ...

  8. contiki学习笔记之leds

    1.介绍 不断学习,不断忘记,总感觉学了就忘,结果啥都没剩下.所以有写下来的想法了. contiki 一个非常小的操作系统,尤其是对内存有优化.操作系统完全用C语言编写,可移植性非常好.具体可以去co ...

  9. contiki-6lowpan开发环境之搭建

    安装官方提供的ubuntu开发环境 Instant Contiki3.0 1.下载地址:https://sourceforge.net/projects/contiki/files/Instant%2 ...

最新文章

  1. php idwork,idwork.php
  2. RocketMQ 4.5.1 环境搭建
  3. SSO单点登录学习总结(2)——基于Cookie+fliter单点登录实例
  4. 多项式加减 List
  5. 百度输入法、QQ 浏览器竟都在窃取用户隐私?
  6. KM算法--带权二分匹配
  7. 父游标、子游标及共享游标
  8. 内容编辑器在MOSS中的应用
  9. 线程的优先级(详细)
  10. 网络推广100种方法_免费在线推广业务的6种方法
  11. matlab制作有值显示的条形统计图
  12. msxml3.dll 错误 '800c0005'具体解决办法详解
  13. 大学网课查题公众号 查题公众号搭建 对接题库
  14. Python学习之道-串口Modbus开发
  15. 退出计算机控制如何恢复,在您退出大势至U盘禁用软件、电脑U口屏蔽软件之后如何取消U盘写保护功能、恢复向U盘复制文件的功能?...
  16. 智能微电网的核心技术
  17. C. The Intriguing Obsession(组合数学)
  18. 直播人数的统计(一)
  19. 更改Itunes备份路径-最简便方法(win7)
  20. 使用PowerShell管理员身份激活Windows 10

热门文章

  1. validateNewTexture:89: failed assertion `BytesPerRow of a buffer-backed texture with pixelFormat
  2. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8)
  3. 腾讯AI八篇论文入选顶级医学影像会议MICCAI ,涉及病理癌症图像分类等
  4. 跳棋最少移动次数 java,跳棋
  5. CSP难度的经典题目/有趣的思维题选讲(一)
  6. java通过itext方法往pdf中插入图片(交互式pdf插入图片无法显示)
  7. AI 边缘计算平台 - BeagleBone AI 64 简介
  8. (附源码)springboot校园兼职系统 毕业设计 031122
  9. Emacs-206-Windows上实现org-pomodoro的声音提示播放
  10. win10设备管理没有android,win10无法识别安卓手机usb设备怎么办_win10连接安卓设备无法识别的修复方法-爱纯净...