Re.Vi
Re.Vi
发布于 2024-05-27 / 11 阅读
0
0

Zephyr简介

官方文档

Zephyr 项目文档 --- Zephyr Project Documentation

可能用的比较多的模块

  • Kernel

  • OS Services

  • Connectivity

  • Hareware Support

源码目录

  • .west

  • bootloader

  • modules

  • - hal: 各个厂家的一些底层驱动

  • - fs: 文件系统相关的开源项目

  • - lib: UI相关的一些开源项目

  • ...

  • zephyr: 存放核心源码

  • - arch: 存放各个平台的支持,如arm, arm64

  • - boards: 存放开发板的支持

  • - drivers: 驱动的实现

  • - samples: 简单实例

Zephyr的内核特性

  • cmake:前期的配置与后期的编译脚本生成

  • Kconfig:用于平台区分、代码裁剪等,应用开发中主要体现在 驱动 的开关

  • Devicetree:配置硬件参数信息

RTOS内核

线程创建:支持在编译期创建

调度:协作式与抢占式共存,可选且优先级可配的时间片轮询

内存管理

Memory Heaps

提供了基于堆的动态内存分配和释放机制

Memory Slabs

提供了预分配一定数量内存块的机制,并能够快速分配和释放固定大小的内存块,避免了堆内存管理的开销以及内存碎片的产生

Memory Blocks Allocator

提供了固定大小的多个内存块的动态分配和释放机制,适用于需要频繁分配、释放固定大小的多个内存块的场景

总结

优点

1.代码开源,现代化的协作流程(有利于 bug 发现与追踪)

2.构建系统强大(集成第三方库方便,内置很多cmake helper 函数,比如重定向内存段、打包二进制文件),组件管理先进(灵活配置、支持代码裁剪)

3.内置组件丰富(软件功能多,调试方便快速),第三方开源库支持多

缺点

学习曲线较陡峭

疑问

什么是时间片轮询?

什么是协作式线程?抢占式线程?


评论