tinyos资料Word文件下载.docx
《tinyos资料Word文件下载.docx》由会员分享,可在线阅读,更多相关《tinyos资料Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
![tinyos资料Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/27/1d0e2c67-f4c8-4b7e-842e-37e6484356ac/1d0e2c67-f4c8-4b7e-842e-37e6484356ac1.gif)
nesC语言主要用于诸如传感器网络等嵌入式系统。
nesC具有类似于C语言的语法,但支持TinyOS的并发模型,同时具有机构化机制、命名机制,能够与其他软组件链接在一起从而形成一个鲁棒的网络嵌入式系统。
其主要目标是帮助应用程序设计者建立可易于组合成完整、并发式系统的组件,并能够在编译时执行广泛的检查。
TinyOS定义了许多在nesC中所表达的重要概念。
首先,nesC应用程序要建立在定义良好、具有双向接口的组件之上。
其次,nesC定义了并发模型,该模型是基于任务(task)及硬件事件句柄(hardwareeventhandler)的,在编译时会检测数据争用(datarace)。
1、组件
1)说明
任何一个nesC应用程序都是有一个或多个组件链接起来,从而形成一个完整的可执行程序的。
组件提供(provide)并使用(use)接口。
这些接口是组件的唯一访问点并且它们是双向的。
接口声明了一组函数,称为命令(command),接口的提供者必须实现它们;
还声明了另外一组函数,称为事件(event),接口的使用者必须实现它们。
对于一个组件而言,如果它要使用某个接口中的命令,它必须实现这个接口的事件。
一个组件可以使用或提供多个接口以及同一个接口的多个实例。
2)实现
在nesC中有两种类型的组件,分别称为模块(module)和配置(configuration)。
模块提供应用程序代码,实现一个或多个接口;
配置则是用来将其它组件装配起来的组件,将各个组件所使用的接口与其它组件提供的接口连接在一起。
这种行为称为导通(wiring)。
每个nesC应用程序都由一个顶级配置所描述,其内容就是将该应用程序所用到的所有组件导通起来,形成一个有机整体。
nesC的所有源文件,包括interface、module和配置,其文件后缀(扩展名)都是“.nc”。
2、并发模型(ConcurrencyModel)
TinyOS一次仅执行一个程序。
组成程序的组件来自于两个方面,一部分是系统提供的组件,另一部分是为特定应用用户自定义的组件。
程序运行时,有两个执行线程:
一个称为任务(task),另一个称为硬件事件句柄(hardwareeventhandler)。
任务是被延期执行的函数,它们一旦被调度,就会运行直至结束,并且在运行过程中不准相互抢占。
硬件事件句柄是用来相应和处理硬件中断的,虽然也要运行完毕,但它们可能会抢占任务或其他硬件事件句柄的执行。
命令和事件要作为硬件事件句柄的一部分而执行必须使用关键字async来声明。
因为任务和硬件事件句柄可能被其他异步代码所抢占,所以nesC程序易于受到特定竞争条件的影响,导致产生不一致或不正确的数据。
避免竞争的办法通常是在任务内排他地访问共享数据,或访问所有数据都使用原子语句。
nesC编译器会在编译时向程序员报告潜在的数据争用,这里面可能包含事实上并不可能发生的冲突。
如果程序员确实可以担保对某个数据的访问不会导致麻烦,可以将该变量使用关键字norace来声明。
但使用这个关键字一定要格外小心。
2.cygwin是一个在windows平台上运行的unix模拟环境,是cygnussolutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。
它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。
随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。
cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。
然后,他们要把这些工具移植到windows平台上去。
一种方案是基于win32api对这些工具的源代码进行大幅修改,这样做显然需要大量工作。
因此,他们采取了一种不同的方法——他们写了一个共享库(就是cygwindll),把win32api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于win32api写了一个unix系统库的模拟层。
这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。
以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。
这样,在windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。
关于cygwin实现的更详细描述,请参考/cygwin-ug-net/highlights.html.rpm插件在uil文件夹中,安装时可分部安装或卸载。
3. JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。
自从Java推出以来,JDK已经成为使用最广泛的JavaSDK(Softwaredevelopmentkit)。
JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。
不论什么Java应用服务器实质都是内置了某个版本的JDK。
因此掌握JDK是学好Java的第一步。
最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。
其中IBM的JDK包含的JVM(JavaVirtualMachine)运行效率要比SunJDK包含的JVM高出许多。
而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。
但不管怎么说,我们还是需要先把SunJDK掌握好。
从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本信息也不再延续以前的1.2,1.3,1.4,而是变成了5.0,6.0了。
从6.0开始,其运行效率得到了非常大的提高,尤其是在桌面应用方面。
JDK本身使用了Java语言编写,在我们下载的安装包里,有一个src.zip,里面就是JDK的源代码。
[编辑本段]版本
SE(J2SE),standardedition,标准版,是我们通常用的一个版本,从JDK5.0开始,改名为JavaSE。
EE(J2EE),enterpsiseedtion,企业版,使用这种JDK开发J2EE应用程序,从JDK5.0开始,改名为JavaEE。
ME(J2ME),microedtion,主要用于移动设备、嵌入式设备上的java应用程序,从JDK5.0开始,改名为JavaME。
[编辑本段]组成
JDK包含的基本组件包括:
·
javac–编译器,将源程序转成字节码
jar–打包工具,将相关的类文件打包成一个文件
javadoc–文档生成器,从源码注释中提取文档
jdb–debugger,查错工具
java–运行编译后的java程序(.class后缀的)
appletviewer:
小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:
产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:
Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole:
Java进行系统调试和监控的工具
[编辑本段]常用的package
java.lang:
这个是系统的基础类,比如String等都是这里面的,这个package是唯一一个可以不用import就可以使用的Package
java.io:
这里面是所有输入输出有关的类,比如文件操作等
:
这里面是与网络有关的类,比如URL,URLConnection等。
java.util:
这个是系统辅助类,特别是集合类Collection,List,Map等。
java.sql:
这个是数据库操作的类,Connection,Statememt,ResultSet等
javax.servlet:
这个是JSP,Servlet等使用到的类
JDK的环境配置
在WIN下:
java运行环境安装与测试及HelloWorld的实现。
1.下载j2sdk1.4.1或更高版本(,建议同时下载其JavaDocumentation,这是Java帮助文档)
2.运行刚刚下载的j2sdk-1_4_1_02-windows-i586.exe文件进行正式安装(以下假设安装于c:
\j2sdk1.4.1,建议安装路径不要有空格,不宜安装在\ProgramFiles目录下!
)。
3.设置运行环境参数:
a.如果是Win95/98,在\autoexec.bat的最后面添加如下3行语句:
setJAVA_HOME=c:
\j2sdk1.4.1
setPATH=%JAVA_HOME%\bin;
%PATH%
setCLASSPATH=.;
%JAVA_HOME%\lib
注意:
---可用dos命令notepadc:
\autoexec.bat打开记事本,加入上面的3行语句。
b.如果是Win2000,xp使用鼠标右击“我的电脑”->
属性->
高级->
环境变量
系统变量->
新建->
变量名:
JAVA_HOME变量值:
c:
CLASSPATH变量值:
.;
编辑->
Path在变量值的最前面加上:
%JAVA_HOME%\bin;
(CLASSPATH中有一英文句号“.”后跟一个分号,表示当前路径的意思)
4.使用文本编辑器(比如:
/*HelloWorld.java*/
publicclassHelloWorld{
publicstaticvoidmain(Stringarg[]){
System.out.println("
Hello,World!
"
);
}
5.开启一个DOS窗口,CD(就是跳转/ChangeDirectory)到HelloWorld.java所在的目录中
c:
\>
cd\test
\test>
_
6.编译HelloWorld.java为HelloWorld.class
javacHelloWorld.java
7.运行HelloWorld.class
javaHelloWorld
Hello,World!
--------如果出现的
Exceptioninthread"
main"
java.lang.NoClassDefFoundError:
helloworld/javaerror:
ccan'
nread:
HelloWorld.java
之类的错误,那么是把javac和java写反了。
---------如果出现Badcommandorfilename
说明javac命令没起作用,需要:
setpath="
\jdk\bin"
用这个命令注册BIN目录里的命令
---------还要注意大小写。
在LINUX下:
UbuntuLinux下jdk的安装与配置
1.安装
从sun公司网站下载linux版本的jdk,我下载的版本是JDK6Update7
,
jdk-6u7-linux-i586.bin,打开终端,用cd命令进入jdk所在目录,执行复制命令
sudocpjdk-6u7-linux-i586.bin/usr
即将jdk复制到/usr目录下,
然后进入/usr目录
cd/usr
执行权限
chmod+xjdk-6u7-linux-i586.bin
执行安装命令
./jdk-6u7-linux-i586.bin
如遇错误,可先切换至root用户下,suroot,再执行安装命令
安装成功会在/usr目录下生成jdk1.6.0_07目录,就是jdk的安装目录
重启电脑,打开终端,输入java-version
如若有显示java的版本信息,则表示安装成功,
2.配置
安装成功后需要配置jdk环境变量
用cd命令进入/etc目录
sudoviprofile
即执行编辑profile文件命令
在umask022前添加如下内容:
exportJAVA_HOME=/usr/jdk1.6.0_07
exportJRE_HOME=/usr/jdk1.6.0_07/jre
exportPATH=$PATH:
/usr/jdk1.6.0_07/bin
exportCLASSPATH=./:
/usr/jdk1.6.0_07/lib:
/usr/jdk1.6.0_07/jre/lib
保存退出,重启电脑
3.测试
新建Test.java
publicclassTest{
publicstaticvoidmain(String[]args){
Hello,WelcometoLinuxWorld!
在终端用cd命令进入Test.java目录,然后输入
javacTest.java
javaTest
若输出
Hello,WelcometoLinuxWorld!
则表明配置成功!
如不能通过编译,可通过重新启动系统试试
4.注意
在用vi命令编辑profile文件时,Linux初学者可能还不熟用
sudoviprofile进入编辑文件后如出现
PressENTERortypecommandtocontinue
则按回车
然后按方向键“下”直到umask022前一行
按字母o进入编辑状态
输入环境变量内容
回车,按几次ESC键,直到听到"
嘀"
声,输入
x
回车
即保存退出
至此,Linuxjdk环境变量配置完成
安装在不同的目录。
。
喜欢用那个jdk就用那个版本的(修改path,classpath即可);
----------------------------------
补充问题回答:
假设你jdk1.5和jdk1.6的安装目录分别是D:
\java\jdk1.5和D:
\java\jdk1.6
当你想用jdk1.5的时候你的环境变量就这样设:
JAVA_HOME:
D:
\java\jdk1.5
CLASSPATH:
\java\jdk1.5\lib
PATH:
\java\jdk1.5\bin
当你想用jdk1.6的时候你的环境变量就这样设:
\java\jdk1.6\lib
\java\jdk1.6\bin
(06年)JDK1.6:
因为它太危险。
我的意思并不是说JDK1.6不可以用,只是想给Sun几个月时间来继续巩固它,以使它更加稳定。
还有当我不确定正在使用的操作系统平台是否支持JDK1.6之前,并不打算让其他人升级到JDK1.6。
我这并不是守旧,只是JDK1.6对于广泛发售的应用程序来说,并不是一个正确的选择。
lJDK1.4:
Sun很可能在未来两年将继续支持JDK1.4(这只是我的假设)。
还有就是Sun也保证JDK1.4可以运行在WindowsVista上,但我必须假设JDK1.4在不久将来不被支持,而不是被支持两年。
另外,JDK1.4已经发行很久了,它的有些功能已经过时了。
自从我看了Vista的开发日志后,就感觉将程序建立在JDK1.4上有些危险,因为,Vista的开发日志说,Sun的开发人员并不会将精力放到JDK1.4对Vista的支持上。
如果JDK1.4无法得到足够的重视,那它很可能在JDK1.5和1.6成为主流时,得不到足够的支持。
我们选择了JDK1.5,为什么呢?
lJDK1.5:
因为它可以在OSX10.4及以上的版本中良好地运行,而且它至少可以在WindowsXP及以上版本中运行,JDK1.5是十分成熟和稳定的,其实,真正的原因是我必须使用annotations(注释)和generics(泛型)进行编程。
还有就是JDK1.5有我要使用的所有的功能。
对于我们来说,只有一个地方使用了JDK1.6,那就是在一个支持动态语言的服务器程序中。
在这个应用程序中,我并不是使用Java字节码进行操作,而是通过脚本语言对这个服务器程序进行完全的控制。
本文来自CSDN博客,转载请标明出处: