资源描述:
《nesc语言参考手册》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、nesC语言参考手册1简介nesC是对C的扩展,它基于体现TinyOS的结构化概念和执行模型而设计。TinyOS是为传感器网络节点而设计的一个事件驱动的操作系统,传感器网络节点拥有非常有限的资源(举例来说.,8K字节的程序储存器,512个字节的随机存取储存器)。TinyOS用nesC重新编写。本手册描述nesC的1.1版本,在第3段中概述了它与1.0版的不同。nesC基本概念如下:结构和内容的分离:程序有组件构成,它们装配在一起("配线")构成完整程序.组件定义两类域,一类用于它们的描述(包含它们的接口请求名称),另一类用于它们的补充。组件内部存在作业形式的协作。控制线程可以通过它的接口进入
2、一个组件。这些线程产生于一件作业或硬件中断。根据接口的设置说明组件功能。接口可以由组件提供或使用。被提供的接口表现它为使用者提供的功能,被使用的接口表现使用者完成它的作业所需要的功能。接口有双向性:它们叙述一组接口供给者(指令)提供的函数和一组被接口的使用者(事件)实现的函数。这允许一个单一的接口能够表现组件之间复杂的交互作用(举例来说.,当某一事件在一个回调之前发生时,对一些事件的兴趣登记)。这是危险的,因为TinyOS中所有的长指令(举例来说.发送包)是非中断的;他们的完成由一个事件(发送完成)标志。通过叙述接口,一个组件不能调用发送指令除非它提供sendDone事件的实现。通常指令向下
3、调用,比如,从应用组件到那些比较靠近硬件的调用,而事件则向上调用。特定的原始事件与硬件中断是关联的(这种关联是由系统决定的,因此在本参考手册中不作进一步描述)。组件通过接口彼此静态地相连。这增加运行时效率,支持rubust设计,而且允许更好的程序静态分析。nesC基于由编译器生成完整程序代码的需求设计。这考虑到较好的代码重用和分析。这方面的一例子是nesC的编译-时间数据竞争监视器。nesC的协作模型基于一旦开始直至完成作业,并且中断远源可以彼此打断作业.nesC编译器标记由中断源引起的潜在的数据竞争。本文是nesC的一本参考手册并非个别指导。TinyOStutoria1给出了对nesC的更
4、亲切的介绍.本文的其余部分构成如下:第2节给出了本参考手册中使用的记号。.第3节概述nesC1.1的新特征。第4,5节,6,和7介绍nesC接口和组件.第8节给出nesC的协作模型和数据竞争监视.第9节解释C文件,nesC接口和组件是怎样被装配成一个应用.第10节包含nesC的保留的各种特征.最后,附录A完全定义nesC的文法(来自KernighanandRitchie(K&R)[2,pp234–239]附录A的对C文法述说的扩展),而附录B是本参考手册中所使用术语的专业词汇词典。2符号打字机字体作为nesC代码和文件名,带任意下标的单个斜体字符用于表示nesC实体,举例来说.,"组件K"或
5、"数值v"。nesC文法是ANSIC文法的扩展.我们选择来自KernighanandRitchie(K&R)的附录A的ANSIC文法[2,pp234–239]作为我们介绍的基础。在这里我们将不重复ANSIC文法。.斜体字是非终端机和非文字的终端机,打字机字体和符号是文字的终端机。下标opt表示可选择的终端机或非终端机。在一些情形中,我们改变一些ANSIC文法规则.我们用下面的方式表示:aso为现存的非终端机指出新增的内容,repacedby表示替换一现有的非终点的.nesC的结构解释给出对应的文法片段。在这些片段中,我们有时使用...表现省略(与当前不相关的解释).附录A给出完整的nesC文
6、法.一些例子使用来自C99标准inttypes.h文件的uint8t和uint16t类型.3变化nesC1.0版本同1.1版本的变化如下:1.原子的陈述.这些单一化协同数据结构的实现,能够被新的编译-时间数据竞争监视器识别。2.编译-时间数据竞争监视为可能的协同的二个中断操作者,或一个中断操作者和一件作业同时存取变量提出警告3.指令和事件必须明确地标出存储类型说明才能安全地被中断操作者执行。4.对指令或"扇出"事件的调用返回结果自动地被新的类型-特性的组合器执行联合。5.uniqueCount是一个新的"常数功能",具有独特的作用.6.NESC预处理程序符号指出语言版本.对于nesC1.1版
7、本它是110。4接口nesC的接口有双向性:它们描述一个多功能的两组件(供给者和使用者)之间的交互渠道.。接口叙述一组叫做指令的,被接口的供给者实现的,被命名的功能和一组叫做事件的,被接口的使用者实现.的,被命名的功能。本节解释接口如何被指定,第5节解释组件如何描述它们提供和使用的接口,第6节解释在C代码中指令和事件如何被调用和实现,而第7节解释组件接口如何被一起联编.接口被接口类型指定,如下:nesC-fi