Stránka 1 z 1

OTA - ESP32 - Fungovanie

Napsal: 29 zář 2019, 00:58
od martinius96
Ahoj, chcem konečne vyskúšať OTA pre ESP32, prvotne na ESP-IDF (zo školských dôvodov) a neskôr v Arduino core.
Mám niekoľko otázok a neviem, či funkčnosti OTA správne rozumiem.

Existuje viacero príkladov s OTA:
OTA BASIC - nový sketch nahrajem skrz Arduino IDE (V portoch sa mi objaví COM port na sieti)
OTA Web Updater - nový sketch nahrajem skrz formulár - HTML stránku, ktorá beží na ESP32 ako webserveri (nahrám binárny súbor)
ESP-IDF obsahuje aj HTTP/HTTPS OTA, kedy je sketch nahratý na webserveri v LAN sieti / na internete (do konfigurácie sa zadáva priama cesta k binárnemu súboru).

Zaujímalo by ma, či musí nový sketch obsahovať aj tú OTA časť, alebo nie? Stačí iba nahrať program aký chcem a OTA bude fungovať stále, ak som ju prvý krát nahral? Ak sa nemýlim, tak sa zmaže, keďže sa prepíše flash novým sketchom. Pri prvotnom nahrávaní OTA sketch sa musí vypáliť aj bootloader, ktorý je pozmenený, ak som tomu správne pochopil.
Ak ste pracovali s ESP-IDF tak by ma zaujímalo, ako ESP32 pozná, že binárka (ktorá je na tom istom webovom umiestnení) bola zmenená? Využíva sa nejaký hash checksum obsahu binárky? Vďaka...

Re: OTA - ESP32 - Fungovanie

Napsal: 29 zář 2019, 19:29
od jankop
Přestože jsem neviděl ESP32 ani z rychlíku, dovolím si odpovědět za esp8266. Myslím, že základní princip je tentýž.
Když flashneš přes OTA, tak ten binár musí obsahovat zase sekci OTA, jinak holt máš smůlu a přes WiFi už nic nenahraješ.
OTA Web Updater - nový sketch nahrajem skrz formulár - HTML stránku, ktorá beží na ESP32 ako webserveri (nahrám binárny súbor)
Tohle používám a funguje to velmi příjemně.
Pri prvotnom nahrávaní OTA sketch sa musí vypáliť aj bootloader, ktorý je pozmenený, ak som tomu správne pochopil.
No... u ESP8266 je bootloader v ROM, tam se tedy jisto-jistě nic nenahrává.
ako ESP32 pozná, že binárka (ktorá je na tom istom webovom umiestnení) bola zmenená?
V případě esp8266 se to nepozná a je na programátorovi, aby zajistil, aby se to neloudovalo pořád dokola, odhaduji, že totéž platí pro esp32.