TinyOS无线传感器网络操作系统

联合创作 · 2023-09-26 19:31

TinyOS是一款自由和开源的基于元件(component-based)的操作系统和平台,它主要针对无线传感器网络(WSN, wireless sensor network)。TinyOS是用nesC程序编写的嵌入式操作系统,其作为一系列合作项目的结果。 它的首先出现是做为UC Berkeley和Intel Research合作实验室的杰作,用来嵌入智能微塵当中,之后慢慢演变成一个国际合作项目,即TinyOS联盟。

TinyOS应用程序是用nesC编写,它是C programming language的一个分支对于感知网络的内存限制问题作了优化。它的补充工具主要来自于Java形式和shell script的front-ends。其他的相关的库和工具,例如NesC编译器和Atmel AVRbinutils toolchains,大部分用C编写。

TinyOS程序由基于组件的软件工程software component建构,它们中一些表现了硬件的抽象概念, 组件用接口互相连接。TinyOS为普通的抽象描述(abstractions)提供了接口和组件,例如数据包通信(packet communication),路由,感知(sensing),行为(actuation)和储存。

TinyOS完全的non-blocking:它配备了一个单独的堆栈。因此所有的持续超过几百微秒I/O操作都以异步进行并且带有回叫功能(callback)。为了使本地的编译器更加出色地优化交叉呼叫边界(optimize across call boundaries),TinyOS用nesC的特性去连接这些回叫,叫作事件(events)。non-blocking系统可以让TinyOS在单一存储器下保持高度的协同性(concurrency)。它强迫程序用stitching together many small event handlers的方法编写复合逻辑。为了支持更高的计算量,TinyOS提供了任务(tasks),其比Deferred Procedure Call and interrupt handler bottom halves小。

一个TinyOS组建可以发布一个任务,操作系统可以把它排入列表以待之后执行。任务是没有优先权的并且按照FIFO运行。 这个简单的协同模型是典型的满足了以I/O为中心的应用,但这样的模型对于CPU负荷重的应用程序来说不是太好的,因为它会导致向OS多次提出线程间协同处理的请求(but its difficulty with CPU-heavy applications has led to several proposals for incorporating threads into the OS.)。

TinyOS代码与程序代码进行静态连接,然后用GNU toolchain。编译到一个小的二进制系统中。 它的联盟为TinyOS的应用,提供完整的开发平台。

浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报