CC2430单片机的TinyOS移植(windows平台)

发布者:VS821001最新更新时间:2015-08-17 来源: eefocus关键字:CC2430  单片机  TinyOS移植  windows平台 手机看文章 扫描二维码
随时随地手机看文章
CC2430单片机的TinyOS移植(windows平台)_柘林的石老人_新浪博客

注:如果对CC2430和TinyOS不甚了解,请跳过这篇文章

本文发表在PSYcHic

原文地址为:如需转载请保留这个网址 谢谢!

现在国内做WSN研究的人越来越多了。在硬件方面,我们国内不像国外那样拥有很多硬件开发平台可以供我们选择。而且,crossbow的专业开发平台价格非常昂贵。不过随着越来越多的公司开始关注WSN,zigbee,我们现在还是有可能在千元之内就搭建出来一套自己的无线传感器开发系统。

CC2430是现在较为理想的硬件平台。在国内,大多数人还是使用IAR结合z-stack协议栈(或者是变种的xx龙版)进行开发。z-stack协议栈开发比较简便,很适合新手使用。但是如果你是搞学术研究,需要深入研究组网及相关算法开发的话,那么UC Berkely的TinyOS才是最佳的选择。(我相信聪明的人不会去淌z-stack的OSAL的浑水吧….)

很多人已经成功将TinyOS移植到了CC2430上了。但是目前在网上似乎找不到有比较详细操作步骤的文章。那么我来给大家科普下吧:)

—-

首先,我们要往CC2430上移植的是TinyOS 2.x版本。如果你英文好的话直接前往下面这里查看相关资料

TinyOS2.x for 8051目前支持三种编译器——Keil,IAR,sdcc 我们采用的编译器是Keil——这个大家都比较熟悉。TinyOS 2.x 是必须在Linux平台下才能工作的,而Keil则是一个windows下的软件,所以我们必须要先安装一个在windows下面模拟linux的软件——Cygwin。

硬件:CC2430节点,仿真器

软件:Cygwin,Keil,TinyOS 2.x,一些相关的环境设置包,SmartRF04 Flash Programmer

硬件就是原来在IAR下能正常使用的CC2430开发硬件就OK(不管是无线龙的,华凡的,微骨的都行)

软件我需要说下:

TinyOS 2.x : 请到这里下载最新版本 (本文是根据 26 Oct 2008 这个版本进行的介绍)

Keil:请安装好,记住一定要安装没有2K限制的版本。

0、安装Keil ——Keil是现在单片机开发必备的软件了,网上资料一大堆,我就省略了。自己安装好就可以了。

1、安装Java 1.5 JDK

下载地址

如果你做Java开发,以前安装过的话就可以跳过这一步了。

2、安装Cygwin

请安装TinyOS推荐使用的版本。不少人在后面遇到各种诡异的问题就是因为Cygwin安装不当,缺少一些必要的组件。

你可以去:

下载这个版本的Cygwin。

如果链接失效,请前往TinyOS官方的wiki寻找其推荐的Cygwin版本:

安装过程很简单,一路next下去就OK,不过请记住你安装的位置。本文默认是安装到C盘下。

3、下载TinyOS开发必备的编译工具的安装包(一共4个)

NesC编译工具:

TinyOS相关工具:

 

 

 

4、启动Cygwin,并在Cygwin下安装上面下载好的rpm包

双击图标即可启动Cygwin。 正常启动后应该会有”$”标识符和光标。

我们要安装rpm包,就要首先切换到rpm包存放的目录下。如果你熟悉Linux,那么自己安装就行。如果不是的话,按照我所说的一步一步来。

1)首先找到你安装Cygwin的目录,如果是默认安装的话就是C:Cygwin

2)进入目录,发现里面有/bin /var /etc /opt /home等文件夹,Linux系统下的根目录就是这个样子啦。

我们双击home文件夹,发现里面又有另外一个文件夹,起的是你安装时设置的用户名称,假设你叫做quake(请替换为你自己的用户名)。现在进入C:Cygwinhomequake下面

好了,当我们一启动Cygwin,程序的终端窗口默认也是停留在/home/quake下面。下面我们需要把刚刚下载的4个rpm包拷贝到C:Cygwinhomequake这个文件夹下面。

之后在Cygwin终端下输入

ls

按回车后,你会发现终端的窗口里显示了你刚刚拷过去的rpm包的名字。(更多Linux bash命令请参考Linux资料)

下面需要一个一个安装

输入

rpm -ivh nesc-1.3.0-1.cygwin.i386.rpm
rpm -ivh tinyos-tools-1.3.0-1.cygwin.i386.rpm
rpm -ivh tinyos-deputy-1.1-1.cygwin.i386.rpm
rpm -ivh tinyos-2.1.0-1.cygwin.noarch.rpm

