1. Sulautetut järjestelmät
|
|
- Kalle Sala
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Sulautetut järjestelmät Sulautetut järjestelmät Sulautettu järjestelmä on alunperin ohjelmistotyössä käytetty termi. Vastaavia muiden alojen termejä, jotka tarkoittavat lähes samaa asiaa, on eri aloilla käytössä useita, kuten esimerkiksi mekatroniikka, joka korostaa mekaniikan ja elektroniikan yhdistämistä. Nykykäytössä sulautettu järjestelmä viittaa useimmiten sellaiseen järjestelmään, jossa tietokoneen laitteisto ja ohjelmisto liittyvät toisiinsa saumattomasti siten, että kumpikaan ei ole käyttökelpoinen ilman toista, vaikka kumpikin saattavat hyödyntää yleiskäyttöisiä komponentteja, kuten vakiolisälaitteita, prosessoreita, käyttöjärjestelmiä tai ohjelmistokirjastoja. Toisaalta mikään ei välttämättä kerro käyttäjälle, mitä on toteutettu ohjelmistolla ja mitä laitteistolla, ja itse asiassa voi joskus olla jopa niin, että saman laitteen eri versioiden välillä eri osien välinen työnjako vaihtelee. Vastaavasti sulautetun järjestelmän kuvauksessa laitteisto käsittää laitteiston kokonaan, ei vain sen tietoteknistä osaa. 1.1 Johdanto Sulautetut järjestelmät sijoittuvat teknisten alojen kannalta monen alan rajamaille. Toisaalta niille ovat ominaisia tietyt ohjelmistojen erityispiirteet, toisaalta tietokonelaitteistojen piirteet. Usein sulautettu järjestelmä sisältää myös automaatiotekniikkaa esimerkiksi mekaanisen liikkeen tai kemiallisen prosessin ohjaamiseksi. Automaatio puolestaan vaatii lähes aina mittausta ja säätöä, mikä johtaa myös mittaussignaaleiden käsittelyyn ja säätötekniikan perusteisiin. Sulautetut järjestelmät ovat siis monen alan yhtymäkohdassa, ja sulautetun toteutuksen tekemiseen tarvitaan monen alan asiantuntijoita. Heistä jokaisella on oma näkemyksensä siitä, mitä sulautettu järjestelmä itse asiassa tarkoittaa jokainen tyypillisesti näkee ongelmakentän oman alansa projektion kautta.
2 12 Sulautettu ohjelmointi Tässä teoksessa sulautettuja järjestelmiä tarkastellaan lähinnä ohjelmistotekniikan näkökulmasta. Mukana on kuitenkin ripaus tietokoneiden laitteistoja ja säätöä. Ohjelmistotekniikan osalta sulautettujen järjestelmien ongelmakenttiä ovat muun muassa ohjelmistotuotanto käytettävyys ja käyttöliittymät laitteistonläheinen ohjelmointi reaaliaikaiset järjestelmät reaktiiviset järjestelmät vikasietoisuus ja hajautetut järjestelmät. Ohjelmistotuotanto käsittelee projektin läpivientiä, suunnittelumenetelmiä ja dokumentointia. Erityisesti käyttöliittymien ja käytettävyyden osuus laitteen onnistuneisuuteen on viime aikoina kasvanut, kun käyttäjäkunta on laajentunut entisestään tekniikan alan ihmisten ulkopuolelle. Laitteistonläheinen ohjelmointi tarkoittaa laitteistojen ohjaamista ohjelmallisesti, osittain symbolista konekieltä (assemblykieltä) käyttäen ja puristaen suorittimesta irti kaiken mahdollisen suorituskyvyn. Reaaliaikaisuus tarkoittaa järjestelmän ajoitusominaisuuksien ennustettavuutta ja annettujen aikavaatimusten täyttämistä. Reaktiivisuus puolestaan tarkoittaa sitä, että järjestelmä reagoi kaikkiin tapahtumiin riippumatta siitä, mitä muita tapahtumia on jo käsiteltävänä. Vikasietoisuus viittaa siihen, että sulautetut järjestelmät toimivat usein ilman ihmisen välitöntä ohjausta. Vian tullessa järjestelmän tulee selvitä siitä itse ainakin niin pitkälle, että vika ei aiheuta lisää vikoja. Lisäksi sulautetut laitteet voivat sisäisesti koostua hyvin monimutkaisesta kokonaisuudesta, jossa käytetään useita prosessoreita. Varsinkin viime aikoina kehitys on vienyt kohti hajautettuja laitearkkitehtuureja. Näihin taas liittyvät erilaiset middleware-tekniikat, jotka mahdollistavat helpomman hajautuksen toteutuksen. Tässä teoksessa sivutaan ohjelmistotuotantoa alussa. Käytettävyyden ja käyttöliittymien ongelmakenttää sivutaan vain satunnaisesti sen keskeisyydestä huolimatta, sillä monessa mielessä valintoja ohjaavat muuhun kuin käytettävissä olevaan teknologiaan liittyvät seikat. Laitteistonläheisestä ohjelmoinnista käsitellään oheislaitteiden liittämistä järjestelmään, mutta itse symbolinen konekieli oletetaan jo tunnetuksi. Myös joitakin käyttöjärjestelmiiin liittyviä yksityiskohtia käsitellään. Reaaliaikaisuudesta käsitellään perusteet ja skedulointi. Näiden lisäksi käsitellään myös vikasietoisuuden hallintaa. Lopuksi sivutaan lyhyesti hajautettuja sulautettuja järjestelmiä. Mukana on myös
3 Sulautetut järjestelmät 13 joitakin esimerkkijärjestelmiä, joiden tarkoituksena on havainnollistaa sulautetun ohjelmoinnin ongelmien ratkaisua käytännössä. Ohjelmistotekninen pääongelma vaihtuu järjestelmän koon mukaan. Kaikista pienimmissä järjestelmissä pääongelmat ovat laitteistonläheisessä ohjelmoinnissa. Näissä järjestelmissä on käytössä hyvin vaatimaton suoritin, jonka nopeudessa ja käytettävissä olevan muistin määrässä olisi paljonkin toivomisen varaa. Näin ongelmaksi tulee tarvittavien ohjelmien sovittaminen tarjolla olevaan tilaan ja ohjelmien nopeuttaminen vastaamaan tarvetta. Yleensä tällaisessa pienessä järjestelmässä on kuitenkin vain vähän toimintoja, joten järjestelmän reaktiivisuus on yksinkertaista ja reaaliaikaisuus helppo todeta. Järjestelmän koon kasvaessa reaaliaikaominaisuuksien ratkaiseminen käy vaikeammaksi, koska seurattavia tapahtumia on paljon. Jos järjestelmä on lisäksi reaktiivinen, niin kuin se yleensä on, tulee ajoituksien laskennasta hyvin haastava toimenpide. Järjestelmän kasvaessa lisää alkavat ohjelmistotuotannon ongelmat nousta esille. Kuvaavaa onkin erään teollisuuden johtohenkilön kommentti, että heidän sulautettujen järjestelmiensä ongelma on se, että ne eivät ole sulautettuja järjestelmiä. Tässä vaiheessa järjestelmä on kasvanut jo niin suureksi, että vain pieni osa sen tekijöistä kokee sen varsinaisena sulautettuna ympäristönä, varsinkin, kun ohjaava laite voi olla suorituskyvyltään ja muilta ominaisuuksiltaan pöytäkonetta muistuttava teollisuus-pc. Käyttöliittymien ja yleensä käytettävyyden ja käyttökokemuksen merkitys on kasvamassa sitä suuremmaksi, mitä suurempi joukko käyttäjistä ei ole tekniikan ammattilaisia. Käyttöliittymä niin kuin itse asiassa sulautettujen järjestelmien tapauksessa usein koko laite on suunniteltava sovellusalueen ehdoilla sille tutuilla toimintatavoilla. Ammattikäyttöön sovelluksia ja laitteita suunnitellessa voidaan myös ajatella koulutusta uusien järjestelmien käyttöönoton yhteydessä, mutta massamarkkinoille suunnattuja järjestelmiä suunniteltaessa ollaan usein todella vaikeiden suunnitteluratkaisujen edessä, varsinkin kun tällöin käyttäjäkunta saattaa olla hyvin heterogeeninen. Lisäksi on huomattava, että sovellusalueen tunteminen on ohjelmoijallekin hyvin tärkeää. Ratkaistavat asiat eivät aina ole kovin suoraviivaisia, eivätkä alan omat asiantuntijat välttämättä tiedä, mikä on ohjelmistoteknisesti tai algoritmisesti mahdollista ja mikä ei.
4 14 Sulautettu ohjelmointi 1.2 Sulautettujen järjestelmien ominaispiirteitä Kuten edellä jo todettiin, sulautettujen järjestelmien koko vaihtelee hyvin pienistä erittäin suuriin. Ehkä selkeimmin tunnistettavia sulautettuja järjestelmiä ovat pienimmät järjestelmät, kuten esimerkiksi älykkäät anturit, automaattikamerat, videolaitteet ja matkapuhelimet, jotka kuitenkin ovat monimutkaisuudessaan aikamoisia ohjelmistoteknisen osaamisen taidonnäytteitä. Matkapuhelinten "älysarjassa" sulautettu luonne alkaakin jo hämärtyä. Laite, jonka perustarkoitus ja koko viittaa hyvinkin kauas tietotekniikasta voi olla hankala yhdistää sulautetuksi laitteeksi. Tällaisia ovat esimerkiksi ovat pesukoneet ja hissit, sekä erilaiset työkoneet kuten kallioporakone, konttilukki tai veturi. Monimukaisimmasta päästä sulautettuja järjestelmiä ovat esimerkiksi lentokoneet ja monet avaruustekniikan laitteet kuten satelliitit ja luotaimet. Sulautetuissa järjestelmissä tietokone on käyttäjän kannalta tavallisesti sivuosassa. Käyttäjän ei tarvitse tietää tietokoneen olemassaolosta ja voisi jopa kärjistäen sanoa, että jos käyttäjän on se tiedettävä, on järjestelmä suunniteltu väärin. Käyttäjän kannalta on tärkeää, että itse perustoiminta, jota varten laite on tehty, toimii odotetusti: hissi siirtyy siihen kerrokseen, mihin käyttäjä sen halusikin. Tietenkin on olemassa sulautettuja sovelluksia, jossa tietokoneen mukanaolo on vähintäänkin ilmeistä, kuten GPS-paikantimessa 1. Laitteen käyttötarkoitus on kuitenkin paikan selvittäminen, ja tämän pitää voida tapahtua ilman perustietoja tietotekniikasta. Sulautetuille järjestelmille on tyypillistä myös se, että ne ovat suljettuja. Tämä tarkoittaa sitä, että järjestelmän voi ohjelmistoja tai toimintoja voi muuttaa tai lisätä vain järjestelmän toimittaja. Niin sanottu kolmas osapuoli ei voi tuottaa sovelluksia järjestelmään kuin aivan poikkeustapauksissa. Tämä nimenomainen ominaispiirre on osittain murtumassa, sillä jotkut sulautetuille järjestelmille tarkoitetut käyttöjärjestelmät tai usein oikeammin ohjelmointiympäristöt tarjoavat myös kolmansille osapuolille tarkoitetun rajapinnan. Lisäksi jotkut järjestelmät tarjoavat rajoitetumpaa ohjelmointimallia, jossa ohjelmistoon on lisätty mahdollisuus suorittaa muita ohjelmia virtuaalikoneen 1. Erilaisten paikantimien (ja myös monien muiden sulautettujen järjestelmien) toteutustekniikasta on mahdollista tehdä arvauksia suorituskyvyn perusteella. Mitä nopeampi laite on, sitä todennäköisemmin siinä on käytetty erikoistettuja laitteistokomponentteja, ja vastaavasti hitaiden laitteiden hitauden syy löytyy usein ohjelmistosta.
5 Sulautetut järjestelmät 15 avulla. Virtuaalikoneeseen on myös mahdollista lisätä erilaisia tietoturvaan liittyviä mekanismeja. Käytännön toteutuksista laajimmalle lienee levinnyt mobiili Java, jota tukevia puhelimia on satoja miljoonia. Viime aikoina on myös kasvanyt kiinnostus tarjota mahdollisuus suorittaa skriptejä omassa ajoajan ympäristössä, jonka avulla on mahdollista tarjota käännettäviä ohjelmia parempaa räätälöityvyyttä ja joustavuutta myös loppukäyttäjän näkökulmasta. Esimerkkejä ovat erilaiset web-pohjaiset ympäristöt ja vaikkapa Qt-sovelluskehyksen tarjoama QtScriptympäristö, johon on periaatteessa mahdollista lisätä laitekohtaisia rajapintoja. Suuri osa sulautetuista järjestelmistä on reaaliaikaisia, eli järjestelmän toiminnalle on asetettu paitsi toiminnallisia myös aikaan liittyviä vaatimuksia. Yhdistettynä pieneen suoritustehoon tämä voi tuottaa ohjelmoijalle melkoisia vaikeuksia. Lisähaastetta suunnittelutyöhön tuo se, että usein sulautetuista laitteista halutaan valmistaa useita toisistaan hivenen poikkeavia versioita, joissa esimerkiksi laitteistoa muuntelemalla saadaan aikaan eri markkinoille sopivia tuotteita. Tällöin ohjelmistoa pitää kaiken lisäksi pystyä muuntelemaan sunnitelmallisesti, mikä tietysti vaikeuttaa suunnittelua. Kaiken edellisen lisäksi järjestelmiltä vaaditaan erittäin suurta turvallisuutta ja vikasietoisuutta. Sulautetun järjestelmän tulisi kaikissa tilanteissa toimia siten, että se ei viallisenakaan tai väärin ohjattuna aiheuta vaaraa käyttäjälleen, ympäristölleen tai itselleen. Laitteiden pitäisi toipua virhetilanteista mahdollisimman automaattisesti, jopa niin, että käyttäjä ei huomaa mitään. Tietenkin laite voi ilmoittaa tarvitsevansa huoltoa, mutta kaikissa tilanteissa sen toiminnan pitää olla turvallista. Esimerkiksi autojen ABS-jarrut muuttuvat tavallisiksi jarruiksi, jos ABS-jarrujärjestelmään tulee vika. ABS:n tuoma hyöty menetetään, mutta jarrut kuitenkin toimivat yhä. Vaihtoehto (tietenkin tässä tapauksessa järjetön, mutta joidenkin järjestelmien kannalta hyväksyttävä) olisi esimerkiksi se, että auto pysäytetään vian tullessa väkisin. Tämän tapahtuminen ohitustilanteessa ei varmastikaan olisi turvallista. Toisaalta taas teollisuusrobotin pysäyttäminen vikatilanteessa on yleensä järkevin teko. Yhteenvetona suunnittelijan tulee siis tietää, millaisessa ympäristössä laitetta käytetään, jotta voisi päätellä oikeat reagointitavat, mikäli niitä ei ole kirjattu järjestelmä- ja ohjelmistovaatimuksiin tai käytettävissä ei ole alan asiantuntijaa. Kysyminen on kuitenkin yleensä kaikkein paras, yksinkertaisin ja nopein tapa selvittää kaikki yksityiskohdat.
6 16 Sulautettu ohjelmointi 1.3 Sulautettujen ohjelmistojen erityispiirteitä Sulautetuista järjestelmistä lukumääräisesti suurin osa on toteutettu suorituskyvyltään hyvin pienten suorittimien avulla. Toisaalta suurimmissa järjestelmissä ohjauskoneena voi olla hyvinkin tehokas suoritin, tai jopa kokonainen klusteri niitä, kuten esimerkiksi puhelinkeskuksen tapauksessa. Vastaava skaala pienestä suureen on nähtävissä myös järjestelmän pohjana olevassa ohjelmistossa. Kaikkein pienimmät sovellukset toimivat ilman selvää ydin sovellus-jakoa, jolloin koko ohjelmisto toimii loogisen toimintansa ohella samalla myös "käyttöjärjestelmän" ytimenä eli vastaa keskeytyksien ohjauksesta oikeaan palveluohjelmaan, ajanjaosta ja prosessien välisestä kommunikoinnista. Näin varsinkin silloin, jos suoritin on käskykannaltaan ja muistiavaruudeltaan erittäin vaatimaton pienimmissä suorittimissa muistiavaruus voi olla kahdeksan kilotavua, johon on mahduttava sovellus, ydin (tai ainakin sen toiminnot) ja oheislaitteiden ohjausrekisterit. Aivan pienimpiä sovelluksia lukuunottamatta järjestelmässä on tavallisesti selkeästi sovelluksesta erotettu ydin. Tällainen ydin on tyypillisesti hyvin pieni, jotta se mahtuisi yhdessä sovelluksen kanssa lukumuistiin. Ytimen pienuudesta seuraa, että sen palvelutkin ovat minimaaliset. Jotkin kaupalliset ytimet ovat sellaisia, että niistä voidaan koota hyvin erikokoisia ja samalla palveluiltaankin erilaisia versioita. Pienimmillään ne vievät tilaa vain joitain kilotavuja, mutta suurimmillaan ne tarjoavat täyden käyttöjärjestelmän suojauspiirteineen kaikkineen. Tietysti ytimen kokokin on noussut noin megatavuun; joissain tapauksissa jopa merkittävästi yli. Kun ytimestä karsitaan pois toimintoja sulautettua järjestelmää varten, tyypillisiä poistettavia osia ovat esimerkiksi virtuaalimuisti, sillä sitä ei reaaliaikajärjestelmissä yleensä voi muutenkaan käyttää ennakoitavuuteen liittyvistä syistä, tiedostojärjestelmä, koska laitteissa on harvoin massamuisteja (asia, joka on kyllä muuttumassa), sekä suojaukset, koska niiden ylläpito kuluttaa resursseja ja ohjelmien testausvaiheen luotetaan löytävän mahdolliset ongelmat, varsinkin jos kyseessä on järjestelmä, joka on täysin suljettu. Sen sijaan järjestelmät, joita käyttäjä voi laajentaa omilla sovelluksillaan, on yleensä suunniteltava siten, että käyttäjän sovellukset ja järjestelmän omat sovellukset on mahdollista erottaa toisistaan, jotta kaikkein tärkeimmät toiminnot voidaan taata joka tilanteessa. Näin ei kuitenkaan aina käytännössä käy, vaan esimerkiksi matkapuhelimeen on melko helppo toteuttaa sov-
7 Sulautetut järjestelmät 17 ellus, joka estää hätäpuhelun soittamisen varaamalla laitteen kaiken suoritusajan tai muistin omaan käyttöönsä. Toisaalta suurimmat ja monimutkaisimmat sulautetut järjestelmät voivat sisältää kokonaisia yleiskäyttöisiä käyttöjärjestelmiä sekä niihin liittyviä (yleiskäyttöisiä tai sovellusaluekohtaisia) kirjastoja. Tällöin ohjelmoijan kannalta osa sulautetun ohjelmoinnin ominaispiirteistä katoaa, sillä esimerkiksi muistinkulutuksen kannalta ei enää ole suurta merkitystä sillä, onko jonkun tietorakenteen koko täsmälleen optimi. Toisaalta osa haasteista on edelleen ohjelmoijan ratkaistava. Näitä ovat esimerkiksi järjestelmän ajallisesti oikea käyttäytyminen sekä yleensä se, että järjestelmän toiminnan voi millään tasolla varmistaa testien ja muiden apuvälineiden avulla. Usein onkin niin, että oikean toiminnan varmistaminen testitapausten avulla ohjaa suunnittelua. Siksi monet suunnitteluratkaisut, jotka periaatteessa saattaisivat jopa olla teknisesti edistyksellisempiä, voivat olla käyttökelvottomia, jollei toimintaa kyetä varmentamaan riittävällä tarkkuudella. 1.4 Kokonaisjärjestelmän määrittely Sulautetun järjestelmän määrittely on monen alan asiantuntijoiden yhteistyötä. Koko sulautetun järjestelmän idea johtaa tähän hyvin luonnollisesti. Eri alojen asiantuntijoiden olisi hyvä tuntea toistensa aloja jonkin verran, jotta keskusteluissa ei tulisi pahoja väärinymmärryksiä. Jo pienelläkin kokemuksella sulautettujen järjestelmien suunnittelusta eri tekniikan alojen edustajat löytävät yleensä keinot puhua asioista, mutta erityisesti silloin, kun sovellusalue on kaukana tekniikasta, on viestin välittämiseen kiinnitettävä paljon huomiota, jotta molemmat osapuolet ymmärtäisivät sen samoin. Tyypillisiä aloja, joita järjestelmiä tehtäessä on edustettuina, ovat ohjelmistotekniikka, tietokonetekniikka, tietoliikennetekniikka, elektroniikka, automaatiotekniikka, mekaniikka ja itse sovellusalueen asiantuntijat. Aina näitä kaikkia ei tarvita, ja joskus mukana voi olla myös muotoilijoita, käyttöliittymäsuunnittelijoita ja markkinointihenkilöstöä, ehkä järjestelmän tilaajakin. Tyypillistä on, että ensimmäisen version tavoitteena on tehdä toimiva perusratkaisu. Kun tuote vanhenee, yhä uusia ideoita nousee esiin perustoimintojen rinnalle, ja tarvitaan laajempaa asiantuntemustakin. Jälleen kerran hyvä esimerkki on matkapuhelin, joiden ensimmäisissä versiossa oli tarpeeksi työtä siinä, että laite ylipäätään toimi. Uusimpia mainostetaan kuorien värillä, muotoilulla, pelien lukumäärillä, musiikkisoittimella ja vaikkapa sisäänrak-
8 18 Sulautettu ohjelmointi ennetulla kameralla. Lisäksi viime aikoina erilaiset web-liitynnät, kuten Facebook-sovellus, ovat nousseet tärkeiksi, samoin kuin tietysti koko käyttökokemus laitteesta. Kuten matkapuhelinesimerkistäkin käy ilmi, vaikka käyttäjän kannalta kyse on samasta (tai samantapaisesta) laitteesta, ohjelmiston kannalta muutokset voivat olla niin suuria, että olisi perusteltua ymmärtää laite kokonaan uutena järjestelmänä. Kun kokonaisjärjestelmää määritellään, on tietoteknisen osan kokonaismäärittelyyn usein sopivimmat työkalut ohjelmistoasiantuntijalla. On tietenkin selvää, että sovellusalueen kieli kuvaa sillä tasolla parhaiten haluttua toimintaa, mutta tästä on vielä pitkä matka siihen, että järjestelmä on toteutettu. Kun kokonaisjärjestelmä on hahmoteltu, voidaan siirtyä yksityskohtaisempaan suunnitteluun, jossa asetetaan eri osa-alueiden väliset rajapinnat. Tietoteknisen toteutuksen puolella voidaan jatkaa tästä yleisestä jakotasosta vielä eteenpäin ainakin jonkin verran, ennen kuin laitteiston ja ohjelmiston välinen rajapinta lyödään lopullisesti lukkoon (niin sanottu ohjelmiston ja laitteiston yhteissuunnittelu; system codesign). Korostettakoon vielä, että suunnittelutyöhön osallistuvien on ymmärrettävä toistensa ammattikieltä edes kohtalaisesti, jotta pystyisivät ymmärtämään esitettyjen vaihtoehtojen vaikutuksen omiin osuuksiinsa. Silloin, kun ollaan tekemisissä uuden sovellusalueen kanssa, tämän projekti- tai sovellusaluekohtaisen terminologian opettelu on välttämättä tarvittava osa projektia, vaikka sitä harvoin aikataulutetaan perinteisen projektinhallinnan keinoin Suunnittelun jakaminen osiin Kun kokonaisjärjestelmä on saatu määriteltyä, työ jatkuu kuvassa 1.1 esitetyn kaavion mukaan kohti toteutusta. Kokonaismäärittelyä seuraa siis kokonaissuunnittelu ja työn jako osiin. Työn jakamiseen palataan seuraavissa kohdissa, joten siitä ei tässä sen enempää. Olennaista on huomata, että suunnittelun edetessä erikseen ohjelmisto- ja laitteistopuolella on huolehdittava siitä, että rajapinnan epäselvyydet tai muutostarpeet selvitetään välittömästi niiden ilmaantuessa, koska muuten ne tulevat vastaan vasta integrointivaiheessa. Tätä jatkuvaa keskusteluyhteyttä eri haarojen välillä kuvaavat katkoviivat ohjelmisto- ja laitteistosuunnittelun välillä. Lisäksi on syytä muistaa, että myös muihin toteutukseen osallistuviin osa-alueisiin on vastaavanlainen yhteys. Erityisesti sovellusalueen asiantuntijaa on syytä käyttää koko prosessin ajan konsulttina.
9 Sulautetut järjestelmät 19 kokonaismäärittely kokonaissuunnittelu työn jako osiin ohjelmistomäärittely laitteistomäärittely ohjelmistosuunnittelu laitteistosuunnittelu ohjelmiston toteutus laitteiston toteutus ohjelmistotestaus laitteistotestaus integrointi & testaus Kuva 1.1 Suunnittelun eteneminen perinteisen mallin mukaan. Tämä asiantuntija yleensä myös hyväksyy tuotteen, mikäli kyseessä ei ole tilaustyö. Tilaustyön tapauksessa asiakkaalla pitää yleensä olla keinot riittävään laadun- ja toiminnallisuuksien varmistukseen. Vaihtoehtoisesti myös tämä osa työstä on mahdollista alihankkia silloin, kun ollaan tekemisissä erikoistuneiden järjestelmien kanssa. Tällöin ongelmaksi voi tosin muodostua se, miten testausalihankkijan työ voidaan varmentaa Ohjelmiston ja laitteiston rajapinta Ohjelmiston ja laitteiston rajapinta sisältää monia asioita. Osa näistä on hyvin "korkealla" tasolla verrattuna toisiin, joita voi kuvata lähinnä "nippelitiedoiksi". Tosin hyvin pieniltä näyttävät asiat voivat olla hyvin erilaisia toteuttaa. Esimerkiksi se, onko oheislaite keskeyttävä vai ei, saattaa vaikuttaa yhdeltä suunnalta katsottuna vain siltä, kytketäänkö yksi johdin oheislaitteelta suorittimelle vai ei. Kuitenkin ratkaisu vaikuttaa kaikkeen kyseistä laitetta suoraan käyttävään ohjelmistoon, ja epäsuorasti myös ehkä muihinkin laitteisiin niiden johdotusta suunniteltaessa. Samaten suunnitteluratkaisulla voi olla vaikutusta siihen, onko mahdollista hankkia laitteistoa valmiina, vai onko sen valmistuksesta huolehdittava itse.
10 20 Sulautettu ohjelmointi Laitteistorajapintaa on ensinnäkin käytettävä suoritin. Millainen käskykanta ja rakenne siinä on? Miten nopea suoritin on? Onko se jokin erikoissuoritin (signaalisuoritin?) vai yleissuoritin? Onko laitteessa kenties monta suoritinta? Ovatko ne keskenään identtisiä vai onko yksi yleissuoritin ja toinen jokin erikoissuoritin? Tukeeko laitteisto liukulukuja? Jos järjestelmässä on useampia kuin yksi suoritin, niin miten nämä kommunikoivat keskenään? Onko käytössä väylä, yhteinen muisti (millainen) vai jokin muu mekanismi? Suoritin ei kuitenkaan kerro läheskään kaikkea tarvittavaa laitteistosta. Se on itse asiassa usein kaikkein helpoin ja suoraviivaisin määriteltävä komponentti, jonka valinta on usein jo etukäteen päätetty johtuen esimerkiksi saatavilla olevista ohjelmistotyökaluista, laitteistokokonaisuuksista, kustannuksista, energiatehokkuudesta ja fyysisestä koosta. Muita asioita, jotka täytyy ratkaista ovat muisti ja sen organisointi, oheislaitteet, erilaiset liitynnät muihin tietokoneisiin ja mahdolliset sovellusta varten tehtävät erityislaitteet. Muisti ei välttämättä ole yhtenäinen, vaan siinä saattaa olla aukkoja. Osa muistista on lukumuistia (ROM tai jokin muu muistityyppi, jonka sisältöä ei voi muuttaa ohjelmallisesti), osa luku-kirjoitusmuistia (RAM, muisti, joka tyhjenee, mikäli sen sähkönsyöttö katkeaa). Näiden väliin jäävät erilaiset muistit, jotka säilyttävät tiedon sähkökatkon yli, mutta joiden sisältöä voidaan muuttaa (esimerkiksi EEPROM, Flash- ROM). Näiden jälkimmäisten käyttö ei välttämättä ole yhtä näppärää kuin tavallisen luku kirjoitusmuistin, sillä tyhjennys tehdään tavallisesti erityiskäskyllä lohkolle kerrallaan, eikä piiri kestä muutoksia rajattomasti. Edellisten lisäksi järjestelmässä voi olla paristovarmennettuja luku kirjoitusmuisteja. Kaiken tämän fyysisen muistin kuvauksen lisäksi tulee selvittää, millainen muistinhallintayksikkö (MMU, Memory Management Unit) järjestelmässä on, vai onko sitä ollenkaan. Oheislaitteista tulee selvittää niiden lukumäärän ja tyypin lisäksi myös se, miten ne on sijoitettu keskusmuistiin, millaisten rekisterien tai käskyjen kautta niitä ohjataan ja miten sekä ovatko ne keskeyttäviä. Keskeytystapa on myös selvitettävä. Osa oheislaitteista voi olla erityisesti tätä sovellusta varten suunniteltuja, mihin palataan myöhemmin yksityiskohtaisemmalla tasolla. Muita olennaisia asioita ovat muun muassa liitynnät muihin järjestelmän tietokoneisiin. Nämä voivat olla toteutettuja sarjaliitynnöillä, väylillä tai valmiiden oheislaitepiirien kautta.
11 Sulautetut järjestelmät Ohjelmiston ja laitteiston yhteissuunnittelu Monet toiminnot voidaan toteuttaa joko ohjelmistolla tai laitteistolla. Rajapinnan määrittely ei tällaisessa tilanteessa aina ole kovin selvää, sillä rajapinnan valintaan vaikuttavat sekä uudet tarjolla olevat ratkaisut että tehtävän laitteen luonne. Paras rajapinta on siis monen tekijän funktio, joissa taloudelliset tekijät, kuten esimerkiksi hinta, soveltuvat valmistustekniikat, käytettävissä oleva valmistuskapasiteetti ja monet muut seikat ovat mukana teknisten rinnalla. Näin varsinkin silloin, mikäli teknisesti eri vaihtoehdoilla ei ole selvää eroa. Lisäksi, vaikka ohjelmoija ei sitä aina tiedäkään, taloudelliset seikat ovat saattaneet vaikuttaa jo siihen, kannattaako kyseistä laitetta lainkaan toteuttaa. Yksi taloustekijä on laitteen oletettu valmistusmäärä. Mikäli laitteesta tehdään vain yksi tai muutama kappale, eivät standardikomponenteista koottujen laitteiden osakustannukset nouse merkittäviksi. Jos näiden komponenttien korvaaminen ohjelmallisesti on suurehkon työn takana, kannattaa käyttää laitteistoa ongelman ratkaisuun. Mikäli valmistusmäärät kasvavat, alkaa lisäkomponentin kustannus nousta niin, että sen korvaava ohjelmisto kannattaa tehdä. Tällaisesta tapauksesta voisi esittää esimerkkinä staattisen sähkömittarin kalibroinnin. Sähkömittari kalibroidaan perinteisesti siten, että erilaisilla säätövastuksilla tai -kondensaattoreilla säädetään lukemat kohdalleen. Vaikka nämä komponentit eivät maksa paljoakaan, eikä niiden latominen piirikortille, testaus ynnä muu sellainen nosta summaa kovin isoksi laitetta kohti, tuottaa mittarin vuosituotannossa jo pienikin säästö mittaria kohti hyvinkin sen ohjelmoijan palkan, joka toteuttaa kyseisen toiminnon ohjelmallisesti. Komponenttien vähentäminen ei kuitenkaan aina johda kustannusten vähenemiseen. Komponentin poisjättäminen voi aiheuttaa muiden komponenttien vaatimusten ja samalla hinnan monikertaistumista. Esimerkiksi suorittimeen suoraan liitetty sarjaliityntä aiheuttaa keskeytyksen joka tavun jälkeen. Tällaisessa järjestelmässä sarjaliityntä kuormittaa runsaasti suoritinta, ja tiedonsiirtonopeuden noustessa suorittimen koko kapasiteetti kuluu jo suhteellisen pienillä nopeuksilla sarjaliitynnän palvelemiseen. Mikäli sarjaliityntä kytketäänkin puskurimuistiin, johon mahtuu kerrallaan 16 alkiota, ja keskeytys generoidaan, kun muisti on puolitäysi, kuormittuu suoritin aiemmalla maksimikuormalla vain 10-12%. Ensimmäisenä mieleen tuleva ilmeinen suorituskykyä parantava vaihtoehto suorittimen korvaaminen nope-
12 22 Sulautettu ohjelmointi ammalla maksaa kuitenkin todennäköisesti paljon enemmän kuin tämä "ylimääräinen" komponentti. Kun tuotantomäärät kasvavat lisää, kääntyy joidenkin toimintojen toteutuksen edullisuus jälleen laitteistopuolen hyväksi. Tällöin kannattaa suunnitella oma sovelluskomponentti, joka säästää standardikomponenttien lukumäärän vähenemisen kautta tuotantokustannuksia (esimerkiksi edellä ollut puskurimuisti integroidaan osaksi suoritinta). Lisäksi komponentissa voidaan toteuttaa omia erityispiirejä tukemaan ohjelmien nopeaa suoritusta tai jopa korvata joitain tavallisesti ohjelmistolla toteutettavia algoritmeja laitteistolla. Lisähyöty on vielä sekin, että laitteen kopiointi on näin paljon vaikeampaa, ellei jopa mahdotonta. Ohjelmoitavien piirien kautta laitteistovaihtoehto alkaa olla käytettävissä jo suhteellisen pienissäkin tuotantomäärissä. Ohjelmiston ja laitteiston yhteissuunnittelu tarkoittaa siis tyypillisesti sellaista järjestelmän suunnittelua, jossa rajapinta määräytyy lopullisesti vasta suunnittelun aikana. Kuten edellä olevasta käy ilmi, tässä on eri tasoja riippuen tuotteen ominaisuuksista. Lisäksi tekniikan eri osa-alueiden kehitys johtaa siihen, että paras rajapinta muuttuu jatkuvasti. Hinnan lisäksi rajapintaan voivat vaikuttaa laitteelta vaadittu nopeus sekä lait, asetukset ja muut viranomaismääräykset. Nämä tavallisesti johtavat laitteistolla toteutettaviin ratkaisuihin: liukuluvut ovat nopeampia laitteistolla, ja vastaavasti turvakytkimet katkaisevat sähkönsyötön mekaanisesti, ei ohjelmallisesti. On syytä muistaa, että laitteiston ja ohjelmiston yhteissuunnittelu tarkoittaa kokonaisjärjestelmän kannalta usein yhtä komponenttia. Sen kohteena voi olla pieni osa koko ohjelmistosta ja laitteistosta, ja suurin osa järjestelmästä tehdään yhä perinteiseen malliin. Pisimmälle vietynä yhteissuunnittelu voi tarkoittaa sitä, että tarvittava ohjelmisto kirjoitetaan valmiiksi, ja tästä ohjelmasta generoidaan sekä laitteisto (suoritin ja oheislaitteet) että tämän laitteiston tarvitsema ohjelma. Joissakin ympäristöissä tätä kokonaisuutta voidaan myös simuloida ennen varsinaista generointia, jolloin järjestelmän verifiointi (ainakin periaatteessa) voidaan suorittaa jo ennen varsinaista toteuttamista. 1.5 Eri alojen edustajien roolit Tämän osuuden tarkoituksena on kuvata eri asiantuntijoiden roolia määriteltäessä ja suunniteltaessa sulautettua järjestelmää. Esimerkiksi voidaan ottaa mikä tahansa sovelluskohde: tässä esimerkkinä on rakennusautomaation järjestelmä, jonka tavoitteena on pitää huolta talon il-
13 Sulautetut järjestelmät 23 mastoinnista ja lämmityksestä. Koska ei ole mielekästä suunnitella järjestelmää vain yhtä tiettyä tapausta kohti, on järjestelmän oltava skaalattavissa annetuissa rajoissa. Työn alkuvaiheessa on suhteellisen helppo havaita, että järjestelmän toteuttamiseen tarvitaan ainakin LVI-alan asiantuntijoita, mahdollisesti automaation asiantuntijoita, tietokonetekniikan asiantuntijoita ja ohjelmistotekniikan asiantuntijoita. Kullakin osallistujalla on oma näkemyksensä siitä, mitä järjestelmä on, ja kukin näkee hieman erilaisia tarpeita kokonaisjärjestelmälle. Tätä esimerkkiä lukiessa ei kannata pohtia juuri esimerkin ongelmakenttää. LVI-asiantuntija on tässä sovellusalueen käytännön asiantuntija, automaation asiantuntija on edellä mainittu alueen teoreettisen osaamisen asiantuntija ja niin edelleen LVI-asiantuntijan näkökulma LVI-asiantuntijan (tai avaruus-, moottorinohjaus- tai ydinfysiikan asiantuntijan) näkökulma on sovellusalan näkökulma. Hänen tehtävänään on asettaa järjestelmän toiminnalliset tavoitteet, ja hän myös vastaa siitä, että mitään perustoimintaa ei unohdeta. Tämä on käytännössä usein vaikeaa, sillä asiantuntijalle alasta riippumatta ovat perusasiat itsestään selviä, ja hän helposti luulee, että muutkin tuntevat ne. Niinpä muiden pitää varmistua siitä, että he ovat ymmärtäneet sovellusalan tarpeet oikein. Muut osallistujat voivat ideoillaan laajentaa tai supistaa tavoitteita, sillä sovellusalueen asiantuntija on yleensä kiinnostunut vain sovellusalueen ongelmien ratkaisusta, eikä välttämättä ota huomioon ohjelmistoihin liittyviä modulaarisuus- tai muunneltavuusvaatimuksia lainkaan. Sovellusalueen asiantuntija tuntee oman alansa nykytekniikan, tietää, mitä siitä voidaan ottaa järjestelmään mukaan sellaisenaan, kuten esimerkiksi ohjainlaitteita ja antureita. Lisäksi hän tietää, millaisia laitteita kilpailijat ovat julkistaneet ja joskus myös sen, mitä eivät vielä ole julkaisseet, mutta aikovat. Sovellusalueen asiantuntija määrittää laitteistojen minimi- ja maksimitarpeet. Hän osaa antaa perusratkaisut sovellusalaan liittyvään matematiikkaan ja algoritmeihin. Erityisesti hänen tulee osata tulkita näitä, ja osata ilmaista niiden tarkoitus tai perustoiminta esimerkiksi peukalosääntöjen avulla. Kaiken kaikkiaan sovellusalueen asiantuntija, tässä tapauksessa siis LVI-asiantuntija, näkee koko järjestelmän LVIongelmana, jossa on hieman muutakin mukana.
14 24 Sulautettu ohjelmointi Automaation asiantuntijan näkökulma Tässä esimerkissä automaation asiantuntija toimii sovellusalueen asiantuntijan tietämyksen täydentäjänä tuomalla siihen lisää teoreettista pohjaa automaatiotekniikan alueilla. Tällainen sovellusalueen lisäasiantuntija ei aina ole tarpeellinen, mutta toistaalta tällainen asiantuntija voi esittää uusia, korvaavia ratkaisuja, joiden toimivuus on selvitettävä varsinaisen sovellusalueen asiantuntijan kanssa. Esimerkkinä voisivat olla vaikkapa adaptiiviset säätöjärjestelmät, jotka mahdollistavat suuremman skaalautuvuuden. Kun uutta järjestelmää tehdään ainakin osittain uudelta pohjalta, voidaan törmätä sellaisiin ongelmiin, joita vanhoissa järjestelmissä ei ollut tai niihin ei voitu vaikuttaa. Tällaisessa tilanteessa lisäasiantuntijat voivat tuoda tarvittavaa lisätietämystä näiden uusien ongelmien ratkaisemiseen. Lisäasiantuntija näkeekin ongelman lähinnä oman alansa ongelmana, tässä tapauksessa siis automaatio-ongelmana Tietokoneasiantuntija Tietokone- ja digitaalitekniikan asiantuntija vastaa tarvittavan tietokonelaitteiston suunnittelusta tai valinnasta. Usein järjestelmään voidaan hankkia osia valmiina, ja tehtäväksi voi jäädä niiden yhteensovittaminen. Samankaltainen sovitusongelma on tarvittavien mitta- ja ohjauslaitteiden liittäminen tietokoneeseen: vaikka itse tietokone ja oheislaitteet saataisiin valmiina, ne täytyy saada keskustelemaan keskenään. Sovittamistyössä voidaan käyttää muiden alojen asiantuntijoita lisäasiantuntijoina. Esimerkissä LVI-suunnittelijalta saadaan tietää eri liityntätyyppien minimi- ja maksimimäärät. Aina tällainen lukumäärätasoinen tieto ei kuitenkaan ole riittävää, vaan tarvitaan syvällisempää apua. Esimerkiksi suunniteltava laite voi olla sellainen, että sitä tulee voida käyttää myös vaikeissa ympäristöolosuhteissa. Tällaisia tekijöitä ovat muun muassa pöly, kosteus, äärimmäinen lämpötila (ja lämpötilan vaihtelut), räjähdysvaara ja voimakkaat magneettikentät. Liitynnöille saatetaan antaa suuria vaatimuksia, esimerkiksi joissain ohjausjärjestelmissä liityntöjen tulee kestää jopa kilovolttien jännitettä siltä varalta, että jossain muualla järjestelmässä tulee vikoja tai lähistölle lyövä salama indusoi jännitepiikin. Eräs nykyajan erityisongelma on suojautua matkapuhelinten radiopurskeita vastaan. Lähes kaikissa sairaaloissa on kielletty matkapuhelinten käyttö (tosin nykyään usein turhaan ja vain varmuuden vuok-
15 Sulautetut järjestelmät 25 si), mutta ongelmia esiintyy muuallakin. Esimerkiksi käyvät autojen turvatyynyt, jotka varsinkin alkuaikoina saattoivat laueta matkapuhelimen aktivoituessa lähistöllä. Itse tietokonelaitteiston kohdalla tulee yhdessä ohjelmistoasiantuntijan kanssa päättää käytettävästä suorittimesta tai ainakin järjestelmän vaatimasta suurimmasta laskentatehosta, muistitilan tarpeesta ja millaista muistia tarvitaan (lukumuisti, luku-kirjoitusmuisti, kirjoitettava lukumuisti). Lisäksi tulee selvittää, mitä tehdään sähkökatkon tapahtuessa järjestetäänkö akkuvarmennus, suojataanko vain muisti ja sähkön palautuessa tehdään "pehmeä" käynnistys, tehdäänkö jotain muuta vai ei mitään. Myös käynnistyssekvenssiin tulee kiinnittää erityistä huomiota, sillä järjestelmä täytyy pystyä käynnistämään niin, että käynnistyksen aikana ei tapahdu mitään hallitsematonta. Osittain näitä käynnistysongelmia voidaan ratkaista ohjelmallisesti oikealla käynnistysjärjestyksellä, mutta aina tämä ei ole mahdollista, mikä vaatii sitten sen, että laitteistopuolella asia on hoidettu kuntoon. Tämäkin asiantuntija näkee ongelman oman alansa ongelmana, eli siis laitteisto-ongelmana, ja ohjelmisto on hänelle "musta laatikko" Ohjelmistoasiantuntija Ohjelmistoasiantuntijan tehtävänä on suunnitella, toteuttaa ja testata ohjelmisto. Tämä ei vähänkään suuremmassa järjestelmässä ole tietenkään yhden henkilön tehtävä, niin kuin ei edellisissäkään tehtävissä. Työnsä pohjaksi hän saa: Sovellusalueen edustajalta perustiedot ongelmasta ja ratkaisumallit "korkealla tasolla". Sovellusalueen lisäasiantuntijoilta algoritmeja tai muita vastaavia ohjeita. Tietokonesuunnittelijalta laitteiston rakenteen, muun muassa suorittimen mallin, muistien ja oheislaitteiden sijoittelun muistiavaruuteen ja oheislaitteiden ohjaustiedot (datalehdet ynnä muut sellaiset). Yrityksellä on usein oma sovelluskehyksensä tai useita sellaisia, ja ohjelmiston tekijän tulee sovittaa ohjelmistonsa näiden kehysten mukaan toteutettaviksi. Lisäksi on asioita, joita tulee koko ryhmän miettiä. Tällainen asia on esimerkiksi se, mitä tehdä sähkökatkoksessa tai jossain muussa virhetilanteessa.
16 26 Sulautettu ohjelmointi Edellisten pohjalta ohjelmistosuunnittelijan tulee arvioida tarvittavien ohjelmien koko ja suorittimen tehontarve tietokoneasiantuntijaa varten. Koska nämä tarpeet vaikuttavat siihen, mitä tietokonelaitteiston suunnittelija tekee, voidaan helposti havaita, että kyseessä on yhteistyössä tapahtuva järjestelmän määrittely. Vastaavanlaisia rajapintoja on kaikkialle, koska jotkin sinänsä järkevät ratkaisut voivat johtaa ohjelmallisesti mahdottomaan erityisesti reaaliaikaympäristössä tai hyvin vaikeasti ratkaistavaan tilanteeseen. Kaiken kaikkiaan ohjelmistojen tekijän on huolehdittava siitä, että muilta osapuolilta saatu määrittely riittää ohjelmien määrittelyyn ja toteutukseen. Järjestelmän kokonaiskuvan hahmottamiseksi sen kokonaismäärittelyn tulisi olla kattava, ja tähän on yleensä ohjelmistoasiantuntijalla parhaat työkalut. On tietenkin selvää, että määrittely on yhteistyötä, ja siitä vastaavan henkilön tulee olla sen, joka siihen parhaiten pystyy, riippumatta siitä, mikä hänen koulutustaustansa on. Ohjelmistosuunnittelija näkee ongelman lähinnä ohjelmointiongelmana, jossa laitteisto on musta laatikko ja LVI- ja automaatiopuoli (eli sovellusalue) kertoo ratkaistavan ongelman Suunnittelutyön eteneminen Suunnittelutyö etenee vaiheittain siten, että alussa lähdetään järjestelmän vaatimuksista. Erityisesti on huolehdittava, että sovellusalueen perusvaatimukset tulevat täytettyä. Tätä pohjaa voidaan sitten ideapalavereissa täydentää ja tarkentaa. Vaatimusten pohjalta syntyy sitten pohdintaa eri ratkaisuvaihtoehdoista. Esimerkkinä olevassa ilmastointijärjestelmässä voidaan miettiä järjestelmän ohjausta. Toteutetaanko tarvittavien mittatietojen kerääminen ja ohjausten antaminen erillisjohdotuksella vai kenties jollain väyläratkaisulla vai ehkäpä langattomasti? Esille tulevia näkökohtia voisivat olla esimerkiksi seuraavat: Sinänsä on aivan sama, miten tiedot kerätään, kunhan ne kerätään. Erillisjohdotusta on käytetty ennenkin, miksei siis nytkin. Erillisjohdotus tarvitsee keskusyksikköön päätelaitteen tai vastaavan joka mittauspistettä tai ohjauspistettä kohti. Väyläratkaisuja ei tarvitse tehdä alusta lähtien uudestaan, vaan niitä on saatavilla valmiina, esimerkiksi LON (Luku 14). Erillisjohdotus vie enemmän johtoa, mutta väyläratkaisu vaatii enemmän älykkyyttä siihen liitetyille laitteille. Kumpi on edullisempaa?
17 Sulautetut järjestelmät 27 Väyläratkaisua ei ole vielä käytetty paljon, eikä tekijöillä ole siitä kokemusta. Uskalletaanko se ottaa käyttöön? Tulevaisuus on kuitenkin väylän tai langattoman ratkaisun, joten ei kannata tehdä enää erillisjohdotuksella. Väylä- tai langaton ratkaisu on paljon helpompi skaalata. Mutta mikä väyläratkaisu otetaan? Entä jos valitsemme väärän? Talon valaistuksen ja muun sähkönjakelun ohjauksen voisi järjestää samalla väylällä, mikä tuo kokonaissäästöjä (ja yhden lisäasiantuntijan projektiin). Entä jos väylää ei johdoteta, vaan käytetään langatonta ratkaisua? Ohjelmallehan on yhdentekevää, miten tieto siirtyy yksiköiden välillä. Langaton vaihtoehto voitaisiin asentaa jälkikäteenkin, kun johdotusta ei tarvitse tehdä. Häiritseekö langaton järjestelmä jotain muuta järjestelmää tai päin vastoin? Lopullinen ratkaisu syntyy sitten yhdessä esitettyjen argumenttien pohjalta. Teknisten argumenttien lisäksi vaikuttaa päätökseen muun muassa ratkaisun taloudellisuus sekä tehtävän tuotteen arvoitu elinikä valitulla tekniikalla. Joskus myös käytettävissä oleva aika estää uuden tekniikan käyttöönoton, mikäli tämän tekniikan käyttö aiheuttaisi viivästymistä siihen kouluttautumisen tai muun vastaavan syyn takia Lisähuomioita Edelliset kuvaukset painottuivat hyvin voimakkaasti tietoteknisiin ongelmiin. Näiden lisäksi tulevat käyttöliittymiin ja turvallisuuteen liittyvät ongelmat: kuka voi ohjata ilmastointijärjestelmää ja miten? Lisäksi esimerkiksi laitteiston kotelointi voi varsinkin erityisympäristössä olla vaikeaa, ja siinä tarvitaan omaa osaamista. Vaikka teknisessä tilassa olevan ilmastointi- ja lämmitysjärjestelmän ulkonäkö ei todennäköisesti ole sen myynnin kannalta kovinkaan tärkeää, niin joissain muissa projekteissa tilanne voi olla täysin toinen. Mitä useammin laite on näkyvillä ja loppukäyttäjän suorassa ohjauksessa, sitä tärkeämpää on, että se miellyttää käyttäjää myös ulkoisilta ominaisuuksiltaan.
18 28 Sulautettu ohjelmointi 1.6 Sulautetut järjestelmät ja sulautettu ohjelmointi Sulautettujen järjestelmien toteutuksen yhteydessä sulautettu ohjelmointi on välttämätöntä. Toisaalta aina joskus sulautettua ohjelmointia tarvitaan myös muunlaisissa yhteyksissä, kuten vaikkapa pöytäkoneen näytönohjaimen kapasiteettia hyödynnettäessä tai laiteajuria tai käyttöjärjestelmän ydintä toteutettaessa. Tästä syystä tässä teoksessa ei rajoituta vain sulautettuihin järjestelmiin, vaan pyritään tasolle, jossa ohjelmistoteknisesti olennaisimmat seikat tulisivat ilmi, jotta teknisten yksityiskohtien soveltaminen erilaisissa tilanteissa on mahdollista tarpeen mukaan. Yhteisiä piirteitä sekä sulautetuille järjestelmille sekä edellä mainituille suunnittelutehtäville ovat ainakin seuraavat: Tarkkaan rajattu mahdollisuus käyttää muistia, ja ymmärrys siitä, miten paljon muistia käytetään. Ymmärrys siitä, mitä taustalla olevan laitteiston oletetaan tekevän. Huolellisuus suorituskyvyn kannalta olennaisten suunnitteluratkaisujen osalta, jopa siten, että useita erilaisia toteutuksia kokeillaan eri tilanteissa. Työkalut on yleensä jollain lailla erikoistettu tähän nimenomaiseen tehtävään. Ohjelmointitehtävät vaativat tyypillisesti ajastuksen ja aikaan sidonnaisten tapahtumien hallintaa. Rinnakkaiset suoritukset ovat tavallisia. Edellä esitetyt seikat muodostavat sulautetun ohjelmoinnin tärkeimmät vaatimukset. 1.7 Yhteenveto Sulautetussa järjestelmässä ohjelmisto ja laitteisto ovat kiinni toisissaan niin saumattomasti, ettei kumpikaan ole käyttökelpoinen ilman toista. Sulautetun järjestelmän suunnittelussa tarvitaan tyypillisesti useita erilaisia insinööritieteitä, ja sulautetun ohjelmiston toteutuksessa joudutaan usein yhdistämään eri alojen asiantuntijoiden vaatimukset. Sulautettu ohjelmointi, jota väistämättä tarvitaan sulautetun järjestelmän toteuttamisessa, mutta myös yleisemmin laitteistonläheisten ohjelmistoteknisten ongelmien ratkaisussa vaatii sisään-
19 Sulautetut järjestelmät 29 rakennetun rinnakkaisuuden, aikakriittisyyden, reaktiivisuuden, vikasietoisuuden ja yhä useammin myös hajautuksen huomioimista osana suunnittelua.
Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi
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
LisätiedotSulautettu ohjelmointi
Sulautettu ohjelmointi 1 "Esipainos" Hannu-Matti Järvinen Tommi Mikkonen Tampere 2010 2 Sulautettu ohjelmointi 1. Sulautetut järjestelmät... 11 1.1 Johdanto... 11 1.2 Sulautettujen järjestelmien ominaispiirteitä...14
LisätiedotOHJ-4301 Sulautettu Ohjelmointi
OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, TB 109 Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti suoritetut: Tentti Harjoitustyöt Harjoitustyöt 3
LisätiedotOhjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit
Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää
Lisätiedot9. Luento: Ohjelmistotyö. Tommi Mikkonen, tommi.mikkonen@tut.fi
9. Luento: Ohjelmistotyö Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Ristikäännös Testaus ja virheen jäljitys Yleensä Kehitysympäristössä Käyttöympäristössä Laitteiston testaus Iteratiivisesta
LisätiedotAlgoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
LisätiedotTietotekniikan koulutusohjelman suuntautumisvaihtoehdot
Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot 1. vuosi Perusopinnot 2. vuosi 3. vuosi ELEKTRONIIKAN SUUNNITTELU JA TESTAUS MOBIILI TIETOLIIKENNE OHJELMISTOJEN KEHITYS 4. vuosi Ohjelmistojen kehitys
LisätiedotHyvinkään Vuokra-Asunnot Oy: Lämmityksen ohjaus- ja seurantajärjestelmä
Hyvinkään Vuokra-Asunnot Oy: Lämmityksen ohjaus- ja seurantajärjestelmä Osallistumishakemukseen liittyviä kysymyksiä saapui määräaikaan 15.11.2014 klo 12.00 mennessä 18 kappaletta. Ohessa on yhteenveto
LisätiedotOhjelmiston toteutussuunnitelma
Ohjelmiston toteutussuunnitelma Ryhmän nimi: Tekijä: Toimeksiantaja: Toimeksiantajan edustaja: Muutospäivämäärä: Versio: Katselmoitu (pvm.): 1 1 Johdanto Tämä luku antaa yleiskuvan koko suunnitteludokumentista,
LisätiedotConcurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Lisätiedot5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi
5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden
LisätiedotSOVELLUSALUEEN KUVAUS
Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu SOVELLUSALUEEN KUVAUS LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 2.1 Tila: hyväksytty Päivämäärä: 12.12.2000
Lisätiedotohjelman arkkitehtuurista.
1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä
LisätiedotArkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
LisätiedotSÄHKÖTEKNIIKAN KOULUTUSOHJELMA 2010
SÄHKÖTEKNIIKAN KOULUTUSOHJELMA 2010 Sähkötekniikan koulutusohjelman toimintaympäristö ja osaamistavoitteet Sähkötekniikan koulutusohjelma on voimakkaasti poikkialainen ja antaa mahdollisuuden perehtyä
LisätiedotOHJELMISTOKEHITYS -suuntautumisvaihtoehto
OHJELMISTOKEHITYS -suuntautumisvaihtoehto Suuntautumisvaihtoehdon esittely 1. vuoden opiskelijoille Kari Laitinen www.oamk.fi/~karil/opetus.html Ohjelmistokehitys -opintosuunnan valitsevista henkilöistä
LisätiedotOHJ-4301 Sulautettu Ohjelmointi
OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) /~sulo/) 5op, to 12-14, 14, TB 109 Tommi Mikkonen, tommi.mikkonen@tut.fi Arto Salminen, arto.salminen@tut.fi Läpäisyvaatimukset Hyväksytysti
LisätiedotSulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.
Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Web Services. Web Services
Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotOhjelmointi 1. Kumppanit
Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5
LisätiedotTestaajan eettiset periaatteet
Testaajan eettiset periaatteet Eettiset periaatteet ovat nousseet esille monien ammattiryhmien toiminnan yhteydessä. Tämä kalvosarja esittelee 2010-luvun testaajan työssä sovellettavia eettisiä periaatteita.
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
LisätiedotMuistitko soittaa asiakkaallesi?
webcrm Finland 1 webcrm Finland Muistitko soittaa asiakkaallesi? Riippumatta siitä, oletko myyntipäällikkö, markkinoija vai työskenteletkö HR tehtävissä, voit käyttää CRM ratkaisua erilaisiin tarpeisiin.
LisätiedotOhjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
LisätiedotS11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma
AS-0.3200 Automaatio- ja systeemitekniikan projektityöt S11-04 Kompaktikamerat stereokamerajärjestelmässä Projektisuunnitelma Ari-Matti Reinsalo Anssi Niemi 28.1.2011 Projektityön tavoite Projektityössä
LisätiedotRobottialustan instrumentointi ja käyttöönotto
Niilo Heinonen Hannu Häyrinen Matias Katajamäki Tuomas Pylvänen Robottialustan instrumentointi ja käyttöönotto AS-0.3200 Automaatio- ja systeemitekniikan projektityöt 1. Projektin tavoite Projektin puitteissa
LisätiedotTOIMINNALLINEN MÄÄRITTELY MS
TOIMINNALLINEN MÄÄRITTELY 11.11.2015 MS YLEISTÄ 1/2 jäsennelty etenee yleiskuvauksesta yksityiskohtiin kieliasultaan selkeä kuvaa myös tulevan järjestelmän ympäristöä tarpeellisella tarkkuudella kuvaa
LisätiedotIntegrointialgoritmit molekyylidynamiikassa
Integrointialgoritmit molekyylidynamiikassa Markus Ovaska 28.11.2008 Esitelmän kulku MD-simulaatiot yleisesti Integrointialgoritmit: mitä integroidaan ja miten? Esimerkkejä eri algoritmeista Hyvän algoritmin
Lisätiedot14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,
14. Luento: Kohti hajautettuja sulautettuja järjestelmiä Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Johdanto Hajautettujen järjestelmien väyliä LON CAN Pienen laitteen sisäinen hajautus OpenCL Network
LisätiedotTietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu
Tietokoneen muisti nyt ja tulevaisuudessa Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu Yleisesti Muisti on yksi keskeisimmistä tietokoneen komponenteista Random Access Memory on yleistynyt
LisätiedotHankinnan problematiikka
Antti Kirmanen Hankinnan problematiikka Toimittajan näkökulma Asiakkaan näkökulma www.sulava.com www.facebook.com/sulavaoy 2 1. Ristiriita www.sulava.com www.facebook.com/sulavaoy 3 Asiakas haluaa Onnistuneen
LisätiedotTIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?
Miksi moniprosessorijärjestelmä? Laskentaa voidaan hajauttaa useammille prosessoreille nopeuden, modulaarisuuden ja luotettavuuden vaatimuksesta tai hajauttaminen voi helpottaa ohjelmointia. Voi olla järkevää
LisätiedotOngelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,
LisätiedotSoftware engineering
Software engineering Alkuperäinen määritelmä: Naur P., Randell B. (eds.): Software Engineering: A Report on A Conference Sponsored by the NATO Science Committee, NATO, 1968: The establishment and use of
LisätiedotAlgoritmit. Ohjelman tekemisen hahmottamisessa käytetään
Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.
LisätiedotAineiston luovuttaminen tilaajalle KSE13 Tietomallit ja sähköinen aineisto. Matti Kiiskinen 12.2.2014/Telu-koulutus
Aineiston luovuttaminen tilaajalle KSE13 Tietomallit ja sähköinen aineisto Matti Kiiskinen 12.2.2014/Telu-koulutus KSE 2013, keskeiset muutokset liittyen konsulttityön luovutukseen Asiakirjat -> Aineisto
LisätiedotUudelleenkäytön jako kahteen
Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta
LisätiedotDigikamera. Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle
TEEMA 1 Tietokoneen peruskäyttö Digikamera Perustietoa digikamerasta ja kuvien siirtämisestä tietokoneelle Tämä tietopaketti hahmottaa lukijalle, millä tavalla kuvat voidaan siirtää kamerakännykästä tai
LisätiedotInternet-pohjainen ryhmätyöympäristö
Menetelmäohje Internet-pohjainen ryhmätyöympäristö Riku Hurmalainen, 24.3.2002 Sisällysluettelo 1. Johdanto...3 2. Termit...4 3. Toteutus...5 3.1. Yleiskuvaus...5 3.2. Tekninen ratkaisu...5 3.3. Tietoturva...6
LisätiedotPOHJOIS-KARJALAN AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma. Mikael Partanen VAATIMUSMÄÄRITTELYT
POHJOIS-KARJALAN AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma Mikael Partanen VAATIMUSMÄÄRITTELYT Opinnäytetyö Syyskuu 2011 SISÄLTÖ 1 JOHDANTO... 3 2 KÄSITTEET... 3 2.1 Kiinteistöautomaatio... 3 2.2
LisätiedotCHERMUG-pelien käyttö opiskelijoiden keskuudessa vaihtoehtoisen tutkimustavan oppimiseksi
Tiivistelmä CHERMUG-projekti on kansainvälinen konsortio, jossa on kumppaneita usealta eri alalta. Yksi tärkeimmistä asioista on luoda yhteinen lähtökohta, jotta voimme kommunikoida ja auttaa projektin
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat
Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
Lisätiedotkertaa samat järjestykseen lukkarissa.
Opetuksen toistuva varaus ryhmällee TY10S11 - Tästä tulee pitkä esimerkki, sillä pyrin nyt melko yksityiskohtaisesti kuvaamaan sen osion mikä syntyy tiedon hakemisesta vuosisuunnittelusta, sen tiedon kirjaamiseen
LisätiedotTIETOTEKNIIKAN KOULUTUSOHJELMA
TIETOTEKNIIKAN KOULUTUSOHJELMA Tietotekniikan koulutusohjelman toimintaympäristö ja osaamistavoitteet Tietotekniikan koulutusohjelmasta valmistuneet insinöörit sijoittuvat suunnittelu-, ohjelmointi-, esimies-,
Lisätiedot2 Konekieli, aliohjelmat, keskeytykset
ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä
LisätiedotADE Oy Hämeen valtatie 144 20540 TURKU. Tuotekonfigurointi. ADE Oy Ly Tunnus: 1626957-3
Tuotekonfigurointi ADE Oy lyhyesti Asiakkaiden tarpeisiin suunnattua innovatiivista ja toimivaa ohjelmisto- ja 3d animaatiopalvelua. Ade Oy on toteuttanut vuodesta 2000 alkaen haastavaa interaktiivista
Lisätiedot3. Muuttujat ja operaatiot 3.1
3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.
LisätiedotKÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014. Käyttäjätutkimus ja käsitteellinen suunnittelu. Järjestelmän nimi. versio 1.0
KÄYTTÄJÄKOKEMUKSEN PERUSTEET, TIE-04100, SYKSY 2014 Käyttäjätutkimus ja käsitteellinen suunnittelu Järjestelmän nimi versio 1.0 Jakelu: Tulostettu: 201543 Samuli Hirvonen samuli.hirvonen@student.tut.fi
LisätiedotMistä on kyse ja mitä hyötyä ne tuovat?
Pilvipalvelut Mistä on kyse ja mitä hyötyä ne tuovat? Pilvipalvelut - Mistä on kyse ja mitä hyötyä ne tuovat? Suurin osa kaikista uusista it-sovelluksista ja -ohjelmistoista toteutetaan pilvipalveluna.
LisätiedotSoftware product lines
Thomas Gustafsson, Henrik Heikkilä Software product lines Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Asiantuntijateksti 17.11.2013 Sisällys 1 Johdanto 1 2 Software product
LisätiedotPILETTI. Tekninen vaatimusmäärittely. v. 0.2
PILETTI Tekninen vaatimusmäärittely v. 0.2 2 Sisällysluettelo 1. Yleiskuvaus... 3 2. Taustajärjestelmä... 4 3. Palvelupisteiden sovellus... 4 4. Korttisovellus ja turvaratkaisu... 4 5. Rajapinnat... 5
LisätiedotCT50A2602 Käyttöjärjestelmät Seminaarityö. Tietokoneen muisti nyt ja tulevaisuudessa
CT50A2602 Käyttöjärjestelmät Seminaarityö Tietokoneen muisti nyt ja tulevaisuudessa Jyrki Eurén Raimo Asikainen Janne Laitinen Teppo Lapinkoski Manu Toivanen Pasi Ruuth Johdanto Taustaa Työn taustana ryhmän
LisätiedotGreen care erottautumistekijänä kunnallisissa hankinnoissa
Green care erottautumistekijänä kunnallisissa hankinnoissa Kerrotaan, että tuhatjalkainen osasi aina kävellä, kunnes siltä kysyttiin, mitä jalkaa se liikuttaa ensimmäisenä. Jarno Väisänen Tampere 110909
LisätiedotProjektityö
Projektityö 21.10.2005 Projektisuunnitelma Työn ositus Projektisuunnitelman sisältö Kurssin luennoitsija ja projektiryhmien ohjaaja: Timo Poranen (email: tp@cs.uta.fi, työhuone: B1042) Kurssin kotisivut:
LisätiedotTietojärjestelmien haasteet SOTE-uudistuksessa. apulaiskaupunginjohtaja Pekka Utriainen, Jyväskylän kaupunki 21.5.2014
Tietojärjestelmien haasteet SOTE-uudistuksessa apulaiskaupunginjohtaja Pekka Utriainen, Jyväskylän kaupunki 21.5.2014 19.5.2014 Tavoitteet Ammattilaiset uuden sukupolven atk järjestelmälle - voisko tämän
LisätiedotAS-0.3200 Automaatio- ja systeemitekniikan projektityöt
Teknillinen korkeakoulu Sähkö- ja tietoliikennetekniikan osasto AS-0.3200 Automaatio- ja systeemitekniikan projektityöt CeilBot 2DoF camera actuator Antti Riksman Sisältö 1 CeilBot 3 2 Projektin tämän
LisätiedotIT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT
IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.
LisätiedotSisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.
3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen
LisätiedotSimulaattoriavusteinen ohjelmistotestaus työkoneympäristössä. Simo Tauriainen
Simulaattoriavusteinen ohjelmistotestaus työkoneympäristössä Simo Tauriainen www.ponsse.com 25.8.2011 Ponsse-konserni Ponsse Oyj on tavaralajimenetelmän metsäkoneiden myyntiin, tuotantoon, huoltoon ja
LisätiedotToinen harjoitustyö. ASCII-grafiikkaa
Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita
LisätiedotSähköisten viranomaisaineistojen arkistoinnin ja säilyttämisen palvelukokonaisuus
Luo / Muokkaa Lähetä Lausunnonantajat Yhteenveto Sähköisten viranomaisaineistojen arkistoinnin ja säilyttämisen palvelukokonaisuus Sähköinen arkistoinnin palvelukokonaisuus Lausunnonantajia: 1 Puollatko
LisätiedotLinuxissa uusi elämä 1
17.06.19 Linuxissa uusi elämä 1 Linux on hyvä vaihtoehto Windowsille Uusiin tai vanhempiin tietokoneisiin Miksi käyttäisin Linuxia Tekniikan Maailman Linux vinkki Siirtyisinkö Linuxiin? 17.06.19 Linuxissa
LisätiedotKuvitettu YVA- opas 2018
Kuvitettu YVA- opas 2018 Oppaan sisältö I Perusasiat YVA-menettelystä s. 4 II Vähän täsmennystä tekijöistä ja osallistumisesta s. 8 III YVA-menettelyn sisällöt s. 13 IV Arvioinnin tulokset ja kuinka niihin
LisätiedotPilviratkaisut ovat entistä suositumpia. Mutta mikä on oikea ratkaisu sinun maailmassasi? Lähde matkalle läpi avaruuden, ajaan ja maalaisjärjen
Pilviratkaisut ovat entistä suositumpia. Mutta mikä on oikea ratkaisu sinun maailmassasi? Lähde matkalle läpi avaruuden, ajaan ja maalaisjärjen Verkkoratkaisujen tarjoaminen pk-yrityksille muistuttaa hieman
Lisätiedot7.4 Sormenjälkitekniikka
7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan
LisätiedotENERGIA ILTA IISOY / Scandic Station 23.5.2013
ENERGIA ILTA IISOY / Scandic Station 23.5.2013 Energia?! Kiinteistön käyttäjät sekä tekniset laitteistot käyttävät ja kuluttavat energiaa Jokin laite säätää ja ohjaa tätä kulutusta. Ohjauslaitteet keskitetty
Lisätiedotetunimi, sukunimi ja opiskelijanumero ja näillä
Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi
LisätiedotTIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann
LisätiedotS14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen
S14 09 Sisäpeltorobotti AS 0.3200 Automaatio ja systeemitekniikan projektityöt Antti Kulpakko, Mikko Ikonen 1. Projektin tavoitteet Projektin tavoitteena on toteuttaa ohjelmisto sisäpeltorobottiin seuraavien
LisätiedotTietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä
Tietojenkäsittelyn perusteet 2 Lisää käyttöjärjestelmistä 2011-02-09 Leena Ikonen 1 Systeemiohjelmat Systeemiohjelmiin kuuluvat Kääntäjät ja tulkit (+debuggerit) Käyttöjärjestelmä Linkittäjät Lataajat
LisätiedotVirtuoosi POS-järjestelmien joukossa
Virtuoosi POS-järjestelmien joukossa Menestyvä liiketoiminta muistuttaa monin osin huippuunsa viritettyä orkesteria jossa eri osien sopusuhtainen vuorovaikutus ja integrointi luovat sykähdyttävän esityksen.
LisätiedotAlgoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
LisätiedotTutkintovaatimukset suoraan DI-vaiheeseen valituille
1 / 10 Tutkintovaatimukset suoraan DI-vaiheeseen valituille Tutkintovaatimukset määräytyvät suoraan DI-vaiheeseen valituilla opiskelijoilla pääsääntöisesti samoin kuin muillakin DI-tutkintoa suorittavilla
LisätiedotTIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ
aaro.leikari@hotmail.com TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ 25.01.2016 SISÄLLYS 1. Käyttöjärjestelmän asentaminen... 1 1.1 Windowsin asettamia laitteistovaatimuksia... 1 1.2 Windowsin asentaminen...
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet
Järjestelmäarkkitehtuuri (TK081702) Integraation tavoitteita Lähtökohta Web-palvelut Asiakasrekisteri ERP, Tuotannon ohjaus Tuotanto Myynti Intranet Extranet? CRM Johdon tuki Henkilöstö Kirjanpito Palkanlaskenta
LisätiedotKONEAUTOMAATION LAATU JA TURVALLISUUS. 4.6.2015 Marko Varpunen
KONEAUTOMAATION LAATU JA TURVALLISUUS 4.6.2015 Marko Varpunen TLJ ja automaatio Rautatie, metro, teollisuus-laitokset, kaivoskoneet, vesi, n. 90 henkeä Mikkeli Turvallisuusjohtaminen konsultointi riskienarviointi
Lisätiedot2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)
Approbatur 3, demo, ratkaisut Sovitaan, että 0 ei ole luonnollinen luku. Tällöin oletusta n 0 ei tarvitse toistaa alla olevissa ratkaisuissa. Se, pidetäänkö nollaa luonnollisena lukuna vai ei, vaihtelee
Lisätiedot3. Luento: Muistin hallinta. Tommi Mikkonen,
3. Luento: Muistin hallinta Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Erityyppiset muistit Ohjelman sijoittelu muistiin Ohjelman sisäinen muistinhallinta Muistinhallintayksikkö Välimuisti Yhteenveto
LisätiedotLinux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä
Linux 00 Keskeiset piirteet Tux-pingviinin kuva: Larry Ewing, Simon Budig ja Anja Gerwinski Kysymyksiä 1. Mikä Linux on? 2. Kuinka Linux syntyi ja kehittyy? 3. Mitkä ovat Linuxin vahvuudet? 2 1 Linux on
LisätiedotHarjoitustehtävät ja ratkaisut viikolle 48
Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin
LisätiedotS12-11. Portaalinosturi AS-0.3200. Projektisuunnitelma 2012. Oleg Kovalev
S12-11 Portaalinosturi AS-0.3200 Projektisuunnitelma 2012 Oleg Kovalev Sisällys 1. Työn tavoite... 3 2. Projektin osa-alueet... 3 2.1. Suunnittelu... 3 2.2. Komponenttien hankinta... 3 2.3. Valmistus...
LisätiedotVirtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).
1 Virtualisoinnin avulla voidaan purkaa suora linkki suoritettavan sovelluksen (tai käyttöjärjestelmän tms.) ja sitä suorittavan laitteiston välillä. Näin saavutetaan joustavuutta laitteiston käytössä.
LisätiedotLuento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento
LisätiedotS11-09 Control System for an. Autonomous Household Robot Platform
S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on
LisätiedotRosemount 3051S sähköiset ERS-anturit
sähköiset ERS-anturit Uudentasoiset mittausratkaisut erityiskohteisiin Uusi ratkaisu vanhaan ongelmaan Kaikkialta löytyy mittauksia, joiden luotettava toiminta edellyttää sekä aikaa että voimavaroja. Tyypillisiä
LisätiedotTIETOTURVALLISUUDESTA
TIETOTURVALLISUUDESTA Tietoturvallisuus riippuu monista asioista. Tärkein niistä on käyttäjä itse! Käyttäjä voi toimia turvallisesti tai turvattomasti Tervettä harkintaa tarvitaan erityisesti Internetin
LisätiedotSuunnitteluautomaatio
1 Suunnitteluautomaatio Prof. Jarmo Takala Tampereen teknillinen yliopisto Digitaali- ja tietokonetekniikan laitos 2 IC-teknologian tarjoamat mahdollisuudet IC-teknologian kehittyminen on mahdollistanut
LisätiedotKehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!
Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia! YLEISTÄ FORMAALEISTA
LisätiedotLuento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotKäyttöjärjestelmät: prosessit
Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä
LisätiedotTietojärjestelmän osat
Analyysi Yleistä analyysistä Mitä ohjelmiston on tehtävä? Analyysin ja suunnittelun raja on usein hämärä Ei-tekninen näkökulma asiakkaalle näkyvien pääkomponenttien tasolla Tietojärjestelmän osat Laitteisto
LisätiedotSoft QA. Vaatimusten muutostenhallinta. Ongelma
Vaatimusten muutostenhallinta Ongelma Muutostenhallinta on usein vaatimustenhallinnan Akilleen kantapää. Projektien alkaessa ensimmäiset vaatimukset kootaan ja dokumentoidaan, mutta usein vaatimuksia ei
Lisätiedot$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä
$$$ Raha ratkaisee On vaara rakastua tekniikkaan, myös asiakkailla Kaikki pitää pystyä perustelemaan taloudellisesti Projektin toteutus yleensä -> voidaan jättää toteuttamatta, jos ei maksa itseään takaisin
LisätiedotA11-02 Infrapunasuodinautomatiikka kameralle
A11-02 Infrapunasuodinautomatiikka kameralle Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Lassi Seppälä Johan Dahl Sisällysluettelo Sisällysluettelo 1. Projektityön tavoite
LisätiedotParasta ammunnanharjoitteluun
Parasta ammunnanharjoitteluun Edut Objektiivinen suorituskykyanalyysi Tarkka mittaus Kompakti, kevyt ja helppokäyttöinen Yleiskiinnike useimpiin urheiluaseisiin Helppo kohdistus Todellinen ammuntaetäisyys
LisätiedotSIMULOINTIYMPÄRISTÖJEN SOVELTAMINEN OPETUKSESSA SIMULOINNILLA TUOTANTOA KEHITTÄMÄÄN-SEMINAARI TIMO SUVELA
SOVELTAMINEN OPETUKSESSA SIMULOINNILLA TUOTANTOA KEHITTÄMÄÄN-SEMINAARI 2.12. TIMO SUVELA KUKA OLEN? Timo Suvela lehtori, sähkö- ja automaatiotekniikka (timo.suvela@samk.fi, 044-7103275) Nykyisyys SAMK:iin
Lisätiedot+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain
Jaollisuustestejä (matematiikan mestariluokka, 7.11.2009, ohjattujen harjoitusten lopputuloslappu) Huom! Nämä eivät tietenkään ole ainoita jaollisuussääntöjä; ovatpahan vain hyödyllisiä ja ainakin osittain
LisätiedotLIITE. asiakirjaan. komission delegoitu asetus
EUROOPAN KOMISSIO Bryssel 12.10.2015 C(2015) 6823 final ANNEX 1 PART 6/11 LIITE asiakirjaan komission delegoitu asetus kaksikäyttötuotteiden vientiä, siirtoa, välitystä ja kauttakulkua koskevan yhteisön
Lisätiedot