TinyOS 到 cc2430 平台的移植
移植前,我们需要准备的东西有:
硬件:CC2430 节点,仿真器
软件:Cygwin,Keil,TinyOS 2.x,一些相关的环境设置包,SmartRF04 Flash Programmer
TinyOS 2.x : 请到 http://tinyos8051wg.sourceforge.net/download 这里下载最新版本 (本文是
根据 TinyOS8051wg-0.1pre4.tgz 26 Oct 2008 这个版本进行的介绍)
Keil:请安装好,记住一定要安装没有 2K 限制的版本。
软件安装:
0、安装 Keil ——Keil 是现在单片机开发必备的软件了,直接点击下一步安装好就可以了。
1、安装 Java 1.5 JDK
下载地址 http://java.sun.com
注:Java 1.6 的版本也可以,运行无错,可能会造成示例中的 Java 例程无法编译。若用其
他独立的串口调试工具,可以选择 java1.6。请根据自己的情况选择版本
2、安装 Cygwin
请安装 TinyOS 推荐使用的版本。不少人在后面遇到各种诡异的问题就是因为 Cygwin 安装不
当,缺少一些必要的组件。
你可以去:http://cone.informatik.uni-freiburg.de/people/aslam/cygwin-files.zip
下载这个版本的 Cygwin。
如果链接失效,请前往 TinyOS 官方的 wiki 寻找其推荐的 Cygwin 版本:
http://docs.tinyos.net/index.php/Installing_TinyOS_2.0.2#Manual_installation_on
_your_host_OS_with_RPMs
安装过程很简单,一路 next 下去就 OK,不过请记住你安装的位置。本文默认是安装到 C
盘下。
3、下载 TinyOS 开发必备的编译工具的安装包(一共 4 个)
NesC 编译工具:nesc-1.3.0-1.cygwin.i386.rpm
TinyOS 相关工具:
tinyos-deputy-1.1-1.cygwin.i386.rpm
tinyos-tools-1.3.0-1.cygwin.i386.rpm
tinyos-2.1.0-2.cygwin.noarch.rpm
注:以上皆包含链接地址。
4、启动 Cygwin,并在 Cygwin 下安装上面下载好的 rpm 包
双击图标即可启动 Cygwin。 正常启动后应该会有”$”标识符和光标。
我们要安装 rpm 包,就要首先切换到 rpm 包存放的目录下。如果你熟悉 Linux,那么自己
安装就行。如果不是的话,按照我所说的一步一步来。
1)首先找到你安装 Cygwin 的目录,如果是默认安装的话就是 C:\Cygwin
2)进入目录,发现里面有/bin /var /etc /opt /home 等文件夹,Linux 系统下的根目录就是这
个样子啦。
我们双击 home 文件夹,发现里面又有另外一个文件夹,起的是你安装时设置的用户名称,
假设你叫做 quake(请替换为你自己的用户名)。现在进入 C:\Cygwin\home\quake 下面
好了,当我们一启动 Cygwin,程序的终端窗口默认也是停留在/home/quake 下面。下面我
们需要把刚刚下载的 4 个 rpm 包拷贝到 C:\Cygwin\home\quake 这个文件夹下面。
之后在 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
(1)将下载的 Tinyos 文件“TinyOS8051wg-0.1pre4.tgz”放到/opt 目录下。注意检查此时该目
录下应该有一个叫“tinyos-2.x”的目录,如果没有前面做的有问题,而且后面的操作几乎肯定
会出错。
PS:这个文件夹下放置了一些编译规则文件,如:\opt\tinyos-2.x\support\make\Makerules 文件。
(2)解压“TinyOS8051wg-0.1pre4.tgz”文件
tar –xvzf TinyOS8051wg-0.1pre4.tgz ,有些文章说用 WinRar 就可以,但可能会出现报错,
保险起见,最好用前面这个 tar 命令。最后在/opt 下生成一个“tinyos-2.x-contrib”目录
(3)设置编译环境
cd tinyos-2.x-contrib
ls (出现一个 diku 文件夹)
source diku/env
说明:diku 文件夹下面有个 env 配置文件,我们通过 source 命令加载下,这样后面编译的
时候编译器就知道我们要使用什么样的配置去编译了。
注意:每次重新启动 cygwin 后如果要编译,需要运行此命令
(source /opt/tinyos-2.x-contrib/diku/env)
(4)编译工程文件(以 BlinkNoTimerTask 为例)
cd /diku/common/apps/BlinkNoTimerTask
make cc2430em
可能出现下面错误:
cd build/cc2430em && ./startup.bat
/bin/sh: ./startup.bat: Permission denied
意思是权限不够,解决办法是:进入到 cc2430em 目录下, chmod 777 startup.bat,然后重新
编译。
7.烧写
(1)下载并安装 SmartRF04 Flash Programmer 这个软件,
(2)电脑 USB 跟仿真器连接,仿真器跟芯片连接好后,提示安装驱动,自动安装好后即可
以用了。
(3)打开 chipcon 下的 SmartRF04 Flash Programer,设置如下:
注意用 System-on-Chip => Flash iage 选择刚才编译好的 app.hex 文件 =>点击 Read IEEE,然
后 Write IEEE =>勾选 Retain IEEE address when reprogramming => Action 中选择第二个
Erase,program and v… =>最后点击 Perform actions,出现 Erase,program and verify OK。表示
成功了,而且此时芯片上的一个小灯在不停的快速闪烁。
注:所要烧写的.hex 文件位于所编译文件的 build/cc2430em 内。
到这一步,算是大功告成了!
备注:以上为在 WINDOWS 平台下的安装。在 Linux 上面的安装请参考以下网页中的内容:
http://docs.tinyos.net/tinywiki/index.php/Running_a_XubunTOS_Virtual_Machine_Im
age_in_VMware_Player
CC2430 平台上面的移植,简要的入门信息可以从 http://tinyos8051wg.net/中获得,
TinyOS 系统的使用及 nesC 语言的学习,从
http://docs.tinyos.net/tinywiki/index.php/Main_Page 中可获取大量信息。