官方文档
可能用的比较多的模块
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.内置组件丰富(软件功能多,调试方便快速),第三方开源库支持多
缺点
学习曲线较陡峭
疑问
什么是时间片轮询?
什么是协作式线程?抢占式线程?