每输入一行,按一次回车,我们就把对应的rpm包给安装好啦。把4个rpm包都安装好后就可以进行下一步了。

5、安装TinyOS 2.x

将下载好的TinyOS 2.x的安装包给解压缩(如TinyOS8051wg-0.1pre4.tgz),解压缩用winrar就可以。

将解压好的tinyos-2.x-contrib这个文件夹拷贝到C:Cygwinopt 下

好了。我们已经把TinyOS的开发环境基本搭建好了。

下面我们实际编译个程序吧!

首先在Cygwin下面输入

cd /opt

ls

你可以看到opt目录下有你刚刚拷贝过去的tinyos-2.x-contrib文件夹,继续输入

cd tinyos-2.x-contrib/

我们查看下该目录下面有什么

ls

发现有个diku文件夹

下面输入

source diku/env

说明:diku文件夹下面有个env配置文件,我们通过source 命令加载下,这样后面编译的时候编译器就知道我们要使用什么样的配置去编译了。关于env配置文件的具体内容稍后介绍。我们用Keil编译,保持其默认状态就可以了。

之后我们就可以编译了,所有的例子在tinyos-2.x-contrib/diku/common/apps/下面,我们以BlinkNoTimerTask为例

输入

cd /diku/common/apps/BlinkNoTimerTask

make cc2430em

如果一切正常的话,你会看到:

GENERATING INTEL HEX FILE: app.hex
compiled BlinkNoTimerTaskAppC to a cc2430em binary
Code size of app.o
MODULE INFORMATION:   STATIC OVERLAYABLE
CODE SIZE        =    635    —-
CONSTANT SIZE    =   —-    —-
XDATA SIZE       =      4       9
PDATA SIZE       =   —-    —-
DATA SIZE        =   —-    —-
IDATA SIZE       =   —-    —-
BIT SIZE         =   —-    —-
Total sizes
Program Size: data=9.0 xdata=10 const=0 code=694

这段话,这表明你已经成功了!~

好了,下面我们看看TinyOS生成了什么吧~

C:cygwinopt inyos-2.x-contribdikucommonappsBlinkNoTimerTaskuildcc2430em

这个目录下面

我们发现了其编译生成的app.hex文件。现在只要把这个文件烧录进单片机,我们就大功告成了!

我们安装下SmartRF04 Flash Programmer这个软件,这个软件一般购买仿真器的话都会在附送的光盘里面赠送,如果没有的话网上搜索下吧,实在没有给我发信索取下。

之后我们插好仿真器,打开SmartRF04 Flash Programmer这个软件,在system-on-chip的选项卡下

将hex文件选择为我们刚刚编译好的那个,之后选择“Perform actions”就可以顺利烧写了:)

好了,如果一切正常,那么恭喜你已经将TinyOS成功移植到了CC2430上了。我们成功摆脱了IAR不断升级的困扰和Z-stack,已经进入到了TinyOS的世界了。


关键字:CC2430  单片机  TinyOS移植  windows平台 引用地址:CC2430单片机的TinyOS移植(windows平台)

上一篇:搭建S3C6410嵌入式linux平台
下一篇:Tinyos 2.x在cc2430上的移植成功

推荐阅读最新更新时间:2024-03-16 14:28

