2024年2月26日发(作者:)

一. TinyOS安装

官方说明:

/tinyos-2.x/doc/html/

//Installing_TinyOS_2.1#Manual_installation_on_your_host_OS_with_RPMs

开发基础:熟悉Linux环境及常用Linux命令;熟悉嵌入式系统开发流程;精通模块设计的思想;能深刻理解交叉编译和MAKE等概念;熟悉C,nesC两种编程语言;对C++,JAVA有一定了解;对ZigBee协议熟悉且具有一定的通信基础,能深刻理解地址、通道等概念。

1.JAVE JDK 安装

首先,我们安装JAVE 开发工具JAVE JDK :

Java SE Development Kit (JDK) 5/6 下载地址: /javase/downloads/

下载的默认文件名为: / jdk-1_5_

安装过程只需下一步……下一步便可……

然后,我们需要设置电脑的环境变量,需要新建两个环境变量,以便使用JDK

具体过程如下:

右击我的电脑——〉属性——〉高级——〉环境变量——〉

系统变量(S)栏——〉新建(W)——〉新建系统变量 对话框

如下图:

变量名(N):JAVA_HOME

变量值(V):JDK安装的路径,默认路径为:C:Program FilesJavajdk1.6.0_10

C:Program FilesJavajdk1.5.0

变量名(N):CLASSPATH

变量值(V):

.;%JAVA_HOME%;%JAVA_HOME%;;%JAVA_HOME%bin;%JAVA_HOME%jrebin;

在用户变量的PATH中添加:;%JAVA_HOME%bin:$PATH;%JAVA_HOME%jerbin:$PATH;

在系统变量(S)栏选中变量为Path的选项,点编辑

在变量值(V)的末尾添加:;%JAVA_HOME%bin; ;%JAVA_HOME%jrebin;

系统变量里最好也同样再设置一个CLASSPATH。

这样,我们的环境变量已经设置完毕了。

我们可以编个JAVA小程序测试简单的测试一下:

打开记事本,输入下面这个小程序,另存为

public class HelloWorld {

public static void main(String[] args) {

n("Hello, World!");

}

}

运行cmd,到所在目录,执行

javac

java HelloWorld

如果能正确输出Hello, World! 说明环境变量设置成功。

2.Cygwin 软件平台安装

我们需要安装Cygwin这个软件模仿Linux平台,运行TinyOS-2.X。

下载地址:ftp://:19527/iso/

或者下载:包解压缩在c:/cygwin-files,

安装过程说明:

安装时,最好先将安装包下载到本地,然后选择Install from Local Directory安装

紧接着需要设置安装目录,设置安装文件的本地储存路径(c:/cygwin-files或其他)等。

安装包策略选择:“Keep”、“Prev”、“Curr”、“Exp”等等选项

Keep, 意思就是说保持目前已经安装的版本不动,不替换你目前的版本。升级时比较方便。

Prev,意思是说安装上一个版本。

Curr,意思就是说把最新的版本下载下来安装

"View"按钮是用来选择显示方式的

在选择安装包时候,我们需要选择:

Archive,Devel(gcc、make等编译工具),Libs,Net,Shells,Utils(rpm等命令) 等等

其中安装方式共有这么几类:

(1)Default:这是默认选择,可点击包左边的+号展开,看看缺省安装究竟是些什么内容。

(2)Install:表示要下载/安装该包的全部内容。

(3)Reinstall:表示重新下载/安装该包的内容

(4)Uninstall:卸载。

剩下的,和一般软件一样,没什么好说的了。

最后我们可以通过桌面上添加Cygwin的快捷方式或者运行安装目录下的文件,来运行该软件平台:

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 Blink BlinkSingle

ls:显示文件。

whoami:显示登陆Windows帐号

uname –a: 显示版本信息

echo $PATH: 显示执行程式的搜索路径

ps ax: 显示process list ,显示目前有哪些process 执行

