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

相关推荐
字节全栈_kYu12 分钟前
微信小程序视频点播在线视频学习系统 毕业设计 课程设计(1)首页_微信小程序视频功能设计流程图
学习·微信小程序·课程设计
想拿高薪的韭菜22 分钟前
人工智能第2章-知识点与学习笔记
人工智能·笔记·学习
Future_yzx1 小时前
Java Web的发展史与SpringMVC入门学习(SpringMVC框架入门案例)
java·前端·学习
Future_yzx1 小时前
Spring MVC学习——发送请求(@RequestMapping注解及请求参数绑定)
学习·spring·mvc
一只码代码的章鱼1 小时前
计算机网络 应用层 笔记 (电子邮件系统,SMTP,POP3,MIME,IMAP,万维网,HTTP,html)
笔记·计算机网络·microsoft
学游戏开发的2 小时前
UE求职Demo开发日志#19 给物品找图标,实现装备增加属性,背包栏UI显示装备
c++·笔记·游戏引擎·unreal engine
云缘若仙2 小时前
directx12 3d+vs2022游戏开发第三章 笔记五 变换
笔记·3d
小菜鸟博士2 小时前
手撕Vision Transformer -- Day1 -- 基础原理
人工智能·深度学习·学习·算法·面试
Bluesonli3 小时前
UE5 蓝图学习计划 - Day 6:角色蓝图
学习·ue5·unreal engine
Bluesonli3 小时前
第 2 天:创建你的第一个 UE5 C++ 项目!
c++·学习·ue5·虚幻·虚幻引擎·unreal engine