Lesson1---TinyOS入门-TinyOS系统经典教程-教学课件

上传人:痛*** 文档编号:252498852 上传时间:2024-11-16 格式:PPT 页数:22 大小:1.62MB
返回 下载 相关 举报
Lesson1---TinyOS入门-TinyOS系统经典教程-教学课件_第1页
第1页 / 共22页
Lesson1---TinyOS入门-TinyOS系统经典教程-教学课件_第2页
第2页 / 共22页
Lesson1---TinyOS入门-TinyOS系统经典教程-教学课件_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,Lesson1 TinyOS入门,介绍TinyOS系统的一些基本概念:组件(components),模块(modules),配件(configurations)和接口(interfaces)。,如何编译和安装一个TinyOS程序在一个mote(尘埃)节点上。,以Blink为例介绍一个简单的应用程序是如何组建起来的。,运行环境:TinyOS 2.1+Cygwin(Windows XP),Cygwin在Windows下提供一个类似Linux的环境,1,一、编译和安装,作为一开始的学习,先来编译一个非常简单的程序 Blink。若没有硬件节点,可以用TinyOS的TOSSIM仿真平台进行编译运行。,编译TinyOS程序使用make命令,TinyOS系统有一个强大的扩展性很强的make 系统,位于 tinyos-2.x/support/make目录中。,先运行如下命令检查环境是否正确配置。,$tos-check-env,如有错误警告,根据提示检查环境搭建的步骤。,2,一、编译和安装,接下来要检查TinyOS系统是否正常启用。,$printenv MAKERULES,Make命令编译TinyOS应用程序的方法是:在应用程序的文件夹下运行:,make platform,。如 make micaz。,TOSSIM仿真编译则为:,make platform,sim,。如 make micaz sim。,3,1.1 确认 nesc语言的ncc编译器的版本,nesC语言是TinyOS使用的语言,而ncc是对gcc的扩展,专门用来编译nesC应用程序。,可输入 which ncc来查看系统调用的是哪个ncc编译器,会跳出该ncc的文件位置,再输入该文件目录的 version选项命令,得到其版本号。,4,如果程序下载成功将会如下图所示,如果没有请重新编译下载。,6,二、组件和接口,TinyOS程序代码是用nesC语言编写的,这是C语言扩展了一些组件和并发特征后的语言。,一个nesC语言编写的程序由一个或多个组件构成或连接而成。,一个组件(,conponent,)由两部分组成:一个是规范说明,包含要用接口的名字;另一部分是它们的实现。,一个组件可以提供接口(,interface,),也可以使用接口。提供的接口描述了该组件提供给上一层调用者的功能,而使用的接口则表示了该组件本身工作时需要的功能。,7,二、组件和接口,接口是双向的:提供或使用。,接口指定了一组命令(,command,),其职能由接口的提供者实现。还指定了一组事件(,event,),其职能由该接口的使用者实现。,也就是说,提供了接口的组件,必须实现,该接口的命令函数;而使用了某接口的组件,必须实现,该接口的事件函数。,如果一个组件调用了(,call,)的一个接口命令,,必须实现该接口的事件。,一个组件可以使用(,use,)或提供(,provide,)多个接口或者同一接口的多个实例。,8,2.1 配件和模块,组件有两种:配件和模块。,模块(module):提供一个或多个接口的实现。,配件(configuration):把其他的组件装配起来,连接组件使用的接口到其提供者。,每个nesC应用程序都,必须有且只有一个,顶层配件(top-level configuration)连接内部组件。,之所以区别设计模块与配件,是为了让系统设计者在构建应用程序的时候可以脱离现有的实现。例如:设计者可以提供配件,只是简单地把一个或多个模块连接起来,而不涉及其中具体的工作。同样地,另一个开发者负责提供一组模块库,这些模块可以普遍使用到众多应用中。,10,三、例子程序Blink,Blink是一个基本的应用程序,它通过开启定时器来实现周期性地切换LED灯。,其文件位置为/opt/tinyos-2.x/apps/Blink。,编译下载到节点上,可以看到,该应用程序在节点的3个LED灯上显示了一个计数器。它只是简单的以4Hz的频率开关LED0,以2Hz开关LED1,以1HZ开关LED2。其效果就是:每两秒3个LED显示了二进制计数从0到7。,Blink程序由两个文件组成:模块文件(BlinkC.nc)和 配件文件(BlinkAppC.nc)。,记住:,所有程序都需要一个顶层配件,通常是以应用程序的名字命名。BlinkAppC就是Blink程序的配件,也是nesC编译器产生可执行文件的源头。而BlinkC则提供Blink程序的逻辑实现。BlinkAppC是用来连接BlinkC模块和Blink所需的其他功能组件。,11,3.2 BlinkAppC.nc,configuration,BlinkAppC,/这里一般由uses 和 provides 从句来说明使用到的和提供的接口,,除了顶层配件,,模块和配件多可以使用和提供接口,Implementation /实现部分,components MainC,BlinkC,LedsC;,/BlinkC是编写的模块,components new TimerMilliC(),as,Timer0;,/as命名别名方便识别,components new TimerMilliC()as Timer1;,/同一组件不同实例,components new TimerMilliC()as Timer2;,/components指定了这个配件用到的组件components,BlinkC-MainC.Boot;,/BlinkC.Boot-MainC.Boot,BlinkC.Timer0-Timer0;,/BlinkC.Timer0-Timer0.Timer0,BlinkC.Timer1,-,Timer1;,/-是连接的意思,BlinkC.Timer2,-,Timer2;,/-是一种包含两个内部规范元素的连接,BlinkC.Leds-LedsC;,/BlinkC.Leds-LedsC.Leds,/也就是把负责实现应用部分的模块BlinkC与系统的组件库连接起来,/记住,BlinkAppC 和 BlinkC 组件是不一样的。更确切的说,BlinkAppC 是由 Blinkc 组件连同 mainc,ledsc 和3个 timer定时器一起组成的。,13,3.4 接口连接,nesC使用 箭头,来绑定一个接口到另一个接口,但一定要是同一类接口。,例如 A-B 意为 A连接到B。,A 是接口的,使用者(user),,而 B是接口的,提供者(provider),。完整的 表达式应该为:A.a-B.b 这意味着,组件A的接口a 连接到 组件B的接口 b。,当一个组件使用或者提供同一个接口的多个不同实例时,设置别名就非常有必要了。如 BlinkC 中的 timer0,timer1,timer2。,15,3.4 接口连接,当一个组件只含有一个接口的时候,就可以省略接口的名字了。如 BlinAppC中,Blinkc.leds ledsC,。就省略了 LedsC组件中包含的接口leds。其等同于:,Blinkc.leds ledsC.leds,。,由于 BlinkC组件中仅仅含有一个leds的接口实例,那也同样等同于:,Blinkc ledsC.leds,。,同样地,TimerMilliC 组件只提供了单一的 timer 接口实例,也不必包含在下面的连接里:,BlinkC.Timer0-Timer0,连接的箭头是 可以对称倒反的。如,Timer0 Timer0,为了方便阅读,大多数连接的箭头还是 从左到右的。,16,3.6 LedsC&TimerMilliC,configuration LedsC,provides,interface Leds;,implementation.,generic configuration TimerMilliC(),provides,interface Timer;,implementation,Blink,18,四、图形化文档说明,精心设计的TinyOS 系统通常有很多层的配置,每一层都简单地提取了抽象概念,以很少的可执行代码来实现复杂的配置。,要想到达底层的模块,或者操纵各个层,使用文本编辑器是很费力的。幸好,TinyOS 和nesC有一个名为,nesdoc,的辅助工具,它可以自动地从源代码产生说明文档。除了注释之外,nesdoc 还可以显示配件的结构与组成。,nesdoc的使用方法:在应用程序的目录下输入“,make platform docs,”,比如“,make micaz docs,”,生成的文档保存在tinyos-2.x/doc/nesdoc目录中。,19,四、图形化文档说明,以下是Blink程序的图形说明,单一的矩形框表示模块;,双层的矩形框表示配件;,虚线表示其为通用的普通的generic(相当于类);,线条表示连接。,20,四、图形化文档说明,其中MainC组件如右图所示:,带阴影的椭圆表示接口;,MainC提供接口Boot,使用接口SoftwareInit。,MainC的详细情况在这里不作进一步阐述。但从组件中,可以看出它的功能:控制调度、初始化硬件平台和初始化软件组件。,21,谢谢!,/123456zj,浙江工业大学浙江省嵌入式系统联合重点实验室,22,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!