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 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
apple-mapping3 小时前
网络RTK定位学习总结
学习·网络rtk
楚山之石4 小时前
【Lancet Neurology 】多发性硬化认知障碍的 SDMT 筛查、灰质萎缩标志与认知康复循证路径
图像处理·人工智能·学习·mri
海海不掉头发5 小时前
CSDN博客_时序预测9模型复现对比
人工智能·学习·软件工程
蓝祁子yoky7 小时前
Qt学习日记 Day13:网络编程(一)-TCP基础与Socket实战
网络·qt·学习
箓维8 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
二哈赛车手8 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
架构师伯子明8 小时前
Ros 学习十三:IK Demo
学习
小羊没烦恼!8 小时前
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
java·服务器·网络·学习·负载均衡
幼儿园蛋小黄8 小时前
从 STM32N647 的 AI 部署入门嵌入式:一条可落地的学习路线
人工智能·stm32·学习