Teollisen internetin (IoT, Internet of Things) laitteita kodinkoneista lääkintälaitteisiin ja autoihin on tulossa markkinoille kaiken aikaa. Pysyäkseen mukana uusia innovaatioita esittelevien kilpailijoiden vauhdissa alan valmistajien on kyettävä joustavasti soveltamaan ja integroimaan uusia teknologioita.
Artikkelin on kirjoittanut Microchipin vanhempi sovellusinsinööri Hardik Patel. |
IoT-laitteiden suunnittelijoiden kannattaa lisätä tuotteisiinsa joustavia rakenteita, joilla voidaan toteuttaa uusia toimintoja ja vaatimuksia, joita kehittyvät teollisen internetin ekosysteemit edellyttävät. Laiteohjelmistojen päivitykset mahdollistavat asiakkaalle alkuperäisen kehitysprosessin aikana tehtyjen asennusten räätälöinnin lisäksi uusien toimintojen ja ominaisuuksien lisäämisen jo olemassa oleviin kenttälaitteisiin tai minkä tahansa laiteohjelmiston osan asentamisen käytön aikana.
Uudelleen ohjelmoitavuutensa ja luotettavuutensa ansiosta haihtumattomia muisteja, kuten NOR-Flash-piirejä, käytetään yleisesti laiteohjelmistojen koodin tallentamiseen. Kirjoittamalla uudelleen osan laitteen haihtumattomassa muistissa olevasta laiteohjelmiston koodista laitevalmistajat pystyvät helposti päivittämällä parantamaan laitteidensa toimintoja ja ominaisuuksia. Laiteohjelmiston päivityksessä on kiinnitettävä huomiota kolmeen asiaan: mitä koodia ja kuinka paljon päivitetään, kuinka usein päivitys tehdään ja kuinka kauan päivityksen tekoon kuluu aikaa.
Mitä laiteohjelmiston osaa päivitetään ja kuinka paljon?
Teolliseen internetiin liitettävän IoT-laitteen alkuperäisen suunnittelun yhteydessä on jo syytä tarkastella, mitä laiteohjelmiston koodia tullaan päivittämään ja kuinka paljon. Laiteohjelmiston päivitettävissä oleva osa tallennetaan eri paikkaan NOR-Flash-piirille kuin ei-päivitettävissä oleva osa. Kun aloitetaan minkä tahansa NOR-Flash-piirin muistialueen päivittäminen, ensin kyseinen muistialue tyhjennetään ja sitten siihen ohjelmoidaan uusi data. NOR-Flash on järjestetty osiin, joita nimitetään sektoreiksi ja eri kokoisiksi lohkoiksi.
NOR-Flash-piirit, kuten SST:n SuperFlash-piiri STT26VF064B (64Mb), koostuvat samanlaisista 4 kilotavun sektoreista, joista tieto voidaan yksittäin poistaa ja uudelleen ohjelmoida (4 kt = 4 * 1024 * 8 b = 32762 b). Lisäksi piiri koostuu suuremmista 8, 32 ja 64 kilotavun lohkoista, jotka ovat myös yksittäin tyhjennettävissä. Yhdessä 8 kilotavun lohkossa on siis kaksi sektoria, yhdessä 32 kilotavun lohkossa 8 sektoria ja yhdessä 64 kilotavun lohkossa 16 sektoria. Kuvassa 1 esitetään SST26VF064B:n muistin rakenne 8-, 32- ja 64-kilotavuisina lohkoina.
Flash-piirin kukin lohko voidaan suojata yksittäisesti. Ennen kuin mitään Flashin osaa voidaan päivittää, on varmistettava, että kyseisen Flashin osan lohkot ovat suojaamattomassa tilassa, jolloin niiden tyhjentäminen ja ohjelmoiminen on mahdollista. Kun päivitys on saatu valmiiksi, on hyvä taas suojata ohjelmoidut lohkot, jotta kyseisten alueiden tahaton kirjoittaminen tai pyyhkiminen estetään.
Laiteohjelmiston päivitettävissä oleva osa on järjestettävä siten, että sen sektorit ja lohkot ovat tarpeeksi joustavia sekä suppeampien että laajempien ominaisuuksien ja toimintojen päivitysten toteuttamiseksi. Koska päivityksen nopeus riippuu pyyhittävien ja uudelleen ohjelmoitavien sektorien ja lohkojen määristä, on hyvä ottaa huomioon nopeuden ja joustavuuden yhteisvaikutus, kun laiteohjelmiston päivitettävissä olevaa osaa organisoidaan. Kuva 2 esittää esimerkin muistin organisoimisesta päivitettävissä ja ei-päivitettävissä oleviin osiin. Ei-päivitettävissä olevat osat, kuten käynnistyskoodi, tallennetaan suojatuille muistialueille. Laiteohjelmiston päivitettävät osat, kuten ominaisuus- ja toimintokoodit, jaetaan pienempiin ja suurempiin lohkoihin joustavuuden sanelemien vaatimusten mukaisesti. Päivitettävät kuvatiedostokoodit tallennetaan suurempiin ja päivitettävät muuttuja- ja parametrikoodit pienempiin lohkoihin.
Kuva 1: SST26VFO64B-piirin muisti koostuu kahdeksasta 8 kilotavun lohkosta, kahdesta 32 kilotavun lohkosta ja 126:sta 64 kilotavun lohkosta.
Kuva 2: Muistin jakaminen ei-päivitettäviin osiin (esim. käynnistyskoodi) ja päivitettäviin osiin (esim. ominaisuudet/toiminnot, kuvatiedostot ja parametrit/muuttujat).
Kuinka usein päivitetään?
Kuinka usein laiteohjelmisto halutaan päivittää, riippuu paljolti siitä, kuinka monta muutoskertaa sovelluksessa käytettävän muistin sisältö on tarkoitettu kestämään. SuperFlash-muisti, kuten SST26VFO64B, kestää 100 000 muutosjaksoa, mikä tarkoittaa, että kukin sektori voidaan ohjelmoida ja tyhjentää 100 000 kertaa. Voi kuulostaa paljolta, että laiteohjelmisto on mahdollista päivittää 100 000 kertaa. Monet teollisen internetin IoT-laitteet kuitenkin keräävät dataa ja tallentavat tietoa NOR-Flashiin käytön aikana, mikä on otettava huomioon, kun lasketaan suurimpien muutosjaksojen tarvetta.
On tärkeää varata riittävästi sektoreita muistista, jotta pystytään vastaamaan muutosjaksojen tarpeeseen. Otetaan esimerkki: Oletetaan, että IoT-laite kerää ja tallentaa 16 tavua tietoa ja että tietoa odotetaan kerättävän ja tallennettavan sata miljoonaa kertaa laitteen elinkaaren aikana. Tarvittavien sektorien määrä voidaan laskea seuraavasti:
1 sektori = 4 kilotavua
Oletetaan, että kaikki osoitepaikat sektorissa käytetään tiedon tallentamiseen 16 tavun erissä kerrallaan ja kirjoitetaan uuteen osoitepaikkaan, kunnes sektori täyttyy (esimerkiksi 0x0000-0x000F, sitten 0x0010-0x001F, sitten 0x0020-0x002F, jne.)
Jakamalla 4 kt/16 t = 256 saatu luku kertoo, kuinka monta kertaa tallennus voidaan tehdä ennen kuin sektori täyttyy ilman, että sektorista pyyhitään mitään dataa pois.
Muutosjaksojen määrä yhdessä sektorissa on 100 000.
Jos siis yhteen sektoriin voidaan tallentaa 256 kertaa 100 000 jakson aikana, tietoa voidaan kerätä ja tallentaa 25 600 000 kertaa.
Jos sovelluksen tarvitsema datamäärä edellyttää tietoa kerättävän ja tallennettavan 100 miljoonaa kertaa, tarvittavien sektorien määräksi voidaan laskea 100 000 000/25 600 000 = 3,9. Näin ollen, tässä esimerkissä pitää varata 4 sektoria tallentamaan 16 tavua dataa sovelluksen elinkaaren ajaksi.
IoT-laitteiden suunnittelijoiden on syytä tehdä vastaavanlaisia laskelmia, jotta saadaan varattua riittävästi sektoreita ja lohkoja tiedonkeruuparametreja varten niin, ettei NOR-Flash-piirin muutosjaksojen määrän kestävyysrajat pääse ylittymään.
Kuinka nopeasti päivitys tehdään?
Päivitysnopeuden laskeminen riippuu tietojen pyyhkimisessä ja uudelleen ohjelmoinnissa tarvittavien lohkojen ja sektorien lukumäärästä. Oletetaan, että on tarpeen uudelleen ohjelmoida 1 Mb, 2 Mb tai 4 Mb laiteohjelmiston koodia tai dataa, jotka on tallennettu useisiin 64 kilotavun lohkoihin SST26VFO64B-piirillä. Koodi tai data voi käsittää laiteohjelmistokoodia, kuvatiedostoja tai muuta päivittämisessä tarvittavaa koodia. Päivityksen tekeminen pitää sisällään käskytoimintojen sekvenssin suorittamisen Flash-muistissa. Sekvenssi käynnistää muistilohkojen suojauksen purkamisen, kyseisten muistilohkojen tyhjentämisen, kyseisten lohkojen ohjelmoimisen päivitetyllä koodilla/datalla ja mainittujen muistilohkojen suojaamisen uudelleen.
Taulukossa 1 on esitetty SST26VFO64B-piirin tarvitsema käskytoimintojen sekvenssi päivitettäessä 1 Mb:n, 2 Mb:n ja 4 Mb:n muistia. Kuten taulukosta ilmenee, kaksi merkittävintä aikajaksoa ovat pyyhkäisyaika ja ohjelmointiaika. SST26VFO64B-piirin käyttämässä SuperFlash-teknologiassa pyyhkäisyominaisuudet ovat erinomaiset. Taulukossa 2 verrataan SuperFlash-teknologian ja tavanomaisen Flash-teknologian pyyhkäisy- ja ohjelmointisuorituskykyä. SuperFlash-teknologian tarjoama parempi pyyhkäisysuorituskyky tavanomaiseen Flashiin verrattuna tekee siitä käyttökelpoisen, kun halutaan lyhentää päivitykseen kuluvaa aikaa. SST26VFO64B-piirin tukema kellotaajuus on enimmillään 104 MHz, sektorin pyyhkäisyaika enimmillään 25 ms, lohkon pyyhkäisyaika enimmillään 25 ms ja muistisivun ohjelmointiaika enimmillään 1,5 ms. Lisäksi 104 MHz:n kellotaajuudella toimiva Flash-muisti vaatii 12 ns:n viiveen (CE high time) jokaisen käskytoiminnon välillä.
Soveltamalla taulukon 1 käskytoimintojen sekvenssiä tunnettuihin ohjelmointi- ja pyyhkäisyaikoihin, päivityksen vaatimat ajat 1 Mb:n, 2 Mb:n ja 4 Mb:n SuperFlash-muisteille on esitetty taulukossa 3 ja tavanomaiselle Flash-muistille taulukossa 4. Teollisen internetin IoT-laitteiden suunnittelijoiden tulee tehdä vastaavat laskelmat määrittääkseen, kuinka nopeasti päivitys saadaan tehtyä, jotta minimoidaan IoT-laitteen seisokkiaika sitä päivitettäessä.
Taulukko 1: Flashin komentotoimintojen sekvenssi, jolla 1 Mb:n, 2 Mb:n ja 4 Mb:n muisti päivitetään.
Taulukko 2: SST26VFO64B-piirin ja tavanomaisen Flash-piirin vaatimat ohjelmointi- ja pyyhkäisyajat.
Taulukko 3: SuperFlash-teknologialla toteutettujen 1 Mb:n, 2 Mb:n ja 4 Mb:n muistien päivitykseen kuluva aika.
Taulukko 4: Tavanomaisella Flash-teknologialla toteutettujen 1 Mb:n, 2 Mb:n ja 4 Mb:n muistien päivitykseen kuluva aika.
Lopuksi
Suunnittelijan kannattaa panostaa joustavuuden lisäämiseen pohtiessaan IoT-laitteen sovelluskoodin ja -datan päivitysominaisuuksia. Mitä koodia ja kuinka paljon on tarkoitus päivittää, kuinka usein päivityksiä tarvitaan ja kuinka nopeasti päivitysten pitää tapahtua, ovat haasteita, jotka IoT-laitetta suunnittelevan on otettava huomioon. Haihtumaton muisti on hyvä valinta silloin, kun halutaan ratkaista mainitut haasteet ja saada tarkasti määriteltyä koodipäivitysten aika- ja nopeuskysymykset.