本文参考:
http://blog.csdn.net/xukai871105/article/details/9204101
 
1.基本概念
 
1) instant contikit    Ubuntu contiki linux 安装包
 
2) SDCC   8051 C 交叉编译器
 
2.安装instant contiki
2.1 下载Instant Contiki
    文件大小约为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 smake 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结果
 如果编译通不过 设置环境变量
用 export 命令确认你的 PATH 是否包含以下目录(太重要了, 这问题搞了我几天)
没有的话 在  /etc/profile  最后一行加上如下语句
export PATH="/usr/local/sdcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
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 运行结果
 

6LowPan 开发之开山篇的更多相关文章

  1. 【DevOps】团队敏捷开发系列--开山篇

    随着软件发布迭代的频率越来越高,传统的「瀑布型」(开发-测试-发布)模式已经不能满足快速交付的需求.2009 年左右 DevOps 应运而生,开发运维一体化,通过自动化工具与流程让整个软件开发构建.测 ...

  2. Struts2开山篇【引入Struts、自定义MyStruts框架】

    前言 这是Strtus的开山篇,主要是引入struts框架-为什么要引入struts,引入struts的好处是什么-. 为什么要引入struts? 首先,在讲解struts之前,我们来看看我们以前写的 ...

  3. WCF开山篇__图片传输

    WCF开山篇__图片传输   一.  简介 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序接口,可以翻译为Windows通讯接口,它是. ...

  4. GoLang 开山篇

    GoLang 开山篇 1.Golang 的学习方向 Go语言,我们可以简单的写成Golang. 2.GoLang 的应用领域 2.1 区块链的应用开发 2.2 后台的服务应用 2.3 云计算/云服务后 ...

  5. [高并发]Java高并发编程系列开山篇--线程实现

    Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发. 引用 多线程比多任务更加有挑战.多线程是在同一个程序内部并行执行,因此会对相 ...

  6. 【转载】Android Metro风格的Launcher开发系列第二篇

    前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如 ...

  7. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  8. .Net魔法堂:史上最全的ActiveX开发教程——部署篇

    一.前言 接<.Net魔法堂:史上最全的ActiveX开发教程——发布篇>,后我们继续来部署吧! 二. 挽起衣袖来部署   ActiveX的部署其实就是客户端安装ActiveX组件,对未签 ...

  9. .Net魔法堂:史上最全的ActiveX开发教程——发布篇

    一. 前言 接着上一篇<.Net魔法堂:史上最全的ActiveX开发教程——开发篇>,本篇讲述如何发布我们的ActiveX. 二.废话少讲,马上看步骤! 1. 打包  C#开发的Activ ...

随机推荐

  1. springMvc REST 请求和响应

    前言: 突然怎么也想不起来  springMvc REST 请求的返回  类型了!   (尴尬+究竟)  然后本着 方便的想法 百度了一下 发现了个问题,大家在写      springMvc RES ...

  2. log4j和logback

    Log4j和logback Log4j简介 Log4j(log for java) 1.是Apache的一个开源项目: 2.是使用Java语言编写的一个日志框架: 3.用于记录程序中的日志信息: 4. ...

  3. springboot数据库操作及事物管理操作例子

    一.配置文件 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifa ...

  4. spark streaming之 windowDuration、slideDuration、batchDuration​

    spark streaming 不同于sotm,是一种准实时处理系统.storm 中,把批处理看错是时间教程的实时处理.而在spark streaming中,则反过来,把实时处理看作为时间极小的批处理 ...

  5. arm中的几个公式的比较

    串口 UART0.UBRDIVO=0X4d; 设置波特率 12000000/9600/16 -1=77化为16进制就是4dADC AD converter freq =50MHZ/(49+1) =1M ...

  6. spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClassNameHandlerMapping

    spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClas ...

  7. poj2007极角排序

    裸的极角排序,但是要把0,0放在第一个(话说这题题目真是巨长,废话也多...) #include<map> #include<set> #include<cmath> ...

  8. HDU-2196-树形dp/计算树上固定起点的最长路

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. 闲话__stdcall, __cdecl, __fastcall出现的历史背景以及各自解决的问题

    可以认为最先由微软搞出来了__stdcall, 其实就是和WINAPI的声明是一样的,入栈顺序是从右到左,函数返回时,会进行出栈操作. PASCAL语言是非常古老的编程语言,在C语言之前,因此在当时的 ...

  10. IOS-CocoaPods的详细安装与使用

    1.为什么需要CocoaPods 在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson.AFNetworking.Reachability等等.使用这些库的时候通常需要: 下载开源库的 ...