将micropython的py文件直接读取为bin文件

如果想要量产产品的话,每次烧录固件——thonny连接——传文件其实还挺麻烦的,有无快捷的方法?
有的。
我们先来看下esp32的8M分区表

# Notes: the offset of the partition table itself is set in
# $IDF_PATH/components/partition_table/Kconfig.projbuild.
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 0x1F0000,
vfs,      data, fat,     0x200000, 0x600000,

分区表是个啥啊,就是跟硬盘的分区表一样呗,记录了各种文件的烧录地址,通过分区表我们可以得知,我们的py文件在0x200000这个地址。

知道这个问题就好解决了啊。
第一步:提取py文件的bin

esptool.py read_flash 0x200000 0x100000 py.bin

这里看你占用了多少flash了,我随便写了个1m,为了追求速度你可以更小的设置
第二步:
combine 正常的firmware.bin 和 py.bin

完事 以后直接烧录这个带程序的bin就好啦,有main.py的话直接上电运行了

2023.2.13更新
想当然了,有两个错误,一是读取flash必须读取完整的,比如8M的FLASH,那你老老实实的读0-0x800000,又暴露我基础知识薄弱了,文件不一定都存在开头。
第二是貌似esptool 4.4以上的有BUG,老是读取失败,大致意思是读的数据大小跟预期的不一致。
换成3.3.2版本反而好了。。。
以上是踩坑经验,综上所述,命令应该是这样的:

pip install esptool==3.3.2
esptool --chip esp32s3 read_flash 0x0 0x800000 vfd-clock-v1.bin

猜你喜欢

转载自blog.csdn.net/jd3096/article/details/128998833
今日推荐