加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

每天了解一个物联网操作系统(十二)(Tiny OS操作系统)

发布时间:2023-07-31 15:07:21 所属栏目:Unix 来源:未知
导读:
Tiny OS的出现是伯克利大学(UCBerkeley)和英特尔(IntelResearch)合作实验室的杰作,用来嵌入智能微尘当中,之后慢慢演变成了一个国际合作项目,即现在的Tiny OS联盟。
Tiny OS是开放源

安装unix系统_unix系统 下载_安装unix系统

Tiny OS的出现是伯克利大学(UCBerkeley)和英特尔(IntelResearch)合作实验室的杰作,用来嵌入智能微尘当中,之后慢慢演变成了一个国际合作项目,即现在的Tiny OS联盟。

Tiny OS是开放源代码的操作系统,专为嵌入式无线传感网络设计,操作系统基于构件(component-based)的架构使得快速的更新成为可能,而这又减小了受传感网络存储器限制的代码长度。Tiny OS是一个具备较高专业性,专门为低功耗无线设备设计的操作系统,主要应用于传感器网络、普适计算、个人局域网、智能家居和智能测量等领域。

Tiny OS是专为物联网而生的操作系统,在物联网的世界里,一个智能终端节点的存储空间往往不足100KB,那么如何在这么小的空间里高效稳定地运行多进程、多任务的程序呢?Tiny OS的诞生为人们提供了一个完美的解决方案。它设计之初的目的是制作一个专属嵌入式无线传感器网络(Wireless Sensor Network, WSN)的操作系统。

Tiny OS特点

相对于主流操作系统成百上千MB的庞大体积来说,Tiny OS显得十分小巧,只需要几KB的内存空间和几十KB的编码空间就可以运行起来,而且功耗较低,特别适合传感器这种受内存、功耗限制的设备。

Tiny OS本身提供了一系列的组件,包括:网络协议、分布式服务器、传感器驱动及数据识别工具等,使用者可以通过简单方便的编制程序将多个组件连接起来,用来获取和处理传感器的数据并通过无线信号来传输信息。

Tiny OS在构建无线传感器网络时,通过一个基地控制台控制各个传感器子节点,聚集和处理各子节点采集到的信息。Tiny OS只要在控制台发出管理信息,然后由各个节点通过无线网络互相传递,最后达到协同一致的目的。

Tiny OS的特性决定了其在传感器网络中的广泛应用,由于良好的可扩展性和足够小的代码尺寸,Tiny OS在物联网的应用领域中也占有非常重要的地位。Tiny OS作为一个专业性非常强的操作系统,主要有如下几个特点:

1.拥有专属的编程语言

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

2.开放源代码

所有源码都免费公开,用户可以访问官方网站下载相应的源代码,它由全世界Tiny OS的爱好者共同维护,版本实时更新。

3.基于组件的软件工程

建构Tiny OS提供一系列可重用的组件,一个应用程序可以通过连接配置文件(AWiring Specification)将各种组件连接起来,以完成它所需要的功能。

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

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

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

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

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

6.代码短小精悍

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

Tiny OS组成

Tiny OS的构件包括网络协议、分布式服务器、传感器驱动及数据识别工具。其良好的电源管理源于事件驱动执行模型,该模型也允许时序安排具有灵活性。

Tiny OS操作系统、库和程序服务程序是用NesC写的。关于NesC语言的特点总结如下:

● NesC是一种开发组件式结构程序的语言。

● NesC是一种C语法风格的语言,但是支持Tiny OS的并发模型,以及组织、命名和连接组件成为健壮的嵌入式网络系统的机制。

● NesC应用程序是由有良好定义的双向接口的组件构建的。

● NesC定义了一个基于任务和硬件事件处理的并发模型,并能在编译时检测数据流组件。Tiny OS规范如下:

● 应用程序由一个或多个组件连接而成。

● 一个组件可以提供或使用接口。

● 组件中Command接口由组件本身实现。

● 组件中Event接口由调用者实现。

