我能够刷新大约 6 个月前交叉编译的 micropython 二进制文件,并且运行良好。它是在那时从 master 分支构建的,我没有保存代码,也没有保存二进制文件。
今天,当我再次编译时,二进制文件在某个时刻出现了问题。所以我想恢复到旧的二进制文件,唯一的问题是我不确定大约 6 个月前创建工作正常的编译二进制文件时 master 的 commitID/build 是什么。
我确实有一个 ESP,其中包含了该二进制文件。所以我在想是否有办法从 ESP 检索二进制文件?
请告诉我是否可以通过 ampy 等以某种方式完成此操作。 或者建议我一些解决方法。我已经在尝试找出当时的大致提交,并将再次交叉编译,我不确定这是否会按预期工作。
无论您将哪个固件加载到 ESP8266 模块(NodeMCU、MicroPython、Arduino 等),您都可以使用 esptool.py
./esptool.py -p PORT -b 460800 read_flash 0 0x200000 flash_contents.bin
read_flash
是命令,
0x200000
是内存上限 (2MB) 的参数。
FTDI转IR模块如下
FTDI 3.3 V to IR 3.3 V,
FTDI GND to IR GND,
FTDI GND to IR IO0 (flash mode - IMPORTANT otherwise it will not work),
FTDI RX to IR TXD,
FTDI TX to IR RXD
然后运行命令(如果 COM 端口是 5 并且提取 bin 的名称是 flash-contents,否则您将其替换为匹配您的 COM 和您想要的名称) – 重要的是波特率为 9600
esptool.py -p COM5 -b 9600 read_flash 0 0x200000 flash_contents.bin
下面是我的结果(在 Windows 11 上的 python 3.10.2 下运行):
PS F:\> esptool.py -p COM5 -b 9600 read_flash 0 0x200000 flash_contents.bin
esptool.py v3.2
Serial port COM5
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying
again...
Connecting...
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 10:52:1c:f8:b7:c7
Stub is already running. No upload is necessary.
2097152 (100 %)
2097152 (100 %)
Read 2097152 bytes at 0x0 in 2215.2 seconds (7.6 kbit/s)...
Hard resetting via RTS pin...
PS F:\>
记住esptool.py -p COM5 -b 9600 read_flash 0 0x200000 flash_contents.bin
适用于2MB内存但它在
esptool.py -p COM5 -b 9600 read_flash 0 0x100000 flash_contents.bin
的 1MB 内存下运行良好,就像在我的 IR 模块中一样
我的系统是windows 10
C:\Users\POSITIVO\Downloads\esptool-master\esptool-master>esptool.py -p COM6 -b 46080 read_flash 0 0x400000 flash_contents3.bin
esptool.py v3.0-dev
Serial port COM6
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 2c:3a:e8:42:b9:f7
Uploading stub...
Running stub...
Stub running...
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x0 in 937.7 seconds (35.8 kbit/s)...
Hard resetting via RTS pin...