Prototyyppien kehitystyössä nopeus on valttia. Markkinoilla menestyvät sovellukset, joilla aikaan saadaan uusia ja virtaviivaistetaan jo olemassa olevia palveluita. Nykyisin käytössä oleviin sulautettuihin järjestelmiin saadaan lisää toimintoja hyödyntämällä data-analytiikan ja koneoppimisen kaltaisia tekniikoita reaaliaikaisen sensoridatan käsittelyn tehostamisessa. Myös käyttöliittymien kehittymisen tuomien etujen hyödyntäminen helpottaa automaattisten järjestelmien kasaamista ja ohjausta.
|
Edellä mainitun kaltaisten lisäominaisuuksien hyödyntäminen edellyttää useimmiten nopeiden prototypointitekniikoiden käyttöä. Suunnittelija saattaa haluta testailla erilaisia skenaarioita niin sovelluksen toteutettavuuden kuin markkinoiden vastaanottavuuden kannalta. Ensimmäisiä versioita saatetaan toimittaa asiakkaille arvioitavaksi, miten ne soveltuvat todellisiin käyttökohteisiin. Kun suunnittelutiimi ohjelmoi sovelluksen konseptit luotettaviksi ohjelmistoiksi, alkaa hahmottua, mitä toimintoja varsinaisessa tuotannossa tarvitaan. Joitakin osia tarvitaan ehkä lisää ja poistetaan tarpeettomaksi osoittautuneita osia.
Prototyypin teko ja suunnittelu voidaan aloittaa jo ennen kuin varsinainen fyysinen laitteisto on käytettävissä. Ohjelmiston kehitystä voidaan suorittaa isäntä- ja pilviympäristöissä, jolloin suunnittelijoilla on käytettävissään monet noita ympäristöjä tukevien simuloinnin, debuggauksen ja analyysin työkalujen tuomat edut. Sulautettujen sovellusten yhteydessä suunnittelutyön joustavuus saattaa kärsiä haluttaessa tehdä muutoksi laitteistoon ja kokeilla erilaisia ajoympäristöjä.
Sulautetut järjestelmät edellyttävät helppoa pääsyä I/O-toimintoihin ja niillä on usein laitteistoihin painottuvia reaaliaikavaatimuksia. Muutosten käsittely noiden laitteistoriippuvuuksien osalta koodin siirtyessä palvelimelta kohteeseen tai eri kohteiden välillä laitteistosuunnittelijan optimoidessa kokoonpanoa estää nopean prototyypityksen. Ohjelmiston suunnittelijat havahtuvat siihen, että aikaa kuluu liikaa I/O-salasanojen ja muiden odotuksia huonommin toimivien toimintojen uudelleen kirjoittamiseen, kun käytettävää alustaa muutetaan.
Laitteistoa koskevien standardien parantuminen on vähentänyt osaltaan käännökseen eli porttaukseen kuluvaa aikaa. Esimerkiksi SMARC-standardissa määritellään yhteensopivia nastalistoja ja yleisten oheislaitteiden I/O-mappausta. Tämä on myös synnyttänyt elinvoimaiset valmiiden prosessorikorttien ja I/O-liitäntämoduulien markkinat, mikä on merkittävästi vähentänyt tarvetta suunnitella asiakaskohtaisia laiteratkaisuja ennen prototyyppivaiheen aloittamista.
Periaatteessa SMARC jopa mahdollistaa kokeilut eri prosessoriarkkitehtuureilla siten, että I/O-kapasiteetti pysyy samana. Tämä edesauttaa valmistajia hyödyntämään nopeasti suorituskykyä ja tehokkuutta parantavia ominaisuuksia, joita on saatavissa uusimmissa Arm- ja X86-arkkitehtuureissa. Tämä pätee ainakin, mikäli ohjelmiston porttaaminen toisella alustalle on niin vaivatonta kuin mahdollista.
Sen lisäksi, että pilviympäristö tarjoaa pääsyn moniin kehittyneisiin ohjelmointityökaluihin, se on mahdollistanut monia tärkeitä innovaatioita liittyen ohjelmistojen käytettävyyteen ja mahdollisuuksiin merkittävästi helpottaa prosesseja siirryttäessä yhdestä laitteistoalustasta toiseen. Yksi tärkeimmistä innovaatioista on kontti eli ”säiliö”.
Kontti sisältää eräitä virtuaalikoneen tunnusmerkkejä siinä mielessä, että se eristää laitteiston käyttöjärjestelmästä ja projektin sovelluskoodista. Pilviympäristössä on tällöin mahdollista, että käyttöjärjestelmä ja sovelluksen tarvitsemat kirjastopalvelut ovat aina saatavilla riippumatta siitä, missä isäntäpalvelimessa ohjelmisto ajetaan. Kaikki I/O-kutsut erotetaan siten, ettei esimerkiksi verkkohakuja tarvitse muuttaa eri laitteistojen käyttöliittymissä toimimista varten. Suurin hyöty virtuaalikoneina toimivissa konteissa on, että kun sovellusta ajetaan kontissa, se toimii samalla nopeudella käyttäen saman määrän muistia kuin se käyttäisi, jos sitä ajettaisiin alkuperäisessä järjestelmässä. Tämä tehostaa ajonaikaista toimintaa.
Samaa isännän käyttöjärjestelmän kerneliä käyttämällä ajetaan useita kontteja kohteessa. Ne ovat kuitenkin toiminnallisesti erotettuja toisistaan eivätkä häiritse siten toisiaan.
Konttitekniikka alleviivaa Trian SMARC-moduulisarjan SimpleSwitch-tukiympäristöä. SimpleSwitch kehitettiin luomaan sulautettua ohjelmistoa yhtä suoraviivaisesti ja nopeasti kuin älypuhelinsovelluksia kehitettäessä. Koska se tuottaa standardoidusti kaikki laitteistoliitännät ohjelmistolla, jota ajetaan SimpleSwitch-ajoympäristössä, ohjelmistokutsu pääsyyn I2C-väylään tai GPIO-porttiin on sama i.MX8M Mini -moduuliin, i.MX8M Plus -moduuliin tai jopa Intel x86 -prosessorin isäntäkortille.
Toimitusvalmis ohjelmisto on jaettu kolme osaan: ohjelmiston kehitysalusta, peruskäyttöjärjestelmän kuvatiedostot ja paljon käyttökelpoisia toimintoja käsittävien konttien rekisteri. SDK-kehitysalusta tukee kolmea kohdearkkitehtuuria, jotka ovat NXP:n Arm-pohjaiset i.MX8-sarjan prosessorit, Intelin x86 ja QEMU.
QEMU on tärkeä lisäys. Se on virtuaalikone, joka replikoi SMARC-kohdemoduulien laitteistorajapinnat siten, että kyseisille moduuleille suunniteltua koodia voidaan ajaa isäntätyöasemalla tai pilvialustalla. Tämä tarjoaa helpon ja edullisen menetelmän suurten suunnittelutiimien yhteistoiminnalle samassa projektissa. Tiimissä työskentelevien suunnittelijoiden ei tarvitse odottaa pääsyä laitteistomoduuliin silloinkaan, kun sitä käytetään testauksessa tai asiakasevaluoinnissa. Suunnittelijat voivat kirjoittaa ja testata koodia isäntäkoneella ja olettaa sen toimivan samalla tavoin kuin fyysisessä kohdelaitteessa.
Kukin SimpleSwitch-kuva muodostaa kontteja isännöivän käyttöjärjestelmän perustan. Kuva riittää käynnistämään kortin ja asettamaan siihen liitetyn näytön sekä mahdollistaa sen, että suunnittelija käyttää SSH-istuntoja päästäkseen käsiksi sisäisiin toimintoihin verkkoyhteyden avulla.
Peruskuvatiedosto pitää sisällään Yocton toteuttaman standardin Linux-tiedostojärjestelmän, jossa on kaksi ohjelmistopinoa. Toinen pino on laitteiston abstraktiokerroksen muodostava SimpleCoreIO, joka tarjoa yksittäisen ja yhdenmukaisen tavan päästä minkä tahansa SMARC-moduulin I/O:hon. Toinen pino on kontin hallinnoija, jolla voidaan organisoida molempia käyttäjän kontteja. Se tarjoaa joukon valmiiksi paketoituja malleja, jotka tukevat Python-, Flutter- ja Qt-ajoympäristöjä. Käyttäessään näitä esipaketoituja kontteja ohjelmiston suunnittelijat voivat hyödyntää mainittujen ympäristöjen tarjoamia nopean suunnittelun työkaluja.
Konttirekisteri mahdollistaa suunnittelijoiden pääsyn laajaan valikoimaan esipaketoituja ohjelmistopinoja, jotka tarjoavat lisäpalveluita auttamaan edistyneiden järjestelmien tekemistä esineiden internetiin (IoT). Rekisterissä on Chromium-, COG-, Mosquito- ja MQTT-moduuleja. Säiliörekisterissä on myös IoT Connect -moduuli IoT-sovellusten datanhallintaa ja datanpoimintaa varten. Muutaman stepin avulla suunnittelija saa välitettyä laitteelta etänä kerättyä dataa pilvipalveluihin yhdistämällä sen rekisteristä saatuun konttiin ja asettamalla pääsyvaltuutukset kohteeseen.
Kun laitteistomääritykset muuttuvat ja moduulien ohjelmistokutsuja vaihdellaan, niin kontin, SDK:n tukiominaisuuksien ja rekisterin muodostaman yhdistelmän ansiosta tarvittavat muutokset voidaan tehdä nopeasti ja mahdollisimman vähin häiriöin.
Kun projekti alkaa valmistua, suunnittelija alkaa miettiä todellisen ajoympäristön vaikutusta suunnitteluun. SimpleSwitch-arkkitehtuuri on optimoitu prototyyppien tekoon ja varustettu ominaisuuksilla, joilla laitteistomuutokset on helppo toteuttaa. Täydennettävissä oleva Embedded Kit käsittää tuotantoon sopivilla ominaisuuksilla varustettuja ohjelmistoja, joista on hyötyä kentällä olevissa järjestelmissä. Tällaisia ominaisuuksia ovat esimerkiksi laajennettu turvallisuuden tuki ja sellaiset ominaisuudet kuten turvattu käynnistys ja pitkäaikainen ylläpito mukaan lukien etäpäivitysten (OTA) tuki.
Yhteenvetona voidaan todeta, että nopea prototyypitys on ratkaiseva osa sulautettujen ja IoT-järjestelmien suunnittelussa. Valitsemalla sellainen ohjelmistoympäristö, joka mahdollistaa nopeat sekä laitteistolle että ohjelmistolle tehtävät muutokset ja joka hyödyntää SMARC:n kaltaisen monipuolisen alustan tarjoamia ominaisuuksia, suunnittelutiimit voivat olla varmoja, että liitettävyyteen liittyvät asiat eivät aiheuta ongelmia. Sen sijaan he voivat keskittyä sovelluksen arvoa lisäävien asioiden suunnittelemiseen.