如何在CI环境下为ESP8266构建包含自定义脚本的Custom Micropython固件
ESP8266 MicroPython自定义固件自动化构建方案
完全可以把自定义脚本直接内置到固件中,串口烧录后即可直接使用,整个流程可完全对接GitHub CI实现全自动化生成.bin固件。
核心原理
MicroPython构建固件时会自动将对应端口目录下modules文件夹中的所有Python脚本、资源文件打包进固件的只读文件系统,设备上电后可直接导入、运行内置脚本,不需要再经过串口上传代码的步骤。
本地构建验证操作步骤
- 克隆官方MicroPython仓库,切换到你需要使用的稳定版本分支
- 编译mpy-cross交叉编译工具:
make -C mpy-cross - 将所有自定义Python脚本拷贝到
ports/esp8266/modules/目录下,若需要设备启动后自动运行自定义逻辑,直接将入口脚本命名为main.py放入该目录即可 - 进入ESP8266端口构建目录:
cd ports/esp8266 - 依赖环境配置完成后执行构建命令:
make BOARD=GENERIC - 构建完成后生成的固件路径为
build-GENERIC/firmware.bin
GitHub CI自动化适配
直接使用MicroPython官方提供的构建容器作为CI运行环境,无需手动配置依赖,CI流程核心步骤如下:
- 检出指定版本的MicroPython源码到工作区
- 检出你的自定义脚本仓库到临时目录
- 将所有自定义脚本拷贝到
ports/esp8266/modules/路径 - 执行
make -C mpy-cross编译交叉编译器 - 执行
make -C ports/esp8266 BOARD=GENERIC生成目标固件 - 上传生成的firmware.bin作为CI产物,每次代码提交后自动触发构建即可
注意事项
- 若自定义代码依赖第三方MicroPython库时,将对应库文件一同拷贝到
modules目录即可 - 内置脚本默认只读,需要运行时修改的配置数据建议单独存放在flash的可读写分区,不要修改内置脚本
- 若需要调整底层启动逻辑,可直接修改对应端口的源码后一同构建,同样支持自动化流程
内容的提问来源于stack exchange,提问作者Spock
相关产品推荐
相关产品推荐

