#esp32
Вопрос:
Итак, мне было интересно, можно ли создать своего рода «загрузчик» для программ ESP32, который загружал бы указанные программы с SD-карты?
Я знаю, что не могу сделать это во время полета, поэтому моя идея заключалась в следующем: создайте что-то вроде OTA без Интернета и второго раздела, потому что для моего конкретного использования потребуется каждый бит памяти, который он может получить, поэтому разделение его на самом деле не вариант.
Прямо сейчас я вижу две проблемы:
- Мне нужно завершить все, как только я начну загружать программу (в основном бесплатные, так что никаких потенциальных прерываний нет).
- Мне нужно поместить все в IRAM и оставить достаточно места для остальной части приложения. Для этого потребуется полная перепись функций esp-idf, поскольку большинство из них не входят в IRAM.
Комментарии:
1. что еще могло бы написать обновление OTA для flash, если бы не esp32. не имеет значения, что является источником нового двоичного файла. его просто нужно записать в нужный раздел, а затем активировать
Ответ №1:
ДА. Нет необходимости в IRAM, вы можете запускать свое приложение с флэш-памяти и одновременно писать на одну и ту же флэш-память без каких-либо проблем. Espressif предоставил API для выполнения именно того, что вы хотите: Обновления по воздуху (OTA). Вам необходимо создать отдельные разделы для текущей и «свежей» прошивки (как описано в документе). Затем вы просто считываете данные вашего нового образа прошивки с SD-карты и передаете их в функцию API esp_ota_write...()
.
Комментарии:
1. Стоит отметить недостаток ОТА, уменьшающего вдвое максимальный полезный размер изображения, так как он разбивает флэш-память на два раздела.
2. Да, ОТА сработало бы, но мне нужна вся вспышка, я действительно не могу позволить себе разделить ее…
3. Альтернативой ОТА Espressif является создание его самостоятельно с нуля, что не является тривиальным. Решать вам, но вам предстоит на несколько порядков больше работы, чем принятие готового решения. Возможно, вы можете использовать модуль с 8 или 16 МБ флэш-памяти?
4. @haberturdeur, вы создали пользовательское разделение, в котором используется вся флэш-память? в разделе по умолчанию есть раздел для второй копии приложения
5. По сути, да. Я еще не сделал этого, потому что я все еще занимаюсь низкоуровневыми вещами, но я делал это несколько раз в других проектах…