一、总体简介
Zephyr是一种微型物联网实时操作系统,为所有资源受限设备,构建了针对低功耗、小型内存微处理器设备而进行优化的物联网嵌入式小型、可扩展的实时操作系统(RTOS),支持多种硬件架构及多种开发板。
它支持多种硬件平台:ARM Cortex-M、Intel x86 和 ARC,详细可以上Zephyr官网查看。
1.Zephyr官网
Zephyr官网详细介绍了该系统支持的硬件平台、开发步骤、配置、OS系统架构等。
官网地址:
https://docs.zephyrproject.org/latest/services/index.html
官方代码地址:
https://github.com/zephyrproject-rtos/zephyr
2.内核系统
Zephyr是一个轻量级的操作系统。它提供了两种内核:微内核 microkernel 和超微内核 nanokernel,用户可以在编译时通过配置文件配置使用哪种内核:同时使用微内核和超微内核,或者只使用超微内核。
超微内核具有内核的一系列基础特征,是一个高性能、多线程的执行环境。超微内核适用于内存很少(最少为 2KB)的系统或者简单的多线程系统(比如只有一些列中断处理和单后台 task)。这样的系统主要包括:嵌入式传感器 hub、传感器、简单 LED 可穿戴设备以及商店库存的标签。
微内核比超微内核做了更多功能上的扩展。微内核适用于内存更多(50 ~ 900 KB)、多通信设备(比如WIFI、低功耗蓝牙)、多 task是我系统。这样的系统主要包括:可穿戴设备、智能手表、物联网无线网关。
二、Zephyr架构
系统架构:
Zephyr融入了功耗控制,支持多种物IoT技术协议,也支持HAL层
无线连接架构:
1.关键特性
支持多线程服务,包括基于优先级的、非抢占式的fiber和基于优先级的、抢占式的task(提供可选的时间片)
中断服务
线程间同步服务,包括二进制信号、互斥信号和计数信号
线程间数据传递服务,包括消息队列、字节流
内存分配服务
电源管理服务,包括无滴答CPU空转和高级CPU空转
高可配置性,允许应用仅加入所需功能
Zephyr在编译时定义所需系统资源,以减小代码大小并提升性能
提供最小运行时错误检查,减小代码规模提升性能
2. Zephyr源码目录结构
├── arch 包含和硬件体系结构相关的代码,每种平台占一个相应的目录
├── boards 板级代码及相关的配置文件,如 nRF9160_pca10090 等
├── cmake 构建 Zephyr 需要额外的构建脚本
├── doc 系统文档目录
├── drivers 设备驱动,每个不同的驱动占用一个子目录
├── dts devicetrree 源文件,用于描述特定板子的设备细节,如外设寄存器数量及寄存器地址
├── ext 其他功能的支持
├── include 包括所有公共 api 的文件,除了在 lib 下定义的部分
├── kernel 与架构无关的内核代码
├── lib 库代码,包括最小的标准 C 库
├── misc 不属于任何其他顶级目录的杂项代码
├── modules 提供特定芯片系列的一些外设配置选项
├── samples 演示使用 Zephyr 特性的示例应用程序
├── scripts 用于构建和测试 Zephyr 应用程序的各种程序和其他文件。
├── soc SoC 相关代码和配置文件,如 nRF9160 soc
├── subsys zephyr 子系统,包括 USB,网络,文件系统及蓝牙等
├── tests 测试 Zephyr 特性的代码
├── CMakeLists.txt CMake 构建系统的顶层文件,包含构建 Zephyr 所需的大量逻辑
├── Kconfig 顶层 Kconfig 文件,它引用 Kconfig.zephyr 文件。也可以在顶级目录中找到
├── west.yml West 清单,列出由 West 命令行工具管理的外部存储库