本文主要是介绍Zephyr 学习笔记(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概述
Zephyr OS 是一个占用空间小的内核,用于资源受限的嵌入式系统:从简单的嵌入式环境传感器、LED 可穿戴设备到复杂的嵌入式控制器、智能手表和物联网无线应用。
Zephyr 内核支持多种架构,包括:
- ARCv2 (EM and HS) and ARCv3(HS6X)
- ARMv6-M、ARMv7-M、ARMv8-M
- ARMv7-A and ARMv8-A (Cortex-A, 32- and 64-bit)
- ARMv7-R, ARMv8-R (Cortex-R, 32- and 64-bit)
- Intel x86 (32- and 64-bit)
- MIPS (MIPS32 Release 1 specification)
- NIOS II Gen 2
- RISC-V (32- and 64-bit)
- SPARC V8
- Tensilica Xtensa
- 等等…
许可
Zephyr 使用 Apache 2.0 许可证,是对商业应用友好的许可。
特点
Zephyr 提供了大量且不断更新的功能,包括:
内核服务组件
- 内核支持多种调度策略:协作线程、基于优先级的线程、非抢占式线程和抢占式线程,以及可选的时间片轮转。包括 POSIX pthreads 兼容 API 支持。
- 中断服务,用于中断处理程序的编译时注册
- 内存分配服务,用于动态分配和释放固定大小或可变大小的内存块
- 完善的 IPC 机制
- 增强消息队列和字节流
- 电源管理服务,如总体的、应用或策略定义的 "系统电源管理 "和细粒度的、驱动程序定义的 “设备电源管理”
多种调度算法
Zephyr 提供了一套全面的线程调度选项
- 协作是和抢占式调度
- 最早截止日期优先(EDF)
- Meta IRQ 调度实现“中断下半部分”或“tasklet” 行为
- 时间片:在优先级相同的抢占式线程之间启用
- 多种排队策略:
- 简单的链表就绪队列
- 红黑树就绪队列
- 传统的多任务就绪队列
设备树支持
使用 devietree 来描述硬件,解耦硬件与驱动程序。
低功耗蓝牙 5.0
支持蓝牙 5.0 和低功耗蓝牙控制器,包括 蓝牙 mesh 和 蓝牙 controller。
- 具有所有可能的 LE 角色的通用访问配置文件(GAP)
- 通用属性配置文件(GATT)
- 配对支持,包括蓝牙的安全连接功能 4.2
- 干净的 HCI 驱动程序抽象
- 原始 HCI 接口,可将 Zephyr 作为控制器运行,而非完整的 Host 协议栈
- 已通过多种常用控制器的验证
- 高度可配置
Mesh Support:
- 等等…
Zephyr 还支持内存保护、编译时资源定义(编译期初始化)、优化的设备驱动程序模型、网络协议栈、完善的构建系统等等。。。
由此可见,Zephyr 原生支持蓝牙、网络等众多组件,可谓是五脏俱全了。Zephyr 相较于同类开源系统是具有一定的上手难度的,尤其是引入的设备树、cmake 模块化构建系统思想等原理上的掌握。但实际上,也并没有多高的门槛,搞起来!!!
参考
Zephyr 官方
这篇关于Zephyr 学习笔记(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!