English | 简体中文
本项目是一个基于 Zephyr RTOS 的系统化学习项目,通过多个递进式模块深入学习 Zephyr 的核心概念和实践应用。
- 渐进式学习:从基础到高级,循序渐进掌握 Zephyr RTOS
- 实战导向:每个模块都包含可运行的示例代码
- 官方标准:采用 Zephyr 官方推荐的 Freestanding 工作区模式
- 工具现代化:使用 just 命令运行工具简化构建流程
主要特性:
- 芯片:ESP32-S3 双核 Xtensa LX7 处理器
- 主频:最高 240MHz
- 内存:512KB SRAM
- 无线:Wi-Fi 802.11 b/g/n + Bluetooth 5 (LE)
- 外设:丰富的 GPIO、SPI、I2C、UART 等接口
本项目采用 Freestanding 工作区模式,不包含 Zephyr 源码。Zephyr SDK 和源码需要单独安装在系统中。
优势:
- 项目目录更简洁
- 便于版本控制
- 可以使用系统全局的 Zephyr 安装
- 支持使用最新版本的 Zephyr
项目使用 just 命令运行工具,每个模块目录下都有 justfile 提供便捷的构建命令。
- 安装 Zephyr SDK 和依赖(参考 Zephyr 官方文档)
- 安装 just 命令工具:
# Ubuntu/Debian sudo apt install just # 或使用 cargo cargo install just
进入任意模块目录,使用 just 命令:
cd 0_base
# 干净构建(使用官方板级配置)
just bop
# 常规构建
just b
# 烧录到设备
just f
# 构建并烧录
just r
# 打开配置菜单
just m
# 清理构建
just c.
├── 0_base/ # 基础模块
├── 1_kconfig/ # Kconfig 配置系统
├── 2_device_tree_basics/ # 设备树基础
├── 3_device_tree_semantics/ # 设备树语义
└── 4_device_tree_practice/ # 设备树实践
学习目标:
- Zephyr 项目基本结构
- 最小化应用程序
- 自定义板级支持文件(Board Support Package)
- 基本的构建和烧录流程
内容:
- 包含自定义的
opendev_esp32s3板级配置 - 简单的主循环示例
- CMakeLists.txt 和 prj.conf 配置
学习目标:
- 理解 Kconfig 配置机制
- 创建自定义配置选项
- 在代码中使用配置宏
- 使用 menuconfig 进行配置
内容:
- 自定义 Kconfig 文件
- 条件编译示例
- 用户自定义函数模块
学习目标:
- 设备树(Device Tree)基本概念
- DTS 文件语法
- 设备树覆盖(Overlay)
- 在代码中访问设备树节点
内容:
- 自定义 DTS 文件
- 设备树节点定义
- 属性访问示例
学习目标:
- 设备树高级特性
- 绑定(Bindings)机制
- 设备树宏的使用
- 复杂设备树结构
内容:
- 高级设备树配置
- 设备驱动与设备树的关联
- 实际外设配置示例
学习目标:
- 设备树在实际项目中的应用
- 外设驱动与设备树的集成
- 自定义设备树绑定
- 实战案例分析
内容:
- 完整的外设配置实例
- 设备树最佳实践
- 常见问题解决方案
| 命令 | 完整命令 | 说明 |
|---|---|---|
just bop |
west build -p always -b dnesp32s3b/esp32s3/procpu |
干净构建(使用官方板级配置) |
just b |
west build |
常规增量构建 |
just f |
west flash |
烧录到设备 |
just r |
west build && west flash |
构建并烧录 |
just m |
west build -t menuconfig |
打开配置菜单 |
just c |
ninja clean -C build |
清理构建产物 |
建议按照以下顺序学习:
- 0_base:熟悉 Zephyr 项目结构和基本工作流程
- 1_kconfig:掌握配置系统,学会自定义配置选项
- 2_device_tree_basics:理解设备树基础,学会定义硬件资源
- 3_device_tree_semantics:深入设备树高级特性,实现复杂配置
- 4_device_tree_practice:通过实战案例掌握设备树的实际应用
每个模块都可以独立构建和运行,建议在完全理解当前模块后再进入下一个。
- 主要参考:Interrupt 博客(Memfault 团队维护)
- 官方文档:Zephyr Project Documentation
- 开发板文档:正点原子 DNESP32S3 文档
- ESP32-S3 技术参考:ESP32-S3 Technical Reference Manual
本项目仅用于学习目的。
欢迎提交 Issue 和 Pull Request 来改进本学习项目。