MSP430F5438A单片机基于SPI的FatFs移植笔记
不管移植什么程序,最重要的就是, 不要自以为是 一定要先查资料,花一周查资料,查到查不到为止,否则你编了一半的程序再参考别人的,直接后果是你下不了决心推翻重来 1. FatFs移植要点: 相信能看到这个博客的都知道FatFs是什么了,目前应该是0.11版本,我就不多废话了,一个开源的文件系统,不全面的说,作用就是让你编程序操作写SD卡的内容能够被PC机读出来(有不对的话懂的大神请指正) 它的好处就是只要写底层的几个硬件驱动函数就OK了,上层的函数都已经写好了,清楚格式直接调用就可以了。 所谓“硬件驱动”函数,就是告诉单片机,完成一个动作(比如初始化)具体需要哪个IO口怎样变化,哪个IO口该高,哪个IO口该低,通信端口选哪个
[单片机]
Holtek推出HT68F20-1 (Enhanced) MCU
Holtek新推出I/O型的HT68F20-1及A/D型的HT66F20-1,主要是SRAM 64 Bytes不需切换Bank,Program Memory为1K x 16、SRAM 64 x8、内建32 x8 Data EEPROM,除Crystal、ERC Mode外并内建精准Internal RC Oscillator,提供4/8/12MHz及32kHz四种频率。具有4个Software SCOM输出,可直接驱动小点数LCD Panel,通讯接口并具有SPI / I2C 等多种选择。 HT68F20-1、HT66F20-1皆内建Holtek全新设计的Timer Module,可有Capture、Compare、Timer/
[单片机]
单片机选型有诀窍:根据数值选择低功耗MCU
根据数据手册列出的电流消耗规格来比较和选择低功耗 单片机 (MCU)是一项比较困难的任务。在大多数情况下,选择MCU的开发人员会先初步看看数据手册第一页,作为快速获得器件信息的参考点,其中包括外设、运行速度、封装信息、GPIO引脚数量和供电特性等。这种方法对于获得器件的整体性能很有效,但是在评估低功耗特性时却不实用。 为了对低功耗操作有全面了解,开发人员还要考虑电流消耗、状态保持、唤醒时间、唤醒源,以及低功耗模式下可运行的外设等。开发人员在相同操作模式下对比同类低功耗MCU,以获得客观的逐项比较结果。另外,易用的评估工具也非常重要,因为能评估整体系统功耗的额外功能和外设,使工程师的工作更加容易。 MCU供应商通常会在数
[单片机]
<font color='red'>单片机</font>选型有诀窍:根据数值选择低功耗<font color='red'>MCU</font>
单片机:IIC总线通信
一、IIC总线通信 1、简介: IIC 即Inter-Integrated Circuit(集成电路总线),I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 2、常用的串行扩展总线有: (1)、I2C (Inter IC BUS)总线 (2)、单总线(1-WIRE BUS) (3)、SPI(Serial Peripheral Interface)总线等。 3、IIC总线电路接法 I2C总线通过上
[单片机]
单片机双机点对点通信的主机程序
单片机 双机点对点通信的主机部分程序 #ifndef __P2P_M_C__ #define __P2P_M_C__ #include AT89X51.H #include STRING.H #define __MAX_LEN_ 64 // 数据最大长度 #define _MHz_ 11 // 设置 单片机 使用的晶振频率(11.0592MHz) /* 以下为程序协议中使用的握手信号 */ #define __RDY_ 0x06 // 主机开始通信时发送的呼叫信号 #define __BUSY_ 0x15 // 从机忙应答 #define __OK_ 0x00 // 从机准备好 #define __SUCC_ 0
[单片机]
基于单片机的喷墨打印机控制技术
单片机应用系统中最常用的输出打印设备是微型打印机,例如TP系列、UP系列打印机等,对它们的控制技术也较为成熟。但是近年来随着通用打印机的广泛使用,微型打印机的缺点也日益明显:一是通用性及互换性不强;二是打印输出文档的幅面过小,不便于装订及存档。而通用打印机都配有国际标准并行接口(CENTRONICS)和串行接口(RS232/422),纸张大小可任意选择。这些特点是微型打印机所无法抗衡的。因此在越来越多的单片机应用系统中逐渐趋向于使用通用打印机作为打印输出设备。本文介绍了以MCS-51系列单片机为核心,通过CENTRONICS国际标准8位并行接口控制驱动HP-DJ 600/800系列喷墨打印机的硬件接口电路没计方法及控制程序设计方法
[工业控制]
单片机串行数据采集传输模块的设计
在微机测控系统中,经常要用到A/D转换。常用的方法是扩展一块或多块A/D采集卡。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以GNS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器构成的采样模块,该模块的采样数据由单片机串口经电平转换后送到上位机(IBM PC兼容机)的串口COM1或COM2,形成一种串行数据采集串行数据传输的方式。经实践调试证实:该模块功耗低、采样精度高、可靠性好、接口简便,有一定实用价值。 1 主要器件介绍 1.1 TLC2543串行A/D转换器 模块采用TI公司的TLC2543 12位串行A/D转换器,使用开关电容逐次逼近技术
[单片机]
<font color='red'>单片机</font>串行数据采集传输模块的设计
PIC单片机学习 TMR2
TMR2的宽度与TMR0一样的也是8位,一般伴随着CCP模块和PWM功能一起出现。 8位宽度的TMR2定时器有一个前置预分频器和后置预分频器,同时还有一个周期控制寄存器与它配合一起实现针对单片机指令周期的计数。 TMR2只能作为定时器使用,无法对外部输入的脉冲作计数。 TMR2定时器与TMR0相比,最大的区别是TMR2有一个周期的控制寄存器PR2。PR2寄存器可以设定定时器的上限值。只要当TMR2的计数值和PR2的设定值相等时就会自动归0,同时产生一个中断。 当TMR2的计数值与PR2寄存器中所设定的数值相一致后,一睛个计数脉冲,的到来应会让TMR2溢出归0,注意:一个计数溢出归0后,并不一定产即产生TMR2I
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved