Flexibilitatea în actualizarea firmware-ului, o cheie către dispozitivele IoT

by donpedro

Figura 1: Organizarea memoriei (harta) pentru SST26VF064B – constă din opt blocuri de 8 KB, două blocuri de 32 KB și 126 de blocuri de 64 KB

Dispozitivele din Internetul Lucrurilor (IoT) sunt lansate pe piață într-un ritm rapid, de la aparatură electrocasnică la dispozitive medicale și mașini; producătorii trebuie să rămână înaintea competitorilor prin noi inovații și cu flexibilitatea de a adopta sau integra noi tehnologii. Proiectanții trebuie să implementeze flexibilitate în produsele lor pentru a răspunde evoluției ecosistemului IoT, prin noi funcționalități și regulamente adoptate. Actualizările de firmware nu numai că permit particularizarea pe durata implementării inițiale în locul solicitat de client, ci permit adăugarea după punerea produsului în funcțiune, în teren, de noi funcții/caracteristici sau rezolvarea oricăror probleme de firmware pe durata utilizării. Dispozitivele de memorie nevolatilă precum NOR Flash sunt uzual utilizate ca mediu de stocare a programului firmware, datorită posibilității sale de reprogramare și siguranței în funcționare. Prin rescrierea unei porțiuni a programului firmware a dispozitivului, rezident în memoria nevolatilă utilizată în dispozitiv, producătorii pot actualiza cu ușurință capabilitățile dispozitivului. Atunci când se dorește actualizarea de firmware există trei lucruri de luat în considerare: ce/cât program să fie actualizat, cât de des să se actualizeze și durata de timp necesară actualizării.

Ce/cât program firmware să fie actualizat

Figura 2: Organizarea memoriei în porțiuni neactualizabile (de exemplu program de boot) și porțiuni actualizabile (Exemple: program pentru funcții/caracteristici, fișiere imagine și variabile parametri)

Ce și cât program firmware să fie actualizat trebuie analizat în faza de proiectare inițială a dispozitivului IoT. Porțiunea actualizabilă a firmware-ului trebuie stocată într-o zonă separată a dispozitivului NOR Flash, față de porțiunea neactualizabilă. Actualizarea oricărei părți din memoria NOR Flash începe prin ștergerea acestei porțiuni și apoi programarea acestei porțiuni cu noua informație. NOR Flash este organizată în porțiuni numite sectoare și blocuri de diferite dimensiuni. Dispozitivele NOR Flash, precum tehnologia SuperFlash® de la SST, cod producător SST26VF064B (64 Mbit sau 64Mb), sunt organizate în sectoare uniforme de 4 KB, care pot fi individual șterse și reprogramate (4 KB = 4 * 1024 * 8biți = 32762 biți). Ele sunt, de asemenea, organizate în blocuri mai mari de 8 KB, 32 KB și 64 KB, care pot fi, de asemenea, șterse individual. Astfel, un bloc de 8 KB are două sectoare, un bloc de 32 KB are opt sectoare, iar un bloc de 64 KB are 16 sectoare. Figura 1 prezintă organizarea memoriei SST26VF064B în blocuri 8 KB / 32 KB /64 KB. Fiecare bloc poate fi, de asemenea, protejat individual. Înainte de a realiza orice actualizare pe orice porțiune a memoriei Flash, blocurile din această porțiune trebuie de-protejate pentru a permite ștergerea și programarea. După finalizarea actualizării, este prudentă protejarea din nou a acelor blocuri pentru a preveni orice scriere nepotrivită sau ștergerea acestor zone. Porțiunea actualizabilă a firmware-ului trebuie să fie organizată în sectoare și blocuri într-o asemenea manieră astfel încât să existe o flexibilitate suficientă pentru a permite actualizări limitate sau maxime de caracteristici și funcții. Deoarece viteza de realizare a actualizărilor este determinată de numărul de sectoare și blocuri care trebuie șterse și re-programate, este bine de gândit împreună la viteză și flexibilitate atunci când se organizează porțiunea actualizabilă a firmware-ului. Figura 2 prezintă un exemplu de organizare a memoriei în porțiuni actualizabile și neactualizabile. Porțiunile neactualizabile, precum programul de boot sunt stocate în regiuni protejate. Porțiunile actualizabile de firmware precum caracteristici/funcții sunt divizate în blocuri mai mici sau blocuri mai mari, bazate pe cerințe de flexibilitate. Fișierele imagine actualizabile sunt stocate în blocuri mai mari, iar variabilele/parametrii actualizabile sunt stocate în blocuri mai mici.

Cât de des să fie realizată actualizarea

Limitarea principală este dată de cât de des doriți să actualizați firmware-ul, la limita de rezistență a memoriei utilizate într-o aplicație. Memoria cu tehnologie SuperFlash precum SST26VF064B are 100,000 cicluri de rezistență, ceea ce înseamnă că fiecare sector poate fi programat și șters de 100,000 de ori. Posibilitatea de actualizare a firmware-ului de 100,000 de ori sună ca fiind o valoare mare; cu toate acestea, numeroase dispozitive IoT colectează date și stochează informații în NOR Flash pe durata utilizării, astfel încât acestea trebuie luate în considerare atunci când se calculează numărul maxim de cicluri limitative. Este importantă alocarea de suficiente sectoare în memorie pentru stabilirea rezistenței. Haideți să vă explic printr-un exemplu: să presupunem că dispozitivul IoT colectează și stochează 16 byte de informații, iar informația se așteaptă să fie colectată și stocată de 100 de milioane de ori pe durata de viață a produsului. Numărul de sectoare care poate fi alocat poate fi calculat după cum urmează:

