内核服务
Zephyr 内核是每个 Zephyr 应用的核心。它提供占用空间小、性能高的多线程执行环境,并具备丰富的功能。Zephyr 生态系统中的其他部分,包括设备驱动程序、网络协议栈和应用专用代码,都利用内核功能构成完整的应用。
内核具有可配置性,只需纳入应用所需的功能,因此非常适合内存有限(最低只需 2 KB!)或多线程需求简单的系统,例如由一组中断处理程序和一个后台任务组成的系统。这类系统包括嵌入式传感器集线器、环境传感器、简单的 LED 可穿戴设备和商店库存标签。
对于需要更多内存(50 至 900 KB)、多个通信设备(如 Wi-Fi 和低功耗蓝牙)以及复杂多线程功能的应用,也可以使用 Zephyr 内核进行开发。这类系统包括健身可穿戴设备、智能手表和物联网无线网关。
调度、中断与同步
这些页面介绍与线程调度和同步相关的基本内核服务。
数据传递
这些页面介绍可用于在线程与 ISR 之间传递数据的内核对象。
下表概述了它们的主要特性。
对象 |
双向? |
数据结构 |
数据项大小 |
数据对齐 |
ISR 能否接收? |
ISR 能否发送? |
溢出处理 |
|---|---|---|---|---|---|---|---|
FIFO |
否 |
队列 |
任意 [1] |
4 B [2] |
是 [3] |
是 |
不适用 |
LIFO |
否 |
队列 |
任意 [1] |
4 B [2] |
是 [3] |
是 |
不适用 |
栈 |
否 |
数组 |
字 |
字 |
是 [3] |
是 |
未定义行为 |
消息队列 |
否 |
环形缓冲区 |
任意 [6] |
2 的幂 |
是 [3] |
是 |
挂起线程或返回 -errno |
邮箱 |
是 |
队列 |
任意 [1] |
任意 |
否 |
否 |
不适用 |
管道 |
否 |
环形缓冲区 [4] |
任意 |
任意 |
是 [5] |
是 [5] |
挂起线程或返回 -errno |
脚注
内存管理
参见 内存管理。
计时
这些页面介绍与计时相关的服务。
其他
这些页面介绍其他内核服务。