TinyOS系统与nesC程序设计课内实验指导书.docx
- 文档编号:17209814
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:70
- 大小:508.71KB
TinyOS系统与nesC程序设计课内实验指导书.docx
《TinyOS系统与nesC程序设计课内实验指导书.docx》由会员分享,可在线阅读,更多相关《TinyOS系统与nesC程序设计课内实验指导书.docx(70页珍藏版)》请在冰点文库上搜索。
TinyOS系统与nesC程序设计课内实验指导书
TinyOS系统与nesC程序设计课内实验指导书
一、课内实验项目一览表
序号
实验项目
学时
类型
每组
人数
基本教学要求
1
编程环境的建立
2
2
1
熟悉TinyOS安装过程,了解系统环境
2
Blink—TinyOS编程的“HelloWorld”
2
2
1
通过Blink程序,理解TinyOS编程结构
3
TinyOS任务及应用举例
2
2
1
通过实验了解任务的建立、调度及其作用
4
节点间的无线通信
2
2
1
通过实验了解和使用基本通信接口和组件
5
节点与PC的通信
2
2
1
了解数据包源和串口通信
6
传感
2
2
1
了解节点如何从环境中采集数据并显示在PC上
7
存储
2
2
1
了解TinyOS上永久数据存储方法及应用
8
多线程程序设计
2
2
1
了解线程工作原理和实现方法
二、详细实验指导书
实验一:
编程环境建立
一实验目的
1、掌握Java基本开发环境(JDK)的安装和配置方法。
2、掌握cygwin程序的安装,在建立windows下类似Unix环境。
3、掌握Linux基本命令及cygwin下安装TinyOS的方法。
二实验原理
无
三实验环境
1、运行Windows的PC机,能够连接Internet
2、PC机配置要求:
CPU
最低CR1GHz,建议P42.0以上
内存
最低256M,建议512M以上
硬盘容量
10G以上,cygwin安装盘符大于2G
操作系统
Windows2000系列、WindowsXP系列
四实验内容和步骤
1、javajdk安装
首先,我们安装JAVA开发工具JAVAJDK1.6
官方下载地址:
安装过程只需下一步……下一步便可,默认安装路径是C:
\ProgramFiles\Java
上图是TinyOS2.0.2安装时截取的JAVAJDK1.5的图,只供参考。
然后,我们需要设置电脑的环境变量,需要新建两个环境变量,以便使用JDK
具体过程如下:
右击我的电脑——〉属性——〉高级——〉环境变量
先新建或编辑系统变量:
变量名(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(注意扩展名是java,不是txt文本文件)。
publicclassHelloWorld{
publicstaticvoidmain(String[]args){
System.out.println("Hello,World!
");
}
}
运行cmd,到HelloWorld.java所在目录,执行命令:
javacHelloWorld.java
java HelloWorld
如果能正确输出Hello,World!
说明环境变量设置成功。
2、cygwin软件平台安装
我们需要安装Cygwin这个软件来虚拟Linux平台,运行TinyOS-2.X。
下载地址1:
.
下载地址2:
http:
//cone.informatik.uni-freiburg.de/people/aslam/cygwin-files.zip
安装时,最好先将安装包下载到本地,然后选择InstallfromLocalDirectory安装。
紧接着需要设置安装目录,默认是C:
\cygwin
然后是选择下载的本地安装包源文件的文件路径
安装包策略选择:
“Keep”、“Prev”、“Curr”、“Exp”等等选项
Keep,意思就是说保持目前已经安装的版本不动,不替换你目前的版本。
升级时比较方便。
Prev,意思是说安装上一个版本。
Curr,意思就是说把最新的版本下载下来安装,第一次安装时默认选项
"View"按钮是用来选择显示方式的
在选择安装包时候,一般默认,点下一步即可。
最后我们可以通过桌面上添加Cygwin的快捷方式或者运行安装目录下的cwgwin.bat文件,来运行该软件平台。
第一次运行Cygwin会稍微慢点。
Cygwin启动界面如下图:
下面我们可以先来尝试一些简单的Linux命令:
help:
帮助命令。
例如ls--help。
显示ls命令使用说明。
pwd:
显示所在路径。
rpm–qa:
查看已经安装的程序,刚安装的Cygwin是没有安装任何系统的。
rpm–ivh文件名:
rpm文件安装。
rpm–ignoreos–force或者rpm-ivh--force--ignoreos:
忽略错误,安装rpm文件
--ignoreos选项是用于忽略cygwin的版本号
rpm–uvh文件名:
rpm文件升级安装。
cd:
切换目录比如:
cd/tmp进入tmp文件。
cp:
cp-RBlinkBlinkSingle:
复制文件或目录,复制Blink为BlinkSingle。
ls:
显示当前目录下的文件。
whoami:
显示登陆Windows帐号
uname–a:
显示版本信息
echo$PATH:
显示执行程式的搜索路径
psax:
显示processlist,显示目前有哪些process执行
ctrl-D或exit或logout:
结束bash视窗
motelist查询当前设备,Yang:
命令不可用
3、本地编译器安装
当你给低功耗微控制器编译代码时,你需要可以产生适当的代码的编译器。
如果你使用mica系列无线传感器节点,你需要的AVR工具;如果你使用的是telos系列节点,则需要的MSP430工具。
先以AVR为例,在根目录下创建文件夹avr,把下面所有rpm文件放在这个文件夹里。
●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--ignoreosrpmname.rpm可以选择安装rpmname这个rpm包。
如果碰到missing/bin/sh的错误信息,则
rpm–ivh--ignoreos--force--nodepsrpmname.rpm
最简单的方法是,同时安装这个文件夹下所有的rpm包,输入命令:
$cd/avr
$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:
在根目录下新建的MSP430文件夹,将所有rpm下载后全部放到这里,运行:
$cd/msp430
$rpm-ivh--ignoreos--force--nodeps*.rpm
安装成功。
(若提示安装不了,可以先安装第四步的TinyOS工具包再回头安装这里)。
4、TinyOS工具包安装
下载rpm包:
●Nesc:
●deputy:
●tinyos-tools:
安装方法同上面一样。
将rpm下载后全部放到一个根目录下新建的tinyos_tools文件夹,运行:
$cd/tinyos_tools
$rpm-ivh--ignoreos*.rpm
注:
在win7或者是vista下安装nesC时可能会报错如下:
unpackingofarchivefailedonfile/usr:
cpio:
chmodfailed-Permissiondenied
解决方法:
运行cygwim的时候右键选择“以管理员身份运行”
5、TinyOS2.x安装
下载rpm包:
安装方法同上面一样
$cd/tinyos
rpm-ivh--ignoreos*.rpm
安装成功。
6、设置TinyOS2.x环境变量
EnvironmentVariable
Windows
Linux
TOSROOT
/opt/tinyos-2.x
sameasinCygwin
TOSDIR
$TOSROOT/tos
sameasinCygwin
CLASSPATH
C:
\cygwin\opt\tinyos-2.x\support\sdk\java\tinyos.jar;.
$TOSROOT/support/sdk/java/tinyos.jar:
.
MAKERULES
$TOSROOT/support/make/Makerules
sameasinCygwin
PATH†
/opt/msp430/bin:
/opt/jflashmm:
$PATH
sameasinCygwin
†注:
只有在使用msp430平台时才有必要设置PATH变量
用UltraEdit创建C:
\cygwin\etc\profile.d\tinyos.sh,输入以下内容:
(使用UNIX换行符-LF保存,这一步很关键,字符是有区别的)(配置文件已经写好了)
#scriptforprofile.dforbashshells,adjustedforeachusers
#installationbysubstituting/optfortheactualtinyostree
#installationpoint.
exportTOSROOT="/opt/tinyos-2.x"
exportTOSDIR="$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"
exportPATH="/cygdrive/c/ProgramFiles/Java/jdk1.6.0_10/bin:
$PATH"
执行命令:
tos-install-jni
如果出现一下错误信息:
Installing32-bitJavaJNIcodein/cygdrive/c/ProgramFiles/Java/jdk1.6.0_10/jr
e/bin...
install:
cannotstat`/usr/lib/tinyos/*-32.dll':
Nosuchfileordirectory
我们需要将以下目录中的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
下载地址:
http:
//webs.cs.berkeley.edu/tos/dist-1.1.0/tools/windows/graphviz-1.10.exe,
默认安装到C:
\ProgramFiles\ATT目录下。
一直点NEXT就可以完成安装。
8、测试安装
1.环境测试:
运行cygwin,输入命令:
$tos-check-env
如果上述安装成功,可能会出现WARNING:
java1.4orjava1.5,tos-check-envcompletedwithouterror等,这是JAVA版本的问题,不必理会。
$whichjava
正常情况出现:
/cygdrive/c/ProgramFiles/Java/jdk1.6.0_10/bin/java
如果出现/cygdrive/c/WINDOWS/system32/java
则尝试输入:
exportPATH="/cygdrive/c/ProgramFiles/Java/jdk1.6.0_10/bin:
$PATH"
2、检查己经让TinyOSbuildsystem环境可运行的.
输入如下命令:
$printenvMAKERULES
如果看到:
/opt/tinyos-2.x/support/make/Makerules 这是正确的
五实验报告要求
实验名称
实验内容说明
程序源代码
实验步骤,实验中出现的问题,观察到的结果
实验总结
实验二:
Blink——TinyOS编程的“HelloWorld”
一实验目的
1、掌握Linux基本命令及其使用。
2、掌握安装应用程序到节点(如telosb)的方法。
3、掌握nesC语言语法风格、组织、命名和连接组件的机制。
4、掌握组件中命令(command)和事件(event)接口的使用。
5、掌握模块(module)和配件(configuration)的作用及使用方法。
二实验原理
TinyOS操作系统、库和程序服务程序是用nesC写的。
◆nesC是一种开发组件式结构程序的语言。
◆nesC是一种C语法风格的语言,但是支持TinyOS的并发模型,以及组织、命名和连接组件成为健壮的嵌入式网络系统的机制。
◇nesC应用程序是由有良好定义的双向接口的组件构建的。
◇nesC定义了一个基于任务和硬件事件处理的并发模型,并能在编译时检测数据流组件。
◆规范
◇nesC应用程序由一个或多个组件连接而成
◇一个组件可以提供或使用接口
●组件中command接口由组件本身实现
●组件中event接口由调用者实现
●接口是双向的,调用command接口必须实现其event接口
◆实现
◇modules
●包含应用程序代码,实现接口
◇configurations
●装配模块,连接模块使用的接口到其提供者
●每个nesC应用程序都有一个顶级configuration连接内部模块
●并发模型
◆TinyOS只能运行单个由所需的系统模块和自定义模块构成的应用程序
◆两个线程
◇任务
●一次运行完成,非抢占式
◇硬件事件处理
●处理硬件中断
●一次运行完成,抢占式
●用于硬件中断处理的command和event必须用async关键字声明
◆执行流程(raceconditions)
◇nesC要避免任务排他性访问共享数据
◇nesC要避免所有共享数据访问都通过原子语句
◇nesC在编译过程中要检测数据流,但可能误报,可用norace关键字声明不检测,但对其使用 应格外小心
三实验环境
1、JDK1.6forwindows
2、CygwinwithTinyOS2.x
3、UltraEdit/EditPlus
四实验内容和步骤
1、实验内容:
(1)进入tmp文件夹并创建文件夹,取名Blink,进入这个文件夹。
cd/tmp
mkdirBlink
cdBlink
(2)定义一个Blink配件BlinkAppC.nc。
configurationBlinkAppC{
}
implementation{
componentsMainC,BlinkC,LedsC;
componentsnewTimerMilliC()asTimer0;
componentsnewTimerMilliC()asTimer1;
componentsnewTimerMilliC()asTimer2;
BlinkC->MainC.Boot;
BlinkC.Timer0->Timer0;
BlinkC.Timer1->Timer1;
BlinkC.Timer2->Timer2;
BlinkC.Leds->LedsC;
}
(3)定义一个Blink配件BlinkC.nc。
#include"Timer.h"
moduleBlinkC
{
usesinterfaceTimer
usesinterfaceTimer
usesinterfaceTimer
usesinterfaceLeds;
usesinterfaceBoot;
}
implementation
{
eventvoidBoot.booted()
{
callTimer0.startPeriodic(250);
callTimer1.startPeriodic(500);
callTimer2.startPeriodic(1000);
}
eventvoidTimer0.fired()
{
callLeds.led0Toggle();
}
eventvoidTimer1.fired()
{
callLeds.led1Toggle();
}
eventvoidTimer2.fired()
{
callLeds.led2Toggle();
}
}
(4)新建一个Makefile文件。
COMPONENT=BlinkAppC
include$(MAKERULES)
(5)新建一个说明文档README(可选)
(6)编译程序
maketelosb
(7)下载到telosb节点,观察实验结果
maketelosbreinstall.IDbsl,serialpo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TinyOS 系统 nesC 程序设计 实验 指导书