最近一直在弄wsn的定位,用jennic不能直接得到RSSI,用z-stack协议栈总是在IAR7.20H上出问题,而且我看好多国外做的都是用Tinyos这个东西,很多论文也是基于这个。所以一直在弄,弄了很久没弄出来,今天突然又想弄一下,结果弄出来了,于是马上写成了此文,一方面以便于以后重做时提供便利,另一方面给和我遇到同样问题的朋友一个参考和借鉴。
今天我们要做的事如下:
目的:将Tinyos2.x移植到cc2430中
流程:在windows下建立cygwin平台,并搭建Tinyos的编译环境,然后将基于Tinyos的应用程序编译成hex文件,通过仿真器下载到cc2430片子上运行。
原材料:硬件(cc2430节点,仿真器等)、软件(Cygwin,Keil,TinyOS 2.x,编译环境配置软件包,SmartRF04 Flash Programer等)。注意:硬件是原来在IAR下能正常使用的CC2430开发硬件就OK(不管是无线龙的,华凡的,微骨的都行)
声明:
一.里面很多东西我借鉴了网上的资料,并写在后面的参考文献中。并对一些内容进行了修改和强调,以及我遇到的一些问题的解决方法。
二.如果转载请注明出处:http://ht2411.cublog.cn ,谢谢
= = = = = = = = = = = = = = = = = = = = = =
1.安装Keil (Keil uVersion3)
(1)注意要下载一个没有2K限制的版本,给一个连接如下:
(2)直接点击“Keil C51 V8.09 汉化破解版\Keil C51 V8.09 汉化破解版\Keil C51 V8.09 汉化\1安装”下的安装,完成后主要要进行注册,注册参考有个注册文件夹中的注册说明就行了。
(3)注意完成后在C:\Keil\C51\BIN目录下应该有: C51.exe, BL51.EXE, OH51.EXE, LX51.exe, Ohx51.exe等文件,在后面进行Tinyos工程的编译时会用到这些文件。如果没有,后面最后的时候几乎肯定会出错。
2.安装java 1.5 JDK
我开始用1.6了的,反正一直没成功,不知道是不是这个原因。最好就用1.5这个版本吧。安装完了在命令行中:java –verson ,出现“java version “1.5.0”表示是1.5版本了。
3.安装Cygwin
(1)下载Cygwin,我是在这里下载的:http://docs.tinyos.net/index.php/Installing_TinyOS_2.0.2#Manual_installation_on_your_host_OS_with_RPMs ,在Setp 2: Install Cygwin中第一步有个cygwin-files.zip,点击即可下载。
这个地址好像也可以下载:http://cone.informatik.uni-freiburg.de/people/aslam/cygwin-files.zip
(2)安装时先解压下载的cygwin,点击setup.exe即可,默认安装在c盘下。选项基本上不用变,都是默认选项:”install from Local Directory”->Root Directory: c:\cygwin, Install for: All Users, Default Text file type: Unix/Binary->当问到”Select local Package directory”时,选择自己解压的cygwin目录即可,如:“D:/cygwin-files”,最后等一会时间即可完成安装。
(3)启动桌面上的Cygwin快捷图标,cygwin第一次运行会设置一些东西,并创建一个home目录,里面创建了一个用户,名为windows系统的用户名。
注意:此时自己在cygwin根目录下创建一个opt目录,后面会用到。(如果你安装cygwin后有这个目录就不同了,反正我安装后没有这个目录,后面的操作会在这个目录下自动放置一些文件)
4.下载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
这些东西在这里能够找到(呵呵):http://www.tinyos.net/dist-2.1.0/tinyos/windows/
5.安装上面的rpm包
(1)在/home目录下是你的主目录,我的是john.将刚才的那4个rpm包拷贝到\home\john下(即C:\Cygwin\home\john下),进入到该目录:cd /home/john,ls一下可以看见这4个文件。
(2)安装rpm包
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
每输入一次回车一下就可以了。
6.安装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
意思是权限不够,又不知道如何在cygwin下以超级用户登录(网上说用login命令,我试了不怎么好使)。我的解决办法是:进入到cc2430em目录下, chmod 777 startup.bat,然后重新编译,反正就好用了,呵呵。
我最后的结果截图如下:
最后在cc2430em下生成了app.hex文件,如图:
7.烧写
(1)下载并安装SmartRF04 Flash Programmer这个软件,我用的是Setup_SmartRF04Progr_1.3.0.exe这个版本(同时我把还安装了Setup_Packet_Sniffer_2_2_0_0.exe和Setup_SmartRF_Studio_6_5_1.exe这两个软件,是芯片和仿真器驱动,不知道是不是多于了)。
(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。表示成功了,而且此时芯片上的一个小灯在不停的快速闪烁。
到这一步,算是大功告成了,呵呵!
参考文献:
文章评论(0条评论)
登录后参与讨论