Что делать, если вы сделали файл бэкапа прошивки какого-либо устройства с esp8266 на 4мб, а на самом деле там 2мб? Как восстановить?
При выполнении команды прошивки или команды бэкапа, esptool покажет подключенный тип esp и размер памяти:
python ./esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x00000 firmware.bin esptool.py v2.7-dev Serial port /dev/ttyUSB3 Connecting.... Detecting chip type... ESP8266 Chip is ESP8285 Features: WiFi, Embedded Flash Crystal is 26MHz MAC: 04:cf:8c:67:e9:4f Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 2MB
Но, допустим, как в случае выше, esp8285 имеет размер 2MB, а мы запустили бэкап командой на 4MB:
python ./esptool.py --port /dev/ttyUSB0 --baud 115200 read_flash 0x00000 0x400000 backup.bin
И получившийся файл backup.bin нужно восстановить.
Но при попытке восстановить файл 4мб во флеш память 2мб, esptool выдаст ошибку:
root@admin:/home/kvv/esptool-master# python ./esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x00000 backup.bin esptool.py v2.7-dev Serial port /dev/ttyUSB0 Connecting.... Detecting chip type... ESP8266 Chip is ESP8285 Features: WiFi, Embedded Flash Crystal is 26MHz MAC: 04:cf:8c:67:e9:4f Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 2MB A fatal error occurred: File backup.bin (length 4194304) at offset 0 will not fit in 2097152 bytes of flash. Use --flash-size argument, or change flashing address.
Чтобы это исправить, можно вырезать ненужный объем данных из нашего бэкапа. Для этого воспользуемся программой 010 Editor
Скачиваем, открываем в программе файл бэкапа.
Далее жмем Edit > Set File Size
и пишем нужный объем.
Сохраняем файл и им можно восстановить нужное нам устройство. Все просто.