Обновление прошивки ESP32 с другого ESP32 через USB, аналогично тому, как работает esptool.py

Есть ли способ обновить прошивку на одном ESP32 с другого ESP32 через USB, аналогично тому, как прошивку можно обновить с помощью esptool.py?

По сути, это было бы похоже на порт какой-то магии esptool.py использует USB для обновления ESP32, но вместо запуска через Python это будет скетч Arduino C++, и он будет считывать прошивку для записи на другой ESP32 из SPIFFS.

, 👍1

Обсуждение

поскольку в ESP32 нет USB-периферийного устройства на чипе, лучшей идеей было бы сделать это через UART. вы провели исследование, прежде чем спросить? ты что-нибудь нашел? ты что-нибудь пробовал?, @Juraj

Спасибо, что поделились своим мнением, @Juraj. Тем не менее, все ESP32, с которыми я работаю, включают в себя USB CP2102 для моста UART., @Dan

может ли CP2102 выступать в качестве USB-хоста? нет., @Juraj

Это отличный момент, @Juraj, @Dan

вы знаете, что можете использовать загрузку OTA?, @Juraj


4 ответа


0

esp32 может обновляться самостоятельно. Для хранения и применения двоичного файла обновленного скетча используется библиотека обновлений, входящая в комплект поставки пакета поддержки плат ESP32 для Arduino.

Затем существуют библиотеки для различных способов передачи двоичного файла по сети:

  • ArduinoOTA для загрузки из среды Arduino IDE
  • HTTPUpdate для загрузки двоичного файла с веб-сервера
  • HTTPUpdateServer для загрузки двоичного файла в ESP32 через веб-страницу

Ключевое слово "обновление OTA" означает "обновление по воздуху", даже если обновление можно перенести и по кабелю.

,

0

Вы можете использовать SD-карту для обновления прошивки. Вот пример кода

.
,

2

У Espressif есть официальная библиотека. Вот ссылка:

https://github.com/espressif/esp-serial-flasher

Лично я рекомендую этот репозиторий GitHub под названием «FlashBox - Esp32 serial flasher» от Machiel80. Вот ссылка:

https://github.com/Machiel80/esp32-serial-flasher

У него есть хорошая документация и даже видео на YouTube, объясняющее, как это делается.

Наконец, у проекта flipperZero также есть проект последовательного прошивальщика на Github, "flipperzero-esp-flasher". Вот ссылка:

https://github.com/0xchocolate/flipperzero-esp-flasher

,

3

Чтобы прошить ESP32 с помощью другого ESP32:

Вход в режим загрузчика: переведите BOOT_PIN целевого ESP32 в положение LOW и переключите EN_PIN, чтобы сбросить его, переведя в режим загрузчика. Синхронизация с загрузчиком: отправьте команду SYNC с главного ESP32 для установления связи. Настройка флэш-памяти: используйте команду SPI_ATTACH для подготовки флэш-памяти цели. Инициализация прошивки: отправьте команду FLASH_BEGIN, чтобы указать размер данных, расположение памяти и размеры блоков. Передача прошивки: отправка прошивки небольшими порциями (например, по 1 КБ) с помощью FLASH_DATA, с контрольными суммами для обеспечения точности. Завершение прошивки: используйте команду FLASH_END для завершения. Целевой ESP32 может перезагрузиться для установки новой прошивки. Я создал библиотеку для упрощения этого процесса. Вы можете найти её здесь: Прошивка ESP32 с помощью другого ESP32.

,

В текущем виде ваш ответ неясен. Пожалуйста, [отредактируйте], чтобы добавить дополнительные сведения, которые помогут другим понять, как это отвечает на заданный вопрос. Подробнее о том, как писать хорошие ответы, можно узнать [в справочном центре](/help/how-to-answer)., @Community

Ответы, содержащие только ссылки, не принимаются. Вы можете разместить ссылку на свой пост, но пост должен быть самостоятельным., @Rohit Gupta

Хотя эта ссылка может быть ответом на вопрос, лучше включить сюда основную часть ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если страница, на которую они ссылаются, изменится. - [Из обзора](/review/late-answers/75384), @sa_leinad

Пожалуйста, отредактируйте свой ответ, включив в него шаги, описанные на странице, по которой вы ссылаетесь. Или скопируйте сюда всё руководство, чтобы все могли им воспользоваться. Ответы, содержащие только ссылки, противоречат правилам и будут удалены сообществом. Ник Гэммон написал отличную статью о том, [как писать хорошие ответы] (https://arduino.meta.stackexchange.com/q/2524/19409)., @sa_leinad