ctrl-D或exit 或logout:结束bash 视窗

motelist 查询当前设备

3.MSP430工具安装

rpm包如下:

base hon tools

binutils

gcc

libc

jtag

gdb

yet available

Not yet available

下载地址:/tinyos-2.x/doc/html/

将rpm下载到到 “…/TinyOS21_tool/MSP430_Tools”文件夹下,运行:

$ cd …/TinyOS21_toolMSP430_Tools

rpm -ivh --ignoreos *.rpm

安装成功。(若提示安装不了,可以先安装TinyOS工具包再回头安装这里)

4.TinyOS 工具安装

同上,下载rpm包:

NesC

Deputy

tinyos-tools

将rpm下载到到 “…/TinyOS21_tool/ TinyOS_specific_tools”文件夹下,运行:

$ cd …/TinyOS21_tool TinyOS_specific_tools

rpm -ivh --ignoreos *.rpm

安装成功。

5.TinyOS2.X 安装

同上,下载rpm包:

将rpm下载到到 “…/TinyOS21_toolTinyOS_2.X”文件夹下,运行:

$ cd …/TinyOS21_toolTinyOS_2.X

rpm -ivh --ignoreos *.rpm

安装成功。

6.设置TinyOS2.X 环境变量

用UltraEdit创建C:,输入以下内容:(使用UNIX换行符-LF保存)

(配置文件已经写好了)

# script for profile.d for bash shells, adjusted for each users

# installation by substituting /opt for the actual tinyos tree

# installation point.

export TOSROOT="/opt/tinyos-2.x"

export TOSDIR="$TOSROOT/tos"

export CLASSPATH="C:"

export CLASSPATH="$CLASSPATH;."

export MAKERULES="$TOSROOT/support/make/Makerules"

export PATH="/opt/msp430/bin:$PATH"

export PATH="/cygdrive/c/Program Files/Java/jdk1.6.0_10/bin:$PATH"

# Extend path for java

type java >/dev/null 2>/dev/null || PATH=`/usr/local/bin/locate-jre --java`:$PATH

