MultiBoot
: Завантажувач прошивок
-
MultiBoot lilka::multiboot
Екземпляр класу
MultiBoot
, який можна використовувати для роботи з завантажувачем. Вам не потрібно інстанціюватиMultiBoot
вручну.
-
class MultiBoot
Завантажувач прошивок з microSD-картки.
Дозволяє прочитати файл прошивки з microSD-картки в OTA-розділ та запустити його один раз, не замінюючи поточну прошивку.
Нова прошивка зберігається в OTA-розділі та запускається при перезавантаженні, але активною залишається основна прошивка (app rollback).
Це дозволяє компілювати за записувати різні прошивки на microSD-карту і запускати їх через браузер SD-карти без необхідності перепрошивки.
Детальніше про auto-rollback: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/system/ota.html#rollback-process
Приклад використання:
#include <lilka.h> void setup() { lilka::begin(); Serial.println("Завантаження прошивки 'firmware.bin' з microSD-картки..."); lilka::multiboot.start("/sd/firmware.bin"); // Почати завантаження while (lilka::multiboot.process() != 0) { // Обробити завантаження Serial.println("Завантажено " + String(lilka::multiboot.getBytesWritten()) + "/" + String(lilka::multiboot.getBytesTotal()) + " байтів"); } lilka::multiboot.finishAndReboot(); // Завершити завантаження та перезавантажити пристрій }
Public Functions
-
MultiBoot()
-
void begin()
Ініціалізувати завантажувач.
Попередження
Цей метод викликається автоматично при виклику
lilka::begin()
.
-
int start(String path)
Почати завантаження.
- Повертає:
0, якщо завантаження почалося успішно, <0 - у разі помилки.
-
int process()
Обробити завантаження. Цей метод повинен викликатися в циклі, поки не поверне 0. Щоразу він опрацьовує частину файлу та записує її в OTA-розділ.
- Повертає:
0, якщо завантаження завершилося успішно, <0 - у разі помилки, >0 - означає кількість байтів, які було оброблено.
-
void cancel()
Перервати завантаження.
-
int getBytesWritten()
Отримати кількість байтів, які було записано в OTA-розділ.
- Повертає:
Кількість байтів
-
int getBytesTotal()
Отримати загальну кількість байтів, які потрібно записати в OTA-розділ.
- Повертає:
Кількість байтів
-
int finishAndReboot()
Завершити завантаження та перезавантажити пристрій.
- Повертає:
<0 - у разі помилки. В разі успіху цей метод не повертається, оскільки пристрій перезавантажується.
-
String getFirmwarePath()
-
MultiBoot()