nesC语参考手册.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
nesC语言参考手册 1 简介 nesC 是对 C 的扩展 ,它基于体现 TinyOS 的结构化概念和执行模型而设计。 TinyOS 是为传感器网络节点而设计的一个事件驱动的操作系统,传感器网络节点拥有非常有限的资源 ( 举例来说., 8K 字节的程序储存器,512个字节的随机存取储存器) 。TinyOS 用 nesC 重新编写。本手册描述 nesC 的 1.1 版本, 在第 3 段中概述了它与1.0版的不同。 nesC 基本概念如下: 结构和内容的分离: 程序有组件构成, 它们装配在一起 ( 配线 ) 构成完整程序. 组件定义两类域, 一类用于它们的描述 ( 包含它们的接口请求名称) ,另一类用于它们的补充。组件内部存在作业形式的协作。 控制线程可以通过它的接口进入一个组件。这些线程产生于一件作业或硬件中断。 根据接口的设置说明组件功能。 接口可以由组件提供或使用。被提供的接口表现它为使用者提供的功能,被使用的接口表现使用者完成它的作业所需要的功能。接口有双向性: 它们叙述一组接口供给者 (指令)提供的函数和一组被接口的使用者(事件)实现的函数。这允许一个单一的接口能够表现组件之间复杂的交互作用 (举例来说.,当某一事件在一个回调之前发生时,对一些事件的兴趣登记)。 这是危险的,因为 TinyOS 中所有的长指令 (举例来说. 发送包)是非中断的; 他们的完成由一个事件( 发送完成)标志。 通过叙述接口,一个组件不能调用发送指令除非它提供 sendDone 事件的实现。通常指令向下调用,比如, 从应用组件到那些比较靠近硬件的调用,而事件则向上调用。特定的原始事件与硬件中断是关联的 (这种关联是由系统决定的,因此在本参考手册中不作进一步描述)。组件通过接口彼此静态地相连。 这增加运行时效率,支持 rubust 设计, 而且允许更好的程序静态分析。nesC基于由编译器生成完整程序代码的需求设计。这考虑到较好的代码重用和分析。这方面的一例子是 nesC 的编译-时间数据竞争监视器。nesC 的协作模型基于一旦开始直至完成作业 , 并且中断远源可以彼此打断作业. nesC 编译器标记由中断源引起的潜在的数据竞争。本文是 nesC 的一本参考手册并非个别指导。TinyOS tutoria1给出了对 nesC 的更亲切的介绍. 本文的其余部分构成如下: 第 2 节给出了本参考手册中使用的记号。. 第 3 节概述 nesC 1.1 的新特征。 第 4,5 节,6, 和 7介绍 nesC 接口和组件. 第 8 节给出 nesC的协作模型和数据竞争监视. 第 9 节解释 C文件, nesC 接口和组件是怎样被装配成一个应用. 第 10 节包含 nesC 的保留的各种特征. 最后,附录A完全定义 nesC 的文法 (来自Kernighan and Ritchie (KR) [2, pp234–239]附录A的对 C 文法述说的扩展),而附录 B 是本参考手册中所使用术语的专业词汇词典。 2 符号 打字机字体作为 nesC 代码和文件名,带任意下标的单个斜体字符用于表示 nesC 实体,举例来说., 组件 K 或 数值 v。nesC文法是ANSI C 文法的扩展. 我们选择来自 Kernighan and Ritchie (KR) 的附录A的 ANSI C 文法[2, pp234 –239]作为我们介绍的基础。在这里我们将不重复ANSI C文法。. 斜体字是非终端机和非文字的终端机,打字机字体和符号是文字的终端机。 下标 opt 表示可选择的终端机或非终端机。在一些情形中,我们改变一些 ANSI C 文法规则. 我们用下面的方式表示:aso 为现存的非终端机指出新增的内容,repaced by表示替换一现有的非终点的.nesC 的结构解释给出对应的文法片段。在这些片段中,我们有时使用 . . . 表现省略( 与当前不相关的解释). 附录A给出完整的 nesC 文法.一些例子使用来自 C99 标准 inttypes.h 文件的 uint8 t 和 uint16 t 类型. 3 变化 nesC 1.0版本同1.1版本的变化如下: 1. 原子的陈述. 这些单一化协同数据结构的实现,能够被新的编译- 时间数据竞争监视器识别。 2. 编译- 时间数据竞争监视为可能的协同的二个中断操作者 , 或一个中断操作者和一件作业同时存取变量提出警告 3. 指令和事件必须明确地标出存储类型说明才能安全地被中断操作者执行。 4. 对指令或扇出事件的调用返回结果自动地被新的类型- 特性的组合器执行联合。 5. uniqueCount 是一个新的 常数功能 , 具有独特的作用. 6. NESC 预处理程序符号指出语言版本. 对于 nesC 1.1版本它是 1

文档评论(0)

fpiaovxingl + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档