概述
Zephyr是一个由Linux基金会支持的开源嵌入式操作系统,适用于多种处理器架构和设备类型。它提供了丰富的驱动程序和网络协议栈,并支持多种开发工具和语言。
Zephyr OS 基于专为资源受限和嵌入式系统设计的小型内核:从简单的嵌入式环境传感器和 LED 可穿戴设备到复杂的嵌入式控制器、智能手表和物联网无线应用。
Zephyr是一个适用于嵌入式系统的开源实时操作系统,可以应用于物联网的各个领域。以下是一些具体的应用场景:
1.智能家居:Zephyr可以为智能家居设备提供快速、可靠的操作系统支持,包括温度、湿度、声音、光线等传感器数据的收集、处理和分析。
2.工业控制:Zephyr可以为自动化生产线或工艺过程中的控制系统提供实时响应、高效能力和可靠性。
3.医疗保健:Zephyr可以为医疗健康设备提供高效能力、安全稳定的操作系统支持,包括心率、血氧、体温等传感器数据的收集和分析。
4.智慧城市:Zephyr可以为智慧城市设备提供操作系统支持,例如智能路灯、环境监测、车辆跟踪等。
总之,Zephyr广泛应用于物联网中各种嵌入式设备和系统,为它们提供高效能力、安全稳定的操作系统支持。
- 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®
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
可在此处找到基于这些架构的受支持板的完整列表。
区别特征
Zephyr 提供了大量且不断增加的功能,包括:
- 广泛的内核服务套件
- Zephyr 提供了许多熟悉的开发服务:
- 用于协作、基于优先级、非抢占和抢占线程的多线程服务,具有可选的循环时间片。包括 POSIX pthreads 兼容的 API 支持。
- 用于中断处理程序的编译时注册的中断服务。
- 用于动态分配和释放固定大小或可变大小内存块的内存分配服务。
- 用于二进制信号量、计数信号量和互斥信号量的线程间同步服务。
- 用于基本消息队列、增强消息队列和字节流的线程间数据传递服务。
- 电源管理服务,例如总体的、应用程序或策略定义的系统电源管理和细粒度的、驱动程序定义的设备电源管理。
- 多种调度算法
- Zephyr 提供了一套全面的线程调度选择:
- 协作和抢占式调度
- 最早截止日期优先 (EDF)
- 实现“中断下半部”或“tasklet”行为的元 IRQ 调度
- 时间片:在具有相同优先级的可抢占线程之间启用时间片
- 多种排队策略:
- 简单的链表就绪队列
- 红/黑树就绪队列
- 传统多队列就绪队列
- 高度可配置/模块化以实现灵活性
- 允许应用程序只包含它需要的功能,并指定它们的数量和大小。
- 跨架构
- 支持具有不同 CPU 架构和开发人员工具的各种受支持的板。贡献增加了对越来越多的 SoC、平台和驱动程序的支持。
- 内存保护
- 在 x86、ARC 和 ARM 架构、用户空间和内存域上实现可配置的特定于架构的堆栈溢出保护、内核对象和设备驱动程序权限跟踪以及线程隔离和线程级内存保护。
对于没有 MMU/MPU 和内存受限设备的平台,支持将特定于应用程序的代码与自定义内核相结合,以创建在系统硬件上加载和执行的整体映像。应用程序代码和内核代码都在一个共享地址空间中执行。
- 编译时资源定义
- 允许在编译时定义系统资源,从而减少代码大小并提高资源受限系统的性能。
- 优化的设备驱动程序模型
- 为配置作为平台/系统一部分的驱动程序提供一致的设备模型,并为初始化配置到系统中的所有驱动程序提供一致的模型,并允许跨具有通用设备/IP 块的平台重用驱动程序
- 设备树支持
- 使用设备树来描述硬件。来自 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 应用程序运行,支持各种子系统和网络。
想了解更多详细信息,请参阅Zephyr 简介以获得高级概述,并参阅文档的入门指南以开始开发。
[/hidecontent]