物联网设备数量庞大,种类繁多,带给设计者的挑战就是如何高效地进行产品开发?我们看到许多公司在为小型连接设备和嵌入式控制器付费,而且投资不同的实时操作系统解决方案,这就导致成本增加,耗时变长。如果有一款物联网操作系统可以打通硬件和软件的连接通道,代码将可以重复利用,开发者的设计难度将大大降低,效率大大提高。
Zephyr操作系统成员达到9家公司
Zephyr就是专门针对资源受限设备而推出的物联网实时操作系统,具有小型化、高度可配置、高度模块化的特性,其超微内核可以运行在小到2KB的代码空间上。为了满足物联网设备的多样性,自推出以来Zephyr不断进行升级完善,如今已经更新到v1.11版本,所支持的硬件架构不断增加,同时还配合芯片供应商支持数量庞大的开发板,这样可以为开发者提供更多的选择余地,避免工程师为了进行产品开发重新学习新的平台增加时间成本。最新版本所支持的架构达到7种,包括:包括x86架构、ARC架构、ARM架构、NIOS II 架构、RISC V架构、Xtensa架构和Native POSIX架构,几乎囊括了市面上的所有主流硬件架构。新版本所支持的开发板数量已经达到90种,提供的驱动程序达到247 种,贡献者人数达到95人。
Zephyr支持的架构、开发版、驱动程序、贡献者数量列表
今年年初,Zephyr也制定了本年度的发展路线图。首先要扩展应用示例和应用领域:包括工业、安全、安防,深入嵌入式应用,高级配置和使用示例涉及SMP和AMP(预计在1.12版本推出);其次在生态系统方面,Zephyr计划改进对Mac和Windows系统的支持,进行IDE集成,第三方工具加上追踪、分析、调试,以及LLVM、商业编译器(1.12版本);另外引入并支持Zephyr作为E2E平台,包括Bootloader、设备固件升级、云连接等,增加开发工具;在安全和安防方面,Zephyr将考虑开发模块和处理的安全性,保护并加强内核(1.12版本),符合MISRA-C 2012标准;标准API和可移植性包括POSIX Layer(PSE54),BSD socket(1.12版本)。
在三月份举办的Open IoT Summit上, 来自Intel公司的Anas Nashif, Zephyr项目技术委员会主席,与大家分享了Zephyr LTS的计划。(演讲ppt 请参考https://schd.ws/hosted_files/elciotna18/2d/openiot_zephyr_lts_what_and_why.pdf )
什么是Zephyr LTS?回顾以往的基于功能的版本发布,它们更关注与强化现有的功能,而不是引入新的功能,进行前沿引领。Zephyr LTS更专注于产品,兼容新硬件,Zephyr将在整个开发周期中不时发布一些为新硬件提供功能支持的小的版本 (point releases);缩短开发窗口并延长Beta周期,以便于进行更多测试和错误代码修复;它是可认证的,为用户提供可审计分支的基础。
审计代码库将从Zephyr OS功能子集中建立一个审计代码库,两个代码库将从此保持同步,但是在新功能进入审计代码库之前,将执行更严格的流程(认证需要),初始的和后续的认证目标将由Zephyr项目委员会决定,实现选定认证的流程由安全工作组决定,并与TSC做协调;
FuSA、安全预认证路线图
FuSA、安全预认证路线图具有限制范围,它仅限于在官方支持和维护的代码,而且从最低层开始往上层走;遵循编码、风格指南、研发流程,符合MISRA-C(MISRA-C:2012);具有可移植性,支持POSIX API(PSE52、长字节 PSE54);具有定义良好且稳定的API;在稳健性和操作安全性方面,支持MMU和MPU,具有Thread 隔离和堆栈保护,增强和增加测试范围。
定义范围:目前的状态
Zephyr是一个托管在github上的one-tree项目,位于一个GIT库上,松散地遵循Linux内核研发模型并使用Linux配置系统(Kconfig),所有项目功能和硬件支持都是Zephyr的一部分,通过使用配置选项(Kconfig)包含/排除一些功能及硬件支持来实现模块化。Zephyr不提供源代码级别的模块化,对外部远程委托模块提供有限的支持,对out-of-tree的板和HAL(开发板、SoC、驱动等)提供有限的支持。Zephyr包括外部维护代码,例如:供应商HAL、库(加密、调试等)。
按照需求,用户应该仅能“下载”和“看到”他们需要的示例模块,不用考虑XYZ HAL,如果用户正在某个特定架构上进行构建,他们不需要处理所有其它架构的HAL;
而且仅限内核模式,模块化直至内核和准系统,用户应该能够只使用内核和基础功能,不包含Zephyr中的其它内容。
用于嵌入式系统的安全性、可移植性和可靠性的编码,包括MISRA-C:2012,修订版1,遵循MISRA C合规性:2016年指南。
在航空航天(FAA)领域,遵循DO-178C(DAL A是最高认证级别),它来自DO-178C的取样认证:无线电遵循DO-330至333,安全遵循DO-254。在安防领域,遵循通用标准(EAL4但可能更高水平EAL5,6)。其它医疗遵循FDA 510(K),ISO 14971,IEC 60601,工业遵循UL 1998等。
首先确定LTS必须具备的功能特性;
根据以上特性,确定时间表和发布日期(建议1.12);
围绕LTS构建流程;
LTS作为长期目标,以及针对产品和认证推荐的Zephyr版本;
季度发布是短期的,可发布的里程碑导致LTS:AKA 工程,预览版
提供升级(错误代码修复和LTS到LTS+1);
生命周期:最初为2年;
在ARC、ARM和X86上,MMU/MPU支持存储保护和线程隔离,PSE52带有文件系统支持的嵌入式POSIX 配置文件,BSD 插口 API,在Linux、Mac和Windows上提供一流的支持。在OS意识和调试支持方面,挂钩用于追踪内核对象,内存和电源功能分析挂钩。
总的来说,功能安全和安全需求需要与项目开源性质共存;在项目层面驱动质量,需要公开展示我们的质量流程和测试计划,通过质量管理发布流程来推动采用;
管理开发者和贡献者的期望;MISRA-C被认为是“邪恶的”,对于开源项目不够灵活;我们要继续在主树上进行创新,同时凝固和稳定Zephyr LTS。
———————-
Zephyr 项目是一款小型且可扩展的操作系统,尤其适用于资源受限的硬件系统,可支持多种架构;该系统高度开源,对于开发人员社区完全开放,开发人员可根据需要对该系统进行二次开发,以支持最新硬件、工具和设备驱动程序;该系统高度模块化平台,可轻松集成任何架构的第三方库和嵌入式设备。