Zephyr™项目是一个採用Apache 2.0协定许可,Linux基金会託管的协作项目。为所有资源受限设备,构建了针对低功耗、小型记忆体微处理器设备而进行最佳化的物联网嵌入式小型、可扩展的实时作业系统(RTOS),支持多种硬体架构及多种开发板,可以在小至8 kB记忆体的系统上运行。
採用深入的安全开发生命周期:安全验证,模糊和渗透测试,频繁的代码审查,静态代码分析,威胁建模和审查,以防止代码中的后门。
支持Bluetooth, Bluetooth Low Energy, Wi-Fi, 802.15.4,6Lowpan, CoAP, IPv4, IPv6, 和 NFC 等标準,通过社区驱动的发展来改进和增强功能。
基本介绍
- 外文名:Zephyr
- 类型:实时作业系统
- 特点:安全、开源、模组化、可连线
- 协定许可:Apache 2.0
- 运行记忆体:小至8kB
- 构建工具:CMake
- 最新LTS版本:Zephyr OS V1.14.0
系统简介
Zephyr项目是一个Linux基金会託管的协作项目,一个开源合作项目,联合了业内领先企业,为所有资源受限设备构建了针对资源受限设备进行最佳化的最佳小型可扩展实时作业系统(RTOS)。
Zephyr核心源自Wind River VxWorks的商用VxWorks Microkernel Profile。Microkernel Profile已经从称为Virtuoso的DSP RTOS技术发展了20多年。RTOS已被用于多种商业套用,包括卫星,军事指挥和控制通信,雷达,电信和图像处理。该技术成功的最新例子就是装载了WindRiver公司VxWorks实时作业系统的Rosetta comet probe(罗塞塔号彗星探测器)于2014年11月12日在67P/Churyumov-Gerasimenko(67P/楚留莫夫-格拉希门克彗星)成功着陆。
系统目标
Zephyr RTOS的目标是建立一个中立项目,成为针对连线的资源受限设备进行最佳最佳化的小型RTOS,可扩展、跨多个架构,并且考虑到安全性。
系统支持者
支持者
Zephyr 项目的初创成员有:英特尔公司(包括收购的Altera Corporation 和 Wind River)、恩智浦半导体公司(包括最近併购的 Freescale)和Synopsys公司。
2016年,Linaro加入Zephyr项目,与Intel,NXPSemiconductors和Synopsys初创成员都为白金会员。
2017年2月,Runtime.io和Nordic半导体公司加入Zephyr项目,成为其白银会员。oticon也为白银会员。
支持者对于项目的发言
“英特尔相信,Zephyr 项目将会在互联、嵌入式设备市场产生重大影响。通过提供可扩展、可定製、安全且开源的作业系统,Zephyr 项目将满足互联设备开发不断演变的需求。我们计画与 Zephyr 社区合作开发安全高效的作业系统以推动创新。”
——Mark Skarpness,英特尔开源技术中心嵌入式作业系统工程副总裁兼软体和服务集团总监
“我们坚信 Zephyr 将成为全球领先的易用物联网平台之一,它专门针对互联世界的安全性进行了设计。我们致力于为开发人员提供最好的工具和支持来开发创新解决方案。”
——Geoff Lees,恩智浦高级副总裁兼微控制器总经理
“Zephyr 项目能够满足行业对开源 RTOS 日益增长的需求,这种 RTOS 符合当今资源受限的安全物联网设备的要求。我们很高兴能够参与到这个协作项目中,并为该项目尽一份力,包括为基于 Synopsys ARC 的物联网 IP 项目提供支持。”
——John Koeter,新思科技 IP 和原型设计副总裁
系统特色
- 单个地址空间。将特定于应用程式的代码与定製的核心组合在一起,以创建一个在系统硬体上载入并执行的单片图像。应用程式代码和核心代码都在单个共享地址空间中执行。
- 高度可配置。允许应用程式只包含所需的功能,并指定它们的数量和大小。
- 编译时资源定义。允许在编译时定义系统资源,从而减少代码大小并提高性能。
- 最小的错误检查。提供最少的运行时错误检查,以减少代码大小并提高性能。提供了一个可选的错误检查基础结构来帮助在应用程式开发过程中进行调试。
- 广泛的服务套件:Zephyr™作业系统为软体开发提供了许多熟悉的服务,其中包含:
- 多执行绪服务 – 可以用于以优先权为基础非抢占式的纤程,以及以优先权为基础抢占式,可选轮询时间分片的任务;
- 中断服务 – 可以在编译中和程式运行时处理中断程式注册;
- 执行绪间的同步服务 – 提供二进制信号量(Semaphore)、计数信号量、互斥信号量;
- 用于基本讯息伫列,增强讯息伫列和位元组流的执行绪间数据传递服务;
- 执行绪间的数据传递服务 - 提供基本讯息伫列、增强的讯息伫列和位元组流;
- 电源管理服务 – 不需计数的闲置状态和先进的闲置基础架构。
硬体体系架构支持
- ARM
- x86(含x86_64体系)
- ARC
- NIOS II
- Xtensa
- Native POSIX
- RISC V
- Shields
社区将不断添加新的架构支持。
功能子系统支持
1. 蓝牙子系统
- Bluetooth5.0 compliant (ESR10)
- Bluetooth Low Energy Controller support (LE Link Layer)
- Generic Access Profile (GAP) with all possible LE roles
- GATT (Generic Attribute Profile)
- Pairing support, including the Secure Connections feature from Bluetooth 4.2
- IPSP/6LoWPAN for IPv6 connectivity over Bluetooth LE
- Basic Bluetooth BR/EDR (Classic) support
- Clean HCI driver abstraction
- Raw HCI interface to run Zephyr as a Controller instead of a full Host stack
- Verified with multiple popular controllers
- Highly configurable
2. 标準C库
3. 设备固件升级
4. 记录子系统
- System Logging(系统记录)
- Kernel Event Logging(核心时间记录)
5. 网路子系统
- IPv6
- IPv4
- Dual stack support(网路堆叠允许开发人员将系统配置为同时使用IPv6和IPv4)
- UDP
- TCP
- BSD Sockets API
- HTTP
- MQTT
- CoAP
- LWM2M
- RPL
- DNS
- Network Management API
- Multiple Network Technologies
- Minimal Copy Network Buffer Management
- IEEE 802.15.4
- Virtual LAN support
- Network traffic classification
6. 电池管理子系统
7. 感测器子系统
8. Shell子系统
9. 测试子系统
10. USB设备堆叠
11. 非易失性存储子系统
社区将不断添加更多网路及通信支持。
核心版本
V1.6.0核心版本
2017年1月推出V1.6.0核心版本
Zephyr v1.6.0核心版本採用统一的核心代替了原来分离的超微核心和微核心,并且简化了Zephyr整体架构和编程接口。其所支持的架构增加了ARM Cortex-M0/M0+系列,并且扩展了对Cortex-M板的支持。另外,新版本对文档、基础设施构建和测试做了很多改进。
主要的升级内容包括:
- 引入统一核心,超微核心和微核心被废除;
- 依旧支持原有的API,但是已经弃用;
- 将原有的测试和例程转移到“tests/legacy”和“samples/legacy”中;
- 添加统一核心文档,删除原有的超微核心/微核心文档;
- 增加支持ARM Cortex-M开发板;
- 增加支持USB大容量存储和访问档案系统;
- 增加对本地蓝牙控制器的支持,支持nRF51和nRF52。
V1.7.0核心版本
2017年3月推出V1.7.0核心版本
Zephyr V1.7.0核心版本继续对统一的核心进行细化,简化整个的Zephyr架构和编程接口。新版本将继续支持V1.5.0或更早版本发布的超微核心和微核心遗留API,也将是最后一个支持该功能的版本。
主要升级内容:
- 引入了一个新的原生IP堆叠,用以替换原有的uIP堆叠,新IP协定栈的实现维持原有的功能,添加额外的功能,并便于未来改进;
- 增加了对RISC V和Xtensa架构的支持,一共可以支持6种架构:X86架构、ARC架构、ARM架构、NIOS II 架构、RISC V架构和Xtensa架构;
- 引进Device Tree机制配置各个平台特定的设备信息;
- 基于ARM的平台最先使用Device Tree,记录的信息包括flash/sram的基础地址,UART设备;
- 使用Device Tree的平台包括NXP Kinetis平台,ARM Beetle,TI CC3200 LaunchXL, 以及STML32L476平台。
V1.8.0核心版本
2017年6月Zephyr推出V1.8.0核心版本。
该版本主要升级内容:
- Tickless 核心
- BT 5.0功能
- 生态系统:支持通过第三方工具Tracing和Debugging
- 改进的Build和Debug
- 第三方编译器支持
- Xtensa GCC支持
- 改进的Build on Mac / Windows
- MMU / MPU:初步支持(WIP)
- 扩展设备支持
V1.9.0核心版本
2017年9月Zephyr推出V1.9.0核心版本。
主要升级内容:
- 支持蓝牙5.0(除了Advertising Extensions全部支持)
- 蓝牙认证合格的蓝牙BLE控制器
- 低功耗蓝牙BLE Mesh
- 支持LwM2M
- Pthreads兼容API
- BSD插座兼容API, 允许使用众所周知的跨平台API编写/移植简单的网路应用程式
- 设备树支持扩展到更多架构
- 改进测试套件,增加覆盖面
- 支持堆叠前哨Stack Sentinel
- 增加了对安装了SecureShield MPU的ARC EM Starter 套件的支持(具有MPU的ARC EM7D)
- 支持更多开发板:Atmel 的SAM4S Xplained, Olimex STM32-E407 和 STM32-P405, STM32F412 Nucleo, STM32F429I-DISC1, TI 的SensorTag, VBLUno51 和 VBLUno52 开发板
- MMU / MPU(续):在原有的基础上进行执行绪隔离初始工作,开发者可在低许可权水平运行应用程式,以及只访问自身的数据或明确共享的数据,敏感的应用程式数据可以受到保护。同时,系统的稳健性增强,编程错误难以被恶意利用
V1.10.0核心版本
2017年12月Zephyr推出1.10.0核心版本。
Zephyr V1.10.0核心版本的构建工具从原来的Kbuild迁移到跨平台的CMake,使应用程式开发人员让Zephyr更容易用于需要不同开发环境的不同平台的开发。
主要升级内容:
- 针对用户空间做了更的记忆体保护
- 系统构建从原来的Kbuild切换到跨平台的CMake
- 支持Newtron Flash档案系统(NFFS)
- 与MCUBOOT引导载入程式集成
- 增加测试程式的覆盖範围,并将大部分测试示例迁移到ztest目录
- 增加更多的SoC、开发板、和感测器与驱动的程式支持
- 改进了nrf52系列SOC的电源管理
- 添加了LWM2M多分片网路数据包支持
- 新的CoAP库实现,支持更长的网路数据包
- 添加了mDNS(组播DNS)支持
- 改进IEEE 802.15.4、TCP,RPL,ARP,DNS,LWM2M等稳定性
- 改进蓝牙、蓝牙Mesh稳定性
- 支持BLE控制器中的PA / LNA放大器
V1.11.0核心版本
2018年3月Zephyr推出V1.11.0核心版本。
该版本主要增强的内容:
- 增加对原生的Microsoft Windows开发环境的支持
- 通过CMake构建系统和Python脚本语言
- 引入了一种新的连线技术—Thread协定
- 使用蓝牙低功耗设备进行空中固件升级(OTA DFU)
V1.12.0核心版本
2018年6月Zephyr推出V1.12.0核心版本。
该版本主要升级内容:
- 通过集成openmp的不对称多处理(AMP)
- 包括Mesh在内的Bluetooth Low Energy的持久存储支持
- 802.1Q - 乙太网上的虚拟区域网路(VLAN)流量
- 支持多个并发档案系统设备,partitions和FS types
- 乙太网网路管理界面
- 基于每个连线的网路流量优先权
- 支持乙太网统计计数器
- 在本地POSIX连线埠上支持TAP网路设备
- 命令行Zephyr工具“west”
- SPI从属支持
- 运行时非易失性配置数据存储系统(设定)
V1.13.0核心版本
2018年9月Zephyr推出V1.13.0核心版本。
该版本主要增强的功能:
- 可扩展和可插拔的跟蹤支持;
- 分区套用记忆体组织;
- Logging系统大修;
- 引入BSD socket API的系统调用;
- 支持IEEE 802.1AS-2011通用的精确时间协定generalized Precision Time Protocol(gPTP);
- 支持链路层发现协定(LLDP)TX;
- 使用BSD socket API支持TLS和DTLS;
- 支持链路层组播名称解析Link Layer Multicast Name Resolution(LLMNR);
- 引入重新设计的ADC API和已经更新的Nordic、NXP、Atmel和Synopsys DesignWare驱动程式;
- 支持OS驱动的电源管理框架;
- 在Armv8-M中对Arm TrustZone提供基本的支持;
V1.14.0核心版本
2019年4月Zephyr推出V1.14.0首个长期支持核心版本(LTS)。
该版本主要增强的内容:
- 核心和核心组件套用了MISRA-C代码指南;
- 通过添加UART,USB和显示驱动程式来增强本机POSIX连线埠;
- 增加具有上层链路层和下层链路层的实验性BLE分离软体控制器,用于支持多个BLE无线电硬体架构;
- 引入用于管理多个存储库的zephyr工具,并增强了对快闪记忆体和调试的支持;
- 在ARMv8m中添加了对应用程式用户模式,应用程式记忆体分区和硬体堆叠保护的支持;
- 定时子系统经过重新设计和重新实现,极大地简化了生成的驱动程式。TICKLESS_KERNEL模式是该版本所有体系结构的默认模式;
- 对称多处理子系统中,增加了一个新的CPU affinity API,可以将执行绪“固定”到特定的核心或核心集;
- 对网路数据包net-pkt API进行大修,并将大多数组件和协定移至使用BSD套接字API;
- 电源管理子系统大量修复,以支持设备空闲电源管理,并将大部分电源管理逻辑从应用程式移回BSP层;
- 引入主要更新并对日誌记录和shell子系统进行大修,支持多个后端,将日誌记录集成到shell中,以及延迟日誌处理;