1. Luento: Sulautetut Järjestelmät Arto Salminen, arto.salminen@tut.fi
Agenda Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi
Johdanto Sulautettu järjestelmä (ohj. termi) Ohjelmisto ja laitteisto ovat kiinni toisissaan niin saumattomasti ettei kumpikaan ole käyttökelpoinen ilman toista Sekä ohjelmisto että laitteisto saattavat hyödyntää standardikomponentteja Käyttäjä ei yleensä näe työnjakoa ohjelmiston ja laitteiston välillä Vastaavia termejä myös muilla aloilla (esim. mekatroniikka (mekaniikka + elektroniikka))
Ohjelmistoteknisiä ongelmakenttiä Ohjelmistotuotanto Käytettävyys ja käyttöliittymät Laitteistonläheinen ohjelmointi Reaaliaikaiset järjestelmät Reaktiiviset järjestelmät Vikasietoisuus Hajautetut järjestelmät
Joitakin Ominaispiirteitä Pienet vs. suuret (fyysinen koko vs. ohjelmiston koko) Tietokone oikeastaan sivuosassa Muuten jopa väärin suunniteltu? Yleensä suljettuja Ei uusia sovelluksia asennettavissa; tilanne muuttumassa nopeasti, vähintään selain useasti käytettävissä Laitevalmistaja voi kuitenkin yleensä tehdä mitä haluaa (uudet ohjelmistoversiot, patchaus, jne) Toiminnalliset vaatimukset yleensä aikaan sidottuja Turvallisuus ja vikasietoisuus keskeisiä ominaisuuksia Toteutuksessa usein tarjolla halvin, hitain ja pienimuistisin laitteisto, joka pitää virittää äärirajoilleen jolloin suljettuus on merkittävä etu Ohjelmoinnissa hyödynnetään usein laitteiston ominaispiirteitä (esim. Nintendo Wii)
Kokonaisjärjestelmän määrittelystä Usean eri osa-alueen summa; vaatii eri alojen asiantuntijoiden yhteistyötä Ohjelmistotekniikka Tietokonetekniikka Tietoliikennetekniikka Elektroniikka Automaatio Mekaniikka Varsinaisen sovellusalueen asiantuntijat Jokainen tyypillisesti projisoi ratkaistavan ongelman oman alansa erityisongelmaksi Kokonaiskuvan muodostaminen vaikeaa
Kehitys tyypillisesti iteratiivista Ensin toimiva perusratkaisu Kun tuote vanhenee, lisä- ja täydentäviä toimintoja tarpeen mukaan Esim. Matkapuhelin 1. GSM-puhelin pystyi juuri ja juuri soittamaan Soittajan tietojen näyttö Ladattavat soittoäänet Värikuoret WAP Musiikkisoitin ja kamera Facebook & Youtube client Jne. Vaikka laite voi vaikuttaa samalta, ohjelmistoteknisesti muutokset voivat olla massiivisia! Joskus kyseessä jopa kokonaan uusi toteutus (esim. Nokia kommunikaattorissa GEOS -> Symbian OS)
Suunnitteluprosessista Suunnittelun jakaminen osiin Ohjelmiston ja laitteiston rajapinta Ohjelmiston ja laitteiston yhteissuunnittelu (Mahdollisuuksien mukaan myös yhteisvarmennus) Integrointi Eri alan asiantuntijoiden keskinäinen vuoropuhelu eri vaiheissa
Ohjelmiston määrittely Ohjelmiston suunnittelu Ohjelmiston toteutus Kokonaismäärittely Kokonaissuunnittelu Työn jako osiin Laitteiston määrittely Laitteiston suunnittelu Laitteiston toteutus Ohjelmiston testaus Laitteiston testaus Integrointi ja testaus
Ohjelmiston ja laitteiston rajapinta Korkean tason asiat vs. nippelitason asiat Joskus nippelitaso voi johtaa hankaliin teknologiavalintoihin (tai jopa kalliisiin virheisiin!) Esimerkki: Keskeyttävä vai ei-keskeyttävä oheislaite Yleensä ainakin: Suoritin (käskykanta, rakenne, erikois/yleis, liukuluvut, suorittimien määrä, suorituskyky, ) Muisti (ROM, RAM, Flash, yhtenäisyys, patterivarmennukset, koko, ) Oheislaitteet (lukumäärä, keskeyttävyys, rekisteri/käskyohjaus, reaktionopeus, )
Ohjelmiston ja laitteiston yhteissuunnittelusta Monet toiminnot voidaan toteuttaa joko laitteistolla tai ohjelmistolla Ohjaava tekijä usein valmistusmäärä, ja vielä sopivasti porrastetusti saatavissa olevien komponenttien hinnan ja ohjelmiston määrän mukaan Esimerkki: 1 kpl -> hinnalla ei ehkä lainkaan väliä? 2-n -> laitteisto (valmiit standardikomponentit) n-m-> ohjelmisto (korvataan joitain komponentteja) m-> jälleen laitteisto (laitekohtaiset komponentit) Kaikki riippuu kaikesta
Eri alojen edustajien roolit: Esimerkkinä Rakennusautomaatio LVI-asiantuntija -> Laitteistojen minimi- ja maksimitarpeet; sovellusalan perusratkaisut Automaation asiantuntija -> Mittaus- ja säätötekniikka; uudet, korvaavat ratkaisut Tietokoneasiantuntija -> Tietokonelaitteiston suunnittelu ja hankinta; yhteensovittaminen mittaja ohjauslaitteiden kanssa Ohjelmistoasiantuntija -> Kaiken edellä olevan yhdistävän ohjelmiston suunnittelu, toteutus ja testaus! Sovellusalueen asiantuntijat: Perustiedot ratkaistavasta ongelmasta Muut asiantuntijat: Tarkennukset (esim. algoritmeja jne) Tietokonesuunnittelija: Laitteiston rakenne ja sen yksityiskohdat
Suunnittelun etenemisestä? Järjestelmän ohjaus: Toteutetaanko mittaustietojen kerääminen ja ohjaaminen erillisjohdotuksella vai väyläratkaisulla? Pääasia että tiedot ylipäätään kerätään Erillisjohdotusta on käytetty aina ennenkin, miksi ei nytkin? Erillisjohdotus vaatii keskusyksikköön päätelaitteen tms. mittaus/ohjauspistettä kohti Väyläratkaisuita voi ostaa valmiina (esim. LON) Erillisjohdotus vie enemmän johtua mutta väyläratkaisu vaatii enemmän älykkyyttä laitetasolla kumpi on edullisempaa? Väyläratkaisu voi olla epäkypsää teknologiaa; toisaalta tulevaisuus on väylän Mikä väyläratkaisu olisi sopivin, jos sellaiseen päädytään?
Sulautettu ohjelmointi Välttämätöntä sulautettujen järjestelmien toteuttamisessa, mutta usein myös muulloin edullista. Yhteisiä piirteitä: Tarkkaan rajattu mahdollisuus käyttää muistia ja ymmärrys mihin sitä käytetään Ymmärrys mitä taustalla olevan laitteiston oletetaan tekevän Huolellisuus suorituskyvyn kannalta kriittisten asioiden suhteen Erikoistetut työkalut Ohjelmistokehitys vaatii tyypillisesti ajastusta ja aikaan sidottujen tehtävien hallintaa Rinnakkaisuus jokapäiväistä
Yhteenveto Sulautettu järjestelmä Ohjelmisto ja laitteisto ovat kiinni toisissaan niin saumattomasti ettei kumpikaan ole käyttökelpoinen ilman toista Useita erilaisia insinööritieteitä osana suunnittelua Ohjelmiston toteutuksessa joudutaan usein yhdistämään eri alojen asiantuntijoiden vaatimukset Sulautettu ohjelmointi Ymmärrys mitä taustalla olevan laitteiston oletetaan tekevän Sisäänrakennettu rinnakkaisuus, aikakriittisyys, reaktiivisuus ja vikasietoisuus (sekä yhä useammin myös hajautus!)