type javac >/dev/null 2>/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/*-': No such file or directory

我们需要将以下目录中的,重命名为:

C:cygwinlibtinyos

C:Program FilesJavajdk1.6.0_10jrebin

——

重新tos-install-jni命令。

7.安装 Graphviz (版本1.1)

下载地址:/tos/dist-1.1.0/tools/windows/,安装到C:Program FilesATT目录下

7.测试安装

1.环境测试:

运行cygwin,输入命令:

$ tos-check-env

出现WARNING:java 1.4 or java1.5,tos-check-env completed without error等

$ which java

出现:/cygdrive/c/Program Files/Java/jdk1.6.0_10/bin/java

如果出现/cygdrive/c/WINDOWS/system32/java

则尝试输入:export PATH="/cygdrive/c/Program Files/Java/jdk1.6.0_10/bin:$PATH"

2、检查己经让TinyOS buile system环境可运行的.

运行shell,输入如下命令:

$ printenv MAKERULES

将看到:/opt/tinyos-2.x/support/make/Makerules

这是正确的

3.运行Blink测试程序:

1.进入目录:link

2.编写文件:C:

#! /usr/bin/python

from TOSSIM import *

import sys

t=Tossim([]);

nnel("BlinkC",)

e(1).bootAtTime(10000);

for i in range (0,100):

tEvent()

执行命令: $ make micaz sim 和 $ python 显示模拟结果。

如果看到如下错误提示:

"The procedure entry point basename could not be located in the dynamic link library

"

则需要重新检查、安装nesC软件包。

3.运行make命令:(可以是make mica2,make telosb , or make micaz sim…)

$ cd /opt/tinyos-2.x/apps/Blink

$ make telosb

可以看到如下的输出:

mkdir -p build/telosb

compiling BlinkAppC to a telosb binary

ncc -o build/telosb/ -Os -O -mdisable-hwmul -Wall -Wshadow -Wnesc-all -

target=telosb -fnesc-cfile=build/telosb/app.c -board= -DDEFINED_TOS_AM_GROUP=0x2

2 -DIDENT_APPNAME="BlinkAppC" -DIDENT_USERNAME="石琛宇" -DIDENT_HOSTNAME="s

cy" -DIDENT_USERHASH=0x71b2a242L -DIDENT_TIMESTAMP=0x4937fa3dL -DIDENT_UIDHASH=

0xf51978b3L -lm

compiled BlinkAppC to build/telosb/

2650 bytes in ROM

55 bytes in RAM

msp430-objcopy --output-target=ihex build/telosb/ build/telosb/

writing TOS image

这里也许会出现一些问题,若是:

:46:syntax error before ‘new’

Make:*** [exe0] Error 1

则需要检查你的nesC编译器的版本,可能过时了,或者是你工具包没有安装好的问题。

用ncc --version进行查看

接下来

$ which ncc

$/usr/local/bin/ncc –version

$ /usr/bin/ncc –version

$ nescc –version

$ which nescc

$ /usr/bin/nescc –version

若出现这样的错误:make: *** [sim-exe] Error 1,则需修改Python.h的默认路径:/usr/include

打开C:修正如下

CFLAGS+=-l/path (添加这一行,路径改为usrincludepython2.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:estsTestSerial

执行:java TestSerial

如果没有设置端口号,则会出现一下提示:

sf@localhost:9002 died - exiting (tException: Connection refused:

connect)

执行以下命令:

java Forwarder -comm serial@:

e.g.:java Forwarder -comm serial@COM1:telosb

java Forwarder -comm serial@/dev/ttyUSB0:mica2

然后再新的串口运行。

8.cvs更新tinyos-2.x文件

在cywin使用cvs更新tinyos-2.x文件

设置一个环境变量

export CVSROOT=:pserver:anonymous@:/cvsroot/tinyos

也可以不设置这个环境变量

在每个命令中带这个参数-d:pserver:anonymous@:/cvsroot/tinyos

接入命令

cvs -d:pserver:anonymous@:/cvsroot/tinyos login

When prompted for a password for anonymous, simply press the Enter key.回车就可以了,不用输入密码

更新命令

一般格式

cvs -z3 -d:pserver:anonymous@:/cvsroot/tinyos co -P modulename

1) cd /opt

如果在其他目录,会建立一个新的目录,下载的文件放到这个新的目录中

2) 变更原来的tinyos-2.x文件夹名到tinyos-2.x-old

输入命令

cvs -z3 -d:pserver:anonymous@:/cvsroot/tinyos co -P tinyos-2.x

注解:co实际是checkout命令的缩写,使用cvs本身基于pserver的远程认证很麻烦,需要定义服务器和用户组,用户名,设置密码等,

最新的tinyos-2.x会下载下来,在/opt中建立/tinyos-2.x文件夹

cvs -z3 -d:pserver:anonymous@:/cvsroot/tinyos checkout -P tinyos-2.x

3)cd tinyos-2.x

进入刚才更新的目录

4)更新现有的目录

cvs -d:pserver:anonymous@:/cvsroot/tinyos update -dP

注意:很多cvs命令都有缩写形式:commit=>ci; update=>up; checkout=>co/get; remove=>rm;

cvs checkout project_name

cd project_name

cvs update

将文件同步到最新的版本

cvs update

不制定文件名,cvs将同步所有子目录下的文件,也可以制定某个文件名/目录进行同步

"cvs update" 的两个命令行选项。

"-d" 告诉 cvs 创建可能已添加到资源库的新目录(缺省情况下,这不会发生),

"-P" 告诉 cvs 从本地已检出的源码副本中除去所有空目录。"-P" 是个不错的选择,因为 cvs

倾向于收集许多随时间产生的空(曾经使用过,但现在已经放弃)目录树。

cvs commit