内部研发文档
本文引用的文件
升级到micropython_v1.23.0.mdnew_board-labplus_Ledong_pro.mdproject_add_esp_adf.mdusb-otg and usb-serial-jtag.mdCMakeLists.txtmpython_v3/mpconfigboard.cmakelabplus_Ledong_v2/mpconfigboard.cmakempython_v3/mpconfigboard.hlabplus_Ledong_v2/mpconfigboard.hmpython_v3/sdkconfig.usblabplus_Ledong_v2/sdkconfig.usb
产品概述
本技术文档面向内部研发团队,聚焦以下主题:
MicroPython版本迁移(从旧版到v1.23.0及ESP-IDF v5.x)
新板型适配流程与要点(以乐动掌控系列为例)
ESP-ADF音频框架集成与裁剪策略
USB OTG与USB Serial/JTAG在S3板上的启用与配置
项目基于MicroPython for ESP32/ESP32-S3定制,采用ESP-IDF CMake构建系统,按板型隔离配置与模块,便于多产品线并行开发与发布。
核心业务流程
版本迁移流程:引入新版Micropython与ESP-IDF,调整构建脚本、组件路径、QSTR与模块注册,确保各板型可编译并功能可用。
新板型适配流程:复制基础模板,完成引脚、I2C、PSRAM、分区表、manifest冻结、builtin模块与Python库的板级配置,验证REPL/USB/显示/音频等关键能力。
ESP-ADF集成流程:按需拷贝组件、裁剪依赖、合并sdkconfig,控制固件体积,提供录音/播放/语音识别/合成等能力。
USB OTG/Serial JTAG流程:通过sdkconfig启用TinyUSB CDC与JTAG Console,结合板级配置实现自动下载与调试。
flowchart TD
A["开始"] --> B["选择目标板型<br/>mpython_v3 / labplus_Ledong_v2"]
B --> C{"是否新增板型?"}
C -- 是 --> D["新建板目录与配置<br/>mpconfigboard.* / sdkconfig.*"]
C -- 否 --> E["复用现有板配置"]
D --> F["添加builtin与Python模块<br/>manifest冻结"]
E --> F
F --> G{"是否需要ESP-ADF?"}
G -- 是 --> H["拷贝并裁剪组件<br/>audio_stream/esp-sr/..."]
G -- 否 --> I["跳过ADF集成"]
H --> J["合并sdkconfig并构建"]
I --> J
J --> K{"是否启用USB OTG/JTAG?"}
K -- 是 --> L["启用CONFIG_USB_OTG_SUPPORTED<br/>CONFIG_TINYUSB_CDC_ENABLED<br/>CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG"]
K -- 否 --> M["保持默认串口控制台"]
L --> N["构建/烧录/联调"]
M --> N
N --> O["结束"]
章节来源
升级到micropython_v1.23.0.md:23-94new_board-labplus_Ledong_pro.md:1-43project_add_esp_adf.md:1-12usb-otg and usb-serial-jtag.md:1-5
功能模块清单
构建系统与板级配置
顶层CMakeLists负责解析MICROPY_BOARD、包含板级mpconfigboard.cmake、合并sdkconfig、生成合并配置文件并调用idf_build_set_property与project(micropython)。
板级mpconfigboard.cmake定义IDF_TARGET、SDKCONFIG_DEFAULTS、MICROPY_SOURCE_BOARD与MICROPY_SOURCE_BOARD_DIR、冻结manifest路径,并可开启板级宏开关。
板型差异与外设
mpython_v3与labplus_Ledong_v2均启用音乐、音频、RFID与新I2C驱动;I2C引脚不同;USB Serial/JTAG与OTG支持通过sdkconfig.usb启用。
模块冻结与内置C模块
通过manifest.py将常用Python模块冻结入ROM,减少内存占用并提升启动速度;builtin层包含machine_pin、touchpad、framebuf、i2c、timer、music、nvs、network_wlan等。
ESP-ADF音频能力
通过拷贝必要组件并按需裁剪,提供录音、播放、TTS/IAT等能力;注意去除冗余依赖以降低固件体积。
USB OTG与调试
启用TinyUSB CDC与JTAG Console,配合bootloader与工具链实现自动下载与调试;缓冲区大小可按需调整。
章节来源
CMakeLists.txt:12-66mpython_v3/mpconfigboard.cmake:1-44labplus_Ledong_v2/mpconfigboard.cmake:1-50mpython_v3/mpconfigboard.h:1-29labplus_Ledong_v2/mpconfigboard.h:1-29mpython_v3/sdkconfig.usb:1-9labplus_Ledong_v2/sdkconfig.usb:1-8
数据与状态
构建产物与配置
顶层CMake生成sdkconfig.combined.in并输出为sdkconfig.combined供ESP-IDF使用;锁定文件用于检测依赖变更。
板级状态标志
通过MPY_PORT_DIR、MICROPY_BOARD、MICROPY_BOARD_VARIANT、MPYTHON_V3_BOARD/LABPLUS_LEDONG_V2_BOARD等宏区分板型与变体,影响源文件集合与组件目录。
运行时模块状态
冻结manifest决定哪些Python模块被预编译并驻留ROM;builtin C模块初始化顺序影响I2C、TouchPad、Pin、Timer、Music、NVS、WiFi等子系统可用性。
音频与USB状态
ESP-ADF组件加载后,音频流、编解码器、网络服务处于待命或运行态;USB OTG/CDC启用后,控制台与虚拟串口就绪。
graph TB
subgraph "构建期"
T["顶层CMakeLists.txt"] --> B["板级mpconfigboard.cmake"]
B --> S["合并sdkconfig.combined"]
S --> IDF["ESP-IDF构建"]
end
subgraph "运行期"
ROM["冻结Python模块(ROM)"] --> APP["用户应用"]
BUILTIN["Builtin C模块"] --> APP
ADF["ESP-ADF组件"] --> APP
USB["USB OTG/CDC/JTAG"] --> APP
end
IDF --> ROM
IDF --> BUILTIN
IDF --> ADF
IDF --> USB
图表来源
CMakeLists.txt:32-66mpython_v3/mpconfigboard.cmake:19-44labplus_Ledong_v2/mpconfigboard.cmake:19-50
章节来源
CMakeLists.txt:32-66mpython_v3/mpconfigboard.cmake:19-44labplus_Ledong_v2/mpconfigboard.cmake:19-50
关键约束与边界
版本与依赖边界
升级至Micropython v1.23.0与ESP-IDF v5.0.4时,需遵循新的CMake与组件管理方式;qstr、模块注册、GC指针管理等细节需对齐新版本。
板型边界
每块板独立维护mpconfigboard.与sdkconfig.;I2C引脚、PSRAM类型与容量、分区表布局必须与硬件一致;manifest冻结需按板型裁剪。
ESP-ADF边界
仅拷贝必要组件并按需裁剪CMake依赖,避免引入冗余代码导致固件过大;tone_partition与wifi_service等组件需显式处理依赖关系。
USB OTG/Serial JTAG边界
启用USB OTG与CDC需保证引脚与电源设计满足要求;JTAG Console需与bootloader协同,确保自动下载与调试链路畅通。
性能与体积
冻结模块可减少RAM占用并加速启动;精简ADF组件与禁用未用功能有助于降低Flash占用与功耗。
章节来源
升级到micropython_v1.23.0.md:23-94new_board-labplus_Ledong_pro.md:1-43project_add_esp_adf.md:1-12usb-otg and usb-serial-jtag.md:1-5mpython_v3/sdkconfig.usb:1-9labplus_Ledong_v2/sdkconfig.usb:1-8