Уважаемые посетители сайта esp8266.ru!
Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram
@cool2000 - объясните, пожалуйста, почему у меня это не работает?
uint16_t ota_adr = pmsg[0] | (pmsg[1] << 8);
// ota.pkt_index - тоже объявлен uint16_t и инициализирован 0xffff (-1)
...
if (ota_adr == (ota.pkt_index + 1)) { // correct OTA data index
11005538: 892b ldrh r3...
Мне нужен только пример. Далее кое как раскидаю сам. Потом разрисуем.
Я тут полдня опять со снегом борюсь снегоуборщиком... Дорога к гаражу только 50 метров... :)
Это упрощенный вариант - сделан чисто из отладочной версии.
А ХоТчется что-то в виде страничек-закладок как в большом эксплорере :)
На крайний случай как меню роутеров...
Уж проще написать обработку прерывания исключения, по типу как в ESP8266 . Тогда будет читать любой unalign, но долго :)
И где раскрашенный HTML с OTA? Пора проверять и отлаживать OTA - все коды линкованы...
Остается задача ужать код OTA загрузчика до минимума. Т.к. не требуется переписывания загруженного OTA в рабочую область, то объем “свободной” Flash в таком случае будет больше. Но появляется проблема с внешними BT адаптерами – работа с разными характеристиками устройства под одним MAC. Надо...
Набил предварительный код OTA, но ещё ни разу не собиравшийся и не состыкованный с общим. Аналогично к нему уже есть куски и в HTML/js, которые надо немного адаптировать. Пока нет времени на PHY62x2.
Позволяет грузить в любой адрес и кусками. Подпись на любой кусок ставит после успеха.
Код...
В общем приехали с gcc из за структурных программистов (коих точно вытеснит ИИ, т.к. всё их дело - это раздувание размера кода для понимания человеком, что нафиг не нужно машине) - Придется вручную считать размер структур и писать #define size_этой_стркутуры 5 .
И при чем тут массивы?
При составлении массива берутся выровненные адреса для каждого элемента. Это никак не влияет на размер элемента.
Аналогично со структурами в структурах. Всегда начинаются с выровненного адреса, но размер может быть нечетным. Никому это не мешает.
И операция a = b со...
Я не Ардуинщик и не собираюсь составлять из нечетных по размеру структур массивы.
Гнать их всех погаными тряпками.. :)
Правда это уже началось - прогнозируют что ИИ в ближайшие 5 лет вычистит из "программистов" 99% на улицу собирать бутылки... О смерти любимых толпе языков программирования уже...
Так делать не нужно:
struct {
uint8_t sz;
uint32_t val;
} aaa;
нужно так:
struct {
uint32_t val;
uint8_t sz;
} aaa;
И чтобы sizeof(aaa) был = 5.
Остальной маразм в gcc как нибудь обойду.
Где тут не выровнено?
Да пофиг на архитектуру - создавайте сами структуры только с выровненными адресами переменных. Это упрощает работу с ними в других системах. Но вот лишние байты в конце, если структура {uint32 x; uint8 b} тут всё нарушают. И вместо 5 байт выходит 8-мь.