• Ei tuloksia

Haasteet sulautetuissa järjestelmissä

2. SULAUTETUN JÄRJESTELMÄN SUUNNITTELU

2.2 Haasteet sulautetuissa järjestelmissä

Sulautetuilta järjestelmiltä odotetaan aina moitteetonta toimivuutta ja luotettavuutta kaikissa tilanteissa, käyttöympäristöstä huolimatta. On täysin normaalia, että sulautetun järjestelmän käyttöympäristön lämpötila voi vaihdella toistasataa astetta.

Silti järjestelmän on toimittava luotettavasti. Myös häiriöitä esiintyy sulautettujen järjestelmien käyttöympäristössä huomattavasti enemmän kuin tavallisen PC:n käyttöympäristössä. Häiriöt voivat olla esimerkiksi mekaanista tai sähkömagneettisia häiriöitä. (Berger 2002)

Erityisen kriittisissä sovelluksissa, kuten esimerkiksi puolustusvälineteollisuudessa ja avioniikassa käytettävät laitteet on oltava hyväksyttyjä ja testattuja erityisesti laitteen toimintaympäristön osalta kriittisiin sovelluksiin. Näistä testeistä valmistajalla on oltava tarkka dokumentaatio. Tämän vuoksi puolustusvälineteollisuuteen suunnitellut prosessorit voivatkin maksaa useita satoja kertoja enemmän kuin tavalliselle kuluttajalle tarkoitetut versiot. (Berger 2002)

Yrityksen on varmistettava myös kuluttajatuotteiden luotettavuus ja toimivuus on huolella ennen tuotteen lanseeraamista markkinoille. Yleensä sulautetun järjestelmän piiri ohjelmoidaan ainoastaan yhden kerran ja sijoitetaan laitteeseen. Mikäli tuotteessa havaitaan virhe tuotteen ollessa jo markkinoilla, ei järjestelmää yleensä saada kuntoon pelkällä ohjelmistopäivityksellä, toisin kun PC puolella. Tällöin joudutaan mahdollisesti turvautumaan takaisinkutsuun ja korvaamaan kuluttajalle aiheutuneet vahingot. Korvaussummat voivat nousta jopa niin suuriksi, että pienempien firmojen on mahdotonta jatkaa enää toimintaansa. (Bolton 2000)

2.2.2 Reaaliaikaisuus

Sulautetut järjestelmät toimivat usein reaaliaikaisesti. Tämä aiheuttaa useita haasteita järjestelmän suunnitteluun ja käytettävän reaaliaikakäyttöjärjestelmän (RTOS) valintaan. RTOS:sin valinta on prosessorivalinnan yhteydessä tärkeimpiä päätöksiä

suunnitteluprosessissa. Käyttöjärjestelmän hankinnassa on otettava huomioon mm.

tuetut ohjelmointikielet, yhteensopivuus kehitystyökalujen kanssa, käyttöjärjestelmän suorituskyky, käyttöjärjestelmän integroinnin helppous, sekä esimerkiksi valmistajan tarjoama tekninen tuki.

Suunnittelijan kannalta sulautetun järjestelmän suunnittelusta tekee haastavan järjestelmän toiminnalle määritellyt aikarajat, koska useat sulautetut järjestelmät ovat usein aikakriittisiä. Sulautettu järjestelmä voi olla ”Hard time” tai ”Soft real-time”. Hard-real time järjestelmän on paitsi reagoitava kutsuun välittömästi, myös suoriuduttava tehtävästä annetussa ajassa. Aikarajan ylitys tulkitaan Hard real-time järjestelmissä virheeksi, joka voi pahimmassa tapauksessa aiheuttaa koko järjestelmän hallitun tai hallitsemattoman alasajon. Soft real-time järjestelmille riittää, että järjestelmä vastaa kutsuun annetussa ajassa, mutta tehtävän suorittamiselle ei ole ennalta määrättyä aikaa. Soft real-time järjestelmissä aikarajojen ylittyminen yleensä aiheuttaa lievää epätoimivuutta, muttei kaada koko järjestelmää. Yleisesti aikarajojen ylittäminen paitsi aiheuttaa järjestelmän toimimattomuutta, mutta voi myös aiheuttaa vaaratilanteita käyttäjille. Järjestelmän reaaliaikaisuus kulkeekin käsi kädessä luotettavuuden ja rinnakkaisuuden kanssa. (Wolf 2001, Labrosse 2002)

2.2.3 Rinnakkaisajo

Sulautetuissa järjestelmissä on tyypillistä myös, että reaaliaikaisia aikakriittisiä prosesseja on käynnissä samanaikaisesti useita, eli on kyettävä suoriutumaan rinnakkaisista prosesseista tehokkaasti. Tämä aiheuttaa entistä suuremman vaatimuksen aikarajoista selviytymiseen. Järjestelmän epätoimivuuteen riittää, että yksi ainoa prosessi ei selviydy vaadituista aikarajoista. (Labrosse 2002)

2.2.4 Taloudelliset vaatimukset

Sulautetun järjestelmän suunnittelussa on otettava huomioon HW:n aiheuttama taloudellinen näkökulma, koska sulautetun järjestelmän suunnittelu sisältää myöskin fyysisen laitteen. Tämän takia tuotantokustannukset on otettava huomioon jo

