TinyOS学习报告

更新时间:2023-07-05 08:15:41 阅读: 评论:0

西安电子科技大学软件学院
TinyOS学习报告
第一周报告
学院:软件学院
姓名:
日期:2009/12/24

TinyOS的安装:
windows系统中安装TinyOS-2.0需要以下六个步骤:
第一步是安装java jdk 1.5
第二步是安装cygwin
第三步是安装avr单片机工具或者MSP430工具;
第四步是安装nesctinyos-tool
第五步是安装tinyos-2.0
第六步是配置环境变量;
本周主要学习了:
TinyOS Documentation Wiki—Starting with TinyOS—Tutorials中的几个Lesson
Lesson 1 Getting Started with TinyOS
Lesson 2 Modules and the TinyOS Execution Model
Lesson 3 Mote-mote radio communication
Lesson 4 Mote-PC rial communication and SerialForwarder
Lesson 5 Sensing
Lesson 6 Boot Sequence
Lesson 7 Storage
Lesson 1
一、TinyOS中一些主要概念:组件、模块、配置以及接口
1.    任何一个 nesC 应用程序都是有一个或多个组件链接起来。组件提供(初中三年级provide)并使用(u)接口。接口声明了一组函数,称为命令(command),接口的提供者必须实现它们;还声明了另外一组函数,称为事件(event),接口的使用者必须实现它们。
2.    组件有两种类型:
模块:提供一个或多个接口的实现
配置:装配其他组件并使组件之间的接口相连
3.    每个男鸡女猴nesC 应用程序都由一个顶级配置所描述
4.    为什么要区分模块和配置?
    为使设计者构建应用程序时能从实现细节中摆脱出来
Q:一个配置可以使用和提供接口。是不是使用或提供接口的配置就不能为顶级配置,而没有使用和提供接口的配置就一定是顶级配置?
二、怎样编译一个TinyOS程序以及安装到平台上
1    检查环境安装正确与否:tos-check-env
2.    查看ncc版本:ncc --version
3    使用“make”编译TinyOS应用程序,如:西双版纳的美make micaz。若需要仿真,make micaz sim
4.    安装程序到微粒(如mica-family
    make mica2 reinstall mib510,rialport
三、简介实例应用程序:Blink
1.    功能:在三个LEDS上每两秒显示二进制0-7.
2.    程序构成:
水滴壁纸    截图按什么键:顶级配置:导通和其它模板
    :提供Blink应用的实现
3.    “→”表示导通:把一个接口绑定到另一个接口。箭头的左边是使用者,右边是提供者。
四、可视化一个组件图形
nesdoc烧烤宣传语显示配置的结构与组成:    make platform docs
安全教育绘画Lesson 2
qq飞车s车
一、 Blink应用程序改进:BlinkSingle
1. 模块可以声明状态变量,一个组件声明的任何状态变量都是私有的:其他组件不能命名
或直接访问它。
2. BlinkSingle功能:与Blink功能一样。
3. BlinKSingle实现方法:与Blink相比,不是用三个timer使得三个LEDS闪烁,而是使用单个timer和一个状态变量counter去实现功能。改变如下:
二、接口,命令和事件
1    接口:是一系列声明的有名函数集合,同时是连接不同组件的纽带。nesC中的接口是双向的,这种接口实际上市提供者和使用者组件间的一个多功能通道。一方面接口提供者实现了接口的一组功能函数,称为命令,另一方面接口的使用者需要实现一组功能函数,称为事件。
2.    一个组件使用一个接口,就可以call接口的command,但是组件必须实现这个接口中的event
3    调用一个接口的命令需要“call”关键字,调用一个接口的事件需要用“signal”关键字。
三、TinyOS执行模型:任务
1.    任务在应用程序中是用来执行某些一般目的的“背景”处理的。它是一个函数,组件告诉TinyOS它稍后运行,而非现在。
2.    TinyOS 提供由“任务”和“硬件事件句柄”组成的两级调度层次结构。关键字async 声明
了可被硬件事件句柄执行的命令或事件。这意味着它们可在任何时候执行(可能抢占其他代码的执行),因此async 命令和事件所做的工作应该尽可能地少而且应快速结束。
3.    语法:
    任务在实现模块中使用如下语法声明:
task void taskname() { ... }
其中taskname()是程序员任意指定的任务名称标识。任务的返回值类型必须是void,而且不可一带参数。
分派任务的(推后)执行使用的语法形式为:
post taskname();
4. 可以从一个命令、事件、甚至是另外一个任务内部“布置(post)”任务。布置操作将任务放入一个以先进先出(FIFO)方式处理的内部任务队列。当某个任务执行时,它会一直运行直至结束,然后下一个任务开始执行。因此,任务不应该被挂起或阻塞太长时间。虽
然任务之间不能够相互抢占,但任务可能被硬件事件句柄所抢占。如果要运行一系列较长的操作,应该为每个操作分配一个任务,而不是使用一个过大的任务。
5. 一个任务可以安全地call命令和 signal事件,但命令不能signal事件(为了避免递归循环)
四、内部函数
1.    命令和事件是组件之间函数调用的唯一方式。
2.    内部函数:在一些情况下组件希望一个私有的函数供它内部使用。一个组件可以定义标准的C函数,其它组件不能命名这个函数也不能直接调用这个函数。
3.    调用内部函数不需要callsignal这样的关键字。
五、分相(Split-Pha)操作
1.    TinyOS中每一个长时间运行的操作都是分相的。在阻塞系统中,当一个调用长时间运行的操作时,只有操作完成时调用才会返回;而在分相系统中,调用会立即返回,当操
作完成会发出callback

本文发布于:2023-07-05 08:15:41,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1068516.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:接口   任务   组件   事件   配置   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图