Tabel 1: Secvența instrucțiunilor de comandă flash pentru actualizare 1 Mb/2 Mb/4 Mb de memorie

1 sector = 4 KB

Să presupunem că toate locațiile de adrese din sector sunt utilizate pentru a stoca informații, 16 byte de date la un moment dat și sunt scrise într-o nouă locație de adresă până la atingerea sfârșitului sectorului (de exemplu 0x0000-0x000F apoi 0x0010-0x001F apoi 0x0020-0x002F etc.)

Deoarece 4 KB/16 byte = 256, acesta este numărul de ori în care stocarea poate fi scrisă înainte de atingerea capacității în sector și ștergerea oricărei date din sector.

Limita de rezistență a unui sector = 100,000 cicluri.

Astfel, dacă un sector poate fi scris de 256 de ori pentru 100,000 de cicluri, datele pot fi colectate și stocate de 25,600,000 de ori.

Tabel 2: Timpi de programare și ștergere pentru SST26VF064B și memorie flash convențională

Dacă o aplicație necesită ca datele să fie colectate și stocate de 100 de milioane de ori, numărul de sectoare de alocat este calculat ca 100,000,000/25,600,000=3,9. De aceea, în acest exemplu, este necesară alocarea a 4 sectoare pentru a stoca 16 byte de date pentru durata de viată a aplicației.

Inginerii proiectanți ai dispozitivelor IoT trebuie să realizeze calcule similare pentru a aloca suficiente sectoare și blocuri pentru parametrii de conectare pentru a nu încălca limita de rezistență a dispozitivelor lor NOR Flash.

Viteza de actualizare

Tabel 3: Durată de timp necesară pentru actualizare 1 Mb/2 Mb/4 Mb de memorie în tehnologie SuperFlash

Viteza unei actualizări poate fi calculată pe baza unui număr de blocuri și sectoare care trebuie să fie șterse și reprogramate. Să presupunem că este necesară reprogramarea a 1 Mb, 2 Mb sau 4 Mb de program/date firmware care este stocat în câteva blocuri de 64 KB în SST26VF064B. Programul/datele pot consta din cod firmware, fișiere imagine sau alte programe care trebuie actualizate. Actualizarea implică realizarea unei secvențe de instrucțiuni de comandă în Flash. Secvența va începe prin de-protejarea blocurilor de memorie, ștergerea acestor blocuri, programarea acestor blocuri cu date/program actualizate și reprotejarea acestor blocuri de memorie. Pentru SST26VF064B, secvența necesară de instrucțiuni pentru actualizarea a 1 Mb / 2 Mb / 4 Mb de memorie este prezentată în Tabelul 1. Din Tabelul 1 este evident că cei doi timpi mai semnificativi sunt timpul de ștergere și timpul de programare. SST26VF064B utilizează tehnologia SuperFlash care oferă performanțe de ștergere excelente. În Tabelul 2 este prezentată o comparație a performanțelor de ștergere și programare pentru tehnologia SuperFlash față de memoria Flash convențională.

Tabel 4: Durată de timp necesară pentru actualizarea 1 Mb / 2 Mb / 4 Mb de memorie flash convențională

Performanțele de ștergere net superioare ale tehnologiei SuperFlash prin comparație cu memoria convențională Flash sunt foarte utile pentru reducerea timpului de actualizare. SST26VF064B suportă o frecvență maximă de ceas de 104 MHz, timp de ștergere maxim pentru sector de 25 ms, timp de ștergere maxim pentru bloc de 25 ms și timp de programare maximă pe pagină de 1.5 ms. Este, de asemenea, solicitată o întârziere de 12 ns (timp de nivel superior CE – chip enable (activare cip)) între fiecare instrucțiune de comandă către memoria Flash operând la o frecvență de ceas de 104 MHz. Utilizând secvența de comenzi prezentată în Tabelul 1 precum și cunoașterea programului și a timpilor de ștergere, calculul duratei de timp necesare pentru actualizarea a 1 Mb / 2 Mb / 4 Mb de memorie în tehnologie SuperFlash și a unei memorii Flash convenționale este prezentată în Tabelul 3 și Tabelul 4. Asemenea calcule trebuie făcute de inginerii proiectanți ai dispozitivelor IoT pentru a estima viteza de realizare a actualizărilor cu dorința de a minimiza timpii de oprire a dispozitivului IoT pe durata actualizărilor.

Concluzie

Inginerii proiectanți ai dispozitivelor IoT au nevoie de a oferi flexibilitate pentru a actualiza programele de date și aplicațiile. Ce și cât de mult program să fie actualizat, cât de des să fie realizată actualizarea, precum și viteza de actualizare sunt probleme care trebuie rezolvate atunci când se proiectează un dispozitiv IoT. Selectarea memoriei nevolatile are impact asupra acestor probleme și joacă un rol critic în calcularea timpului și vitezei de actualizare a programului.

Autor: Hardik Patel,
Sr. Inginer de Aplicații

Microchip Technology   |   https://www.microchip.com

Sigla-Microchip

S-ar putea să vă placă și