Innvevde systemer:
Utnytt plattformfleksibilitet for rask utvikling
Omfattende funksjonalitet, nye teknologier som dataanalyser og maskinlæring, håndtering av sensordata i sanntid: Innvevde systemer krever nye og raske prototypingsteknikker.
Hurtighet er avgjørende i prototyping. Nøkkelen til markedssuksess er å implementere applikasjoner som muliggjør nye tjenester og effektiviserer de som allerede finnes. Dagens innvevde systemer blir mye mer omfattende i funksjonaliteten de leverer, og utnytter teknologier som dataanalyse og maskinlæring for å bedre håndtere sensordata i sanntid. De utnytter også forbedringer i brukergrensesnitteknologi for å gjøre automatiserte systemer enklere å sette opp og styre.
Prototyping
Å utnytte disse ekstra funksjonene innebærer ofte bruk av raske prototypingsteknikker. Utviklere ønsker å teste ut forskjellige applikasjonsscenarier for både å bestemme gjennomførbarhet og markedsaksept. Tidlige versjoner kan sendes til kunder for å vurdere hvor godt ideen vil fungere i felten. Etter hvert som teamet forbedrer applikasjonskonseptene til pålitelig programvare, vil det bli tydeligere hvilke funksjoner produksjonen vil trenge. Noen elementer må legges til, og andre som anses som unødvendige, må fjernes.
Tjuvstart i skyen?
Prototyping og utvikling trenger ikke å foregå på fysiske maskinvaremål, noe som gjør at arbeidet kan starte allerede før maskinvare er tilgjengelig. Mye av programvaren kan utvikles på verts- og skymiljøer der ingeniører kan dra nytte av de mange simulerings-, feilsøkings- og analyseverktøyene som støttes av disse miljøene. Hindringen for feksibiliteten som utviklere ønsker ved å bytte maskinvare og bevege seg mellom forskjellige kjøretidsmiljøer, ligger i vanskelighetene som innvevde applikasjoner står overfor.
Sanntidskrav
Innvevde systemer krever lavnivå tilgang til I/O-funksjoner og har ofte sanntidskrav som legger langt mer vekt på maskinvareavhengigheter. Å håndtere endringer i disse maskinvareavhengighetene når kode flyttes fra server til mål eller på tvers av forskjellige mål når maskinvareteamet optimaliserer konfigurasjonen, står i veien for rask prototyping. Programvareingeniører synes de bruker for mye tid på å omskrive I/O-tilgangskode og andre funksjoner som ikke fungerer som forventet når den underliggende plattformen endres.
Maskinvarestandarder
Forbedringer av maskinvarestandarder har redusert noe av porteringskostnadene. Standarder som SMARC gir et konsistent pinneutlegg og I/O-kart for vanlige periferienheter. De har også skapt et levende marked for ferdige prosessorkort og I/O-utvidelsesmoduler, som har drastisk redusert behovet for å designe tilpasset maskinvare før prototypefasen kan begynne.
Bytte mellom arkitekturer
I prinsippet gjør SMARC det til og med enklere å bytte mellom prosessorarkitekturer og bevare den samme I/O-kapasiteten. Dette lar produsenter lettere dra nytte av ytelses- og energieffektivitetsinnovasjoner som er muliggjort av de nyeste Arm- og X86-arkitekturene. Det vil si, så lenge oppgaven med å portere programvare fra den ene til den andre er så sømløs som mulig.
Containeren
I tillegg til å gi tilgang til mange avanserte programvareverktøy, har skymiljøet ført til viktige innovasjoner innen programvareportabilitet og brukervennlighet som kan gjøre det mye enklere å gå fra én maskinvareplattform til en annen. En av de viktigste innovasjonene er «containeren».
Abstrahering
En container har noen av egenskapene til en virtuell maskin, ved at den isolerer maskinvaren fra operativsystemet og applikasjonskoden for et prosjekt. I skymiljøet sikrer dette bildet at operativsystem- og bibliotektjenestene applikasjonen trenger alltid er tilgjengelige uansett hvilken serververt som brukes til å kjøre programvaren. Alle I/O-kall abstraheres, slik at tilgang til for eksempel et nettverk ikke trenger å endres for å fungere med forskjellige maskinvaregrensesnitt. En stor fordel med containere fremfor virtuelle maskiner er at det å kjøre et program i en container vil kjøre med samme hastighet og bruke samme mengde minne som det ville gjort hvis det kjørte utenfor en container (lokalt på systemet), og dermed forbedre kjøretidseffektiviteten. Flere containere som kjører på ett mål deler vertsoperativsystemets kjerne. Men de er fortsatt funksjonelt isolert fra hverandre for å forhindre gjensidig interferens.
Anvendelig rammeverk
Containerteknologi ligger til grunn for Simple-Switch-rammeverket for Trias familie av SMARCmoduler. SimpleSwitch ble utviklet for å gjøre det like enkelt og raskt å lage innvevd programvare som å utvikle en smarttelefonapp. Fordi den bruker en standard måte å eksponere alle maskinvaregrensesnitt for programvaren som kjører i SimpleSwitch-kjøretidsmiljøet, vil programvarekallet for å få tilgang til en I2C-buss eller en GPIO-port være det samme for en i.MX8M Mini-modul, en i.MX8M Plus eller til og med et kort som huser en Intel x86-prosessor.
Programvaredelene
Som leveranser er programvaren delt inn i tre deler: programvareutviklingssettet (SDK), grunnleggende operativsystembilder og et register over containere som inneholder mange nyttige funksjoner. SDKen støtter tre målarkitekturer: den Arm-baserte i.MX8-familien av prosessorer fra NXP, Intel x86 og QEMU.
QEMU
QEMU er en viktig inkludering. Det er en virtuell maskin som replikerer maskinvaregrensesnittene til de aktuelle SMARC-modulene, slik at kode designet for disse modulene kan kjøres på en vertsarbeidsstasjon eller en skyplattform. Dette gir en praktisk og kostnadseffektiv metode for å engasjere store team av ingeniører i samme prosjekt. Disse utviklerne trenger ikke å vente på tilgang til en maskinvaremodul som kan være nødvendig for testing eller kundeevaluering. De kan skrive og teste kode på verten og forvente at den fungerer på samme måte på det fysiske målet.
SimpleSwitch-bilde
Hvert SimpleSwitch-image, eller bilde, ivaretar et basisoperativsystem som kan være vert for containerne. Bildet er tilstrekkelig til å starte opp kortet og sette opp en tilkoblet skjerm, samt la utvikleren bruke SSH-økter for å få tilgang til interne funksjoner over en nettverkstilkobling.
Forhåndspakkede stakker
Innenfor basisbildet er et standard Linux-filsystem bygget med Yocto, ledsaget av to programvarestakker. Den første stakken er SimpleCoreIO, et maskinvareabstraksjonslag som gir en enkelt, konsistent måte å få tilgang til hvilken som helst av SMARC-modulens I/O. Den andre stakken er containerbehandleren, som gir en måte å organisere begge brukercontainerne på. Den tilbyr en samling forhåndspakkede maler som støtter Python-, Flutter- og Qt-kjøretidsmiljøene. Ved å bruke disse forhåndspakkede containerne kan programvareingeniører dra nytte av den raske utviklingsstøtten disse miljøene tilbyr.
Mange moduler
Containerregisteret gir utviklere tilgang til et stort utvalg av forhåndspakkede programvarestakker som leverer tilleggstjenester som forenkler oppgaven med å lage avanserte systemer for tingenes internett (IoT). Registeret inkluderer moduler for Chromium, COG, Mosquito og MQTT. En ytterligere modul i containerregisteret er IoT Connect, som muliggjør datahåndtering og datainntak for IoT-applikasjoner. I løpet av noen få trinn kan en utvikler få en enhet til å samle inn og videresende telemetridata til skyen ved å integrere containeren fra registeret og sette opp tilgangslegitimasjon på målet.
Raske endringer
Etter hvert som maskinvarevalg endres og programvare krever at moduler byttes inn og ut, gjør kombinasjonen av containerteknologi og støttefunksjonene til SDKen og registeret at disse endringene kan skje raskt og med minimalt styr.
Produksjonsklare funksjoner
Etter hvert som prosjektet nærmer seg ferdigstillelse, kan utviklere vurdere det industrielle kjøretidsmiljøet som vil være nødvendig. Arkitekturen til SimpleSwitch er optimalisert for prototyping, med funksjoner som er utviklet for å muliggjøre enkle maskinvareendringer. Det komplementære Embedded Kit leverer produksjonsklare funksjoner sammen med verktøy som er verdifulle for systemer i felten. Disse inkluderer støtte for forbedret sikkerhet gjennom funksjoner som sikker oppstart og langsiktige vedlikeholdsmuligheter med støtte for OTA-oppdateringer (over-the-air).
Velg riktig
Kort sagt, rask prototyping er nå en avgjørende del av utvikling av innvevde systemer og IoT-systemer. Ved å velge et programvaremiljø som tillater raske modifikasjoner av både maskinvare og programvare, og som utnytter mulighetene til en rik plattform som SMARC, kan prosjektteam sørge for at de ikke trenger å slite med porteringsproblemer. De kan i stedet fokusere på å levere applikasjonsverdi.