Linux dominoi sulautetuissa järjestelmissä, mutta työpöytien tapaan eri alustat uhkaavat fragmentoitua. Onneksi avuksi on kehitetty Yocto-arkkitehtuuri, jonka avulla sovellukset siirtyvät raudalta toiselle minimaalisin muutoksin
Artikkelin on kirjoittanut SILICAN ohjelmistosuunnittelija Chris Young. |
Kun sulautettujen järjestelmien monimutkaisuus on lisääntynyt, projektin kehityksen nopeutta määrittelevä keskeinen tekijä on vaihtunut. Edullisten, täysin varusteltujen kehityskorttien, kokonaisten ohjelmistoekosysteemien ja laadukkaan teknisen tuen merkitys on kasvanut olennaisesti. Kymmenen vuotta sitten laitevalmistajat pystyivät toimittamaan asiakkaille yksinkertaisia kehityspaketteja mikro-ohjaimilla ja sulautetuille prosessoreille hyvin vähäisellä ohjelmistotuella. Yleensä asiakkaan sovellus oli sellainen, että kaikki ohjelmistot voitiin kehittää talon sisällä.
Nyt modernien sovellusten tietoliikenne-, käyttöliittymä- ja etähallintavaatimukset tekevät sulautetun järjestelmän kehittämisen vain omilla ohjelmistoilla erittäin vaikeaksi. Paljon koodia pitää integroida muista lähteistä. Tämä tarkoittaa lisätyötä, sillä kehittäjien täytyy oppia miten eri ohjelmistokomponentit sopivat yhteen ja näitä elementtejä joudutaan mahdollisesti tämän takia mahdollisesti muuttamaan. Tämän takia on noussut kysyntä alustoille, jotka tuovat riittävän infrastruktuurin käyttöön valmiiksi käytettävässä muodossa.
Avoimen koodin teknologia on yksi ratkaisu tähän ongelmaan. Se tuo kehittäjille paljon mahdollisuuksia sulautetuissa järjestelmissä, mutta pääsee todella omimmilleen kun se yhdistetään strategiaan, jossa halutaan tiukasti integroida ohjelmisto laajaan valikoimaan erilaisia laitteistovaihtoehtoja. Avain tähän integraatioon on linux-käyttöjärjestelmä ympärille kehittyneet avoimen lähdekoodin alustat.
Linux on erittäin pitkälle skaalautuva, sen ohjelmistoinfrastruktuuri kasvaa nopeasti, joten OEM-yritykset voivat kehittää, virittää ja debugata suunnitteluja nopeasti ja saada ne nopeasti markkinoille. Tarjolla on avoimen koodin työkaluja, joilla voidaa ylläpitää koodia ja huolehtia versionhallinnasta, sekä graafisia kehitysympäristöjä sulautetuille järjestelmille, jotka nyt vaativat edistyneitä esimerkiksi kapasitiivisia kosketusnäyttöjä hyödyntäviä käyttöliittymiä.
Linux-ympäristö on kuitenkin monimutkainen. Tarjolla on iso valikoima jakeluversioita, jotka eivät ole täysin yhteensopivia keskenään, vaikka niissä onkin samanlaisia toimintoja ja ominaisuuksia. Tämä vaikeuttaa alustasta toiselle siirtämistä niin, että erillisten tuotteiden hyödyllisiä ominaisuuksia voitaisiin hyödyntää. Sulautetun järjestelmän suunnittelijalla on myös haaste yrittää kehittää alunperin työpöydälle tai palvelimelle suunniteltua ympäristöön, joka on rajoitetumpi. Jakeluversion virittäminen esimerkiksi toimimaan ilman näyttöä tai sopimaan pieneen flash-muistiin voi olla iso ja haasteellinen tehtävä.
Yocto-projekti perustettiin sulautettujen laitteisto- ja ohjelmistoyritysten toimesta vuonna 2010 vastauksena linuxin kasvavaan fragmentoitumiseen sulautetuissa sovelluksissa. Sen sijaan, että kehitettäisiin yksi monoliittinen versio, jotka olisi vaikea virittää erilaisiin sulautetuissa sovelluksissa suosittuihin alustavaatimuksiin, Yocto tukee räätälöintiä modulaarisen, kerrostetun (layered) arkkitehtuurin kautta, joka on suunniteltu minimoimaan eri konfiguraatioiden väliset epäyhteensopivuudet.
Kuva 1. Yocton modulaarinen arkkitehtuuri tarjoaa kehitysvuon.
Yocton konfiguroitavuus perustuu BitBake-työkaluun. Se on projektityökalu, joka käyttää metadatatiedostoja paitsi kernelin, myös järjestelmän ja sen siihen liittyvien sovellusten sovellusohjelmistojen konfigurointiin lopulliseksi järjestelmäkuvaksi. BitBake hallinnoin kaikkia kehitysaskeli (build), jotka perustuvat kehittäjän määrittelemiin erilaisten konfigurointivaihtoehtojen ja riippuvuuksien määrittelyihin. Metadatan huolellisen hallinan avulla ja kerrosarkkitehtuurin hyödyntämisen kautta on mahdollista siirtää suunnittelu laitealustalta toisella lähes yksinkertaisen kääntämisen avulla. Erilaiset laiteriippuvaiset muutokset, kuten siirtyminen verkkosovittimesta toiseen tai eri prosessorivaihtoehtoon, tehdään kääntimen toimesta ja työkaluilla, jotka viittaavat relevantteihin laiterippuvaisiin metakerroksiin.
Muilla alustoilla kehittäjien täytyi usein tehdä sulautettujen tuotteiden suurimittaisia uudelleenkoodaamisia, kun niitä siirrettiin prosessorilta ja laitealustalta toiselle. Yocto-pohjaisessa kehityksessä siirtymä voi onnistua yhdellä ainoalla build-versioon lisätyllä koodirivillä, joka määrittelee oikean BSP-ohjelmistopaketin (board support package).
Ja käyttämällä Qt:n kaltaisia sovelluskehyksiä on mahdollista vielä laajentaa tätä siirrettävyyttä. Esimerkiksi merkittävät osa sovelluskehityksestä voidaan tehdä pöytäkoneella ja siirtää suoraan Qt:tä ajavaan sulautettuun järjestelmään minimaalisin koodimuutoksin. Tämän ansiosta käyttöliittymää voidaan prototypoida laajalti ennen kuin lopullinen laitteisto on valmis.
Yocto-pohjaisen helppoa siirrettävyyttä ja integraatiota tukevan järjestelmän pystyttäminen on kuitenkin kaikkea muuta kuin helppoa. BitBakessa on valtavasti mahdollisuuksia ja alustamääritelmiä luoville Yocto merkitsee jyrkkää oppimiskäyrää. Vaikka hyvin määritelty BSP-pakettien ja metadatan yhdistelmä voi minimoida työn, joka vaaditaan suunnittelun siirtämiseen laitealustalta toiselle, jopa perusoptioista hyvin perillä oleville kehittäjille on vaikeaa ja aikaavievää kehittää arkkitehtuuri, joka vastaa tähän lupaukseen. Yocto-ympäristö vaatii myös linux-isännän kehitykseen ja ristiinkääntämiseen, jota ei välttämättä ole tarjolla niille, jotka työskentelevät Windows-ympäristössä.
Kuva 2. Silican ArchiTech Louvre -kortti.
Yksi ratkaisu, jonka SILICA on valinnut osana ArchiTect-strategiaansa, on käyttää virtuaalikonepohjaista VirtualBox-tekniikkaa perustuvaa ratkaisua, jossa on ennalta konfiguroitu Yocto-kehitysympäristö standardilla PC:llä. Näin alusta edut voidaan tuoda laajimman mahdollisen kehittäjäjoukon käyttöön sulautetuissa sovelluksissa. Ekosysteemiin sisältyy korttivalikoima, joka on luotu yhdessä prosessori-, mikro-ohjain-, FPGA-piiri- ja muiden avainoheislaitteiden kehittäjien, kuten analogia-I/O- ja langattomien piirien valmistajien kanssa.
Toisin kuin puolijohdevalmistajien yleensä tarjoamat yleiskäyttöisiin mikro-ohjaimiin perustuvat kehityskortit, tämä lähestymistapa tarjoaa yksilöllisiä kortteja, jotka sopivat hyvin spesifeihin sovelluksiin ja ratkaisevat monia suunnittelun ja integraation ongelmia, joihin asiakkaat ajautuvat ohjelmisto- ja laitekehityksen lähestyessä projektin loppua. Projektiesimerkit vaihtelevat RFID- ja NFC-kehityksestä sulautettuun videoon ja teollisuuden liitäntäsovelluksiin. Muita tuettuja radiostandardeja ovat WiFi ja IEEE802.15.4.
Yocto tarjoaa erittäin tehokkaan ohjelmistoinfrastuktuurin tällaisilla laitealustoilla. Rakennustyökaluissa käytettävien metakerrosten avulla alustamuutoksia on helppo tehdä. Lisäksi lopullinen sulautetun järjestelmän kuva voidaan kustomoida ja virittää sovellusta varten Hob-työkalun avulla. Tämä on graafinen käyttöliittymä, jolla kehittäjän on helppoa valita, mitkä linux-paketit pitää sisällyyttää lopulliseen kohdekuvaan.
Yocto ei kuitenkaan ole kokonainen kehitysratkaisu sulautetuille järjestelmille, koska siitä puuttuu integroitu kehitysympäristö (IDE). Tässä kohtaa apuun tulee toinen avoimen lähdekoodin ratkaisu Eclipse. Eclipse on täysin graafinen IDE-kehitysympäristö, joka perustu plugin-teknologiaan, jonka avulla kehittäjät voivat rakentaa kustomoidun ohjelmiston ja testausalustan. Yhdessä Eclipse ja Yocto parantavat merkittävät suunnittelun tehokkuutta ja antavat suunnittelijoille mahdollisuuden keskittyä yleiseen työkalupakettiin sen sijaan, että heidän pitäisi opetella eri linux-jakeluiden erityisyydet ja niihin liittyvät työkalut, kun tarpeet muuttuvat.
Kuva 3. Eclipse-kehitysympäristön konfigurointi-ikkuna.
Kattavana kehitysympäristönä, joka koostuu edullisista laitealustoista, työkaluista ja ohjelmistoista, jotka sopivat moniin eri sovelluksiin, ArchiTect on antanut SILICAlle mahdollisuuden tuoda innovatiivisen ja erittäin tehokkaan tavan tukea asiakkaitaan pitkällä aikavälillä. Fokusoidun, yhdessä suurimpien puolijohdevalmistajien kanssa kehitetyn laitteiston, SILICAn suunnittelijoiden tukeman linux-käyttöjärjestelmän, vahvan teknisen tuen ja kattavan koulutuksen yhdistelmä vie sulautetun kehityksen seuraavalle tasolla, jossa liikkeelle päästään nopeasti ja jokainen projekti saadaan valmiiksi nopeasti ja sujuvasti.