轻松学习Zephyr: 01-学习计划

📅 2026/8/13 2:54:17
轻松学习Zephyr: 01-学习计划
我建议把这个平台定位成一个Zephyr 学习平台而不是一个产品开发平台。你的目标应该是3~4 周内能够独立使用 Zephyr 开发 STM32 和 ESP32 应用并理解 Zephyr 的架构。我的硬件条件- MacBook剩余约30GB空间 - VirtualBox - Ubuntu VM - ESP32-S3一块 - Nucleo-STM32F303RE一块其中我建议STM32F303RE作为主学习板ESP32-S3作为第二块板。原因- STM32 官方支持最好调试最成熟 - 不涉及 WiFi先学习 RTOS 本身 - ESP32 后面学习 WiFi、Bluetooth、Flash、Partition 更合适整个学习路线建议按照下面路线。Ubuntu │ ▼ Zephyr SDK │ ▼ West │ ▼ Hello World │ ▼ GPIO │ ▼ UART │ ▼ Kconfig │ ▼ Devicetree │ ▼ Thread │ ▼ Semaphore │ ▼ Queue │ ▼ Timer │ ▼ Work Queue │ ▼ Driver │ ▼ ESP32这条路线基本就是很多公司的 Zephyr 新人培养路线。第一阶段环境搭建1~2天目标能够编译下载 Hello World。学习内容第1课Ubuntu安装学习-apt-git-ssh-vim掌握sudoaptupdatesudoaptinstallgitclone第2课安装 Zephyr包括- Python - west - Zephyr SDK - toolchain最后做到west build能够成功。第3课VirtualBox USB这是很多人第一次踩坑。掌握USB Passthrough例如STM32lsusbUbuntu 能看到 STLink。第二阶段 Hello World1天学习samples/hello_world理解main()CONFIG prj.conf CMakeLists.txt west build west flash能够下载。板子打印Hello World!第三阶段 GPIO2天这是最重要的一章。学习samples/basic/blinky理解device tree GPIO API led0然后自己增加Button。做到按键控制LED。第四阶段 UART2天学习samples/drivers/uart理解printk()uart_poll_out()uart_irq做到串口Echo。第五阶段 Kconfig2天这是Zephyr最核心之一。学习CONFIG_GPIO CONFIG_SERIAL CONFIG_LOG理解prj.conf Kconfig menuconfig做到增加自己的CONFIG。第六阶段 Device Tree3天这是很多新人最难的一章。学习led0 aliases chosen status compatible然后自己增加一个LED。学习Overlayapp.overlay做到不用修改BSP。第七阶段 Thread2天学习k_thread priority stack delay做到两个Thread。例如LED1 LED2不同频率闪烁。第八阶段 同步3天学习Semaphore Mutex Message Queue FIFO LIFO Pipe Work Queue Timer 这是RTOS核心。 做到 Button Thread ↓ Queue ↓ LED Thread第九阶段 Logging1天学习LOG_INF LOG_DBG LOG_ERR理解CONFIG_LOG第十阶段 Driver3天开始理解Driver。学习device_get_binding()DEVICE_DT_GET()DEVICE_DT_DEFINE()理解driver api instance第十一阶段 自己写Driver3天例如myledDriver。实现myled_on()myled_off()这是理解 Zephyr 驱动模型的重要实践。第十二阶段 ESP32-S35天开始学习第二块板。内容GPIOUARTFlashPartitionNVSWiFi可选Bluetooth可选这样你会发现Zephyr API几乎不用改。第十三阶段 综合项目1周建议做一个完整的小项目。例如Button │ ▼ Thread │ ▼ Message Queue │ ▼ LED │ ▼ UART Log包括Kconfig Overlay Driver Thread Semaphore Log基本把 Zephyr 常用知识串起来。学习目录建议建议像你之前学习 Yocto 一样按课程编号建立目录zephyr-study/ │ ├── 01-Install ├── 02-HelloWorld ├── 03-Blinky ├── 04-Button ├── 05-UART ├── 06-Kconfig ├── 07-Menuconfig ├── 08-Devicetree ├── 09-Overlay ├──10-Thread ├──11-Semaphore ├──12-Mutex ├──13-MessageQueue ├──14-Timer ├──15-WorkQueue ├──16-Logging ├──17-Driver ├──18-CustomDriver ├──19-STM32-Project ├──20-ESP32S3 └──21-FinalProject这种方式与你之前的 Yocto 学习习惯一致后续查找和复习也会非常方便。最终目标完成本路线后完成整个计划后你应该能够- 独立搭建 Zephyr 开发环境West、SDK、工具链 - 熟练使用 west build、west flash、west debug - 理解并配置 prj.conf、Kconfig 和 Devicetree Overlay - 编写基于线程、信号量、消息队列、定时器和工作队列的 RTOS 应用 - 熟悉 GPIO、UART、日志系统等常用外设与框架 - 理解 Zephyr 驱动模型并编写简单的自定义驱动 - 在 STM32 和 ESP32-S3 两个平台上完成移植和开发 - 完成一个包含多线程、设备树配置、日志和驱动的综合项目这套路线与很多公司实际使用 Zephyr 的开发流程比较接近也能为后续学习 Nordic nRF 系列、BLE、Matter 或更复杂的嵌入式项目打下扎实基础。在以后的课程中 会做适当的调整 宗旨是遵循费曼学习法Feynman Technique让零基础的朋友都能看懂上手。