● 接口是双向的,调用Command接口必须实现其Event接口。

1.Tiny OS实现

● modules:包含应用程序代码和实现接口。

● configurations:配置模块,通过接口向模块提供者配置连接参数。每个NesC应用程序都有一个顶级configuration模块。

2.Tiny OS模型

● Tiny OS只能运行单个由所需的系统模块和自定义模块构成的应用程序。

● 两个线程。

● 任务一次运行完成,非抢占式。

3.Tiny OS硬件事件处理

● 处理硬件中断。

● 一次运行完成,抢占式。

● 用于硬件中断处理的Command和Event必须用async关键字声明。

4.Tiny OS使用NesC编程注意事项

NesC是对C语言的扩展,为体现Tiny OS的结构化概念和执行模型而设计。TinyOS是为传感器网络节点而设计的事件驱动操作系统,是用NesC重新编写的。

● NesC要避免任务排他性访问共享数据。

● NesC要避免所有共享数据访问都通过原子语句。

● NesC在编译过程中要检测数据流,有可能误报,可以用norace关键字声明不检测,但对其使用应格外小心。

Tiny OS运行机理

1.基于组件结构Componented-Based Architecture

Tiny OS提供一系列可重用的组件,一个应用程序可以通过连接配置文件将各种组件连接起来,以完成它所需要的功能。

2.事件驱动结构Event-Driven Architecture

Tiny OS的应用程序都是基于事件驱动模式的,采用事件触发唤醒传感器工作。

3.任务、事件并发模式Tasks And Events Concurrency Model

并发执行模式:Tiny OS将代码分为同步代码和异步代码。同步代码仅由任务(Tasks)来执行,异步代码可由任务和事件(Events,如硬件中断事件、程序中断事件)二者之一来触发执行。

4.分段操作Split-Phase Operations

在Tiny OS中由于Tasks之间不能互相占先执行,所以Tiny OS没有提供任何阻塞操作,为了让一个耗时较长的操作尽快完成,一般来说都是将对这个操作的需求和这个操作的完成分开实现,以便获得较高的执行效率。

Tiny OS开发环境

若要进行Tiny OS的开发研究,要先安装Tiny OS的开发环境,由于NesC的编译器ncc只能运行在UNIX环境下,Tiny OS开发环境有3种安装方式:

● 独立启动的Linux。官方提供rpm包和deb包,一般建议使用Ubuntu 9.04或RHEL5。

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

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

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

(1)安装JDK 1.6,用于WSN基站或WSN网关与PC机的交互。

(2)安装Cygwin,仅当使用上述第二种安装方式时才需要安装。

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

(4)安装NesC编译工具,Tiny OS都是基于NesC语言写的,所以需要NesC编译工具将其编译成C代码,编译后的C代码就可以交给平台交叉编译工具了。

(5)建立源码文件夹,形成Tiny OS源码树,所有的Tiny OS源代码都在这里,可以通过Git或CVS方式进行版本管理。

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

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

Tiny OS开发过程

Tiny OS的编译+下载过程可以分成如下4个阶段:

(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。

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

Tiny OS开发平台

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

Crossbow本身就是Tiny OS联盟的成员之一,其所有产品都可以在Tiny OS源码的Platform目录下可以找到,可以算得上是Tiny OS技术商用化的代表。在国内也有一家Crossbow代理,其开发平台的做工非常不错,产品覆盖面也比较广。

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

Tiny OS的研究项目

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

● 飞思卡尔(Freescale)正在其ZigBee开发板上测试Tiny OS和TinyDB。

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

● BrilliantTechnology将其用于无线传感网络进行网络结构健壮监测。

● Tiny OS用于能源领域中的石油和气体监控,用于传感网络的控制和优化。

● Tiny OS用于无线传感网络进行健康监测等。

Tiny OS开源操作系统采用BSD许可证,非常小巧,支持低功耗,MCU目标设备可以“只有几KB内存和数十KB代码空间”,是为低端MCU和无线电芯片设计的。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章