Arduino & IoT Academy · Урок

Откат неудачного обновления

Безопасно восстанавливайте устройство после ошибки загрузки.

Урок 4 из 413 шагов

«Откат неудачного обновления» — бесплатный урок Arduino & IoT Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Arduino & IoT Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Arduino & IoT Academy содержит 4 уроков всего.

Обновления могут завершиться неудачно

Даже при осторожной установке OTA иногда загружается неисправный код. Надёжная стратегия должна предусматривать возможность отката к действительно работающей прошивке.

Риск превращения устройства в «кирпич»

Если новая прошивка не может подключиться к WiFi, Вы теряете саму возможность OTA. Без защиты устройство превращается в бесполезный «кирпич».

Два раздела спасают устройство

ESP32 хранит старое приложение в одном разделе, пока записывает новое в другой. Предыдущая сборка остаётся неповреждённой, если она понадобится.

Пометка сборки как доверенной

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

esp_ota_mark_app_valid_cancel_rollback();

Самопроверка при запуске

Перед подтверждением выполните быструю проверку работоспособности: подключился ли WiFi, отвечают ли важные датчики? Только после этого помечайте сборку как рабочую.

Автоматический откат при сбое

Если ожидающая подтверждения сборка аварийно завершает работу или перезагружается до подтверждения, загрузчик самостоятельно возвращается к последней рабочей прошивке.

Запустите откат вручную

При неудачной проверке Вы также можете программно вернуть предыдущий образ с помощью esp_ota_mark_app_invalid_rollback_and_reboot().

esp_ota_mark_app_invalid_rollback_and_reboot();

Используйте сторожевой таймер

Сторожевой таймер перезапускает зависшую плату. В сочетании с откатом он возвращает зависшее обновление к рабочему коду.

Добавляйте версии к прошивке

Помечайте каждую сборку номером версии, который можно вывести через Serial, чтобы сразу понимать, какой образ сейчас работает.

#define FW_VERSION "1.4.2"
Serial.println(FW_VERSION);

Сначала проверьте одно устройство

Никогда не обновляйте весь парк устройств одновременно. Обновите одно тестовое устройство, понаблюдайте за ним и только потом разворачивайте обновление широко. 🐤

Всегда сохраняйте путь восстановления

В худшем случае USB-кабель всё ещё позволит перепрошить любую плату. Проектируйте систему так, чтобы неудачное OTA было лишь неудобством, а не безвозвратной потерей.

Быстрая проверка

Подумайте, что произойдёт, если новая прошивка аварийно завершит работу до подтверждения.

Итоги

Используйте два раздела, выполняйте самопроверку и подтверждайте каждую сборку, полагайтесь на автоматический откат и сторожевой таймер, а также всегда сохраняйте возможность восстановления через USB. 🛡️

Можно начать бесплатно

Изучай C++ с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Откат неудачного обновления» бесплатный?

Да — полный текст урока «Откат неудачного обновления» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Arduino & IoT Academy, подпишись на CoddyKit PRO. Курс Arduino & IoT Academy содержит 4 уроков всего.

Чему я научусь в уроке «Откат неудачного обновления»?

Безопасно восстанавливайте устройство после ошибки загрузки. Ты практикуешь Arduino & IoT Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Arduino & IoT Academy?

Предыдущий опыт не требуется. Arduino & IoT Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Откат неудачного обновления»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Arduino & IoT Academy?

Да. Каждый урок Arduino & IoT Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Зачем нужна OTA в полевых условиях
  2. Включение ArduinoOTA
  3. Размещение веб-страницы обновления
  4. Откат неудачного обновления
← Назад к Arduino & IoT Academy