如果想要量产产品的话,每次烧录固件——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