随着运动热潮被掀起,可穿戴设备受到关注,近年来佩戴智能手环、智能手表等可穿戴设备逐渐被视作一种时尚。不过可穿戴设备只是物联网的一个分支,医疗和健康领域的可穿戴设备逐渐呈主流趋势。一系列不同形态的可穿戴设备为用户提供各种信息,从生物参数测量,如:心率和出汗安全水平,到安全信息一应俱全。而且许多可穿戴设备配有显示屏,可以独立运行,并且大部分支持一些典型的无线通信方式。
在裸机上运行一款专用的应用程序是可能的。虽然很多紧凑型设备采用微控制器提供低功耗操作,但有操作系统会使编程更简单。这有助于提升系统性能、安全性和保密性,因为相对于单一的应用,通过操作系统提供的服务已经在广泛的应用环境里经过了检验和优化。
1.可穿戴物联网设备能够从一个紧凑型的操作系统获得便利,因为它们一般已经包含了一个无线协议。
这一领域的操作系统和实时操作系统种类繁多,它们竭力吸引开发者的目光,包括大量商业软件和开源软件,甚至物联网被带向二者的混合。近来用户讨论的不仅是连接性(如:无线协议),还包括作为超级子集的物联网通信协议,类似安全和在线升级等功能需要和操作系统集成,那就是需要把很多软件封装在一个小的空间中。
可穿戴设备物联网系统有时会使用Linux,但它也会使用一些更紧凑型的操作系统,如ARM nbed、FreeRTOS、NuttX、RIOT OS、TinyOS和Zephyr等。
今天笔者就带大家仔细了解一下Zephyr项目,它是Wind River的超微内核OS的衍生品。Wind River为Zephyr提供许多开发人员所需要的专业的商业支持。实际上,这种类型的支持可以从其它操作系统的各种资源中获得,这就是为什么商业操作系统经常被作为物联网应用的首选。
什么是Zephyr?
Zephyr是一个开源项目,源代码使用了Apache 2.0 授权。
Zephyr 1.6版本建立在统一的内核上,它的架构最初包含一个超微内核。超微内核版本为资源受限平台而设计的,可以运行在小到2KB的代码空间上。其它功能由微内核提供,最小需要50kB的空间。
Zephyr有类似紧凑型操作系统的许多功能,包括单一寻址空间和非动态实时支持。前者通常是硬件限制,后者是设计选择,因为大多数设备解决一组固定的应用特征。同样,资源在编译时或者建立时也是被固定和定义的,这能减少存储空间并提升性能。系统通常有最小运行时间的错误查找,尽管Zephyr针对应用开发阶段的系统调试有一个可选的错误查询基础设施。
统一内核的可扩展性部分是多线程服务,它可以处理基于优先级的非抢占线程以及具有可选循环时间分片调度程序的抢占线程。中断服务支持使用中断处理程序的编译时注册。
2.Zephyr的原始超微内核/微内核平台已经被一个统一的内核取代,可以配置以解决超微内核所针对的资源受限环境。除此之外,它可以提供最初微内核中几乎所有的功能。
Zephyr提供一般的操作系统服务,如:动态内存分配。跨线程同步服务支持二进制信号量,计数信号量和互斥信号量。跨线程数据传输服务采用基础消息队列以及增强消息队列和字节流。电源管理服务支持无缝空闲。应用程序还能够利用先进的空闲基础设施,相应增加代码大小。
目前为止,Zephyr看起来很像一个典型的紧凑型操作系统,恰好就是这样的。 越往上层看事情变得越发有趣。
Zephyr支持包括像蓝牙和WiFi这样的无线协议,也支持三线和五线串口这样的有线连接方式。Zephyr还支持像LoWPAN这样的标准通信中间件,以及支持线程组的线程计划也已经被Zephyr项目的技术指导委员会提上日程,顺便说一下,Linux基金会支持Zephyr。加密和加密通信支持由TinyCrypt 2 和 mbed的 mbedTLS堆栈提供。Zephyr的标准中间件部分使得它在物联网环境中更加有趣。
静态查找开源项目
再来看看Zephyr的静态分析,它在安全和保障方面很重要。像很多项目一样,Zephyr用C语言编写。C语言有很多优势,但是它也会让程序员意外的出现“搬起石头砸自己的脚”的情况。静态分析能够发现很多C程序员无意中加入的错误代码。不幸的是,传统的C/C++编译器不提供静态分析工具,除了基础检查可能是个例外。
市场上有很多商业静态分析工具。许多商业C/C++工具集还包含这些支持,如MISRA C/C++检查。商业解决方案之一是来自新思公司旗下的Coverity。Coverity扫描是一种免费服务,由Coverity/Synopsys提供给开源项目。它能够用于Java、C/C++、C#、JavaScript、Ruby,或者Python开源项目,并且包含有像Zephyr这样的平台中。Coverity扫描有一些限制,比如每周可操作的次数,但是它可与日常开发结合使用。当然,开发者可以购买Coverity的工具就没有这种限制了。
对于需要在像可穿戴设备这样的资源受限平台上开发应用的物联网开发者来说,Zephyr只是众多选择中的一个。
关于Zephyr
Zephyr 项目是一款小型且可扩展的操作系统,尤其适用于资源受限的硬件系统,可支持多种架构;该系统高度开源,对于开发人员社区完全开放,开发人员可根据需要对该系统进行二次开发,以支持最新硬件、工具和设备驱动程序;该系统高度模块化平台,可轻松集成任何架构的第三方库和嵌入式设备。