Как получить перепрограммированный бинарный файл в ESP8266
Мне удалось прошить двоичный файл с микропифонами, который я скомпилировал около 6 месяцев назад, и он работал нормально. В то время он был построен из основной ветки, и я не сохранил ни код, ни двоичный файл.
Сегодня, когда я снова скомпилировал, у двоичного файла возникла проблема. Итак, я хочу вернуться к старому двоичному файлу, единственная проблема в том, что я не уверен, в каком commitID/build находился мастер в тот момент ~6 месяцев назад, когда был создан мой скомпилированный двоичный файл, который работает нормально.
У меня есть ESP, в который вставлен этот двоичный файл. Итак, я подумал, есть ли способ извлечь двоичный файл из ESP?
Пожалуйста, дайте мне знать, если это можно сделать как-нибудь через ampy и т. Д. Или предложите мне какое-нибудь решение. Я уже пытаюсь выяснить примерный коммит в это время, и буду снова кросс-компилировать, что, я не уверен, сработает ли так, как ожидалось.
4 ответа
Независимо от того, какую прошивку вы загрузили в свой модуль ESP8266 (NodeMCU, MicroPython, Arduino и т. Д.), Вы можете использовать esptool.py
выгрузить флэш-контент в файл примерно так:
./esptool.py -p PORT -b 460800 read_flash 0 0x200000 flash_contents.bin
read_flash
это команда, 0x200000
аргумент для верхней границы памяти (2 МБ).
Для чтения прошивки в виде BIN-файла Для чтения прошивки в виде BIN-файла вам необходимо ПЕРВЫМ правильно соединить FTDI с контактами на ИК-модуле.
FTDI к ИК-модулю следующим образом
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, а имя для извлечения корзины — flash-contents, в противном случае вы замените их, чтобы они соответствовали вашему COM и имени, которое вы хотите иметь) — важно, чтобы скорость передачи данных была 9600
esptool.py -p COM5 -b 9600 read_flash 0 0x200000 flash_contents.bin
Ниже приведен результат для меня (работает под python 3.10.2 в Windows 11):
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
за 1 МБ памяти, как это было в моем ИК-модуле
привет, ребята, сегодня один сюрприз... я только что открыл один esp8266 esp 12e и прочитал флэш-память в программаторе.. 16 МБ.... после того, как я попытался прочитать с помощью инструмента phyton esp... от 16 МБ до... а не 4 МБ, как это поставить в таблице данных.... так что для полного резервного копирования.... только для программиста.... там тоже будет много конфиденциальной информации... ssid... пароли Wi-Fi... пароли учетных записей тоже вводятся... так что для полного только резервное оборудование..
Снизил скорость чтения флеш памяти своего esp8266 460800 на "46080" взял ноль. и успешный
Моя система - windows 10
C:\Users\POSITIVO\Downloads\esptool-master\esptool-master>esptool.py -p COM6 -b 46080 read_flash 0 0x400000 flash_contents3.binesptool.py v3.0-dev Последовательный порт COM6 Подключение.... Обнаружение чипа тип... ESP8266 Чип - ESP8266EX Характеристики: Wi-Fi Crystal - 26 МГц MAC: 2c:3a:e8:42:b9:f7 Загрузка заглушки... Работает заглушка... Заглушка работает... %) Прочитать 4194304 байта по адресу 0x0 за 937,7 секунд (35,8 кбит / с)... Аппаратный сброс через вывод RTS...