微信公众号:嵌入式 aLab

Part I: Zephyr RTOS 基础与内核深度解析

(“基石”:成为 Zephyr 专家)

  • 第一章:基础篇:Zephyr RTOS 概览与入门

    • 1.1 重新认识 RTOS - 什么是实时性?(硬实时 vs 软实时)

    • 1.2 Zephyr 的“前世今生” - 起源与社区模式

    • 1.3 宏观架构解构 (图表) - 各层如何协同工作

    • 1.4 Zephyr vs FreeRTOS/Azure RTOS - 深入对比

    • 1.5 Zephyr 的生态 - 支持的硬件与厂商

  • 第二章:环境篇:搭建“专业级”开发环境

    • 2.1 工具链选择 - Zephyr SDK vs 手动安装

    • 2.2 west 深度解析 - init, update, build 工作流

    • 2.3 理解 west 清单 (Manifest) - 如何管理外部模块

    • 2.4 QEMU 模拟器入门 - 无硬件运行和调试

    • 2.5 真实硬件上手 - 以 nRF/STM32 为例首次刷写

  • 第三章:内核篇(上):线程与调度 (核心)

    • 3.1 线程 (Thread) vs 纤程 (Fiber) - 两种执行上下文

    • 3.2 线程的生命周期 - (状态图) 创建、挂起、终止

    • 3.3 调度器详解 - 协作式 vs 抢占式

    • 3.4 优先级 - 规则、优先级翻转问题初探

    • 3.5 [实战] 创建和管理多线程

  • 第四章:内核篇(下):同步与通信 (关键)

    • 4.1 互斥锁 (Mutex) - 解决资源竞争、防止优先级翻转

    • 4.2 信号量 (Semaphore) - 计数型 vs 二进制型

    • 4.3 [实战] 使用 Mutex 保护共享资源

    • 4.4 线程间通信 (IPC) - 消息队列 (Message Queues)

    • 4.5 其他 IPC 机制 - 邮箱 (Mailboxes) 与管道 (Pipes)

    • 4.6 [实战] 使用消息队列实现生产者-消费者模型

  • 第五章:内核篇(续):时序与内存

    • 5.1 系统时钟 (System Clock) 与 Tick

    • 5.2 定时器 (Timers) - K_Timer API

    • 5.3 内存管理 - 堆 (Heap) 分配 (k_malloc)

    • 5.4 内存池 (Memory Pools) - (推荐) 高效的固定块分配

    • 5.5 [实战] 使用定时器实现周期性任务

  • 第六章:构建系统篇:Kconfig 与 DeviceTree (难点)

    • 6.1 Kconfig 系统 - 为什么需要 Kconfig?

    • 6.2 Kconfig 语法 - config, menuconfig, depends on

    • 6.3 [实战] 通过 Kconfig 开启和配置一个模块

    • 6.4 DeviceTree (DTS) - (重点) 为什么 RTOS 也需要设备树?

    • 6.5 DTS 语法 - 节点、属性、&label, aliases

    • 6.6 DTS Overlays - 如何在不修改主 DTS 的情况下适配

    • 6.7 [实战] 通过 DTS 获取 GPIO/UART 并理解 devicetree.h

  • 第七章:驱动与抽象篇:与硬件对话

    • 7.1 Zephyr 设备驱动模型 - (图表) API 层、驱动层、硬件层

    • 7.2 API 使用 - device_get_binding() 原理

    • 7.3 [实战] GPIO 驱动 - LED、按键、中断

    • 7.4 [实战] UART 驱动 - 轮询和中断模式收发

    • 7.5 [实战] I2C/SPI 驱动 - 连接真实传感器

  • 第八章:子系统篇:扩展 Zephyr 的能力

    • 8.1 日志系统 (Logging) - (重点) 日志级别、后端、LOG_INF

    • 8.2 Shell 交互 - 添加自定义 Shell 命令

    • 8.3 电源管理 (PM) - 低功耗模式

    • 8.4 文件系统 - LittleFS/FatFS 在 Flash 上的使用

    • 8.5 设备固件升级 (DFU/FOTA) - MCUboot 简介

  • 第九章:网络篇:连接万物

    • 9.1 蓝牙 LE (BLE) 协议栈 - (Zephyr 强项) Service, Characteristic

    • 9.2 [实战] BLE - 创建一个自定义的 BLE 服务

    • 9.3 TCP/IP 协议栈 - LwIP 简介、Socket API

    • 9.4 [实战] 网络 - 实现 HTTP 客户端或 MQTT

  • 第十章:高级主题与调试

    • 10.1 Zephyr 的安全性 - TF-M 集成

    • 10.2 调试与追踪 - J-Link RTT/SystemView、GDB

  • 第十一章:应用架构与模块化

    • 11.1 超越 main.c:如何组织大型项目

    • 11.2 west 模块:(重点) 如何将你的应用、驱动、库分离为可复用的 west 模块。

    • 11.3 [实战]:将一个“驱动+应用”的简单项目重构为“应用模块”+“驱动模块”。

  • 第十二章:测试与验证 (Ztest 框架)

    • 12.1 为什么在嵌入式上做单元测试?

    • 12.2 Ztest 框架入门:ztest_unit_test(), zassert_*() 宏。

    • 12.3 [实战]:为你第四章的“生产者-消费者”模型编写单元测试。

    • 12.4 Twister 自动化测试:Zephyr 的 CI/CD 是如何工作的。


 

