Modul de efectuare a actualizărilor OTA (Over-the-Air) utilizând microcontrolerul ESP32 și ESP-IDF-ul acestuia
Contributed By DigiKey's North American Editors
2021-08-10
Proiectanții de produse Internet of Things (IoT) trebuie să evalueze în permanență selecția de platforme și componente în vederea reducerii costurilor și a consumului de energie, îmbunătățind, în același timp, performanța și accelerând proiectarea în domeniul aplicațiilor de conectivitate. În prezent, există mai multe soluții disponibile, dar proiectanții se confruntă cu provocarea de a efectua actualizări wireless, prin tehnologia over-the-air (OTA) pentru a menține firmware-ul dispozitivului actualizat la zi, odată implementat.
Cheia este analizarea platformelor disponibile pentru a vedea ce instrumente suplimentare și ce asistență oferă pentru a susține actualizările OTA. Un astfel de sprijin poate simplifica foarte mult procesul, dar trebuie acordată puțină atenție la început.
Acest articol discută elementele fundamentale ale OTA și explică de ce este această tehnologie o funcție critică pe care aproape fiecare sistem IoT trebuie să o accepte, în ciuda provocărilor cu care se confruntă dezvoltatorii. Se folosește, apoi, de microcontrolerul compatibil Bluetooth și Wi-Fi ESP32 de la Espressif Systems, cu modulele asociate, kiturile și ESP IoT Development Framework (ESP-IDF), pentru a arăta cum se creează o partiție OTA și utilizează scriptul otatool.py pentru a efectua o actualizare a firmware-ului în timp ce o aplicație este încă în curs de execuție.
Introducere în actualizările OTA
Obiectivul principal al majorității echipelor de dezvoltare este implementarea caracteristicilor specifice produsului, adică logica de afaceri care diferențiază produsul lor față de alte produse de pe piață. Cu toate acestea, fiecare produs IoT are un set de caracteristici de bază care trebuie implementat, configurat și întreținut pe toată durata de viață a dispozitivului. Un bun exemplu sunt actualizările de securitate. Având în vedere necesitatea de a efectua aceste actualizări, o caracteristică importantă, dar ușor de trecut cu vederea atunci când se evaluează o platformă de dezvoltare adecvată, este capacitatea de actualizare a bootloaderului sau a firmware-ului OTA (FOTA) (denumit uneori doar OTA).
OTA le oferă inginerilor posibilitatea de a-și întreține produsele și de a efectua de la distanță un upgrade al acestora ca răspuns la cerințele tehnice și de afaceri, fără a fi nevoie să trimită personal de întreținere până la dispozitiv sau să îi solicite clientului final să efectueze orice activități în scopul actualizării dispozitivului. În schimb, toate aceste costuri pot fi eliminate prin efectuarea silențioasă a unui upgrade al firmware-ului dispozitivelor în fundal sau în timpul orelor în care activitatea este „întreruptă”, cum ar fi în timpul nopții.
Arhitecturile OTA pot veni în mai multe forme și configurații diferite, de la soluțiile construite la comandă până la implementările standard oferite de furnizorii de cloud. Un exemplu tipic de arhitectură poate fi observat în Figura 1.
Figura 1: Prezentare generală a arhitecturii OTA care prezintă un exemplu de proces de actualizare a firmware-ului aplicației pe teren pentru dispozitivele implementate. (Sursă imagine: Beningo Embedded Group)
În acest exemplu, un OEM utilizează Amazon Web Services (AWS) IoT Core pentru a încărca noi versiuni de firmware și apoi utilizează capacitățile Job încorporate pentru a distribui actualizările către dispozitivele de pe teren. Acesta este doar unul dintre multele exemple și aproape fiecare furnizor de cloud are o soluție similară.
În prezent, există multe opțiuni de microcontrolere disponibile care acceptă OTA. Un microcontroler popular atât pentru sistemele ieftine, cât și în rândul creatorilor este ESP32. Există mai multe motive pentru care ESP32 a fost atât de popular, inclusiv:
- Are un microcontroler integrat cu module de certificare Wi-Fi/Bluetooth disponibile
- Ieftin
- Mediu de dezvoltare open-source și cadre software, cum ar fi ESP-IDF și ESP Audio Development Framework (ESP-ADF)
- Numeroase exemple de aplicații existente, disponibile gratuit pe web
Selectarea unui modul ESP32 pentru testarea OTA
Există mai multe module ESP32 și plăci de dezvoltare diferite pe care utilizatorii le pot achiziționa pentru a trece în revistă exemplele OTA. Să luăm ca exemplu placa Adafruit 3405 ESP32 Huzzah Feather (Figura 2). Aceasta este o placă de dezvoltare ieftină, care include toate circuitele necesare pentru a programa un ESP32 și pentru a-l alimenta prin intermediul unui conector USB.
Figura 2: Placa 3405 Huzzah Feather conține un modul Wi-Fi/Bluetooth certificat ESP32 WROOM-32D cu 4 Mbyte de memorie flash. Placa include toate elementele hardware necesare pentru programare și comunicarea cu modulul prin USB. (Sursă imagine: Adafruit)
La baza modelului 3405 se află un modul ESP32-WROOM-32D care vine cu 4 Mbyte de memorie flash, Wi-Fi, Bluetooth și un set complet de periferice pentru aproape orice aplicație.
O altă placă de dezvoltare care poate fi utilizată este placa audio ESP32-LYRATD-SYNA de la Espressif Systems (Figura 3). Această placă de dezvoltare include modulul ESP32-WROVER-B.
Figura 3: Placa ESP32-LYRATD-SYNA se bazează pe un modul ESP32 WROVER-B certificat Wi-Fi/Bluetooth cu 4 Mbyte de memorie flash. Pe lângă faptul că permite proiectanților să programeze și să comunice cu modulul prin USB, aceasta dispune și de circuitele necesare pentru a dezvolta aplicații audio. (Sursă imagine: Espressif Systems)
Modulul ESP32-LYRATD-SYNA dispune, de asemenea, de 4 Mbyte de memorie flash, precum și de toate circuitele pentru aplicații audio. Placa include un codec audio, un amplificator audio și mufe pentru căști și difuzoare pentru a testa complet o aplicație audio.
O ultimă placă de dezvoltare care poate fi utilizată pentru testarea OTA este placa de dezvoltare ESP32-S2-SAOLA-1RI Espressif (Figura 4). Când discutăm despre plăcile de dezvoltare, aceasta este cea mai ieftină. Placa conține un modul ESP32 Wrover împreună cu circuitele de programare a cipului. Nu există alte ornamente în afară de faptul că aceasta conține pini care îi permit să fie ușor de aplicat pe o placă de tip breadboard în vederea testării.
Figura 4: ESP32-S2-SAOLA-1RI, pe bază de modulul Wrover, este o placă de dezvoltare de bază,ieftină, dar care include suficiente circuite pentru a programa modulul integrat. (Sursă imagine: Espressif Systems)
Placa specifică selectată pentru testare nu contează prea mult, deoarece fiecare modul ESP32 utilizează ESP-IDF. Acest cadru este conceput pentru a ușura activitățile de dezvoltare a software-ului pentru dezvoltatori prin includerea de drivere, middleware, un RTOS și, ceea ce este important în sensul prezentului articol, bootloaderele și bibliotecile OTA.
Bootloaderul le permite dezvoltatorilor să profite de actualizările OTA și să își partiționeze memoria pentru actualizarea firmware-ului în timp ce aplicația principală este încă în funcțiune, ceea ce ajută la reducerea la minimum a timpului de nefuncționare. Configurarea bootloaderului poate părea complicată la început, dar este simplă dacă este ghidată corespunzător.
Fluxul de lucru pentru dezvoltarea OTA
Fluxul de lucru pentru dezvoltarea OTA pentru ESP32 va varia ușor în funcție de nevoile de afaceri și de selecția componentelor produsului. De exemplu, o echipă care utilizează AWS va folosi, probabil, ghidurile de inițiere și exemplele AWS pentru a pune în funcțiune soluția ESP32 OTA. Pe de altă parte, o companie care își personalizează propria soluție va utiliza, probabil, documentația ESP32. În acest articol, vom analiza piesele de la nivelul ESP32 și nu din cloud. Motivul este că aceste elemente sunt generice și se aplică pentru OTA cu ESP32, indiferent de furnizorul de cloud sau de soluția utilizată.
În general, procesul de configurare a unei actualizări OTA pe ESP32 implică următorii pași:
- Configurarea tabelei de partiții ESP32
- Descărcarea firmware-ului care acceptă OTA
- Dezvoltarea unui instrument care să acționeze ca un server și să efectueze trimiteri de tip push pentru noul firmware
- Descărcarea celui mai recent firmware pe ESP32
- Trecerea la noua aplicație
Evident, aceasta este o abordare simplificată. Dezvoltatorii ar trebui să analizeze din nou Figura 1 pentru a vedea procesul general de actualizare a firmware-ului. Acest proces poate fi destul de complicat, așa că este recomandabil să folosiți exemplele existente de ESP32 OTA aflate pe GitHub. Aceste exemple oferă câteva exemple critice, cum ar fi:
- OTA HTTPS
- OTA nativ
- OTA simplu
- Instrumentul OTA (exemplu de scripturi python)
Figura 5 prezintă etapele procesului de implementare și de actualizare. Un dezvoltator va trebui să efectueze mai întâi pașii de culoare roșie pentru a implementa soluția OTA pe modulul ESP32. Urmează pașii de culoare portocalie și aceștia sunt executați pentru a facilita o actualizare OTA.
Figura 5: Exemplele de actualizare OTA de la Espressif Systems, disponibile pe GitHub, le oferă dezvoltatorilor câteva exemple simple pentru a determina modulele ESP32 să efectueze actualizări OTA. (Sursă imagine: Espressif Systems)
Configurarea unei aplicații ESP32 pentru OTA
ESP32 conține o tabelă de partiții care descrie ce tip de date există pe microcontroler și unde se află acestea. De exemplu, o tabelă de partiții standard pentru ESP32 arată ca în Tabelul 1:
Tabelul 1: O tabelă de partiții standard ESP32 care arată tipul de date și locul în care sunt localizate pe microcontroler. (Sursă tabel: Beningo Embedded)
Există o aplicație din fabrică și apoi o secțiune pentru biblioteca NVS și datele de inițializare (init) a stratului fizic (PHY). Pentru a utiliza funcționalitatea OTA, această tabelă trebuie actualizată astfel încât să existe locații de memorie specificate pentru firmware-ul de actualizare OTA, în plus față de aplicația principală (din fabrică). În cazul OTA, există de obicei două partiții alocate pentru actualizări. Una pentru firmware-ul actualizat activ și una pentru firmware-ul care este în curs de descărcare și care va deveni cea mai recentă versiune. Acest lucru permite ca aplicația din fabrică să rămână intactă. O tabelă de partiții OTA actualizată ar arăta ca în Tabelul 2.
Tabelul 2: Tabela de partiții OTA actualizată pentru ESP32 tipic. (Sursă tabel: Beningo Embedded)
După cum s-a arătat, există acum o secțiune de aplicație ota_0 și o secțiune de aplicație ota_1, cu o dimensiune de 1 Mbyte, pe lângă o secțiune de date (otadata) care este alocată RAM pentru procesul de actualizare. Această tabelă poate fi modificată și actualizată de către dezvoltator pentru a se potrivi aplicației.
Pentru a rula exemplul OTA, există un set simplu de instrucțiuni care sunt listate pe GitHub în secțiunea „Modul de utilizare a exemplelor”. Aici se descrie cum se construiește și se programează aplicația.
De asemenea, există un otatool care poate fi utilizat pentru actualizarea firmware-ului. Acest script este utilizat de obicei pentru:
- Citirea, scrierea și ștergerea partițiilor OTA
- Comutarea partițiilor de boot
- Trecerea la partiția din fabrică
Scriptul dat ca exemplu poate fi executat prin simpla rulare a exemplului într-un terminal utilizând comanda:
./otatool_example.sh
Sau folosind Python:
python otatool_example.py
Când vine vorba de configurarea ESP32 pentru OTA, un pas esențial este să vă asigurați că partițiile sunt configurate.
Sfaturi și trucuri pentru utilizare
Soluția EPS32 OTA poate accelera și simplifica soluția de actualizare a firmware-ului unui dezvoltator. Pentru ca soluția să nu devină o povară pentru dezvoltare, există câteva „sfaturi și trucuri” de care trebuie să se țină cont:
- Dacă este posibil, utilizați un cadru OTA existent inclus în furnizorul de cloud al companiei. Acesta poate simplifica în mod dramatic dezvoltarea și integrarea.
- Utilizați o placă de dezvoltare ieftină pentru a testa capacitățile OTA și bootloaderele. ESP32 are mai multe opțiuni și este posibil să fie nevoie de câteva experimente pentru a determina care dintre acestea este cea mai bună pentru aplicația în cauză.
- Pentru soluții personalizate, folosiți exemplele ESP32 OTA de pe GitHub.
- Pentru aplicațiile în care produsul acționează ca router sau hub Wi-Fi, luați în considerare descărcarea imaginii firmware în memoria externă și efectuarea unei actualizări de pe un dispozitiv de stocare în masă.
- Alocați-vă un timp pentru a examina documentația ESP32 legată de tabelele de partiții. Aceasta diferă puțin de implementarea tipică a microcontrolerului.
- Din motive de securitate, este mai bine să dezactivați funcția de revenire a aplicației. Dacă aplicația poate reveni la versiunile anterioare, atacatorii potențiali ar putea introduce o versiune cu o exploatare cunoscută și compromite, astfel, sistemul.
Dezvoltatorii care urmează aceste „sfaturi și trucuri” vor descoperi că economisesc destul de mult timp și energie mentală atunci când încearcă să utilizeze ESP32 sau orice altă soluție OTA, după caz.
Concluzie
Actualizările OTA sunt o caracteristică esențială pentru un număr tot mai mare de sisteme IoT și integrate. Dezvoltatorii trebuie să știe cum să facă acest lucru în mod eficient, pentru a economisi timp în cadrul procesului de proiectare și dezvoltare, precum și după ce produsul a fost expediat.
Microcontrolerul wireless ESP32 a ajuns într-o gamă largă de dispozitive și, după cum s-a arătat, are o soluție OTA gata pregătită. Profitând de ESP-IDF și de modulele și platformele asociate și utilizând câteva sfaturi și trucuri bazate pe experiență, dezvoltatorii pot reduce dramatic timpul de proiectare și pot pune în funcțiune propria lor soluție OTA.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




