• 专为物联网而生的操作系统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
  • 相关阅读:
    initramfs扫描磁盘前改变磁盘上电顺序
    “井号键”用英语怎么说?
    syslog,rsyslog and syslog-ng
    glob (programming) and spool (/var/spool)
    CentOS 6.5语言包裁剪
    C​P​U​_​C​S​t​a​t​e​_​P​S​t​a​t​e and then ACPI on Wiki
    we are experimenting with a new init system and it is fun
    linux init->upstart->systemd
    微信浏览器内建的WeixinJSBridge 实现“返回”操作
    npm i node-sass 报错&npm 镜像切换
  • 原文地址:https://www.cnblogs.com/maxma/p/9170117.html
Copyright © 2020-2023  润新知