Part II: 构建基于 Zephyr 的生成式 AI 嵌入式开发工具

 

(“登月计划”:创造自动化工具)

  • 第十三章:现状分析:传统代码生成器 (STM32CubeMX / Embedd.it)

    • 13.1 “轮子”的演变:从 main.c 到图形化配置

    • 13.2 案例研究 1:STM32CubeMX (及类似厂商工具)

    • 13.3 案例研究 2:Embedd.it (及现代 Web 工具)

    • 13.4 共同的“天花板”:为什么这些工具还不够?

    • 13.5 下一个飞跃:从“图形化点击”到“意图驱动开发”

  • 第十四章:AI 辅助嵌入式开发的“理想与现实”

    • 14.1 问题的提出:为什么嵌入式开发是 AI 自动化的“硬骨头”?

    • 14.2 复杂度来源:硬件强相关 (DTS)、编译时配置 (Kconfig)、资源强约束。

    • 14.3 我们的目标:搭建一个“Zephyr 领域专家 Co-pilot”工具。

    • 14.4 核心架构:(图表) RAG (检索增强生成) vs 微调 (Fine-tuning)。

    • 14.5 为什么选择 RAG (检索增强生成)。

    • 14.6 AI 幻觉 (Hallucination) 在硬件逻辑中的危险性。

  • 第十五章:“喂养”AI:构建 Zephyr 专家知识库 (RAG 核心)

    • 15.1 “上下文”问题:为什么不能直接问 ChatGPT。

    • 15.2 知识源 1:Zephyr 文档 (爬取、解析、向量化)。

    • 15.3 知识源 2:Zephyr 源码 (API 风格) (AST 解析、提取“黄金代码片段”)。

    • 15.4 知识源 3:Kconfig 数据库 (解析依赖,构建图数据库)。

    • 15.5 知识源 4:DeviceTree 绑定 (解析 YAML 绑定文件)。

    • 15.6 [工具]:选择并部署一个向量数据库 (Vector Database)。

  • 第十六章:AI 工程技术栈 (LLM 框架)

    • 16.1 为什么不能只靠“prompt = f"..."”?—— 编排的必要性。

    • 16.2 工具链 1: LangChain / LlamaIndex

    • 16.3 [实战]:使用 LangChain 构建一个“RAG 链”,实现一个能回答 Zephyr API 问题的机器人。

    • 16.4 工具链 2: Function Calling (函数调用)

    • 16.5 [实战]:(重点) 定义一个 get_dts_binding(sensor_name) JSON 规范,让 LLM “调用”它。

  • 第十七章:[用例 1] 自动化配置:自然语言到 prj.conf & app.overlay

    • 17.1 NL 意图解析:“我需要用 nRF52840 DK 板上的 I2C1 来连接 BME280”。

    • 17.2 AI 任务流:(识别实体 -> 查询 Kconfig -> 查询 DTS -> 生成 Overlay)。

    • 17.3 [输出]:自动生成 prj.conf.aiapp.overlay.ai 文件。

    • 17.4 [实战]:编写 Python 脚本实现此任务流。

  • 第十八章:[用例 2] 自动化代码生成:从意图到 C 代码

    • 18.1 核心:上下文感知的“提示工程” (Prompt Engineering)。

    • 18.2 AI 任务流:(NL 意图 -> AI 系统提示 -> RAG 检索 -> 上下文注入)。

    • 18.3 [输出]:生成 main.c.ai,包含完整的 C 代码。

    • 18.4 [难点]:新驱动生成 (从 0 到 1) vs 现有驱动“粘合” (从 1 到 10)。

  • 第十九章:验证、集成与“人机协同” (HLK)

    • 19.1 “信任,但要验证”:为什么 AI 生成的代码 必须 被审查。

    • 19.2 自动化验证流水线:(clang-tidy 静态分析 + west build 编译)。

    • 19.3 人机协同 (Human-in-the-Loop):(e.g., 生成 Git Patch 等待审核)。

    • 19.4 安全性考量:AI 是否会生成有漏洞的代码?

    • 19.5 (新增) 人机协同 (Human-in-the-Loop):设计一个“反馈”按钮,实现“自进化”。

  • 第二十章:[终极项目] 搭建你的“Zephyr-GPT”工具

    • 20.1 架构:Python (FastAPI/Typer) + VectorDB + LLM API。

    • 20.2 步骤 1:实现“知识库摄取” (Ingestion) 管道。

    • 20.3 步骤 2:实现“配置生成” (Config-Gen) 命令。

    • 20.4 步骤 3:实现“代码生成” (Code-Gen) 命令。

    • 20.5 (新增) [实战]:将你的工具打包成一个 VS Code 插件

