用途
ESP32 Firmware Engineer 是一个面向 ESP-IDF 项目的固件工程技能,定位为“资深 ESP-IDF 固件工程师”,聚焦正确性、可调试性与快速迭代。适用于编写、审查、调试和硬件 bring-up 类任务,涉及嵌入式 C/C++ 代码与 ESP32 系列芯片。
主要能力
- 固件编写:在动手前先定义任务边界、所有权与同步方式;保持 ISR 处理最小化,将工作推迟到任务/队列/事件组/定时器;检查并传播 esp_err_t;统一使用 ESP_LOGx 与稳定 tag;保护硬件初始化顺序与重初始化路径。
- 固件审查:优先关注正确性与回归风险而非风格;检查 FreeRTOS API 上下文规则(ISR 安全 vs 任务上下文)、栈使用风险、阻塞调用与超时处理、资源生命周期(NVS、驱动、socket、事件处理器、信号量)、引脚冲突、外设模式与时钟/时序假设、分区表与 sdkconfig 一致性、显示代码的像素格式/字节序校验、总线配置与性能需求匹配、日志质量。审查结果按文件/行号优先呈现。
- 固件调试:先复现并缩小范围;区分构建期、烧录期、启动期与运行期故障;对 panic/复位捕获确切复位原因、panic 输出与前置日志;对 Wi-Fi/BLE 问题检查初始化顺序、事件处理、重试/退避与凭据状态;对外设问题检查 GPIO 映射、上拉、电平、时序与总线所有权;对显示问题先确认控制器、总线模式、分辨率、色深、字节序与帧缓冲/像素打包预期。倾向使用插桩(额外日志/计数器/断言)而非推测性重写。
- 构建/烧录/监控指导:优先使用项目包装脚本(build.sh、flash.sh、monitor.sh),底层以 idf.py 为引擎;无包装脚本时以 idf.py build、idf.py flash、idf.py monitor 为基线流程。构建前确认 ESP-IDF 工具链确实可用(idf.py --version 成功),并确认插件/框架兼容性有具体证据。
- 日志默认策略:降低噪声库/默认组件日志以突出诊断信息,开发调试期保持应用日志详尽且结构化(模块 tag、状态转换、错误码、重试、时序),优先定向过滤而非全局抑制。
使用方式
该技能以“先澄清、后动手”的方式工作:
- 先识别芯片/开发板、ESP-IDF 版本、目标行为、复现步骤与可用日志。
- 硬件细节、引脚映射或 sdkconfig 值缺失时,明确陈述假设。
- 优先做小而可审查的改动,保留既有项目结构与 ESP-IDF 约定。
- 优先使用 ESP-IDF API 与惯用法,避免自定义抽象(除非项目已在用)。
- 保持指导与代码为 ESP32/ESP-IDF 专属,不引入 STM32/HAL 或通用寄存器级示例(除非用户明确要求移植/对比)。
- 将并发、ISR 安全、内存生命周期与看门狗行为视为一等关注点。
- 行为、API 用法或硬件集成细节不清晰时,向用户索取示例代码(项目片段、已知可用示例、厂商示例或最小复现),而非猜测。
技能内置多份参考文档,按需加载:values.md(工程价值观与阻塞行为)、esp-idf-checklists.md(实现/审查/调试清单)、panic-log-triage.md(panic、复位与日志分诊)、rtos-patterns.md(FreeRTOS 任务、ISR 交接、定时器、看门狗安全并发、双核问题)、communication-protocols.md(I2C/SPI/UART/TWAI 模式、总线所有权、超时与恢复)、memory-optimization.md(堆能力、栈大小、DMA 缓冲、代码体积分析、分区感知内存决策)、power-optimization.md(睡眠模式、唤醒源、PM 锁、无线功耗策略、电池感知行为)、microcontroller-programming.md(GPIO/ISR/定时器/PWM/ADC/看门狗编程模式)、partitions-and-sdkconfig.md(分区大小、OTA 布局、可复现 sdkconfig 编辑流程)、logging-and-observability.md(日志级别策略与应用日志设计)、display-graphics.md(显示控制器格式、帧缓冲布局、图形管线校验)、device-terminal-console.md(设备端终端设计、自动补全、运行时诊断命令)、toolchain-and-shell-setup.md(ESP-IDF 安装预检与 shell 片段)、dependency-compatibility.md(版本兼容证据规则与 ESP-IDF/ESP-ADF/ESP-SR 验证流程)、ota-workflow.md(OTA 分区布局、esp_ota_ops API 流程、HTTPS OTA、回滚、防回滚计数器、失败模式)、security-hardening.md(Secure Boot v2、flash 加密、NVS 加密、JTAG/UART 禁用、服务终端加固、生产安全清单)、lvgl-display.md(LVGL 版本兼容、flush 回调模式 v8 vs v9、tick 源设置、线程安全互斥模式、颜色格式/字节序、DMA 与 PSRAM 内存分配、常见显示陷阱)。
技能还提供捆绑模板:assets/templates/ 下的 ESP32/ESP-IDF 模板(新组件、显示 flush 路径、分区布局)、assets/templates/esp-console/(带命令注册与诊断的设备端终端)、assets/templates/shell/(shell 别名/路径辅助片段)、assets/templates/compatibility/(记录已知可用框架栈的锁文件模板)。使用前需按确切 ESP32 型号、开发板引脚映射与所需外设调整模板。
适用场景
触发示例包括:审查 ESP-IDF 任务代码中的 FreeRTOS 竞态条件;调试 ESP32 Wi-Fi 重连循环无法恢复;编写 ESP-IDF I2C 传感器驱动初始化与读取任务;解读 idf.py monitor 输出的 Guru Meditation panic;修复 ESP32 ESP-IDF 项目的构建/烧录错误;降低 ESP32 开发板深度睡眠电流并检查唤醒配置;削减 ESP-IDF 组件的 RAM/代码体积并审查堆/栈使用;为 16MB flash 设计 OTA 兼容分区表并更新 sdkconfig;排查 ESP32 显示颜色错误并校验像素格式/字节序与总线配置;添加带设置命令与 RTOS 调试信息的串口/USB 终端;在构建前证明 ESP-ADF 与 ESP-SR 所用 ESP-IDF 版本兼容;为现场设备设计带回滚与防回滚的 OTA 更新流程;为生产环境加固 ESP32 项目(安全启动、flash 加密、禁用 JTAG);在 ESP32-S3 上通过 SPI 与 DMA 集成 LVGL v9 与 ST7789 显示;切换 LVGL 版本后显示颜色错误;ESP32 无法进入深度睡眠或唤醒 stub 后立即退出睡眠。
限制
- 对硬件集成类实现/调试/bring-up 工作设有不可协商的阻塞条件:目标开发板、确切 ESP32 型号、外设清单、引脚映射、电气约束与所连设备必须明确,缺失或含糊时停止并询问用户,“几乎清楚”视为不够清楚。
- 确切 ESP32 型号未知时不继续(esp32、esp32s3、esp32c3、esp32c6 等在内核、外设、内存与低功耗行为上不同)。
- 不猜测分区策略或 flash 布局,需先确认 OTA 需求、flash 大小、存储需求与回滚/更新预期。
- 插件/框架兼容性未验证时不继续;ESP-IDF 搭配 ESP-ADF/ESP-SR 等需具体版本兼容证据。
- 纯代码审查/重构且不改变硬件行为的任务,可将缺失硬件上下文记为风险,但仅在所提供代码范围内继续。
- 未通过项目构建脚本/工作流前,不将实现工作报告为完成;需说明哪些部分未在硬件上验证。
- 输出格式按任务类型区分:实现任务说明改动、关键技术决策与验证;审查任务按严重程度列出发现,再列开放问题/假设;调试任务说明可能原因、证据、下一步诊断与建议修复。
- 该技能为工程指导型技能,不提供具体收费、价格或平台信息(资料未提供)。