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 官方

相关推荐
知识分享小能手2 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
汇能感知5 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun5 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao5 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾5 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT6 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
aaaweiaaaaaa6 小时前
HTML和CSS学习
前端·css·学习·html
ST.J6 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记
Suckerbin7 小时前
LAMPSecurity: CTF5靶场渗透
笔记·安全·web安全·网络安全
看海天一色听风起雨落7 小时前
Python学习之装饰器
开发语言·python·学习