Part III: 实战案例深度解剖 (以 LibreSolar 项目为例)

(“学以致用”:解剖真实世界的高级项目)

  • 第二十一章:解构 LibreSolar (BMS / 充电控制器)

    • 21.1 项目目标:它是什么?(开源太阳能充电控制器和电池管理系统)。

    • 21.2 为什么选它?—— 复杂、真实、跨平台、完美契合 Zephyr。

    • 21.3 [实战]:克隆 LibreSolar/bms-zephyr 仓库,分析其 west.yml 和目录结构。

  • 第二十二章:硬件抽象层解剖 (DTS 与自定义板卡)

    • 22.1 [实战]:深入 boards/arm/libresolar_bms_v1 目录。

    • 22.2 DTS 分析:阅读 libresolar_bms_v1.dtsdts/arm/st_f0.dtsi

    • 22.3 [实战]:分析 app/bms.overlay —— 它们如何为“特定应用”覆盖默认板卡配置。

    • 22.4 Kconfig 分析:分析 drivers/Kconfigapp/Kconfig —— 它们如何实现“BMS 芯片选型”。

  • 第二十三章:内核服务与真实业务

    • 23.1 [实战]:分析 app/src/main.capp/src/bms.c

    • 23.2 线程分析:它们启动了哪些核心线程?

    • 23.3 时序分析:它们如何使用 k_timerk_work_delayable (可延迟工作队列)。

    • 23.4 通信分析:(重点) 它们如何使用 Zephyr 的“发布/订阅” (k_pubsub) 机制。

  • 第二十四章:自定义驱动与子系统

    • 24.1 [实战]:分析 drivers/bms_ic/bq769x0 —— 一个真实的、复杂的 I2C 设备驱动。

    • 24.2 它如何遵循 Zephyr 的驱动模型 (DEVICE_DT_INST_DEFINE())?

    • 24.3 [实战]:分析 app/src/thingset.c —— 如何利用 CAN 协议栈实现自定义通信。

    • 24.4 [实战]:分析 app/src/shell.c —— 如何添加自定义的 bms 调试命令。

  • 第二十五章:案例总结

    • 25.1 LibreSolar 为什么选择 Zephyr?

    • 25.2 我们可以从这个项目中“偷”什么?—— 优秀的项目结构、pub/sub 的使用。

    • 25.3 回到 Part II:如果用我们的“AI 工具”,能否自动生成 LibreSolar 的 bms.overlay


 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