ESP8266 Урок 3. Читаем прошивку ESP-01. Часть 1



В данном занятии мы попытаемся разобраться, какие файлы прошиваются в микроконтроллер ESP8266, в частности в ESP-01, а также попытаемся считать прошивку из контроллера, так как вот об этом информации очень мало, хотя она вполне может пригодиться, так как нередко многие хотят вернуть программное обеспечение в контроллер, которое было в нём при его приобретении.

Сначала, ясное дело, нам нужны для наших целей какие-либо инструменты. Есть множество визуальных инструментов, они нам также сегодня пригодятся, но опции считывания прошивки из ESP8266 я в них, к сожалению, не обнаружил. Поэтому немного поработаем в консоли.

Для начала скачаем следующие визуальные инструменты:

  1. Flash Download Tools,
  2. ESPlorer,
  3. nodemcu-flasher (Nodemcu firmware programmer)

Данные программы найти не сложно, первый — на официальном сайте Espressif, второй — на сайте https://esp8266.ru/esplorer/ , а третий — на GitHub https://github.com/nodemcu/nodemcu-flasher .

Практически все данные программы работают без установки, что, безусловно, позволяет сэкономить и реестр и другие известные ресурсы компьютера.

С данными инструментами мы в данном занятии работать не будем, но скачать их будет нужно, они нам вскоре обязательно пригодятся.

Чтобы работать с контроллером ESP8266 в консоли, есть два пути. Первый — скачать готовый esptool для windows и работать с ним, но это не совсем правильно. Хотя бы потому, что самые свежие версии не так легко найти, так как разработчик данного инструмента установочные и исполняемые файлы в формате exe не хранит. Поэтому есть второй путь — установить Python, скачать esptool через инструментарий Python и затем пользоваться самой последней версией.

Для этого, если у нас ещё не установлен Python, или установлена старая версия, то необходимо его установить.

Скачиваем и устанавливаем последнюю версию интерпретатора с официального сайта Python

 

 

Также надо будет установить галку для прописывания пути в переменные среды, чтобы наш Python запускался из любого места

 

 

 

Возможно, что Python будет «видеться» только после перезагрузки (так устроены переменные среды в Windows). Поэтому, проверим «видимость». Для этого сразу зайдём в папку, в которую мы будем сохранять нашу считанную прошивку и из которой впоследствии будем прошивать другие, и запустим командную строку, в которой введём следующую команду

 

 

Если мы видим версию, значит Python «виден», а если видим что-то наподобие вот такого

 

 

то тогда перезагружаемся и проверяем ещё раз.

Если всё нормально, то продолжаем дальше.

Дальше надо будет установить утилиту esptool. Для этого используем следующую команду

 

 

Ниже мы видим совет обновить pip (инсталлятор пакетов). Ну, раз просят, давайте попробуем обновить

 

 

Теперь у нас ещё и обновлённый pip.

В принципе, я пробовал деинсталлировать после этого esptool, а затем его установить заново, ничего не изменилось, поэтому этого делать не обязательно.

Проверим доступность esptool, узнав его версию

 

 

Теперь, когда инструмент установлен, мы можем начать с ним работу.

Но для начала давайте разберёмся, какие нам необходимы файлы для прошивки нашего контроллера и с каких адресов данные файлы шьются. Хоть мы и не будем его прошивать, но, так как прошивку мы будем считывать не кусками, а целым дампом полностью всей FLASH-памяти, то мы потом будем хотя бы знать, что и где в нашем дампе искать, чтобы не прошивать потом целиком, а разделить на нужные файлы.

Официальная прошивка от Espressif для пользования AT-интерпретатором состоит из нескольких файлов и адреса заливки их во FLASH-память ESP8266 зависят от объёма данной памяти, а также её организации.

 

 

Откроем мануал по использованию AT-команд и мы увидим в нём для нашего объёма FLASH-памяти следующую картину

 

 