suunnitteluvaiheessa. Taloudelliset vaatimukset aiheuttavat useita haasteita sulautetun järjestelmän suunnitteluprosessissa. Suunnittelussa on huomioitava HW:n todellinen tarve. Prosessorin nopeus on optimoitava järjestelmän toimivuuden ja hinnan mukaan.

Liian nopeasti toimiva järjestelmä tulee helposti kalliiksi, kun taas edullisempi ja hitaampi prosessori ei täytä aikarajavaatimuksia. Koodiin tehokkuuteen on kiinnitettävä huomiota, sillä nopealla prosessorilla huonon koodin suoritus on huomattavasti hitaampaa, kuin hitaammalla prosessorilla suoritettava hyvin suunniteltu koodi. Oheislaitteista esim. muistin määrä näkyy nopeasti hinnassa.

Muistia ei tule pitää turhaan reservissä, vaan suunnitella tehokasta ja tiivistä koodia, joka täyttää järjestelmän vaatimukset. Mikäli edullisella komponentilla voidaan vaikuttaa tuhansien koodirivien poisjäämiseen, on se kannattavaa, mikäli tuotantomäärät eivät ole kovin korkeat. Kun taas tuotetaan kymmeniä tai satoja tuhansia kappaleita jotain laitetta, on taloudellisempaa korvata edullisiakin komponentteja ylimääräisellä koodilla, mikäli mahdollista. Aina ei riitä, että saavutetaan vaaditut tekniset ominaisuudet ja toimivuus. Monesti on tehtävä kompromisseja, jotta saadaan sekä tekniset, että taloudelliset vaatimukset tyydytettyä.

(Wolf 2001)

2.2.5 Virranhallinta

Aina optimointia ei jouduta tekemään pelkästään taloudellisista syistä. Usein suunnittelussa joudutaan ottamaan huomioon myös tehon asettamat rajoitteet.

Kannettavissa paristo/akkukäyttöisissä sovelluksissa virranhallinta on ensiarvoisen tärkeää. Sovelluksen tehonkulutukseen vaikuttaa prosessorin kellotaajuus, sekä piiriin kytkettyjen aktiivisten liitännäisten määrä. Näihin lukeutuu mm. prosessori, muistit (RAM/ROM), I/O laitteet ym. Moderneilla prosessoreilla virrankulutus on lähes suoraan verrannollinen prosessorin kellotaajuuteen nähden, joten oikea prosessorivalinta on myös tehokkain tapa hallita sovelluksen virrankulutusta.

Toisinaan virranhallinta voi määrätä jopa käytettävän ohjelmointikielen. Mikäli on tuotettava mahdollisimman tehokasta koodia myös virrankäytön suhteen, voidaan joutua turvautumaan entistä laiteläheisimpiin kieliin, kuten assemblyyn. Kasvava virrankulutus lyhentää paitsi akkujen kestoa, mutta aiheuttaa myös kasvaneen

jäähdytystarpeen, joka heijastuu helposti laitteen fyysisessä koossa. Mikäli järjestelmää hidastetaan, on varmistuttava mahdollisista reaaliaikaisuuden asettamien vaatimuksien täyttymisestä. (Wolf 2001, Berger 2002)

2.2.6 Testaus

Kuluttajat odottavat kaupalliselta tuotteelta moitteetonta toimivuutta, joten testaukseen on panostettava riittävästi resursseja. Testaus on aloitettava jo todella varhaisessa vaiheessa, jotta kaikki ongelmat löydetään ajoissa ja saadaan korjattua.

Sulautetun järjestelmän testaus on myös mutkikkaampaa kuin pelkissä ohjelmistosovelluksissa. Jotta saadaan paikkaansa pitävää testidataa, on usein ajettava koko järjestelmää samanaikaisesti. (Vahid 2002)

Sulautettu järjestelmä ei välttämättä toimi oikein vaikka HW on testattu toimivaksi ja SW on erikseen testattu toimivaksi. Näiden täytyy toimia moitteetta myös yhdessä.

Usein sulautettua järjestelmää hallitaan muutamilla napeilla ja käytössä voi olla esim.

pieni näyttö. Tämä ei mahdollista laajoja työkaluja järjestelmän ongelmakohtien löytämiseksi, vaan ongelman ratkaisemiseksi on mentävä aina piiritasolle asti.

Testauksen vaatimat työkalut eroavat merkittävästi PC-maailmasta. Sulautettu ohjelmisto sijoitetaan yleensä ROM-muistiin, joka ei sovellu tavallisten debugger-työkalujen käyttöön. Debuggerin on yleensä poistettava testattavasta koodista rivi, ja korvattava se omalla ohjauskäskyllä. Koska ROM-muistia voidaan ainoastaa lukea, täytyy testauksessa käyttää esimerkiksi ROM emulaattoreita. Mikäli käytössä on reaaliaikainen käyttöjärjestelmä, on testaus ja virheiden löytäminen entistä haastavampaa. RTOS käyttöjärjestelmää hankkiessa on varmistuttava sopivien testaustyökalujen löytyminen. Yleisimpiä työkaluja sulautettujen järjestelmien virheiden havainnointiin ja poistamiseen ovat In-circuit Emulator (ICE), ROM-emulaattori, logiikka-analysaattori, JTAG ja Nexus (Berger 2002)