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 (K&R) [2, pp234–239]附录A的对 C 文法述说的扩展),而附录 B 是本参考手册中所使用术语的专业词汇词典。

2 符号

打字机字体作为 nesC 代码和文件名,带任意下标的单个斜体字符用于表示 nesC 实体,举例来说., " 组件 K" 或 " 数值 v"。nesC文法是ANSI C 文法的扩展. 我们选择来自 Kernighan and Ritchie (K&R) 的附录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 是一个新的 " 常

c语言初始化字符串 函数 manment,nesC语言参考手册.doc相关推荐

  1. c语言初始化字符串 函数 manment,[转载]3.09进程(C语言班最后一天的课程)

    1,进程:是容器,是内存上的概念.线程是CPU的概念. 2,fork的作用是根据一个现有的进程复制出一个新进程,原来的进程称为父进程(Parents Process),新进程称为子进程(Child P ...

  2. 超详细C语言的字符串函数讲解

    字符串函数 前言 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中.字符串常量 适用于那些对它不做修改的字符串函数 接下来本文就是对于介 ...

  3. C语言常用字符串函数strlen、strcpy、strcat、strcmp、strchr

    C语言常用字符串函数,求串长strlen(char *s).串复制strcpy(char *s1,char *s2).串连接strcat(char *s1,char *s2).串比较strcmp(ch ...

  4. 【C语言】字符串函数详解

    hello~~,我是~小鹿 ,这是我的第一篇博客,没有循序渐进从基础开始写,只是最近在学习这里就写了,比较随心吧.希望这一篇博客能够给你带来帮助,之后也会继续写的,只是可能没有循序渐进,会比较杂七杂八 ...

  5. C语言 const 修饰函数参数 - C语言零基础入门教程

    C语言 const 修饰函数参数 - C语言零基础入门教程 目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数 ...

  6. c语言字符初始化怎么表示,C语言初始化字符串 怎么进行字符串赋值?C语言

    C语言数组字符串初始化问题 C语言中,初始化操作就是在定义变量的时候,对变量进行赋值,即称为变量的初始化.对于字符变量也是一样的. 举例如下: char ch='a'; // 定义一个字符变量,变量名 ...

  7. c语言处理字符串函数的头文件,C语言字符处理函数 - 20131125的个人空间 - OSCHINA - 中文开源技术交流社区...

    C语言提供了丰富的字符串处理函数, 大致可分为字符串的输入.输出.合并.修改.比较.转换.复制.搜索几类. 使用这些函数可大大减轻编程的负担.用于输入输出的字符串函数,在使用前应包含头文件" ...

  8. c语言如何让字符串变成空字符,C语言初始化字符串 c语言 如何将已赋值的字符串初始化为空?...

    C语言数组字符串初始化问题恋爱语录:能牵手的时候,请别肩并肩,能拥抱的时候,请别手牵手,能相爱的时候,请别说分开:拥有了爱情,请别去碰暧昧 字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是 ...

  9. 【C语言】字符串函数strtok 按照指定字符串分割

    C语言字符串函数 strtok() 函数原型 char *strtok(char *str,const char *delimiters); 参数 str,待分割的字符串 delimiters,分隔符 ...

最新文章

  1. VIM7.3添加中文帮助文档
  2. 转:Jquery AJAX POST与GET之间的区别
  3. mysql自然连接和等值连接_mysql sql99语法 内连接等值连接
  4. python软件开发-Python -- 软件开发规范
  5. 【面试测试题】贪婪是好事
  6. 信息论4—多符号离散信道,单维连续信道
  7. Linux系统编程(二)孤儿进程和僵尸进程
  8. cifs mount 挂载共享目录_安装cifsutils解决linux挂载windows共享文件夹
  9. CentOS 7上搭建Spark 3.0.1 + Hadoop 3.2.1分布式集群
  10. 《FilthyRichClients》读书笔记(一)-SwingのEDT
  11. cc1 transform链
  12. 印度成不了下一个世界工厂,越南才可能
  13. win10: 无法连网 There is something wrong with the proxy server
  14. IDEA2020版本下载、安装
  15. ubuntu16.04.4环境下mingw32交叉编译环境搭建
  16. ESP32超详细学习记录:获取B站粉丝数
  17. 我们很高兴地宣布我们正在与 OKC 整合
  18. android12.0(S) 从SD卡导入vCard文件到通讯录 号码带“-“ 如何把横线去除
  19. python——spilt和strip用法
  20. 如何在网页标题前添加图标

热门文章

  1. Mysql连接异常解决方法
  2. Python告诉你《少年的你》为何刷爆票房?
  3. 常用oid节点_网络设备名的oid
  4. React Router 4 简易入门
  5. 例程16 四位数码管
  6. 目标检测-小目标检测涨点方法
  7. Dojo:不容忽视的RIA框架
  8. java自定义异常类_java中自定义异常类
  9. C语言Union踏坑
  10. voliate类型的原理及用法