架构设计

本模块是 MicroPython 在 ESP32 上的 port,以 Makefile 为构建入口,通过 BOARD=mpython|labplus-experiment-box-2024|labplus_1956|... 选择板型,每个板型目录含 main.c、mpconfigboard.h、mpconfigboard.mk 及可选 modules/。

内部分层清晰:

  • mpconfigport.h 集中定义 MicroPython 编译开关(VFS、BLE、uSSL、machine 系列等),并通过 MICROPY_PORT_BUILTIN_MODULES 宏注册 C 层内置模块;qstrdefsport.h 管理 qstr。

  • builtins/ 存放编译进固件的 C 扩展(modmachine.c、modmusic.c、modcodec.c、modrfid.c、esp32_nvs.c 等),通过 BUILTIN_C 变量加入链接,暴露 machine、music、audio、radio、NVS 等 Python 接口。

  • drivers/ 提供底层外设驱动:codec/(Helix MP3 + libmad + ES8388 音频编解码)、mpu6050/(Invensense eMPL/DMP 姿态解算)、rgbLED5x5/(5×5 RGB 点阵图形库)、rfid/mfrc522、startup/(OLED 启动画面、I2C master)。

  • file_system/ 作为 VFS 根文件系统镜像内容,由 make_lfs.py 打包成 LFS2 镜像,main.py 为开机脚本,lib/、modules/ 下为运行时加载的 Python 扩展(siot、yeelight、xunfei、smartcamera、microbit、blynklib 等第三方集成)。

  • boards/ 下各板型通过 mpconfigboard.mk 叠加 sdkconfig.base、sdkconfig.ble、sdkconfig.spiram 等片段配置 IDF Kconfig,并可选择性包含自身 modules/ 中的 Python 包(如 mpython/modules/mpython/educore、v81、k210)。

  • 依赖方向自顶向下:boards/* → builtins/* → drivers/* → ESP-IDF components;Python 层仅通过 import 调用 C 暴露的模块或同层 .py 文件,不反向依赖 C。

  • 构建产物经 release.py 合并 bootloader.bin、partitions.bin、application.bin、vfs.bin 生成完整固件镜像,deploy 目标通过 esptool 烧录至 0x1000 偏移。