Sulautetut järjestelmät¶
Osaamistavoitteet: Tämän materiaalin läpikäytyäsi tiedät mitä ovat sulautetut järjestelmät, mitä laiteläheinen ohjelmointi (ts. sulautettujen järjestelmien ohjelmointi) tarkoittaa ja mitkä ovat sen erityispiirteet, sekä miten sulautettuja laitteita ohjelmoidaan nykyisillä kehitysympäristöillä.
Miksi sulautetut järjestelmät?¶
"Sulautettu järjestelmä (engl. embedded system) on tiettyyn tarkoitukseen tehty laite tai laitteisto, jota ohjaa tietokone. Sille on tyypillistä, että käyttäjän ei tarvitse olla tietoinen laitteen sisällä olevasta tietokoneesta, vaikka voikin sen olemassaolon helposti päätellä." (Wikipedia, mukaillen)
Sulautettuja järjestelmiä käytetään hyvin laajalti nykyään eri sovellusalueilla:
- Kodinkoneet, kotiautomaatio, viihde-elektroniikka, älypuhelimet, ...
- Autot, logistiikka, tehdasautomaatio, ...
- Terveysteknologia, sairaalalaiteet, ...
- Tulevaisuutta: älykkäät ympäristöt, puettava tietotekniikka, ...
Sulautettu järjestelmä töissä.. ja harrastuksena. Helpompaa miltä näyttää!
Esineiden Internet¶
Kurssilla toimimme Esineiden Internet:ssä (Internet of Things, IoT) ympäristössä. IoT on maailmanlaajuinen on ekosysteemi, jossa miljardit esineet ja laitteet kommunikoivat keskenään Internetin kautta. Tämä mahdollistaa uusia älykkäitä palveluita ja sovelluksia kuluttajille, yrityksille ja yhteiskuntaan, kun yksittäiset laitteet ja sovellukset voivat liittyä osaksi tätä ekosysteemiä ja hyödyntää sen palveluita. Sovellusesimerkkejä ovat esimerkiksi erilaisten reaaliaikaisten tapahtumien seuraaminen urbaanissa ympäristössä: liikenteen sujuvuus, kaupunkien/asuntojen energiankulutus, ihmisen toimintojen seuraaminen (terveysteknologia), kodintekniikan ohjaus etänä, jne..
Lyhyt Internet of Things-esittelyvideo.
Sulautetun laitteen osat¶
Sulautettu järjestelmä (engl. embedded system) on siis "pienoistietokone", joka on kehitetty ja toimii vain tiettyä käyttötarkoitusta varten. Käyttäjälle sulautetun laitteen näkyvin osa on käyttöliittymä, joka koostuu fyysisistä komponenteista, kuten painonapeista, kosketusnäytöstä, tms. Käyttäjälle palautetta laite antaa esimerkiksi LCD-näytön kautta. Sulautetussa laitteessa ei kuitenkaan tarvitse olla käyttöliittymää, jos se toteutetaan osaksi jotain isompaa laitetta, vaikkapa autossa.
Sulautetun laitteen ohjelma reagoi syötteisiin (engl. input), esimerkiksi painonappi, sensorin mittausarvo tai langattoman radion kautta tuleva viesti. Tyypillisesti ohjelma tuottaa jonkin vasteen (output) ohjelmointinsa mukaisesti kyseiseen inputtiin, esimerkiksi käynnistää pesuohjelman, näyttää käyttäjän tekemän valinnan käyttöliittymässä tai lähettää sensoridatan langattomasti eteenpäin.
Laitteessa voi olla myös massamuistia, esimerkiksi SD-kortti, datan pitempiaikaista tallentamista varten. Sulautettu laite tarvitsee tietenkin virtalähteen, joka liikkuvassa laitteessa on tyypillisesti akku tai ladattava paristo.
Näistä komponenteista laitteen suunnittelija valitsee ne, joita sovellus tarvitsee, ja kirjoittaa halutun ohjelman. Lyhyt video miten sulautettu järjestelmä toimii.
Mikrokontrolleri¶
Käsite mikrokontrolleri (myos mikro-ohjain, MCU) tarkoittaa, että yhdelle mikropiirille on toteutettu sekä prosessori (CPU) että muita sähköisiä komponentteja. Sulautetun laitteen mikrokontrolleria vastaa tietokoneen prosessori, mutta sen ominaisuuksia on riisuttu. Mikrokontrolleri toimii pienellä kellotaajuudella ja siinä on vähäinen määrä muistia, joka on vielä jaettu erilliseen ohjelmamuistiin (Flash) ja ohjelmien käytössä olevaan keskusmuistiin (RAM).
Nykyään sulautetuissa laitteissa, esim. älypuhelimessa tai autossa, on useita mikrokontrollereita, joista jokainen suorittaa omaa tehtäväänsä. Esimerkiksi, yksi MCU pyörittää laitetta, toinen keskittyy langattomaan tiedonsiirtoon ja kolmas ohjaa näyttöä. Näin saadaan laitteen ja sovellusten suorituskuormaa jaettua mikrokontrollerien kesken.
Kurssin sulautettu laite¶
Kurssilla käytettävä sulautettu laite on Texas Instruments:n Simplelink SensorTag (SensorTag meidän kesken), joka tarjoaa varsin hyvän näköalan nykyiseen IoT-maailmaan!
Laitteen sydämenä on moderni mikrokontrolleri, johon on integroitu radio langatonta tiedonsiirtoa varten. Laitteen piirikortilla on lisäksi integroituna kymmenkunta liikettä ja ympäristöä mittaavaa anturia (kiihtyvyys-, asento-, lämpötila-, valo-, ilmankosteus- ja ilmanpaineanturi sekä magnetometri, kompassi ja mikrofoni). Samalla piirilevyllä on myös painonappeja, ledejä ja pieni kaiutin. Ulkoisina lisäkomponentteina laitteelle saa mm. LCD-näytön, jota käytämme tällä kurssilla.
SensorTagiin integroitu radio tarjoaa useita eri teknologioita langattomaan tiedonsiirtoon, joista kurssilla käytämme 6LoWPAN teknologiaa 2.4GHz taajuuskaistalla (teknologian yksityiskohtia ei tarvitse kurssilla tietää). Opetushenkilökunta on toteuttanut valmiin kirjaston tiedonsiirtoon laitteiden välillä.
Alla SensorTag:n esittely kuvina. SensorTag ja LCD-näyttö -kombo toimii vaikkapa älykellona!
Laite toimii oikein ohjelmointuna kolikkopatterilla jopa viikkoja, johtuen tarkasti optimoidusta mikrokontrollerin ja oheiskomponenttien virrankulutuksesta.
Sulautetun laitteen ohjelmointi¶
Tyypillisesti sulautettuja järjestelmiä ohjelmoidaan C-kielellä (ja myös C++:llä). Vaikka C-kieli on kehitetty jo 1970-luvulla, tarjoaa se matalan tason ohjelmointikielenä mahdollisuuden kirjoittaa tiiviitä, nopeita ja sitä myöten tehokkaita ohjelmia juurikin sulautetuille järjestelmille. C-kieli on erittäin salliva kieli, päästäen ohjelmoijan tekemään monia asioita, jotka eivät muissa kielissä onnistu.
Sulautetun laitteen ohjelmoinnissa on kaksi vaihetta. Ensin C-kielinen ohjelma käännetään kääntäjäohjelmalla mikrokontrollerin ymmärtämään muotoon sen konekielelle. Sen jälkeen konekielinen ohjelma kirjoitetaan (ladataan / flashataan) erillisellä ohjelmointilaitteella laitteen ohjelmamuistiin. Kun mikrokontolleri käynnistyy, se lähtee automaattisesti ajamaan ohjelmamuistissa olevaa ohjelmaa ja ajaa sitä kunnes virrat katkaistaan.
Näin ollen, sulautettuja laitteita ei voi ohjelmoida tulkin kautta, kuten Pythonin kanssa tehtiin. Ammattilaiskäyttöön on kuitenkin olemassa simulaattoreita, joissa ohjelmaa voi ajaa debug-tilassa ja jopa kuten tulkissa.
Ohjelmointia sulautetulle laitteelle tehdään PC-ympäristössä laitevalmistajien (yleensä ilmaisilla) kehitystyökaluilla. Kurssilla SensorTag:ia ohjelmoidaan C-kielellä valmistajan pilvipalvelussa Web-selaimen kautta.
Opiskelijat voi myös käyttää omalla koneella valmistajan monimutkaisempaa TI Code Composer Studio (CCS)-ohjelmointiympäristöä. Asennus onnistuu ainakin Windowsille ja linuxille ja ehkä (=emme ole testanneet) Macille. CCS tarvitsee lisenssin, jonka saatte lainalaitteen mukana.
Sulautettu järjestelmä vs. PC¶
Verrattuna yleiseen sovellusohjelmointiin PC:llä, sulautettu järjestelmä on kehitetty ja toimii vain tiettyä "pientä" käyttötarkoitusta varten. Näissä sovelluksissa tarve tietokoneen laskentakapasiteetille, muistille ja muille tietokoneen ominaisuuksille on tyypillisesti vähäinen. On siis kustannustehokasta käyttää yleiskäyttöisen PC-laitteiston tilalta sulautettua laitetta.
Esimerkki: PC:n ja sulautetun laitteen eroja
Tyypillinen PC | Sulatettu laite | |
Kellotaajuus | 1-4GHz | 1-70Mhz |
Muisti | 1-8GB | 1-16kB |
8-256kB Flash-ohjelmamuisti | ||
16B-4kB haihtumatonta EEPROM-muistia | ||
Prosessori | 64bit | 8bit / 16bit / 32bit |
Massamuisti | 320GB | Oheislaite, esim. SD-muistikortti |
Liitännät | Integroitu äänikortti | Pieni summeri |
Näytönohjain | LCD-näyttö | |
Näppäimistö ja hiiri | Painonappi, liukusäädin tai kosketusnäyttö |
Ohjelmien suorittamisessa PC:ssä ja sulautetussa laitteessa on eroja. PC:ssä ohjelmia ajetaan aina käyttöjärjestelmän (Windows, DOS, linux) päällä.
Jos sulautetussa laitteessa on käyttöjärjestelmä, se on tyypillisesti riisuttu versio PC-käyttöjärjestelmästä tarjoten minimipalvelut ohjelmille. Näistä lisää myöhemmin ja Käyttöjärjestelmät-kurssilla.
Käyttöjärjestelmää ei usein kuitenkaan ole ollenkaan. Sen tilalta sulautetuissa laitteissa usein on laiteohjelmisto (engl. firmware), joka vastaavasti piilottaa laitteiston matalan tason toimintaa ohjelmoijalta. Laiteohjelmisto myös kytkee ja alustaa tietokoneen / sulautetun laitteen eri laitteistokomponentit toimivaksi koneeksi. Jos sulautetussa laitteessa on "firmis", se käynnistyy ensin ja muut ohjelmat vasta sen jälkeen. Tunnettu esimerkki sulautetusta firmware:sta on Arduino, jossa firmware käännetään osaksi sulautettua ohjelmaa. PC-maailmassa laiteohjelmistoa vastaa BIOS.
Sulautettua laitetta on myös mahdollista ohjelmoida ilman laiteohjelmistoa, tällöin oma ohjelmamme itseasiassa on laiteohjelmisto ja meidän pitää tehdä ohjelman vaatimat oheislaitteiden käynnistykset ja alustukset itse.
Tällä kurssilla SensorTag:lle tehdään ohjelmia valmistajan käyttöjärjestelmän päälle.
Yleisesti, sulautettua järjestelmää suunniteltaessa ja ohjelmoidessa on kiinnitettävä huomiota mm. seuraaviin asioihin:
- Laitteessa ei ole käyttöjärjestelmää, tai jos on, niin hyvin riisuttu reaaliaikakäyttöjärjestelmä
- Pieni prosessoriteho rajoittaa laskentakapasiteettiä ja silti laitteistolla voi olla tiukat aikavaatimukset, esimerkiksi tehdassovelluksissa
- Muistinkulutus, pieni muistimäärä rajoittaa laskenta- ja tiedonsiirtokapasiteettia
- Rajoitettu kommunikointi oheislaitteiden kanssa asynkronisesti, eli input / heräte oheislaitteelta voi tulla milloin vain, esimerkiksi viesti langattoman radion kautta
- Akku- tai patterikäyttöisen laitteen tehonkulutus. Usein ohjelmaa ja oheislaitteiden toimintaa optimoidaankin tehonkulutuksen pienentämiseksi
Näihin asioihin ehdimme vielä palata tarkemmin kurssimateriaalissa..
Lopuksi¶
Sulautettujen järjestelmien laitealustoja löytyy (muutamalla kympillä) harrastajille kotikäyttöön kaikilta mikrokontrollerivalmitajilta. Tunnetuin lienee ATmelin 8-bittisiin mikrokontrollereihin perustuva harrastajakäyttöön sopiva Arduino. Arduino tarjoaa hyvin korkean tason C++:n perustuvan ohjelmointikielen laitealustalle ja tavoite on, että Arduinon ohjelmointi onnistuukin vähäisellä ohjelmointikokemuksella. Esimerkkinä, Arduinoa käytetään digitaalisen median opetuksessa. Tälle kurssille Arduino on liian yksinkertaistettu laite.
Toinen tunnettu laitealusta, Raspberry Pi luetaan usein myös sulautetuksi laitteeksi, mutta siinä on jo ominaisuuksia niin kattavasti, että kyseessä on enemmänkin single-board computer. RPi:ssä ajetaan myös linux-käyttöjärjestelmää, joka on vastaavasti aivan liian raskas Arduinolle. Jotkut eivät pidä RPi:tä varsinaisena sulautettuna laitteena, vaikka senkin voi kyllä upottaa ympäristöön tai laitteeseen, siinä missä Arduinonkin.
SensorTagille on julkaisut ulkoisia ohgeislaitteita DevPack-rajapinnan kautta, jotka on myös julkaistu avoimesti verkossa. Kuka tahansa voi siis toteuttaa laitteelle omia lisäkomponentteja.
Anna palautetta
Kommentteja materiaalista?