免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2674 | 回复: 0
打印 上一主题 下一主题

TinyOS、NesC程序开发经验谈 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-07 09:42 |只看该作者 |倒序浏览
      自己当初不知到为什么,导师让我选做图像(在硕士一年级下学期时开发了人脸与指纹融合识别系统),还是无线传感器网络(WSN)时,我从导师偏向的介绍中坚定做WSN,之后虽然还有别的与WSN无关的项目去做,但知道自己主要研究方向是WSN。
   
05年11月和06年6月,两次参加Crossbow的培训,第一次是什么不懂,第二次是带着项目问题过去的,自然收获也不一样了。1年半的编程,让我
从刚开始的摸索到可以应付项目程序的需要,也算有所得了。离开实验室时,还给实验室留下一套实验系统,也是个系统框架,可以扩展,听说实验室用我的那个框
架还在开发新系统,很是高兴。

   我之前有一些语言的开发经验,从刚开始的Basic,到C,VB,C++,VC和ASP,这些给我学习TinyOS和NesC有很好的帮助,不然我
就不是花上一个月熟悉它了。所以C的基础是必要的,熟悉NesC和tinyos比较好的方法是按照
..\tinyos\cygwin\opt\tinyos-1.x\doc\tutorial
中的几个lesson进行操作。以下是TinyOS、NesC程序开发经验谈。
一、 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\cygwin\opt\tinyos-1.x\doc\tutorial
提供了8个lesson,是用来熟悉nesC语法用的。把lesson1(Blink)和lesson2(sense)看懂,并且按照后面练习中的要求修
改程序。做完之后,对于nesC的语法就比较熟悉了。之后看别的程序差不多就可以直接看源代码了。
三、 生成程序的结构图
      很有用的功能,在程序的文件夹里,键入“make micaz
docs”命令,可以在../doc/nesdoc/micaz目录下生成这个程序的结构图。通过看结构图来了解程序比较直观。另外,在编写程序的时候,
有一个问题,就是调试程序很困难。因此在编写完程序并且编译通过之后,可以先生成它的结构图,检查是否正确,作为调试程序的一个步骤。
四、 调试方法
在程序中尽量多得使用三个指示灯,是比较有效的调试方法。程序写完之后可以生成程序的结构图以及用listen命令读取消息包的类型。
五、 有用的链接
TinyOS tutorial:
http://www.tinyos.net/tinyos-1.x/doc/tutorial/
TinyOS FAQ:     
http://www.tinyos.net/faq.html#SEC-43
TinyOS Programming, NesC Tutorial(这些网上可以下载到,没有找到的话,留下Email我给你发,对了我这也有TinyOS中文版和NesC中文版,但我建议还是英文原版的好,翻译过来的实在是...)
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/76848/showart_1891782.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP