官方的安装说明详见:
http://docs.tinyos.net/index.php/Installing_TinyOS_2.1
目前,TinyOS支持两个平台:Cygwin(Windows平台)和Linux平台。在Windows下安装需要额外的一步,就是安装Cygwin,这是一个类似Unix的环境
本文以Windows环境下的安装TinyOS2.1为例,使用到的文件有:
Cygwin-files;
jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
avr-binutils-2.17tinyos-3.cygwin.i386.rpm
avr-gcc-4.1.2-1.cygwin.i386.rpm
avr-libc-1.4.7-1.cygwin.i386.rpm
avarice-2.4-1.cygwin.i386.rpm
avr-insight-6.3-1.cygwin.i386.rpm
avrdude-tinyos-5.6cvs-1.cygwin.i386.rpm
msp430tools-base-0.1-20050607.cygwin.i386.rpm
msp430tools-python-tools-1.0-1.cygwin.noarch.rpm
msp430tools-binutils-2.16-20050607.cygwin.i386.rpm
msp430tools-gcc-3.2.3-20050607.cygwin.i386.rpm
msp430tools-libc-20080808-1.cygwin.i386.rpm
nesc-1.3.0-1.cygwin.i386.rpm
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
graphviz-1.10.exe.
1.JAVE JDK 安装
首先,我们安装JAVE 开发工具JAVE JDK 1.6
官方下载地址:http://java.sun.com/javase/downloads/.
安装过程只需下一步……下一步便可……,默认安装路径是C:\Program Files\Java
然后,我们需要设置电脑的环境变量,需要新建两个环境变量,以便使用JDK
具体过程如下:
右击我的电脑——〉属性——〉高级——〉环境变量——〉
系统变量(S)栏——〉新建(W)——〉新建系统变量对话框
变量名(N):JAVA_HOME
变量值(V):JDK安装的路径,其默认的路径为:
C:\ProgramFiles\Java\jdk1.6.0_10
变量名(N):CLASSPATH
变量值(V):
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
在系统变量(S)栏选中变量为Path的选项,点编辑
在变量值(V)的末尾添加:;%JAVA_HOME%\bin;;%JAVA_HOME%\jre\bin;
用户变量里最好也同样再设置一个JAVA_HOME。
在用户变量的PATH中添加:;%JAVA_HOME%\bin:$PATH;%JAVA_HOME%\jre\bin:$PATH;
这样,我们的环境变量已经设置完毕了。我们可以编个JAVA小程序测试简单的测试一下:打开记事本,输入下面这个小程序,另存为HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello,World!");
}
}
运行cmd,到HelloWorld.java所在目录,执行
javac HelloWorld.java
java HelloWorld
如果能正确输出Hello, World! 说明环境变量设置成功。
2.Cygwin 软件平台安装
我们需要安装Cygwin这个软件模仿Linux平台,运行TinyOS-2.X。
下载地址1:www.cygwin.com.
下载地址2:http://cone.informatik.uni-freiburg.de/people/aslam/cygwin-files.zip
安装过程说明:只装cygwin-files.zip(90M)
安装时,最好先将安装包下载到本地,然后选择Installfrom Local Directory安装
紧接着需要设置安装目录,默认是C:\cygwin
然后是选择下载的本地安装包源文件的文件路径
安装包策略选择:“Keep”、“Prev”、“Curr”、“Exp”等等选项
Keep, 意思就是说保持目前已经安装的版本不动,不替换你目前的版本。升级时比较方便。
Prev,意思是说安装上一个版本。
Curr,意思就是说把最新的版本下载下来安装,第一次安装时默认选项
"View"按钮是用来选择显示方式的
在选择安装包时候,一般默认,点下一步即可。
剩下的,和一般软件一样,没什么好说的了。
最后我们可以通过桌面上添加Cygwin的快捷方式或者运行安装目录下的cwgwin.bat文件,来运行该软件平台:
Cygwin启动界面如下图:
下面我们可以先来尝试一些简单的Linux命令:
help: 帮助命令。例如 ls--help 。显示ls命令使用说明。
pwd:显示所在路径。
rpm –qa :查看已经安装的程序,刚安装的Cygwin是没有安装任何系统的。
rpm –ivh 文件名:rpm文件安装。
rpm –ignoreos –force或者rpm -ivh --force --ignoreos:忽略错误,安装rpm文件
--ignoreos选项是用于忽略cygwin的版本号
cd:切换目录比如:cd /tmp 进入tmp文件。
cp:cp -R BlinkBlinkSingle
ls:显示文件。
whoami:显示登陆Windows帐号
uname –a:显示版本信息
echo $PATH:显示执行程式的搜索路径
ps ax:显示process list ,显示目前有哪些process 执行
ctrl-D或exit 或logout:结束bash 视窗
motelist 查询当前设备
3.本地编译器的安装
当你给低功耗微控制器编译代码时,你需要可以产生适当的代码的编译器。如果你使用mica系列无线传感器节点 ,你需要的AVR工具;如果你使用的是telos系列节点,你需要的MSP430工具。装libc可能会包warning,不管
先以AVR为例,把下面所有文件放在同一个文件夹里。
avr-binutils-2.17tinyos-3.cygwin.i386.rpm
avr-gcc-4.1.2-1.cygwin.i386.rpm
avr-libc-1.4.7-1.cygwin.i386.rpm
avarice-2.4-1.cygwin.i386.rpm
avr-insight-6.3-1.cygwin.i386.rpm
avrdude-tinyos-5.6cvs-1.cygwin.i386.rpm
用cd命令进入该目录,输入:rpm -ivh --ignoreos rpmname 安装某个rpm。
如果碰到missing /bin/sh的错误信息,则
rpm –ivh --ignoreos --force --nodeps rpmname
最简单的方法是
rpm –ivh --ignoreos --force --nodeps *.rpm
MSP430工具的安装也是一样的。
其rpm包如下:
msp430tools-base-0.1-20050607.cygwin.i386.rpm
msp430tools-python-tools-1.0-1.cygwin.noarch.rpm
msp430tools-binutils-2.16-20050607.cygwin.i386.rpm
msp430tools-gcc-3.2.3-20050607.cygwin.i386.rpm
msp430tools-libc-20080808-1.cygwin.i386.rpm
将rpm下载后全部放到一个新建的MSP430文件夹,移到到 “/tmp/msp430”文件夹下,运行:
$ cd /tmp/msp430
rpm -ivh --ignoreos –nodeps *.rpm
安装成功。(若提示安装不了,可以先安装第四步的TinyOS工具包再回头安装这里)。
4.TinyOS 工具包安装
下载rpm包:
http://www.tinyos.net/dist-2.1.0/tinyos/windows/nesc-1.3.0-1.cygwin.i386.rpm
http://www.tinyos.net/dist-2.1.0/tinyos/windows/tinyos-deputy-1.1-1.cygwin.i386.rpm
http://www.tinyos.net/dist-2.1.0/tinyos/windows/tinyos-tools-1.3.0-1.cygwin.i386.rpm
将rpm下载后全部放到一个新建的tinyos_tools文件夹,移到到 “/tmp/tinyos_tools”文件夹下,运行:
$ cd /tmp/tinyos_tools
rpm -ivh --ignoreos *.rpm
安装成功。
5.TinyOS2.X 安装 (x随着最新的进度改变而改变)
下载rpm包:
http://www.tinyos.net/dist-2.1.0/tinyos/windows/tinyos-2.1.0-2.cygwin.noarch.rpm
最新的安装包见以下地址
http://tinyos.stanford.edu/tinyos-rpms/
将rpm下载后放到一个新建的tinyos2.0文件夹,移到到 “/tmp/tinyos2.0”文件夹下,运行:
$ cd /tmp/tinyos2.0
rpm -ivh --ignoreos *.rpm
安装成功。
6.设置TinyOS2.X 环境变量
Environment Variable | Windows | Linux | |
TOSROOT | /opt/tinyos-2.x | same as in Cygwin |
|
TOSDIR | $TOSROOT/tos | same as in Cygwin |
|
CLASSPATH | C:\cygwin\opt\tinyos-2.x\support\sdk\java\tinyos.jar;. | $TOSROOT/support/sdk/java/tinyos.jar:. |
|
MAKERULES | $TOSROOT/support/make/Makerules | same as in Cygwin |
|
PATH† | /opt/msp430/bin:/opt/jflashmm:$PATH | same as in Cygwin |
|
†注:只有在使用msp430平台时才有必要设置PATH变量
环境变量设置
TOSROOT:/opt/tinyos-2.x
TOSDIR:/opt/tinyos-2.x/tos
CLASSPATH:C: \cygwin\opt\tinyos-2.x\support\sdk\java\tinyos.jar
MAKERULES:/opt/tinyos-2.x/support/make/Makerules
用UltraEdit创建C:\cygwin\etc\profile.d\tinyos.sh,输入以下内容:(使用UNIX换行符-LF保存,这一步很关键,字符是有区别的)
(配置文件已经写好了)
# script for profile.d forbash shells, adjusted for each users
# installation bysubstituting /opt for the actual tinyos tree
# installation point.
exportTOSROOT="/opt/tinyos-2.x"
export TOSDIR="$TOSROOT/tos"
exportCLASSPATH="C:\cygwin\opt\tinyos-2.x\support\sdk\java\tinyos.jar"
exportCLASSPATH="$CLASSPATH;."
exportMAKERULES="$TOSROOT/support/make/Makerules"
exportPATH="/opt/msp430/bin:$PATH"
export PATH="/cygdrive/c/Program Files/Java/jdk1.6.0_10/bin:$PATH"
#下面这段貌似可有可无,先不用试试
# Extend path for java
type java >/dev/null2>/dev/null || PATH=`/usr/local/bin/locate-jre --java`:$PATH
type javac >/dev/null2>/dev/null || PATH=`/usr/local/bin/locate-jre --javac`:$PATH
echo $PATH | grep -q/usr/local/bin || PATH=/usr/local/bin:$PATH
执行命令: tos-install-jni
如果出现一下错误信息:
Installing 32-bit Java JNI code in/cygdrive/c/Program Files/Java/jdk1.6.0_10/jr
e/bin ...
install: cannot stat `/usr/lib/tinyos/*-32.dll': Nosuch file or directory
我们需要将以下目录中的toscomm.dll,重命名为:toscomm-32.dll
C:\cygwin\lib\tinyos
C:\ProgramFiles\Java\jdk1.6.0_10\jre\bin
toscomm.dll ——toscomm-32.dll
重新tos-install-jni命令。
7.安装 Graphviz (版本1.1)
下载地址:http://webs.cs.berkeley.edu/tos/dist-1.1.0/tools/windows/graphviz-1.10.exe,
默认安装到C:\ProgramFiles\ATT目录下。一直点NEXT就可以完成安装。
7.测试安装
1.环境测试:
运行cygwin,输入命令:
$ tos-check-env
如果上述安装成功,可能会出现WARNING:java 1.4 or java1.5,tos-check-envcompleted without error等,这是JAVA版本的问题,不必理会。
$ whichjava
出现:/cygdrive/c/ProgramFiles/Java/jdk1.5.0_17/bin/java
如果出现/cygdrive/c/WINDOWS/system32/java
则尝试输入:export PATH="/cygdrive/c/ProgramFiles/Java/jdk1.5.0_17/bin:$PATH"
2、检查己经让TinyOS buile system环境可运行的.
运行shell,输入如下命令:
$ printenv MAKERULES
将看到:/opt/tinyos-2.x/support/make/Makerules
这是正确的
3.运行Blink测试程序:
1.进入目录:\cygwin\opt\tinyos-2.x\apps\Blink
2.编写文件:C:\cygwin\opt\tinyos-2.x\apps\Blink\Blink.py
#! /usr/bin/python
from TOSSIM import *
import sys
t=Tossim([]);
t.addChannel("BlinkC",sys.stdout)
t.getNode(1).bootAtTime(10000);
for i in range (0,100):
t.runNextEvent()
执行命令:
$ make micaz sim
$ python Blink.py
显示模拟结果。
如果看到如下错误提示:
"The procedure entry point basename could notbe located in the dynamic link library cygwin1.dll"
则需要重新检查、安装nesC软件包。
3.运行make命令:(可以是makemica2,make telosb , or make micaz sim…)
连接上硬件平台后的调试:
$ cd /opt/tinyos-2.x/apps/Blink
$ make clean
$ make micaz
可以看到如下的输出:
$ make micaz reinstall.3mib510./dev/ttyS5
make micaz reinstall.<addr> mib510,serialport
<addr>是你需要设置该硬件节点在整个网络中的ID序号,
Mib510是辅助编程下载工具
Serialport串口的端口号,如果在WINDOWS下你的串口号是COMn,你必须使用/dev/ttySn-1作为serialport
这里也许会出现一些问题,若是:
BlinkAppC.nc:46:syntaxerror before ‘new’
Make:***[exe0] Error 1
则需要检查你的nesC编译器的版本,可能过时了,或者是你工具包没有安装好的问题。
用ncc --version进行查看
接下来
$ which ncc
$ /usr/bin/ncc --version
$ nescc --version
$ which nescc
$ /usr/bin/nescc –version
若出现这样的错误:make: *** [sim-exe] Error 1,则需修改Python.h的默认路径:/usr/include
打开C:\cygwin\opt\tinyos-2.x\support\make\sim.extra修正如下
CFLAGS+=-l/path (添加这一行,路径改为\usr\include\python2.5,)
WFLAGS = -Wno-nesc-data-race
PYTHON_VERSION=2.5($python –V 查看版本后再修改)
注意:TOSSIM 只支持micaz这个平台。所以如果输入make telosb sim,则会出现错误提示:make: *** [sim-exe]Error 2
4.运行java命令:
下载:C:\cygwin\opt\tinyos-2.x\apps\tests\TestSerial
执行:java TestSerial
如果没有设置端口号,则会出现一下提示:
sf@localhost:9002 died - exiting(java.net.ConnectException: Connection refused:
connect)
执行以下命令:
java net.tinyos.sf.SerialForwarder -commserial@<serial port>:<mote>
e.g.:java net.tinyos.sf.SerialForwarder -comm serial@COM1:telosb
javanet.tinyos.sf.SerialForwarder -comm serial@/dev/ttyUSB0:mica2
然后再新的串口运行。