Продолжаем работу с микроконтроллером ESP8266, а вернее с FLASH-памятью, подключенной к ней для хранения ПО и настроек.
Сегодня мы попробуем в эту память что-нибудь записать, или, как говорят, прошить её, тем самым обновить программное обеспечение до другой более новой версии.
Также, при необходимости, мы теперь можем вернуть прошивку прошлой версии, которая была в модуле, так как в прошлом уроке мы её смогли считать и сохранить, причём в удобном виде.
Попробуем мы это сделать тремя способами. Первые два — с использованием программ с графическим интерфейсов Flash Download Tools и nodemcu-flasher, а третий — с командной строки при помощи утилиты esptool, с помощью которой мы считывали прошивку.
Для начала нам нужны, конечно же, файлы для прошивания памяти.
Скачаем необходимый SDK с официального сайта Espressif. В случае модуля ESP-01, мы, скорее всего не сможем воспользоваться третьей версией SDK, так как в ней нет прошивки, пригодной для схемы 512+512. Наши методы прошивания подойдут не только для модулей ESP-01, а и для любых других модулей, где установлен контроллер ESP8266, поэтому вполне можно и воспользоваться SDK3. Но в нашем случае мы скачаем последнюю на данный момент SDK 2.2.1 отсюда. Комплект нужен именно NONOS (без использования операционной системы).
Распакуем архив. Из него нам нужны будут для прошивания boot_v1.X.bin, версию подбираем, обычно последняя, файл esp_init_data_default_vXX.bin, я прошивал версию 05, файл blank.bin (если прошиваем неочищенную полностью память) из папки bin, а также файл userX.1024.new.2.bin из папки bin\at\512+512.
Для начала давайте очистим полностью FLASH-память нашего модуля.
Сначала подключим нашу схему, которая с прошлых занятий не изменилась.
Запускаем командную строку, находясь сразу в каталоге с файлами прошивок, которые мы создали, когда считывали прошивку из модуля, переведём модуль в режим прошивки и отправим следующую команду
После удачного стирания памяти мы получим вот такое сообщение
Ещё раз уточним, что и с какого адреса прошивать, открыв мануал по AT
Теперь запустим Flash Download Tools и подключим файлы новой прошивки, прописав соответствующие адреса, заодно также подключим и файл blank.bin, который прошивается по трём адресам, но отмечать для прошивания мы его не будем, так как у нас память уже полностью очищена. Также выберем настройки внизу под наши параметры
Переводим модуль в режим прошивки и жмём кнопку START.
При удачном завершении операции мы получим вот такую картину
Вообще, признаться, когда я писал данный пост, у меня впервые прошилось нормально с помощью данной программы, обычно всегда процесс приводил к ошибке.
Запустим ESPlorer, настроим порт и перезагрузим наш контроллер. Если у нас всё прошилось удачно, мы увидим приблизительно вот это
Мы видим, что загрузчик у нас новой версии, SDK тоже.
Теперь попытаемся прошить наш модуль с помощью nodemcu-flasher.
Сначала не забываем отключиться от порта в ESPlorer, затем снова очистим нашу память с помощью утилиты esptool.
Запустим nodemcu-flasher, сначала перейдём там в раздел Config и аналогично подключим файлы прошивки и отметим только нужные файлы (если бы мы не стирали полностью FLASH, то blank.bin тоже отмечаем)
Переводим модуль в режим прошивки, переходим в программе nodemcu-flasher в раздел Operation и жмём кнопку Flash(F). Начнётся процесс заливки прошивки в FLASH-память модуля
При удачном исходе операции мы получим зелёную галку внизу
Как ни странно, у меня сейчас тоже всё прошилось. Обычно сразу три файла у меня никогда удачно не прошивались, только по очереди, и то не с первого раза. Посмотрим как пойдёт процесс при съёмке видеоверсии. Проверим наличие прошивки в программе ESPlorer. Если всё нормально, то у нас остался ещё третий метод прошивания FLASH-памяти модуля, а это утилита esptool.
Для удобства работы с ней мы скопируем из папки с новой прошивкой файлы boot_v1.7.bin, версию подбираем, обычно последняя, файл esp_init_data_default_v05.bin, я прошивал версию 05, файл blank.bin (если прошиваем неочищенную полностью память) из папки bin, а также файл user1.1024.new.2.bin в папку, которую мы сохраняли прошивку с модуля и в которой мы в данный момент находимся в режиме командной строки. Прошивать будем каждый файл по отдельности, хотя можно прошить и вместе.
Перейдём в командную строку и, соответственно, сначала очистим FLASH-память нашего модуля перед прошивкой.
Затем переведём модуль в режим прошивки и попытаемся прошить сначала самый маленький файл
Насчёт параметров, надеюсь тут всё понятно. Первый — это порт, к которому подключен модуль, второй — скорость порта, третий — метод прошивания (без сжатия), четвертый — частота шины SPI, пятый — её тип (обычный двухпроводной, а не QSPI), шестой — объём памяти FLASH в мегабитах, седьмой — адрес, с которого заливается файл прошивки, восьмой — имя файла прошивки, которую мы заливаем в FLASH.
При удачном исходе мы получим следующее сообщение
Подобным образом прошьём и остальные файлы, не забывая перед каждой командой переводить модуль в режим прошивания, хотя можно это делать и после, но, руководствуясь моим опытом, лучше ДО
Всё готово!
Проверим на всякий случай наличие прошивки в ESPlorer.
Таким же образом мы можем прошить наши файлы, которые мы считали в прошлом занятии, например, в том случае, если нам по каким-то причинам не понравится новое ПО, которое мы только что прошили.
Итак, на данном уроке мы научились прошивать модуль ESP-01, хотя вполне можно тем же образом прошивать и другие модули, основанные на микроконтроллере ESP8266. Для процесса прошивания мы использовали три метода. Какой метод лучше подходит — выбирать вам!
Всем спасибо за внимание!
Предыдущий урок Программирование МК ESP8266 Следующий урок
Бинарные версии 512 + 512 здесь
Различные модули ЕSP8266 можно приобрести здесь Модули ЕSP8266
Переходник USB to TTL можно приобрести здесь ftdi ft232rl
Многофункциональный переходник CJMCU FT232H USB к JTAG UART FIFO SPI I2C можно приобрести здесь CJMCU FT232H USB
Смотреть ВИДЕОУРОК (нажмите на картинку)
Добрый день! Очень интересно! А когда продолжение? Или не будет? А то слышал, ужасно глючная вещь.
Здравствуйте!
Будет продолжение, вот немного языку СИ выучимся, и обязательно будет. Про «глючную вещь» у Вас информация с официального источника или просто кривотолки?
Конечно с неофициального! Ждём с нетерпением!
Прикрепите пожалуйста прошивки, которые вы скачали во время составления урока, т.к. производитель видимо убрал версии для 8-и мегабитных флешек. Папок 512+512 нет в архивах с официального сайта. Нет ни в версии 2018-го ни в 2017-го года.
Пришлось прошивать версию 2016 года.
Прикрепил внизу страницы
Большое спасибо!
Залил через download tool без проблем. Возможно у вас при заливке возникают проблемы из-за скорости? У вас 230400 установлена скорость, судя по картинкам. Я спокойно прошил на 115200. Вместе с blank.bin файлами.
Добрый день! Пробовал все Ваши способы(версия 2.2.1 и из Вашего архива), модуль работает только если прошивать с помощью Flash Download Tools. И, кстати, нормально прошивается весь дамп и модуль также нормально работает. А вот если разбивать считанный дамп на файлы и потом прошивать — прошивается, но модуль не работает.Я так не могу теперь восстановить родную прошивку(случайно удалил считанный дамп).
Спасибо за уроки!
Спасибо за внимание и интерес к ресурсу. Думаю, что скоро уже будут уроки по созданию своих прошивок.
Скорей бы!
И, кстати, там ведь перед 0xfc000 и после окончания пользовательской прошивки ещё куча всяких данных в нескольких местах. Их-то мы не сохраняем, почему?
Мне так сразу на вскидку тяжело сказать, что это за данные. Может, пользовательские настройки, но они вроде в init
Напишите пожалуйста в тексте статьи команды.