专为物联网而生的操作系统——TinyOS google物联网操作系统

关键词:物联网,操作系统,TinyOS

在物联网的世界里,一个智能终端节点的存储空间往往不足100KB,那么如何在这么小的空间里高效稳定的运行多进程多任务的程序呢?TinyOS的诞生为我们提供了一个完美的解决方案。

TinyOS的介绍

TinyOS是一款开源的嵌入式操作系统,它基于一种组件(Component-Based)的架构方式,使得能够快速实现各种应用。它的首先出现是做为UCBerkeley和IntelResearch合作实验室的杰作,用来嵌入智能微尘当中,之后慢慢演变成一个国际合作项目,即现在的TinyOS联盟。它设计之初的目的是制作一个专属嵌入式无线传感器网络(WSN,wirelesssensornetwork)的操作系统。但事实上,由于良好的可扩展性和足够小的代码尺寸,TinyOS在物联网的应用领域中也占有非常重要的地位;

TinyOS作为一个专业性非常强的操作系统,主要存在如下几个特点:

1.拥有专属的编程语言

TinyOS应用程序都是用NesC编写,其中NesC是标准C的扩展,在语法上和标准C没有区别,它的应用背景是传感器网络这样的嵌入式系统,这类系统的特点是内存有限,且存在任务和中断两类操作,它的编译器一般都是放在TinyOS的源码工具路径下。

2.开放源代码

所有源码都免费公开,可以访问官方网站www.tinyos.net去下载相应的源代码,由全世界的TinyOS的爱好者共同维护,目前最新的版本是2.1.1。

3.基于组件的软件工程建构

专为物联网而生的操作系统——TinyOS google物联网操作系统
TinyOS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(AWiringSpecification)将各种组件连接起来,以完成它所需要的功能。

4.通过Task和Events来管理并发进程

Tasks:一般用在对于时间要求不是很高的应用中,且tasks之间是平等的,即在执行时是按顺序先后来得,而不能互相占先执行,一般为了减少tasks的运行时间,要求每一个task都很短小,能够使系统的负担较轻;支持网络协议的替换。

Events:一般用在对于时间的要求很严格的应用中,而且它可以占先优于tasks和其他events执行,它可以被一个操作的完成或是来自外部环境的事件触发,在TinyOS中一般由硬件中断处理来驱动事件。

5.支持网络协议组件的替换

除了默认的协议之外,还提供其他协议供用户替换,并且支持客户自定义协议,这对于通信协议分析,非常适用于通信协议的研究工作。

6.代码短小精悍

TinyOS的程序采用的是模块化设计,所以它的程序核心往往都很小,一般来说核心代码和数据大概在400Bytes左右;能够突破传感器存储资源少的限制,这能够让TinyOS很有效的运行在无线传感器网络上并去执行相应的管理工作等。

如何安装TinyOS的开发环境

若要进行TinyOS的开发研究,先得安装好TinyOS的开发环境,由于NesC的编译器ncc只能运行在Unix环境下,TinyOS开发环境有三种安装方式:

一、独立启动的Linux

官方提供rpm包和deb包,一般建议使用Ubuntu9.04或是RHEL5

二、Windows+Cygwin

Cygwin是一个软件集合,支持用于各种版本的MicrosoftWindows上,运行UNIX类系统,ncc可以运行在Cygwin上,使用这种方式的人最多

三、VMware+Xubuntu

在TinyOS.net上可以下载到一个包含完整TinyOS开发环境的Xubuntu虚拟机镜像文件,只要在PC上安装好VMwareplayer即可使用,这个方式最快捷,但是由于是虚拟机的方式,所以编译速度比较慢

不论是哪种方式安装的流程基本都是一样的:

1.安装JDK1.6,用于WSN基站或是WSN网关与PC机的交互

2.安装Cygwin,仅当第二种安装方式才需要安装

3.安装平台交叉编译器,用于将C代码交叉编译成很终端设备可以运行的二进制文件,一般来说有AVR、MSP430、8051、ARM这几种类型

4.NesC编译工具,TinyOS都是基于NesC语言写的,所以需要NesC编译工具将其编译成C代码,编译后的C代码就可以交给平台交叉编译工具了

5.TinyOS源码树,所有的TinyOS源代码都在这里,可以通过Git或CVS方式进行版本管理,目前最新的版本是2.1.1

6.安装Graphvizvisualization工具,TinyOS开发环境包含nesdoc工具,该工具可以自动生成可视化的模块关系图表,帮助开发人员观看源代码,而该工具依赖于Graphvizvisualization工具

