tinyos资料Word文件下载.docx

上传人:b****3 文档编号:16907404 上传时间:2022-11-27 格式:DOCX 页数:9 大小:23.21KB
下载 相关 举报
tinyos资料Word文件下载.docx_第1页
第1页 / 共9页
tinyos资料Word文件下载.docx_第2页
第2页 / 共9页
tinyos资料Word文件下载.docx_第3页
第3页 / 共9页
tinyos资料Word文件下载.docx_第4页
第4页 / 共9页
tinyos资料Word文件下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

tinyos资料Word文件下载.docx

《tinyos资料Word文件下载.docx》由会员分享,可在线阅读,更多相关《tinyos资料Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。

tinyos资料Word文件下载.docx

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博客,转载请标明出处:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1