下载此文档

TinyOS学习笔记.doc


文档分类:外语学习 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
基础知识
应用层配件
*
TinyOS调度
MainC组件
应用程序接口
(应用程序提供的接口,仅供本程序使用)
应用程序模块
*
TinyOS 接口
存放在/tos/interface目录下
库组件
在/tos/lib目录下
TinyOS系统组件
在/tos/system目录下,为系统抽象出的最高层组件
硬件适配层/抽象层
该层一般位于/tos/chips或相应的平台/platforms下
具体硬件
TinyOS体系结构Sleep
中断服务向量
事件1
COMP1
提交task1
Task1
Task1运行
COMP2
事件2
提交task3
提交task2
Task2
Task3
Task3
Task2
Task3
硬件中断
TinyOS任务调度
组件模型module & configuration
TinyOS是基于构件的微操作系统,采用事件驱动模型,有效的提高了系统的运行效率以及能源合理利用。TinyOS采用nesC语言编写,其应用程序由一个或多个组件连接而成,而组件可以提供和使用接口,mand接口,并且必须实现其连接组件中申明的事件event接口。接口是程序的实体,实现程序的各功能模块,mand接口由组件本身实现,而event接口则由调用者实现,值得注意的是,接口是双向的,mand接口时必须实现其event接口。
<>表示可变类型argument type
只用做配线时类型匹配检测
组件又可以细分为模块module和配件。模块亦可分为2个部分,其一,首先申明提供以及使用的接口,如
申明使用的接口。As 表明生成这个接口的一个实例。这是标准写法,其实下面这条语句的全写就是 uses interface Leds as Leds;
module BlinkC {
uses interface Timer<TMilli> as Timer0;
uses interface Leds;
users interface Boot;
}
其二,在implementation中模块包含各接口所提供的行为(方法),也包含仅供本模块内部使用的函数,以及申明本模块所具有的事件signal,以及实现其连接或使用的event。
implementation
{
uint8_t counter = 0;
实现Boot接口中的事件
void ledctl()
{
call (counter);
}
使用接口提供的方法
event void ()
{
call ( 250 );
实现调用Timer0的事件
}
event void ()
{
调用模块内部函数
counter++;
ledctl();
}
}
配件configuration也可以分为两个部分,和module一样,第一部分是申明可以提供以及使用的接口。第二部分implementation 中首先列出与其相连接模块的名称,ponents标注连接的模块,然后对本配件提供的以及与其相对应模块使用以及提供的接口进行配线,如下例:
configuration BlinkAppC
BlinkC作为该配件对应的模块
BlinkC模块中使用的Boot接口连接到MainC模块上
{
}
与其连接的模块申明
implementation
{
components MainC, BlinkC, LedsC,TimerMilliC;
BlinkC -> ; ///// -> ;
<TMilli> ->TimerMilliC;
-> LedsC;
}
在TinyOS中存在很多中间配件,这些配件的特点是没有与之相对应的模块,其作用就是根据不同的条件将上层的连接转接到不同的模块上,如下例所示
generic configuration AMSenderC(am_id_t AMId) {
provides {
配件提供接口供其他组件连接
interface AMSend;
interface Packet;
interface AMPacket;
interface PacketAcknowledgements as Acks;
}
}
根据不同条件申明连接的模块
implementation {
#if defined(LOW_POWER_L

TinyOS学习笔记 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人分享精品
  • 文件大小110 KB
  • 时间2017-08-09