介绍
Zephyr 项目是一个可扩展的实时操作系统 (RTOS),支持多种硬件架构,针对资源受限的设备进行了优化,并在构建时考虑了安全性。Zephyr OS 基于专为资源受限和嵌入式系统设计的小型内核:从简单的嵌入式环境传感器和 LED 可穿戴设备到复杂的嵌入式控制器、智能手表和物联网无线应用。Zephyr 内核支持多种架构,包括 ARM Cortex-M、Intel x86、ARC、Nios II、Tensilica Xtensa 和 RISC-V,以及大量 支持的板卡。
Zephyr 内核支持多种架构,包括:
- ARCv2(EM 和 HS)和 ARCv3(HS6X)
- ARMv6-M、ARMv7-M 和 ARMv8-M (Cortex-M)
- ARMv7-A 和 ARMv8-A(Cortex-A,32 位和 64 位)
- ARMv7-R、ARMv8-R(Cortex-R,32 位和 64 位)
- 英特尔 x86(32 位和 64 位)
- MIPS(MIPS32 第 1 版规范)
- NIOS II 第 2 代
- RISC-V(32 位和 64 位)
- SPARC V8
- Tensilica Xtensa®
区别特征
Zephyr 提供了大量且不断增加的功能,包括:
广泛的内核服务套件
Zephyr 提供了许多熟悉的开发服务:
- 用于协作、基于优先级、非抢占和抢占线程的多线程服务,具有可选的循环时间片。包括 POSIX pthreads 兼容的 API 支持。
- 用于中断处理程序的编译时注册的中断服务。
- 用于动态分配和释放固定大小或可变大小内存块的内存分配服务。
- 二进制信号量、计数信号量和互斥信号量的线程间同步服务。
- 用于基本消息队列、增强消息队列和字节流的线程间数据传递服务。
- 电源管理服务,例如 tickless idle 和高级空闲基础设施。
多种调度算法
Zephyr 提供了一套全面的线程调度选择:
- 协作和抢占式调度
- 最早截止日期优先 (EDF)
- 实现“中断下半部”或“tasklet”行为的元 IRQ 调度
- 时间片:在具有相同优先级的可抢占线程之间启用时间片
- 多种排队策略:
- 简单的链表就绪队列
- 红/黑树就绪队列
- 传统多队列就绪队列
高度可配置/模块化以实现灵活性
允许应用程序只包含它需要的功能,并指定它们的数量和大小。
跨架构
支持具有不同 CPU 架构和开发工具的各种贡献增加了对越来越多的 SoC、平台和驱动程序的支持。
内存保护
在 x86、ARC 和 ARM 架构、用户空间和内存域上实现可配置的特定于架构的堆栈溢出保护、内核对象和设备驱动程序权限跟踪以及线程隔离和线程级内存保护。
对于没有 MMU/MPU 和内存受限设备的平台,支持将特定于应用程序的代码与自定义内核相结合,以创建在系统硬件上加载和执行的整体映像。应用程序代码和内核代码都在一个共享地址空间中执行。
编译时资源定义
允许在编译时定义系统资源,从而减少代码大小并提高资源受限系统的性能。
优化的设备驱动程序模型
为配置作为平台/系统一部分的驱动程序提供一致的设备模型,并为初始化配置到系统中的所有驱动程序提供一致的模型,并允许跨具有通用设备/IP 块的平台重用驱动程序
设备树支持
使用devicetree来描述硬件。来自 devicetree 的信息用于创建应用程序映像。
支持多种协议的原生网络堆栈
网络支持功能齐全并经过优化,包括 LwM2M 和 BSD 套接字兼容支持。还提供 OpenThread 支持(在 Nordic 芯片组上)一种网状网络,旨在安全可靠地连接家庭中的数百种产品。
蓝牙低功耗 5.0 支持
蓝牙 5.0 兼容 (ESR10) 和蓝牙低功耗控制器支持(LE 链路层)。包括蓝牙网状网络和蓝牙认证就绪蓝牙控制器。
- 具有所有可能的 LE 角色的通用访问配置文件 (GAP)。
- 关贸总协定(通用属性配置文件)
- 配对支持,包括蓝牙 4.2 的安全连接功能
- 干净的 HCI 驱动程序抽象
- 原始 HCI 接口将 Zephyr 作为控制器而不是完整的主机堆栈运行
- 通过多个流行的控制器验证
- 高度可配置
网格支持:
- 中继、好友节点、低功耗节点 (LPN) 和 GATT 代理功能
- 支持两种配置承载(PB-ADV 和 PB-GATT)
- 高度可配置,适用于至少 16k RAM 的设备
本机 Linux、macOS 和 Windows 开发
命令行 CMake 构建环境在流行的开发人员操作系统系统上运行。本机 POSIX 端口,让您可以在 Linux 和其他操作系统上构建和运行 Zephyr 作为本机应用程序,以帮助开发和测试。
支持 LittleFS 和 FATFS 的虚拟文件系统接口
LittleFS 和 FATFS 支持、用于内存受限应用程序的 FCB(闪存循环缓冲区)以及用于日志记录和配置的文件系统增强功能。
强大的多后端日志框架
支持日志过滤、对象转储、恐慌模式、多个后端(内存、网络、文件系统、控制台……)以及与 shell 子系统的集成。
用户友好且功能齐全的 Shell 界面
一个多实例 shell 子系统,具有用户友好的功能,例如自动完成、通配符、着色、元键(箭头、退格键、ctrl+u 等)和历史记录。支持静态命令和动态子命令。
非易失性存储的设置
设置子系统为模块提供了一种方法来存储持久的每设备配置和运行时状态。设置项存储为键值对字符串。
非易失性存储 (NVS)
NVS 允许存储二进制 blob、字符串、整数、长整数以及它们的任意组合。
本机 POSIX 端口
支持将 Zephyr 作为 Linux 应用程序运行,支持各种子系统和网络。