Давайте считаем всю нашу FLASH-память из модуля.

Для этого подключим модуль таким же образом, как и в прошлом занятии, схема не изменилась, я лишь собрал небольшие переходнички для подключения модуля к макетной плате, чтобы сократить до минимума соединительные провода от макетной платы к модулю

 

 

Чтобы считать или записать прошивку, сначала нужно наш модуль перевести в данный режим.

Делается это в с помощью наших двух кнопок в следующем порядке

  1. Нажимаем и удерживаем кнопку сброса (RESET),
  2. Нажимаем и удерживаем кнопку прошивки (FIRMWARE),
  3. Отпускаем кнопку сброса (RESET),
  4. Отпускаем кнопку прошивки (FIRMWARE).

После данных действий наш модуль должен быть переведен в режим загрузки (выгрузки) прошивки.

Теперь, чтобы считать всю FLASH-память нашего ESP и сохранить её в файл, в командной строке мы вводим следующую строку

 

 

Пойдёт процесс считывания. В командной строке мы не устанавливаем скорость обмена, она выставится по умолчанию. Как установить скорость, мы разберёмся в уроке, когда будем прошивать контроллер.

Теперь об остальных параметрах в строке

—port COM5 — тут, я думаю понятно, мы говорим утилите, что работать мы будем с портом COM5,

read_flash — а здесь мы говорим то, что мы будем именно читать из памяти FLASH

0x00000 0x100000 — читаем с адреса 0 байты размером в 1 мегабайт (в шестнадцатеричном выражении — 0x100000).

flash_esp01_full.bin — имя файла, в который сохранится наш дамп.

После того, как процесс считывания закончится, мы видим, что в нашей папке появился файл с дампом FLASH-памяти

 

 

 

В следующей части нашего урока мы выделим из считанного байта FLASH-памяти модуля ESP-01 файлы прошивки.

 

 

Предыдущий урок Программирование МК ESP8266 Следующая часть

 

 

Различные модули ЕSP8266 можно приобрести здесь Модули ЕSP8266

Переходник USB to TTL можно приобрести здесь ftdi ft232rl

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

ESP8266 Читаем прошивку

8 комментариев на “ESP8266 Урок 3. Читаем прошивку ESP-01. Часть 1
  1. Владимир:

    Добрый день
    Не могу прочитать всю флеш, получаю сообщение:
    A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0xfff bytes

    • Здравствуйте!
      Такое бывает, как правило, из-за ненадёжных соединений по UART. Пробуйте разные способы, я дал 3, какой-то сработает.

    • Максим:

      Точно такая же проблема была пр использовании фигового переходника «PL2303 USB к RS232 TTL модуль адаптер конвертер». Там он чудом считал, но нестабильно все. Причем когда я питал от стабилизированного источника постоянно эта ошибка. Как только подрубил питаться от переходника — все заработало. Ну как заработало то считалось то ошибка в конце, взял «Micro UART модуль ch340g» и питал от него и все четко.
      Есть еще на FTDI как у автора, его берегу, но уверен что с ним также все будет четко.

  2. Den:

    Так же была проблема с фатальной ошибкой. Решилось тем, что взял кабель от usb-uart платы подлиннее и разнес дальше от питания ноутбука. и все считалось.

  3. Вася:

    у меня выходит ошибка »
    esptool.py v3.2
    Serial port COM4
    Connecting………………………………..

    A fatal error occurred: Failed to connect to Espressif device: No serial data re
    ceived.
    For troubleshooting steps visit: https://github.com/espressif/esptool#troublesho
    oting»

    Что это значит?

  4. Вася:

    а сейчас пишет:
    Detecting chip type… Unsupported detection protocol, switching and trying agai
    n…

    A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0xfff bytes

  5. Марс:

    Здравствуйте
    Раньше смотрел Ваши уроки по stm
    Теперь добрался до 8266

    Попробую спасибо за труды

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*