网站大量收购闲置独家精品文档,联系QQ:2885784924

Tinyos移植 0414.doc

  1. 1、本文档共181页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Tinyos移植 0414

NECS语言学习 一种支持组件化的编程语言,把组件化/模块化和基于事件驱动的执行模型结合起来,这提高了应用开发的方便性和应用执行的可靠性,有利于代码重用。 (一)necs语言的基本设计思想: (1)结构和内容的分离:应用程序由由许多功能独立但又相互联系的软件组件组成,各个组件通过连接(wire)而构成一个应用程序. (2)组件的特性由它提供或使用的接口(interfaces)来访问. (3)接口是双向的:接口事实上就是组件实现的函数的声明,这些函数可能是被提供接口的租件实现(commands)也有可能是被使用接口的组件实现(events) (4)各个组件通过接口相互调用 (5)nesc代码生成是由整个程序编译时一起产生的.数据冲突检测在编译时就完成了. (6)中断程序和Rtc任务,中断程序之间的可能存在的数据访问冲突是在编译时加以说明的. Nesc要点 An extension of c c 高效性 结构欠佳 代码安全性不好 nesc:高效 结构好(基于组件) 代码安全—剔掉了指针,函数指针 (2)Whole-program analysis “Whole-program inling” (3)Static language 无动态内存分配 编译时即可看到 call-graph (三)Nesc的语法学习 NesC是标准C的扩展,应用背景是传感器网络这样的嵌入式系统,这类系统的特点是内存有限,存在任务和中断两类操作。NesC的语法和标准C基本没有区别(NesC应该不能动态分配内存)。NesC程序的基本组成是Component,一个Component是一个*.nc文件。每个Component可以完成一定的工作,一个app一般有一个称为“Main”的Component作为程序的执行体(类似于C的main函数),“Main”调用其他的component以实现程序的功能。“Main”调用其他Component,以及一个Component调用其他的Component的方式是“interface”的连接,Component “uses”的interface连接到其他component “provides”的interface。Interface可以看作函数声明的一种封装,一个interface的内容是几个函数的声明(没有函数的定义),TinyOS系统提供了一系列interface(interface应该是由系统提供,不用自己写的)。可以理解为Interface是Component的属性,函数是interface的属性。Component分为两类,“configuration”用来完成component之间的连接,“module”用来完成该Component的功能(内容是“provides”的interface中函数的定义)。NesC定义了两类特殊的函数,“command”和“event”。函数调用时,Command用“call”,event用“signal”,在一个component中,provides的interface中的command函数必须被实现(在implementation中定义),uses的interface中的event函数必须被实现。“async”指出这个command或者event可以在有中断时使用。为了协调任务和中断的执行,nesC使用“atomic”指出该段代码“不可被打断”。另外定义了“task”封装一些代码来完成一个任务,系统有FIFO的task队列。不同的Task之间没有优先级,但task可以被interrupt handler打断。为防止全局变量等公用数据被非正常修改,nesC规定只在task中进入公共的数据部分。 (四)Nesc中的并发性和原子操作竞争处理机制 tinyos采用静态分配方式编译时就确定全部应用程序所需存储器空间。 tinyos不提供动态存储保护,共享变量的保护也是在编译时就完成的。 (3)nesc假定程序的执行模型是由Rtc(运行至完成)任务+由硬件信号异步通知的中断处理程序共同组成的。 (4)基于nesc的调度器必须按照Rtc方式来执行任务(标准的tinyos调度器遵循fifo策略).由于任务是不被抢占并且rtc的,因此它们之间相对来说是原子的,但相对中断处理来路说就不是的了。 (5) 形式上,我们把nesc程序代码分成两部分: Synchronous Code (SC):这种代码(函数 命令 事件 任务)是仅仅由任务来访问的。 Asynchronous Code (AC):这种代码至少可以被一个中断处理程序访问。 (6)nesc是一种编译时就进行数据冲突检测语言 关键词:Invariant无变化的nesc编译时将检测应用程序是否具备Invariant性 可能因此

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档