一、什么是TinyOS?
·一种操作系统
·一种开源的开发环境
-一种程序设计语言和程序设计模型
-服务集
·主要思想
-快速启动和睡眠
·尽可能地睡眠以节省电能
-高并发,中断驱动(无轮询)
二、数据存储模型
·静态内存分配
-无堆
-无函数指针
·全局变量
-按帧可用
·局部变量
-栈中存储
-方法中声明
三、程序设计模型
·构造与组合分离
·程序由components组成
·每个component由interface制定
-提供hook将component连接起来
·components在它们的interfaces的基础上静态地连接起来
-增加了运行时效率
四、Components
·Components使用和提供interfaces,commands和events
-由component的interface指定
-在TinyOS里interface有两种意思
·Components实现自己使用的events和提供的commands
Component
Commands
Events
使用
可调用
必须实现
提供
必须实现
可产生信号
五、Components的类型
·两种类型的components:
-Modules:实现应用行为
-Configurations:连接components
·component并不关心另一个component是module还是configuration
·component可以由其它components组成
六、TinyOS的线程模型
·任务(Tasks):
-时间可变性
-更长的后台处理工作
-对其它任务(单线程)的原子性
-事件抢占
·事件(Events):
-实时
-更短的宽度(如果必要,不去碰任务)
-任务中断
-后进先出的语义(事件中无优先级)
·不要把event和NesC中的关键词event弄混淆
·TinyOS 1.1最多支持7个未决任务(task),从1.1.5起,你可以在makefile的PFLAGS行中添加DTOSH_MAX_TASKS_LOG2=n,使任务数达到2^n
七、Component的层次
·components之间靠把使用者和提供者连接起来相连
·Commands:
-向下流动
-控制返回调用者
·Events:
-向上流动
-控制返回信号产生者
·Events能调用commands,但反之不成立