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


      在物联网的世界里,一个智能终端节点的存储空间往往不足100KB,那么如何在这么小的空间里高效稳定的运行多进程多任务的程序呢?TinyOS的诞生为我们提供了一个完美的解决方案。
    分为如下几部分: 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提供一系列可重用的组件,一个应用程序可以通过连接配置文件(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

      如图所示,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
  • 相关阅读:
    左偏树
    论在Windows下远程连接Ubuntu
    ZOJ 3711 Give Me Your Hand
    SGU 495. Kids and Prizes
    POJ 2151 Check the difficulty of problems
    CodeForces 148D. Bag of mice
    HDU 3631 Shortest Path
    HDU 1869 六度分离
    HDU 2544 最短路
    HDU 3584 Cube
  • 原文地址:https://www.cnblogs.com/maxma/p/9170117.html
Copyright © 2020-2023  润新知