实验目的
将TinyOS移植到CC2430芯片
实验准备
硬件:CC2430开发板一块(华凡出产),仿真器
软件:Keil,TinyOS 2.x,TinyOS8051wg-0.1pre4.tgz,SmartRF04 FlashProgramer
其它:在做实验之前请确保你已经正确安装了TinyO-2.1.1及其它工具。具体安装步骤可以参考网上资料。
实验步骤
步骤1:安装Keil
(1) 由于是在linux系统下,所以需要安装wine来运行.exe文件。在终端运行
Sudo apt-get install wine 装完之后就可以安装keil。
(2) 把keil解压出来后,复制C51V900.exe等有用的文件到其它目录下。
然后在终端中运行
WINEPREFIX=/root/.wine.keil wine C51V900.exe
(3) 在安装完成后,一般情况下会在桌面上有keil的图标。参看其属性里头有提示运行的命令,并在终端运行Keil
WINEPREFIX="/root/.wine.keil" wine C:\\Keil\\UV3\\UV3.EXE
(4) 剩下的工作就是破解软件的工作了。
步骤2:安装tinyos-2.x-contrib
在安装了TinyOS-2.1.1后/opt目录下应该有tinyos-2.1.1目录。接着TinyOS8051wg-0.1pre4.tgz下载链接(http://www.tinyos8051wg.net/download)
将其放到/opt目录下,接着输入如下命令对该文件解压缩
cd /opt
tar –xvzf TinyOS8051wg-0.1pre4.tgz
此时会在/opt下生成一个tinyso-2.x-contrib目录。
步骤3:修改环境变量
在 tinyos-2.x-contrib/diku目录下有个env 文件,该文件包含了要设置的环境变量,根据需要修改,由于现在用的是tinyos-2.1.1版本,所以/opt目录下原有的tinyos-2.x目录已 经被tinyos-2.1.1取代,所以需要修改TOSROOT,改成:
TOSROOT = /opt/tinyos-2.1.1否则提示找不到makerules文件。
此外,由于我们使用的是keil编译器中,所以编译器选项要选择keil export MCS51_COMPILER = keil。在修改完之后source一下env使环境变量有效。
注意: (1) 每次重新启动后如果需要编译,需要运行此命令(source /opt/tinyos-2.x-contrib/diku/env)
(2) 命令不能是 source env。因为env系统默认是目录。
步骤4:编译工程
编译工程文件(以BlinkNoTimerTask为例)
cd /diku/common/apps/BlinkNoTimerTask
make cc2430em
如果出现如下错误
Z:/opt/tinyos-2.x-contrib/diku/common/apps/BlinkNoTimerTask/build/cc2430em>C:/Keil/C51/BIN/A51.EXE "startup.a51" SET (SMALL) DEBUG EP
File not found
make: *** [build/cc2430em/startup.OBJ] 错误 49
说明keil安装路径错误,按步骤2重新安装。TinyOS默认的keil安装路径是$(HOME)/.wine.keil,确保路径正确。
如出现***ERROR L257:EXTENDED LINKER REQUIRES UPGRADE TO PK51那么很可能是破解没有成功。重新安装Keil,并且使用keygen破解。
其他错误代码可参考ARM INFOMATION CENTER,
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka11370.html
最后如果编译成功的话,就会生成hex文件,在/build/cc2430em下。
步骤5烧写
(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。表示成功了,而且此时芯片上的一个小灯在不停的快速闪烁。