Tinyos移植 0414

Tinyos移植 0414

ID:38334718

大小:1.03 MB

页数:173页

时间:2019-06-10

Tinyos移植 0414_第1页
Tinyos移植 0414_第2页
Tinyos移植 0414_第3页
Tinyos移植 0414_第4页
Tinyos移植 0414_第5页
资源描述:

《Tinyos移植 0414》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、NECS语言学习一种支持组件化的编程语言,把组件化/模块化和基于事件驱动的执行模型结合起来,这提高了应用开发的方便性和应用执行的可靠性,有利于代码重用。(一)necs语言的基本设计思想:(1)结构和内容的分离:应用程序由由许多功能独立但又相互联系的软件组件组成,各个组件通过连接(wire)而构成一个应用程序.(2)组件的特性由它提供或使用的接口(interfaces)来访问.(3)接口是双向的:接口事实上就是组件实现的函数的声明,这些函数可能是被提供接口的租件实现(commands)也有可能是被使用接口的组件实现(events)(4)

2、各个组件通过接口相互调用(5)nesc代码生成是由整个程序编译时一起产生的.数据冲突检测在编译时就完成了.(6)中断程序和Rtc任务,中断程序之间的可能存在的数据访问冲突是在编译时加以说明的.(二)Nesc要点(1)Anextensionofcc高效性结构欠佳代码安全性不好nesc:高效结构好(基于组件)代码安全—剔掉了指针,函数指针(2)Whole-programanalysis“Whole-programinling”(3)Staticlanguage无动态内存分配编译时即可看到call-graph(三)Nesc的语法学习NesC是标

3、准C的扩展,应用背景是传感器网络这样的嵌入式系统,这类系统的特点是内存有限,存在任务和中断两类操作。NesC的语法和标准C基本没有区别(NesC应该不能动态分配内存)。NesC程序的基本组成是Component,一个Component是一个*.nc文件。每个Component可以完成一定的工作,一个app一般有一个称为“Main”的Component作为程序的执行体(类似于C的main函数),“Main”调用其他的component以实现程序的功能。“Main”调用其他Component,以及一个Component调用其他的Compone

4、nt的方式是“interface”的连接,Component“uses”的interface连接到其他component“provides”的interface。Interface可以看作函数声明的一种封装,一个interface的内容是几个函数的声明(没有函数的定义),TinyOS系统提供了一系列interface(interface应该是由系统提供,不用自己写的)。可以理解为Interface是Component的属性,函数是interface的属性。Component分为两类,“configuration”用来完成component

5、之间的连接,“module”用来完成该Component的功能(内容是“provides”的interface中函数的定义)。NesC定义了两类特殊的函数,“command”和“event”。函数调用时,Command用“call”,event用“signal”,在一个component中,provides的interface中的command函数必须被实现(在implementation中定义),uses的interface中的event函数必须被实现。“async”指出这个command或者event可以在有中断时使用。为了协调任务和

6、中断的执行,nesC使用“atomic”指出该段代码“不可被打断”。另外定义了“task”封装一些代码来完成一个任务,系统有FIFO的task队列。不同的Task之间没有优先级,但task可以被interrupthandler打断。为防止全局变量等公用数据被非正常修改,nesC规定只在task中进入公共的数据部分。(四)Nesc中的并发性和原子操作----竞争处理机制(1)tinyos采用静态分配方式---编译时就确定全部应用程序所需存储器空间。(2)tinyos不提供动态存储保护,共享变量的保护也是在编译时就完成的。(3)nesc假定程

7、序的执行模型是由Rtc(运行至完成)任务+由硬件信号异步通知的中断处理程序共同组成的。(4)基于nesc的调度器必须按照Rtc方式来执行任务(标准的tinyos调度器遵循fifo策略).由于任务是不被抢占并且rtc的,因此它们之间相对来说是原子的,但相对中断处理来路说就不是的了。(5)形式上,我们把nesc程序代码分成两部分:SynchronousCode(SC):这种代码(函数命令事件任务)是仅仅由任务来访问的。AsynchronousCode(AC):这种代码至少可以被一个中断处理程序访问。(6)nesc是一种编译时就进行数据冲突检测

8、语言关键词:Invariant---无变化的----nesc编译时将检测应用程序是否具备Invariant性可能因此数据竞争的情况---即程序的noInvariant性claim1:AC改变共

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。