7.设置环境变量,主要是将各个工具的路径添加到Shell环境变量中去

TinyOS的开发过程



如图所示,TinyOS的编译+下载的过程可以分成如下阶段:

1.使用NesC编写程序源代码,源代码的后缀为*.nc,可以用各种支持C高亮的编写器,这里笔者推荐Notepad++;

2.将*.nc的源代码通过NesC编译器ncc编译成标准C文件,这里要注意的是:ncc编译器只能将*.nc文件编译成C代码,并不能直接生成二进制代码,所以在安装开发环境时,必须根据自己的开发平台选择对应的交叉编译工具;

3.使用与硬件平台相关的C交叉编译工具将标准C文件编译成可执行的二进制文件,笔者用的硬件平台是CC2430芯片,它的核心CPU是8051,那么就可以使用各种8051的C编译器,例如Keil或是IAR

4.通过编写器将二进制可执行文件下载到硬件平台上,笔者用的是CC2430芯片,对应的编程器是SmartRF04FlashProgrammer

TinyOS的调试是比较麻烦的,因为调试工具都不支持NesC语法,只能先调试NesC编译生成的C文件,然后根据C代码中的注释语句反查NesC源码;

TinyOS开发平台介绍

国内目前可以买到的TinyOS开发平台主要有两种,一种是Crossbow公司WSN开发套件,一种亿道电子的XSBase-WSN开发套件;

1.Crossbow本身就是TinyOS联盟的成员之一,其所有产品都在TinyOS源码的Platform目录下可以找到,可以算得上是TinyOS技术商用化的代表;在国内有一家代理,开发平台的做工非常不错,产品覆盖面也比较广,主要的缺点就是产品太贵,而且中文的资料较少。

2.亿道电子的WSN套件真是笔者目前正在使用的开发平台,它使用是较先进CC2430芯片,同时支持TinyOS和Z-stack两种开发方式,并且包含大量的中文教材和使用手册,硬件移植的也非常稳定,所有的TinyOS测试用例都能正常运行,而且还带了大量的中文教材、使用手册和实验用例,所以笔者个人认为作为WSN的验证开发平台性价比更高。其中值得一提的是,该产品搭建了一整套的解决方案框架,实现了异构网络之间的互联互通,可以在任何一地通过GPRS手机上网,访问节点上的物理数据,开发者可以迅速的在这个框架下做二次开发。

TinyOS开发案例

目前有多个采用TinyOS的研究项目,如UCLA(加州大学洛杉矶分校)的ShahinFarshchi在进行一项以TinyOS为基础的无线神经界面研究。这样的系统在100Hz/频道的采样频率下可传感、放大、传输神经信号,系统小巧、成本低、重量轻、功率小。系统要求一个接收器接收、解调、显示传输的神经信号。在每秒8bit的采样率下,系统的速度可达5600。该速度可保证8个EEG频道、或1个速度为每秒5.6K采样频道的可靠传输。研究者目前的奋斗目标是提高该基于TinyOS的传感网络的数据传输速度,设计与被测对象连接的前端神经放大电路。

http://www.ee.ucla.edu/~judylab/research/projects/Shahin/index.htm

路易斯安娜州立大学和位于BatonRouge的南方大学的Nian-FengTzeng博士正在研究应用于石油/气体开发和管理的UcoMS(UbiquitousComputingandMonitoringSystem,泛计算和监控系统)。该系统适用于传感网络、无线通信和网格计算,主要功能包括帮助钻孔、操作数据记录和处理、在线平台信息发布和显示、设备监控/入侵检测、地震处理、复杂表面设备和管道的管理。也可使用UCoMS监控、维护淘汰的平台。

http://www.ucoms.org

另外,Freescale正在其Zigbee开发板上测试TinyOS和TinyDB。

波士顿大学的WeiLi将其用于传感网络的控制和优化:

http://people.bu.edu/wli

BrilliantTechnology将其用于无线传感网络进行结构健康监测:

http://www.tBrilliant.com

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/102841.html

更多阅读

为成功+荒诞而设的斯特拉奖 讹诈斯特拉瑞斯

在美国,有好事者创立了一个斯特拉奖(StellaAwards),专门颁给最成功+荒诞的法律诉讼案的原告律师和痴傻陪审团。斯特拉奖以一个叫StellaLiebeck的新墨西哥州的妇人而得名。此老太太曾于1992年2月27日,79岁时,因在麦当劳的外卖窗口用49美分

声明:《专为物联网而生的操作系统——TinyOS google物联网操作系统》为网友撒浪嘿呦分享!如侵犯到您的合法权益请联系我们删除