DeepSeek -
Как произвести чтение и запись полной SPI Flash через esptool?
Чтение и запись полной SPI Flash памяти ESP32 через
esptool.py — самый надёжный способ работы с прошивкой. Ниже подробная инструкция.
1. Установка esptool
Если у вас нет esptool.py, установите его через
pip:
bash
Copy
Download
pip install esptool
2. Определение параметров Flash
Перед работой узнайте:
- Размер Flash (обычно 4MB для ESP32-WROOM).
- Скорость порта (по умолчанию 115200, но лучше 921600 для быстрой загрузки).
Подключите ESP32 к компьютеру и определите
COM-порт (Windows) или
/dev/ttyUSB* (Linux/macOS).
3. Чтение всей Flash в файл
Команда для создания полного дампа:
bash
Copy
Download
esptool.py --port COM3 --baud 921600 read_flash 0 0x400000 flash_dump.bin
Где:
- --port COM3 — замените на ваш порт.
- --baud 921600 — скорость (можно снизить до 115200 при проблемах).
- 0 — начальный адрес (с начала Flash).
- 0x400000 — размер (4MB в hex).
- flash_dump.bin — выходной файл.
Пример для Linux/macOS
bash
Copy
Download
esptool.py --port /dev/ttyUSB0 --baud 921600 read_flash 0 0x400000 flash_dump.bin
4. Запись образа Flash обратно в ESP32
Осторожно! Неправильная запись может
"заблокировать" ESP32.
bash
Copy
Download
esptool.py --port COM3 --baud 921600 write_flash 0 flash_dump.bin
- 0 — начальный адрес (должен совпадать с чтением).
- flash_dump.bin — файл с образом.
Проверка записи (верификация)
Добавьте --verify для проверки:
bash
Copy
Download
esptool.py --port COM3 --baud 921600 write_flash --verify 0 flash_dump.bin
5. Работа с частями Flash
Если нужно прочитать/записать
не весь Flash, укажите адрес и размер:
Чтение загрузчика (Bootloader)
bash
Copy
Download
esptool.py --port COM3 read_flash 0x1000 0x7000 bootloader.bin
(Чтение 28 КБ, начиная с 0x1000).
Запись только раздела nvs
bash
Copy
Download
esptool.py --port COM3 write_flash 0x9000 nvs_partition.bin
6. Дополнительные команды
Стереть Flash
bash
Copy
Download
esptool.py --port COM3 erase_flash
Показать информацию о чипе
bash
Copy
Download
esptool.py --port COM3 chip_id
Смена скорости UART
Если есть ошибки, попробуйте снизить скорость:
bash
Copy
Download
esptool.py --port COM3 --baud 115200 read_flash 0 0x400000 flash_dump.bin
7. Важные предупреждения
- Не изменяйте загрузчик (0x1000) без понимания последствий.
- Резервное копирование — всегда сохраняйте оригинальную прошивку.
- Файл должен точно соответствовать размеру Flash (иначе ошибка).
- При ошибках:
- Попробуйте другие скорости (например, 115200).
- Проверьте подключение (качество проводов, питание).
- Убедитесь, что ESP32 в режиме загрузки (GPIO0 на GND при включении).
Вывод
- Чтение Flash:
bash
Copy
Download
esptool.py --port COM3 --baud 921600 read_flash 0 0x400000 backup.bin
- Запись Flash:
bash
Copy
Download
esptool.py --port COM3 --baud 921600 write_flash 0 backup.bin
- Осторожно с записью — можно "заблокировать" ESP32, если повредить загрузчик.
Для обычных данных (не всей прошивки) лучше использовать **EEPROM, SPIFFS или LittleFS