
Re: Настройка/ъпдейт през PC и телефон
Прозрачният вариант не го препоръчвам когато има безжични, а може и глобални (интернет) комуникации. Причината е че през усб често си позволяваме да търкаме и флашим. При отдалечен, или Over-the-Air ъпдейт има 99% шанс нещо да прекъсне. По тази причини повсеместно OTA се прави през второ копие на фирмуера - някакъв сторидж (SPI flash, карта, или ако е esp има достатъчно място в неговия флаш/файлова система) в който незабелязано (докато основния процесор си работи с основния фирмуер) се налива нова версия. После по команда или при рестарт основния проверява наличието, валидността и подписа на евентуално наличния втори - ако има такъв и го устройва си го изфлашва (примерно копира от SPI флаш във вътрешния на пик-чето/стм-чето).
Мониторинг на бъсове, трейс и подобни са отделна екстра. Често се прилага подхода да има възможност за добро логване (примерно ротиращо помнейки последните 2Мбайта от дърдоренето), или конфигурируемо като "софтуерен" осцилоскоп - с тригер, пре- и пост- буфер и т.н.
Всъщност стратегията за мениджмънт на отделните нодове, или things е първото което трябва да се измисли. Това включва и fw ъпдейт, и конфигуриране, и следене/диагностика. Разнити облачни услуги се опитват да предложат точно такава пълна симбиоза от всичко, което може да ти потрябва за да управляваш флотилията си от устройства. Там разните нива на доставчици, всеки от които може да пипа някой неща, но и да ползва наготово от по-горния.
Преди години имаше интервю с началник от циско по темата - той споделяше че вече има опит с няколко десетки милиона устройства и основния проблем е бил т.нар. "provisioning" - как да стане така че като си купиш отнякъде устройството да можеш да го настроиш в твоята мрежа, да го регистрираш, да го достъпваш, те да могат да правят туй-онуй с него, да сменят софтуер.
Та пак на темата - един от вариантите, които съм правил и ще опиша накратко, беше за устройства които имаха само блутут (нямаха интернет свързаност).
Там номера е че за работата с тях си има приложение - за андроид и iOS, евентуално за PC но това рядко се търси вече. Това приложение се възползва от механизмите на андроидския магазин за да бъде винаги ъпдейтнато. А в себе си то носи една или повече версии на фирмуера - криптирани. Повече в смисъл че ако има няколко hw ревизии може да има тотално различни фирмуери, или видове устройства.
Оттам при свързване към устройство приложението проверява каква е версията и дали знае за по-нова, и предлага ъпдейт. Фирмуерът се прехвърля във външен флаш (SPI) в криптирания си вид. След завъшване се прави рестарт на устройството и първо тръгва бутлоадъра. Ако намери нов фирмуер в партишъна за тази цел го проверява (чексуми, подпис) и го програмира във програмната памет на микроконтролера.
Този механизъм работи добре, понеже често новата версия на фирмуера има нови възможности, които изискват и нов код в приложението.
Едит: другите неща които намесваш трябва да се разглеждат отделно. На пръв поглед модулите с esp32 които са с PSRAM би трябвало да са доста подходящи за тази работа - в смисъл рам-а ще е добър за временен буфер - на фирмуер, трейс/лог, капчър на данни или каквото там си поискаш.
Като цяло бих ти препоръчал да поразгледаш какво правят разните фирми дето с това се борят - има такива device console-и, които поддържат всичките джунджурии, а и сигурно повече. Имам предвид облак и всичко дето иначе трябва да го мислиш.
Като пример за нещо добре измислено мога да ти посоча mongoose-iot. Мисля че българите дето правят някакви контакти с есп ползват тях. Услугата е платена за комерсиални цели, но това си е напълно нормално:
https://mongoose-os.com/https://dash.mongoose-os.com/https://mongoose-os.com/docs/mdash/intro.md