关于nesC语言的学习

 

据说nesC是一种集结了CC++java等三种语言的,TinyOS 系统、库及应用程序都是用nesC 语言写的语言写的,这时一种新的用于编写结构化的基于组件的应用程序的语言。nesC 语言主要用于诸如传感器网络等嵌入式系统。

在学习nesC的时候,建议一边看语法和nesC的教学资料,一边编写程序,同时要了解一下TinyOS这一操作系统的原理,因为nesC是为TinyOS而开发的一种新语言,同时,可以去找一下《无线传感器网络操作系统TinyOS》去看看。

Nesc语言涉及到CC++,还涉及到jave,确实有些语法还是比较混乱的,整理了一下语法知识:

1TinyOS并非真正意义上的操作系统,而是通过组件的形式进行组织的微型程序集合,在编译阶段通过调用关系进行组件的精简,为了支持更多的硬件构建更多的应用, ATOS平台提供了的丰富的组件供开发者使用

2nesC 语言具有类似于C 语言的语法,但支持TinyOS 的并发模型,同时具有组件化机制,能够与其他组件连接在一起从而形成一个鲁棒性很好的嵌入式系统。 

3、nesC 定义了许多在TinyOS 中所表达的重要概念: 

l nesC 应用程序要建立在定义良好、具有双向接口的组件之上,恰好体现了TinyOS 的完全组件特性。 

l nesC 定义了并发模型,该模型时基于任务(Task)及硬件事件句柄(Hardware Event Handler),能更好地实现TinyOS 的事件驱动机制。 

4、接口(interface):双向接口、接口也可以称为函数原型的集合。 

5、组件(component):

6、连接(wiring):配置将内部的各组件对应的接口连接在一起,这个操作就是连接(wiring),它将接口的提供者与接口的使用者关联起来。连接操作使用“->”号来表示,其一般意义可以理解为“User To Provider”,即箭头从调用者到提供者。 

7、模块(module):模块实现具体逻辑功能,包括提供和使用的接口,以及实现提供接口的命令(command)和使用接口的事件(event)。

8、配置(configuration):配置则是用来将一系列组件装配起来的特殊组件,它将内部各个组件所使用的接口与其它组件提供的接口连接在一起。每个nesC应用程序都由一个最顶层的配置所描述,其内容就是将该应用程序所有用到的组件连接起来,形成一个有机整体。 

9、uses:使用

10、provides:提供

11、command:命令

12、event:事件

13、post:

任务在实现模块中使用如下语法声明:task void taskname() { ... },

其中taskname()是程序员任意指定的任务名称标识。任务的返回值类型必须是void,而且不可一带参数。分派任务的(推后)执行使用的语法形式为:post taskname();。

可以从一个命令、事件、甚至是另外一个任务内部“布置(post)”任务。布置操作将

任务放入一个以先进先出(FIFO)方式处理的内部任务队列。当某个任务执行时,它会一直

运行直至结束,然后下一个任务开始执行。因此,任务不应该被挂起或阻塞太长时间。虽然

任务之间不能够相互抢占,但任务可能被硬件事件句柄所抢占。如果要运行一系列较长的操

作,应该为每个操作分配一个任务,而不是使用一个过大的任务。

14、call:nesc中对调用命令command用关键字call作为前缀

15、async:可选的async关键字指出指令或事件能在一个中断处理者中被运行,在通知事件时,使用关键字signal来完成对事件的通知。

16、nesC提供的机制:nesc语言提供了Task机制,支持TinyOS的并发模型

17、module可以包括usesprovidescommandevent

18、atomic:nesC使用“atomic”指出该段代码不可被打断

19、Task定义了“task”封装一些代码来完成一个任务,系统有FIFOtask队列。不同的Task之间没有优先级,但task可以被interrupt handler打断。为防止全局变量等公用数据被非正常修改,nesC规定只在task中进入公共的数据部分。

20、超过 1个实现被运行, 我们说模块的指令或事件为"扇出"。描述被组件使用的命令/事件,此命令/事件被调用时, 会进一步调用其他相关组件中接口的相关命令/事件函数,且结果会通过组合函数进行组合。

21、扇入:描述由组件提供的命令/事件,此命令/事件可在多个地方被调用/触发。

同时,根据学习语言的经验,当然要找一些编程实例去看看了。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎仔656

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值