2. Laitteistorajapinta

Koko: px
Aloita esitys sivulta:

Download "2. Laitteistorajapinta"

Transkriptio

1 30 Sulautettu ohjelmointi 2. Laitteistorajapinta Tämä luku esittelee sulautetuissa järjestelmissä käytettyjen tietokoneiden arkkitehtuuria. Ylivoimaisesti yleisin arkkitehtuuri on von Neumann -arkkitehtuuri, mutta varsinkin erityistarkoituksiin tehdyissä suorittimissa arkkitehtuuri voi olla jokin toinenkin (yleensä niin sanottu Harvard-arkkitehtuuri), joka sopii paremmin laitteen toteuttamiseen joko hintansa tai ominaisuuksiensa takia. Tässä yhteydessä ei käydä läpi suorittimien konekieliä, vaan lähinnä rekisterirakenteita ja keskeytysjärjestelmää. Symbolinen konekoodi ja tiedon esitysmuodot oletetaan tunnetuksi. Nykyään ovat sulautetuissa järjestelmissä hyvin tärkeässä osassa niin sanotut mikrokontrollerit, joissa on yhdistetty (tavallisesti pienehkö) suoritin ja yleisimmät oheislaitteet. Näiden erityispiirteisiin kiinnitetään jonkin verran huomiota. 2.1 Tyypillinen sulautetun järjestelmän suoritin Pöytätietokoneissa ja palvelimissa on käytännössä aina 32- tai 64-bittiset suorittimet. Myös sulautetuissa järjestelmissä on suuntaus tähän suuntaan, mutta hämmästyttävän suuri osuus uusistakin järjestelmistä tehdään pienemmillä suorittimilla. Tosin niillä tehtävät järjestelmät ovat sitten pieniä. Muutosta ja eri suorittimien osuutta kuvaa taulukko 2.1. Valitettavasti uudempia tietoja ei juuri ole, mutta nämä luvut muistuttavat siitä, että vanhoissa, jo käytössä olevissa järjestelmissä pienten suorittimien osuus on taulukon lukujen mukainen, joten ylläpitotyössä

2 Laitteistorajapinta 31 ja järjestelmien kehittämisessä ne tulevat olemaan vielä pitkään käytössä. Taulukko 2.1: Uusissa sulautetuissa järjestelmissä käytettävät suorittimet (pahoittelut vanhan tiedon vuoksi, mutta syystä tai toisesta luotettavaa tuoreempaa tietoa ei tunnu olevan saatavilla). Suorittimen bittisyys Osuus Osuus , muu 3 3,5 Sulautettujen järjestelmien keskeistä osaa koko tietoteollisuudessa korostanee se, että 98 % kaikista suorittimista valmistetaan sulautettuun käyttöön (tieto vuodelta 2009) Yleinen koneiden arkkitehtuuri Yleisin tietokonearkkitehtuuri on traditionaalinen von Neumann -arkkitehtuuri keksijänsä unkarilaisen Johann (John) von Neumannin mukaan. Tämän arkkitehtuurin mukaan keskusyksikkö käsittelee muistissa olevan ohjelman käskyjen mukaisesti muistissa olevaa dataa. Muistissa olevasta bittikuviosta ei voi päätellä, onko se käsky vai jotain muuta: tulkinnan ratkaisee se, miten tietoa käsitellään. Tämä ominaisuus itse asiassa mahdollistaa kääntäjän (ja itseään muuntavan ohjelman) teon: se mikä vielä äsken oli dataa (eli kääntäjän tuottama muistiin talletettu lukusarja), muuttuukin käskyiksi sitä suoritettaessa. Vaikka von Neumann -arkkitehtuuri on vallitseva, se ei ole ainoa mahdollinen. Monissa erikoissuorittimissa erityisesti signaalisuorittimissa on käytössä niin sanottu Harvard-arkkitehtuuri. Tässä arkkitehtuurissa ohjelma- ja datamuistit ovat erillään toisistaan, ja niiden sanan- 2.

3 32 Sulautettu ohjelmointi ALU Rekisterit N Ohjaus Muisti Kuva 2.1 Yksinkertaisen koneen kaaviokuva Suoritin pituuskin voi olla eri. Ratkaisulla on kierretään von Neumann -arkkitehtuurin pääpullonkaulaa eli suorittimen ja muistin välistä tiedonsiirtoa. Ulkoisilla muisteilla tämä johtaisi suureen määrään ulkoisia pinnejä, ellei väyliä multipleksoida. Tämä taas hävittäisi erillisten muistien hyödyt, joten ei liene yllätys, että näissä suorittimissa on yleensä sisäistä muistia. Vaikka tämä ero arkkitehtuurissa on periaatteessa iso, se ei käytännössä näy ohjelmoijalle kuin hyvin harvoissa tilanteissa, joissa ohjelmoija joutuu esimerkiksi ottamaan huomioon sisäisen muistin koon ylimääräisenä rajoitteena ohjelmaa rakennettaessa. Toinen esimerkkitilanne, jossa erot saattavat näkyä, on energiankulutukseen liittyvät toteutusyksityiskohdat, joilla voi olla paljonkin merkitystä rakennettaessa akkukäyttöistä laitetta. Pienen koneen rakenteen kaaviokuva on kuvassa 2.1. Koneen suorittimessa on ohjauslogiikka, joka ohjaa koko suorittimen toimintaa, aritmeettis looginen yksikkö (ALU), joka huolehtii varsinaisista laskutoimituksista sekä jokin määrä rekistereitä, eli suorittimen sisäisiä nopeita muistipaikkoja. Rekisterit voivat olla yleiskäyttöisiä tai johonkin tiettyyn tarkoitukseen varattuja; esimerkiksi erityinen ohjelmalaskuri (PC, program counter, myös nimellä käskynosoitin, IP, instruction pointer) osoittaa seuraavaksi suoritettavaa käskyä. Koska laitteessa ei ole kuin yksi muisti, se edustaa von Neumann -arkkitehtuuria, sillä muistista haettu tieto voidaan joko käsitellä datana tai ohjelmana. Aritmeettis-looginen yksikkö saa lähtötietonsa joko muistista tai rekisteristä. Aina arkkitehtuuri ei salli suoraan keskusmuistiin viittausta, vaan varsinkin pienemmissä tai RISC-suorittimissa käskyjen lähtöja tulostietojen tulee olla rekistereissä. Tällaisesta arkkitehtuurista

4 Laitteistorajapinta 33 käytetään myös nimitystä load-and-store-arkkitehtuuri. Nimi viittaa siihen, että tarvitaan erityiset käskyt siirtämään dataa muistista rekisteriin (load) tai päinvastoin (store). Mikäli vain jokin tietty rekisteri voi toimia tällaisena lähtö- ja (erityisesti) tulosrekisterinä, sitä sanotaan akuksi. Joskus, melko hämäävästi, akkuja voi olla useampiakin, jolloin rekisterin ja akun välinen ero hämärtyy. Lisäksi jossain suorittimissa on erikseen data- ja indeksirekisterit, joissain taas rekisterit ovat yleisrekistereitä, eli niitä voi käyttää sekä osoitteiden tallentamiseen ja indeksointiin että datan käsittelyyn. 2.3 Suorittimen tilat ja rekisterit Tärkein laitteistonläheiseen ohjelmointiin liittyvä asia, joka sulautetuissa järjestelmissä tulee vastaan symbolisen konekoodin lisäksi, on keskeytysjärjestelmä ja sen hallinta. Siihen liittyvät usein myös suorittimen erilaiset tilat ja rekisterisarjat. Käymme niitä läpi lyhyesti seuraavassa. Suorittimilla on usein kaksi erillistä tilaa: niin sanottu käyttäjän tila (user) ja käyttöjärjestelmän tila (etuoikeutettu tila, supervisor mode, kernel mode). Jälkimmäisessä tilassa suoritin voi toteuttaa konekäskyjä, jotka ovat kiellettyjä käyttäjän tilassa. Mekanismin tarkoituksena on estää eri prosesseja sotkemasta toistensa tai käyttöjärjestelmän toimintaa. Pienissä sulautetuissa järjestelmissä ei oikeuksien erilaisuus ole useinkaan tarpeen tai edes haluttua. Tämä johtuu siitä, että järjestelmät ovat luonteeltaan suljettuja, eli järjestelmään ei käyttäjä tuo omia ohjelmiaan, vaan koko järjestelmä on sen toimittajan vastuulla ja hallinnassa. Vaikka jotkin ympäristöt kuten esimerkiksi jo edellä mainittu Symbian-ympäristö sallivat kolmannenkin osapuolen ohjelmistojen käytön järjestelmässä, tällainen ratkaisu on yleisesti ottaen harvinainen. Niinpä tilajärjestelmäkään ei ole sulautetuissa järjestelmissä välttämätön ominaisuus, eikä sitä aina hyödynnetä muistinkulutukseen ja suorituskykyyn liittyvistä syistä. Tilajärjestelmään liittyy oikeuksien lisäksi myös mahdollisuus useampaan rekisterisarjaan. Esimerkiksi käyttäjän tilassa voi olla käytössä toiset rekisterit kuin käyttöjärjestelmän tilassa. Tästä ominaisuudesta on hyötyä nopean keskeytysvasteen aikaansaamisessa. Jos järjestelmässä on vain yksi tila, on aina ennen varsinaista keskeytyskäsittelyä talletettava keskeytyskäsittelyssä tarvittavat rekisterit. Mikäli keskeytys vaihtaa tilaa, ja tilanvaihto vaihtaa rekisterisarjan, voidaan keskeytys käsitellä tallettamatta käyttäjätilan rekistereitä.

5 34 Sulautettu ohjelmointi Tämä ajatus voi johtaa monitasoiseen tilajärjestelmään. Esimerkiksi ARM-suorittimessa, jota käytetään laajasti erilaisissa mobiililaitteissa, on peräti seitsemän tilaa. Joissain suorittimissa rekisterisarjat ovat kaikki täydellisiä, eli joka sarjassa on kopiot kaikista rekistereistä. Koska rekistereitä on nykykoneissa usein runsaasti, riittää käytännössä moniin tarpeisiin se, että vain osa rekistereistä on monistettu. Yksinkertaisimmillaan tämä voi olla pelkkä pinorekisteri tai tilasana ja ohjelmalaskuri. Samankaan suorittimien kaikki tilat eivät välttämättä saa samansuuruista "omaa" rekisterisarjaa, vaan eri tiloille on arvioitu erilaiset tarpeet. Aiemmin mainitussa ARM-suorittimessa on tehty juuri näin. 2.4 Keskeytysjärjestelmä Keskeytys on laitteistonläheisen ohjelmoinnin keskeinen käsite. Keskeytys siirtää ohjelman suorituksen jatkumaan edeltä määrätystä muistipaikasta, jota kutsutaan keskeytyskäsittelijäksi. Erilaisten ympäristöjen keskeytysjärjestelmät poikkeavat toisistaan, mutta perusperiaatteet ovat melko samantapaisia. Keskeytykseen liittyy kiinteästi keskeytysvektorin käsite, joka yksinkertaisuudessaan muodostuu keskeytyskäsittelijöiden muistiosoitteista Keskeytyksistä yleensä Keskeytyksen aiheuttaja voi olla virheellinen muistiviite tai käsky, ohjelmoitu keskeytys eli käyttöjärjestelmän palvelupyyntö tai ulkoinen, oheislaitteen aiheuttama keskeytys. Neljäs keskeytyksen muoto on käynnistys, joka ei tietenkään keskeytä mitään normaalioloissa, vaan huolehtii siitä, että suoritin aloittaa suorituksen järkevästä paikasta. Käynnistyksestä on usein kaksi versiota: niin sanottu kylmäkäynnistys ja käynnistys lämpimänä. Näihin palataan myöhemmin. Ohjelmavirhekeskeytys voi tulla, mikäli viitataan olemattomaan tai virheelliseen muistiosoitteeseen, yritetään suorittaa virheellistä (tai olematonta) käskyä tai yritetään suorittaa etuoikeutettua käskyä, vaikka suoritin on käyttäjän tilassa. Läsnäolokeskeytys virtuaalimuistin yhteydessä voidaan lukea tähän ryhmään, koska vasta ytimen tietorakenteista lopullisesti selviää, onko kyseessä laiton osoite vai sivu, jota ei ole keskusmuistissa 3. Ohjelmavirhekeskeytykseen reagoidaan heti sen tul- 3. Koska sulautetuissa järjestelmissä ei yleensä ole virtuaalimuistia, läsnäolokeskeytystä ei käsitellä tämän enempää.

6 Laitteistorajapinta 35 lessa, eikä muiden keskeytysten tapaan vasta sitten, kun käsky on suoritettu loppuun. Koska sulautetuissa järjestelmissä ohjelmistojen pitäisi olla valmiiksi testattuja, ohjelmavirhekeskeytys on aina vakavan virheen merkki. Sen tullessa on usein vaikeaa jatkaa toimintaa järkevästi, ja usein sen tuleminen aiheuttaa järjestelmän käynnistämisen uudestaan tai ainakin virheen aiheuttaneen prosessin poistamisen järjestelmästä. Ohjelmoitu keskeytys on yleensä palvelupyyntö käyttöjärjestelmälle. Vaikka reaaliaikajärjestelmissä pyritään tehokkuussyistä kutsut tekemään aliohjelmakutsuina, on ohjelmallinen keskeytys usein nopein tapa tallettaa prosessin ympäristö eli suorittimen sisäiset muistipaikat (suorittimen tilasana, ohjelmalaskuri, rekisterit ja niin edelleen). Mikäli järjestelmässä on käytössä etuoikeutettu tila (supervisor, executive, kernel) ja käyttäjän tila (user), vain ohjelmallisella keskeytyksellä voidaan siirtyä käyttäjän tilasta etuoikeutettuun tilaan. Ulkoinen keskeytys tulee suorittimen ulkopuoliselta oheislaitteelta. Määritelmästä huolimatta mikrokontrollerien sisäiset oheislaitteet lasketaan tähän luokkaan. Laite generoi keskeytyksen, kun se tarvitsee suorittimen "huomiota". Käsittelemme tätä tapausta hieman tarkemmin seuraavissa kohdissa. Kun suoritin käynnistetään, pidetään sen alustuslinjaa (reset) yleensä hieman aikaa alhaalla, jotta suorittimen sisäinen tila ehtii rauhoittua. Kun alustuslinja sitten sallii suorittimen varsinaisen toiminnan, alkaa suoritus hyvin samalla tavalla kuin yleensä keskeytyksessä alustuksen keskeytysvektorin kautta, mutta suorittimen tilaa ei talleteta muistiin Ulkoiset keskeytykset Ulkoisen keskeytyksen aiheuttaa jokin oheislaite silloin, kun se tarvitsee suorittimen huomiota. Tavallisesti kyse on siitä, että laite on saanut tehtyä sille annetun tehtävän, mutta aina tilannetta ei voi tulkita näin. Esimerkiksi usein aikavalvontaa vaativissa järjestelmissä vahtikoiralaitteen tehtävänä on alustaa suoritin uudestaan, mikäli ohjelmallisesti ei tarpeeksi usein käydä huolehtimassa siitä, että vahtikoira pysyy hiljaa. Vahtikoiran (watch dog) aiheuttamaa keskeytystä ei voi kieltää, ja se voi olla jopa suoraan kytkettynä alustuskeskeytykseen reset.

7 36 Sulautettu ohjelmointi Toiminta keskeytyksen tullessa Keskeytyksen tultua toimintaperiaate on pääpiirteissään seuraava: 1. Talletetaan keskeytyspalvelussa tarvittavat rekisterit, mikäli näin ei ole tehty laitteistolla automaattisesti. 2. Selvitetään keskeytyksen syy, mikäli laitteisto ei ole tästä jo huolehtinut. 3. Suoritetaan keskeytyksen edellyttämät toimenpiteet ja kuitataan keskeytys. 4. Palautetaan ohjelmallisesti talletetut rekisterien arvot ja palataan keskeytyksestä. Viimeisen kohdan asemesta voidaan siirtyä myös vuorontajaan (scheduler), jos sellainen laitteen ohjelmistossa on. Vuorontaja puolestaan voi valita myös jonkin muun prosessin suoritukseen. Prosessia ei kuitenkaan välttämättä aina vaihdeta tai edes tarkisteta, tulisiko vaihtaa itse asiassa aina ei edes ole prosesseja, joita ylipäätään voisi vaihtaa. Keskeytyksestä palattaessa laitteisto palauttaa paluukäskyn yhteydessä ne tiedot, jotka se keskeytykseen mennessä automaattisesti talletti. Mikäli ohjelmallisesti on talletettu enemmän, tulee näiden tietojen palautus olla ennen paluuta keskeytyksestä Keskeytyksen havaitseminen Ulkoiseen keskeytykseen reagoidaan tyypillisesti kahden käskyn välissä. Vain muistiosoituksen yhteydessä tulleet virheet aiheuttavat käskyn välittömän keskeyttämisen. Joihinkin erittäin pitkiin CISC 4 -tyyppisiin konekäskyihin on voitu tehdä kohtia, joissa käsky voidaan kesken sen suorituksen keskeyttää. Keskeytys voi olla reunaherkkä, eli se aktivoituu keskeytyslinjan arvon muutoksessa. Muutoksen suunta voi olla merkitsevä, eli vain muutos nollasta ykköseksi huomataan tai päinvastoin. Keskeytys voi olla myös tasoherkkä, jolloin keskeytyslinjan tila määrää, onko keskeytys vireessä. Varsinkin jälkimmäisessä tapauksessa keskeytys on muistettava kuitata ennen keskeytyskiellon poistamista, koska muuten oheislaite keskeyttää välittömästi uudelleen. Keskeytyksen kuittaaminen voi tarkoittaa oheislaitteen tilarekisterin lukua, ohjausrekisterin kirjoitusta tai datarekisterin lukua tai kirjoitusta. 4. Complex Instruction Set Computer

8 Laitteistorajapinta 37 Mikäli eri keskeytyksiä tulee yhtä aikaa, ratkaisee palveltavan keskeytyksen suorittimen sisään langoitettu prioriteettijärjestys. Tämä sisäinen prioriteetti näkyy taulukossa 2.2 siten, että mitä ylempänä laitteen keskeytysvektori on, sitä suurempi sen prioriteettikin on. Saman keskeytyksen aiheuttajan selvittämisestä on tarkemmin seuraavassa kohdassa Keskeytyksen palveleminen Keskeytyksen tullessa ensimmäiset toimet tapahtuvat laitteistotasolla. Ensimmäiseksi talletetaan ainakin ohjelmalaskuri ja tilaliput jonnekin, yleensä pinoon. Toinen vaihtoehto on vaihtaa käytössä oleva rekisteripankki (kuten kohdassa 2.3 esitettiin). Paluuosoitteen tallennuksen ohella kielletään vastaavantasoiset muut keskeytykset. Keskeytyskielto ei välttämättä ole ehdoton, vaan jokin kiireellisempi keskeytys voidaan yhä sallia. Tämän jälkeen siirrytään keskeytyspalvelurutiiniin, jonka alkuosoite (tai ensimmäinen suoritettava käsky) löytyy keskeytysvektorista. Kuten edellä kuvattiin, hypätään keskeytysvektorin kautta haluttuun keskeytyskäsittelijään. Tyypillinen pienen kontrollerin keskeytysvektori on kuvattu taulukossa 2.2. Taulukko 2.2: Pienen koneen keskeytysvektori (MC68HC11) Osoite Nimi Kommentti FFFE reset Alustusrutiinien alkuosoite FFFC clock monitor fail Vahtikoira epäonnistui FFFA watchdog Vahtikoira FFF8 illegal opcode Laiton käskykoodi FFF6 software interrupt Ohjelmistokeskeytys FFF4 XIRQ Ulkoinen keskeytys, ei estettävissä FFF2 IRQ Ulkoinen keskeytys, estettävissä FFF0 RTII Reaaliaikakeskeytys

9 38 Sulautettu ohjelmointi Taulukko 2.2: Pienen koneen keskeytysvektori (MC68HC11) Osoite Nimi Kommentti FFC0-FFEE - Sisäisten toimilaitteiden keskeytyksiä V cc IRQ R 1 suoritin FIRQ V cc R 2 laite 0 laite 1 laite 2 laite 3 Kuva 2.2 Ohjelmisto tunnistaa yhteiseen keskeytyslinjaan liittyvän laitteen Oikea keskeytysvektori löytyy joko keskeytykseen langoitetusta osoitteesta tai keskeyttävältä laitteelta saadusta keskeytysvektorin arvosta. Pienissä suorittimissa on usein ulkoinen keskeytyslinja, jonka avulla oheislaitteet voivat ilmaista halunsa keskeyttää, mutta eivät pysty laitteistotasolla identifioimaan itseään keskeytyslinjaa tarkemmin. Ohjelmisto tunnistaa keskeyttäjän Tyypillinen pienen suorittimen kytkentä on esitetty kuvassa 2.2 Siinä laitteet 0-2 on liitetty yhteiseen keskeytyslinjaan IRQ (interrupt request). Viiva linjan nimen päällä kertoo, että linja on loogisesti invertoitu. Toisin sanoen linjan arvo 1 tarkoittaa, että keskeytyspyyntöä ei ole ja 0, että jokin laite pyytää keskeytystä. Monta laitetta voidaan kytkeä yhteen linjaan siksi, että mikään laitteista ei yritä syöttää linjalle ykköstä ykkösen syöttämisestä huolehtii kuvaankin merkitty vastus

10 Laitteistorajapinta 39 R 1 suoraan käyttöjännitteestä V cc. Mikä tahansa laitteista pystyy pudottamaan linjan jännitteen alas, jolloin signaaliksi tulee 0, joka tarkoittaa siis keskeytyspyyntöä. Koska laitteisto ei pysty ilmaisemaan suorittimelle, mikä laitteista keskeytti, tulee keskeytyskäsittelyn aluksi ohjelmallisesti käydä tarkistamassa, mikä (tai mitkä) oheislaitteista aiheutti keskeytyksen. Ohjelmallinen tarkistus tarkoittaa siis sitä, että ohjelmisto käy lukemassa kunkin oheislaitteen tilarekisterin ja tulkitsee sen biteistä, halusiko laite keskeytystä vai ei. Jokin nopeaa vasteaikaa vaativa laite voidaan kytkeä myös linjaan FIRQ eli nopeaan keskeytyslinjaan (fast interrupt request). Nopeus tavalliseen keskeytykseen saadaan yleensä siitä, että tämä keskeytys menee läpi, vaikka laite olisi palvelemassa tavallista keskeytystä. Lisäksi nopeutta on voitu saada siitä, että FIRQ voi tallettaa vähemmän rekistereitä, mikä nopeuttaa vasteaikaa. Myös tässä linjassa voi olla monta laitetta, mutta tämä on joissain määrin ristiriidassa nopean käsittelyn kanssa. Toisaalta FIRQ:n käytön takana ei välttämättä ole laitteen nopea vasteaikatarve, vaan vain se, että yhteen keskeytyslinjaan ei tulisi liian monta laitetta ja keskeyttävän laitteen löytäminen olisi ohjelmallisesti nopeampaa. Kuvassa olevien keskeytyslinjojen lisäksi on usein olemassa vielä sellainen keskeytyslinja NMI (non-maskable interrupt tai vastaava), jolta tulevaa keskeytystä ei voi kieltää. Tätä ei saisi koskaan käyttää minkään laitteen normaalina keskeytyslinjana, vaan ainoastaan erikoistilanteissa. Edellä kuvatut ratkaisut ovat pienten suorittimien ratkaisuja. Yleensä keskeytysjärjestelmä on kehittyneempi. Laitteisto tunnistaa keskeyttäjän Laitteisto ja kytkentä on tässä tapauksessa samantapainen kuin edellisessä tapauksessa. Ratkaiseva ero on IACK-linja (interrupt acknowledged) tai vastaava (katso kuva 2.3), joka kertoo suorittimen vastaavan keskeytyspyyntöön. Olennaista on, että tämä linja kulkee oheislaitteiden kautta ketjussa. Kun suoritin ilmoittaa vastaavansa keskeytykseen, ketjussa ensimmäinen laite tarkistaa, onko se itse keskeyttänyt. Mikäli ei ole, se välittää signaalin eteenpäin, muussa tapauksessa se antaa dataväylän kautta oman keskeytysvektorinsa osoitteen suorittimelle. Suoritin hyppää sitten tämän keskeytysvektorin alkion kautta oikeaan keskeytyskäsittelijään. Oheislaitteelle sen keskeytysvektori

11 40 Sulautettu ohjelmointi suoritin IRQ IACK laite 0 laite 1 laite 2 Kuva 2.3 Laitteisto tunnistaa yhteiseen keskeytyslinjaan liittyvän laitteen määritellään yleensä laitteen alustusvaiheessa ohjelmallisesti, mutta joskus myös langoituksella tai laitekytkimillä. Myös keskeytyslinja voi kulkea samaan tapaan kuin IACK oheislaitteiden läpi kuten kuvassa 2.3 on esitetty. Tässä keskeytystavassa sillä laitteella, joka on ketjussa lähimpänä suoritinta, on korkein prioriteetti. Priorisoitu keskeytys Suuremmissa suorittimissa keskeytyslinjan tilalla voi olla väylä, jolla voidaan ilmaista eri keskeytystasot vaikkapa välillä 0 7. Rakenne on samankaltainen kuin kuvassa 2.3, mutta IRQ-linjan asemesta laiteilta tulee esimerkiksi kolmibittinen numerotieto keskeytyksen tasosta. Keskeytystaso 7 on korkein, ja taso nolla tarkoittaa, että keskeytystä ei ole tulossa. Mikäli suorittimen keskeytystaso on alempi kuin mitä väylältä tulee, se hyväksyy keskeytyksen. Mikäli suorittimen keskeytystaso on suurempi, keskeytystä ei päästetä läpi. Suoritin vastaa keskeytykseen kuten edellä. Se voi siis lähteä ohjelmallisesti etsimään keskeyttänyttä laitetta, mutta todennäköisempää on IACK-linjan tai vastaavan käyttö. Kummassakin ratkaisussa on vain huolehdittava siitä, että keskeytykset kysellään laitteilta oikeassa järjestyksessä eli korkein keskeytys on listassa tai ketjussa ensimmäisenä. Huomata sopii, että tässäkin voidaan yhdelle prioriteettitasolle asettaa useita laitteita Esimerkkejä keskeytysjärjestelmistä Mikrokontrollereissa on tyypillistä, että jokaiselle sisäänrakennetulle laitteelle on oma keskeytysvektorin arvo valmiina. Tämä näkyy sivun

12 Laitteistorajapinta taulukossa 2.2. Näille laitteille on niiden keskinäinen prioriteetti määrätty jo suunnitteluvaiheessa, eikä sitä voi ohjelmallisesti muuttaa. Näiden sisäisten laitteiden lisäksi on mahdollista liittää kontrolleriin ulkoisia keskeytyksiä edellä kuvatulla tavalla. ARM-suorittimessa hidas (IRQ, Interrupt ReQuest) ja nopea (FIQ, Fast Interrupt request) keskeytys ovat ulkoisia laitteistokeskeytyksiä. Näiden lisäksi suorittimessa on SVC-keskeytys, Abort-keskeytys muistivirheitä varten ja Undef-keskeytys virheellisiä käskyjä varten. Jokaisella keskeytystyypillä on oma tilansa, johon suoritin siirtyy keskeytyksen tullessa (user, _fiq, _irq, _abt, _svt ja _und; näiden lisäksi on järjestelmän etuoikeutettuja prosesseja varten tila system). Oikeuksien kannalta kaikki muut kuin user-tila vastaavat etuoikeutettua tilaa. Muilla kuin system-tilalla (joka käyttää user-tilan rekistereitä) on joitain omia rekistereitään: SPSR (Saved Program Status Register), johon talletetaan keskeytyksen tullessa suorittimen tilasana CPSR, sekä rekisterit R13 ja R14. Jälkimmäiseen näistä talletetaan paluuosoite keskeytyksestä poistumista varten. Rekisteri R13 taas on pinorekisteri, joka tulee alustaa käynnistysvaiheessa joka tilalle erikseen. Kun keskeytys oli se sitten mikä tahansa keskeytys tulee, talletetaan suorittimen tilasana keskeytystilan rekisteriin SPSR (Saved Program Status Register), PC talletetaan keskeytystilan rekisteriin R14, ja kielletään keskeytykset. Hitaan ja nopean keskeytyksen ero käsittelyssä on, että vain FIQ kieltää FIQ:n, mutta kaikki keskeytykset kieltävät IRQ:n. Keskeytysrutiinin tulee tallettaa käyttämänsä käyttäjän rekisterit pinoon tai jonnekin muualle talteen käytön ajaksi. Nopean keskeytyksen (FIQ) tekee nopeaksi se, että sillä on käytettävissä omat kopiot rekistereistä Mikäli nämä viisi rekisteriä riittävät keskeytyksen käsittelyyn, ei käyttäjän rekistereitä tarvitse tallettaa, jos prosessi ei keskeytyksen seurauksena vaihdu. Juuri nämä kopiorekisterit tekevät keskeytyksestä nopean Suorittimen alustus Suorittimen käynnistys tapahtuu RESET-linjan avulla. Tämä linja toimii muuten keskeytyksen tavoin, mutta se ei talleta keskeytyksen tullessa suorittimen tilaa mihinkään, vaan siirtyy suoraan keskeytysvektorin kautta suorittamaan alustustoimenpiteitä. Kun järjestelmään laitetaan sähköt päälle, kestää hieman aikaa, ennen kuin käyttöjännite asettuu. Tämän takia RESET-linjaa pidetään

13 42 Sulautettu ohjelmointi tarkoituksellisesti ulkoisella elektroniikalla hieman aikaa alhaalla ennen kuin suorittimen annetaan alkaa alustusrutiininsa. Koska RESET-linja voidaan johdottaa kaikille oheislaitteille, myöskään oheislaitteet eivät ala suorittaa omaa alustustaan, ennen kuin linja on noussut ykköseksi. Tästä taas seuraa se, että liityntäpiirien ulostulot ovat joko satunnaisessa tai korkeaimpedanssisessa tilassa ennen kuin suoritin saa alustettua ne. Mikäli ulkoinen elektroniikka ei ota tätä huomioon, laite voi käynnistyessään tehdä vaarallisia tai ainakin ei-toivottuja toimintoja. Kun sähköt laitetaan päälle, RESET-linja alustaa kaikki laitteet, joten muistinhallinta ja vastaavat järjestelmät lähtevät oletustilasta. Huomionarvoista on, että tällöin laite käynnistyy aina alustusmuistista ("boottiprommilta"). Aivan pienimmissä ja primitiivisimmissä sulautetuissa järjestelmissä ei välttämättä mitään muuta olekaan, mutta vähänkin monimutkaisemmissa järjestelmissä usein tämän jälkeen varsinainen suoritettava ohjelma luetaan massamuistista tai hitaammalta lukumuistilta (esimerkiksi flash-rom) keskusmuistiin. Tämän jälkeen suorittimissa voidaan keskeytysvektorin alkuosoite määrätä uudelleen. Näin saadaan keskeytykset ohjattua varsinaisen ohjelmiston keskeytysrutiineihin. Uudelleenohjaus tapahtuu myös RESET-keskeytykselle, joten laitteen ollessa käynnissä ("lämpimänä") reset voi toimia eri tavalla kuin "kylmänä" käynnistettäessä. Tämä selittää sen, miksi RESET-linjan käyttö ei aina saa toivottua koko järjestelmän täyskäynnistystä aikaiseksi. 2.5 Oheislaiteliittymät Oheislaitteita ohjataan tila-, ohjaus- ja datarekisterien avulla. Nämä rekisterit voidaan sijoittaa joko normaaliin muistiavaruuteen tai erilliseen IO-avaruuteen. Mikäli rekisterit ovat muistiavaruudessa, niihin viitataan käyttämällä normaaleja muistiviittauksia. Erillisessä IO-avaruudessa oleviin rekistereihin viitataan erityisillä IO-käskyillä. Jatkossa oletamme ensimmäisen vaihtoehdon, eli rekisterit ovat osa muistiavaruutta Muistutus terminologiasta: osoiteavaruus on suorittimen loogisesti näkemä muisti ennen muistinhallintaa. Muistiavaruus on todellinen, käytössä oleva muisti.

14 Laitteistorajapinta Oheislaitteiden ohjaamisesta Oheislaite voi itsessään olla hyvinkin monimutkainen kokonaisuus, jota ohjaa sen oma suoritin. Äärimmäisessä tilanteessa oheislaitteessa voi olla huomattavasti enemmän laskentatehoa on varsinaisessa suorittimessa. Toisessa ääripäässä oheislaitteena toimii jokin kellotettu puskuripiiri, josta voidaan vain lukea se arvo, joka siihen on viimeksi talletettu. Riippumatta laitteen monimutkaisuudesta sitä ohjataan ohjaus-, tila- ja datarekisterien avulla, mutta näitä kaikkia ei aina tarvita. Ohjausrekistereillä annetaan laitteistolle komentoja (lue tieto, muunna syöte digitaaliseksi ja niin edelleen). Ne voivat olla vain kirjoitettavia rekistereitä. Tilarekistereillä voidaan kysyä laitteen tilatietoja (onko laite valmis, mikä oli tapahtuneen virheen tarkempi syy ja niin edelleen). Tilarekisteri voi olla vain luettava rekisteri. Muistiavaruuden säästämiseksi on tila- ja ohjausrekisterit voitu laittaa samaan muistipaikkaan, jolloin lukeminen ohjautuu tilarekisteriin ja kirjoitus ohjausrekisteriin. Tämä on syytä pitää mielessä, mikäli ohjausrekisteriä ohjataan siten, että sen yksittäisiä bittejä nostetaan ja lasketaan. Esimerkiksi lauseen ohjaus = ohjaus KESKEYTYS_BITTI; tarkoitus on asettaa keskeytykset salliva bitti, mutta jättää ohjausarvo muuten koskemattomaksi. Jos tilarekisteri on samassa osoitteessa, uudeksi ohjausarvoksi tulisi tilarekisterin sisältö siten, että ohjausrekisterin keskeytysbitti olisi asettuneena. Koska tilarekisterin formaatilla ei ole mitään tekemistä ohjausrekisterin formaatin kanssa, tulos on arvaamaton. Mikään ohjelmointikielitasolla tapahtuva temppuilu ei auta, eli ohjaus = KESKEYTYS_BITTI; toimii täsmälleen samalla tavalla. Korjaus on tallettaa vanha arvo muistipaikkaan: ohjaus_talle = KESKEYTYS_BITTI; ohjaus = ohjaus_talle; Mikäli rekisteriä voi lukea normaalisti, näitä ongelmia ei tietenkään tule. Ohjausrekisterillä voidaan antaa varsinaisia käskyjä, mutta myös määrätä, missä tilanteissa laite keskeyttää ja miten, jos ollenkaan (sitä itse asiassa yllä olevassa esimerkissä tehtiin). Keskeyttäminen tapahtuu

15 44 Sulautettu ohjelmointi keskeytyslinjan avulla, ja vaikka oheislaite päättäisikin keskeyttää, voi suoritin vielä itse sallia tai kieltää keskeytykset Suora muistisiirto Monet monimutkaisemmat tai ainakin suurempia tietomääriä siirtävät oheislaitteet hoitavat tiedon siirron muistiin itse ohi suorittimen. Vaihtoehtona on suorittimen keskeyttäminen ja tiedon siirto suorittimen avulla. Tällöin suoritin lukisi tiedon oheislaitteen datarekisteristä omaan rekisteriinsä ja sieltä sitten tallettaisi sen keskusmuistiin (tai toisinpäin, riippuen tiedon suunnasta). Selvästikään suurille tietomäärille tämä ei ole järkevää, sillä tieto kulkee tässä mallissa dataväylällä kahteen kertaan. Ratkaisu on suora muistisiirto, DMA, direct memory access. Tällöin toiminta on pääpiirteissään seuraava (niin sanottu lohkomoodi): 1. Ennen siirtoa DMA-ohjaimelle kerrotaan, mihin muistiosoitteeseen (tai mistä muistiosoitteesta) ja miten suuri lohko siirretään. 2. Siirto aktivoituu, eli laite lähettää DMAREQUEST-signaalin DMA-ohjaimelle. 3. DMA-ohjain pyytää väylien käyttöoikeutta suorittimelta (BR, bus request). 4. Suorittimen päästyä sopivaan tilaan se vastaa signaalilla BG (bus grant) ja lopettaa väylien ohjaamisen. 5. DMA-ohjain asettaa osoitteen väylälle ja antaa muistille joko luku- tai kirjoituskäskyn riippuen tiedon suunnasta. Samalla se ilmoittaa oheislaitteelle DMAACK-linjalla, että oikea osoite on väylällä. 6. Oheislaite joko kirjoittaa tiedon väylälle tai lukee sen sieltä riippuen tiedon siirron suunnasta. 7. DMA-ohjain kasvattaa osoitetta, vähentää tavulaskuria ja jatkaa kohdasta 5, jos siirrettävää vielä on. Mikäli siirrettävä loppui, se luovuttaa väylät takaisin suorittimelle laskemalla BR-signaalin ja aiheuttaa keskeytyksen. Siirron aikana suoritin ei voi tehdä mitään, mikä käsittelee muistia. Se voi suorittaa sen välimuistissa olevaa ohjelmaa, mikäli tarvittavat tiedot ovat rekistereissä, mutta jos siirrettävänä on suuri lohko, on todennäköisempää, että se odottaa väylien vapautumista. Tämän takia DMAohjain voidaan ohjelmoida siirtämään esimerkiksi 4 16 sanaa kerrallaan ja luovuttamaan väylät takaisin suorittimelle.

16 Laitteistorajapinta 45 DMA voi toimia myös "varastamalla" muistijaksoja suorittimelta. Tällöin siirto tapahtuu sana kerrallaan aina sellaisessa tilanteessa, jossa suoritin ei voi muistia käyttää. DMA-ohjaimessa on yleensä useita kanavia, jotta se pystyy ohjaamaan monen laitteen tarvitsemia siirtopyyntöjä. Kullakin kanavalla on omat DMAREQUEST- ja DMAACK-signaalinsa sekä väylää ohjaavat rekisterit. 2.6 Yksinkertaisia oheislaitepiirejä Seuraavaksi esitellään joitakin yleisiä yksinkertaisia oheislaitepiirejä. Näitä ovat rinnakkaisliityntäpiirit (PIO, Parallel Input / Output), sarjaliityntäpiirit (SIO, Serial Input / Output), ajastinpiirit (timer), analogiadigitaalimuunnin (AD-converter) ja digitaali analogiamuunnin (DAconverter). Erilaiset väyläohjauspiirit ovat myös paljon käytettyjä, mutta niitä ei esitellä tässä. Oheispiiri voi olla myös juuri kyseessä olevaa ongelmaa varten tehty (codesign, ASIC). Kustannusten säästämiseksi on moniin pienimpiin sovelluksiin käytettäviin suorittimiin rakennettu sisään yleisimpiä liityntäpiirejä. Tällaisia ovat esimerkiksi MC68HC11- ja 8051-sarjan suorittimet 6, mutta suuntaus näyttää olevan, että yhä monimutkaisemmista suorittimista tulee myös tällaisia versioita. Näistä suorittimista (eli niin sanotuista mikrokontrollereista) on yleensä saatavilla useita versioita varustettuina erilaisin oheislaittein ja sisäisin muistein. Tietyssä mielessä aikaa ajaa näidenkin ohi, sillä on saatavissa suorittimia, joille voidaan ohjelmoida halutut oheislaitteet (FPGA, field programmable gate array). Toiminta voi olla jopa sellainen, että laitteen rakennetta voidaan vaihtaa ajoaikana, mutta tyypillisempää on, että kerran tehty ohjelmointi on pysyvä. Itse asiassa FPGA:lla voidaan nykyään toteuttaa myös itse suoritin (piirille voi mahtua näitä kymmeniä) ja valita se tai ne ja niiden väliset kytkennät juuri sovellukselle sopivaksi Rinnakkaisliityntä Rinnakkaisliityntäpiireissä on tyypillisesti kaksisuuntaisia liityntöjä, joiden suunta on ohjelmoitavissa joko porteittain (portti on yleensä yksi 6. Mainitut suorittimet ovat rakenteeltaan vanhoja (HC11 vuodelta 1985 ja 8051 vuodelta 1980). Niitä tai niiden paranneltuja versioita käytetään yhä pienimmissä sovelluksissa.

17 46 Sulautettu ohjelmointi tavu) tai biteittäin. Lisäksi piirissä voi olla kellotusta varten ohjauslinjoja, joiden avulla voidaan aiheuttaa myös keskeytys. Esimerkki: Mikrokontrolleri MC68HC811E2:n rinnakkaisliityntäportit B ja C. Portti B on ainoastaan ulostuloportti, mutta C-portin eri bittien suuntaa voidaan ohjata ohjelmallisesti. Porttien sisältöä ja suuntaa ohjataan seuraavien osoitteiden kautta: osoitteessa on C-portin sisältö (luetut arvot) osoitteessa on B-portin asetettu arvo osoitteessa on C-portin kellotettu arvo osoitteessa on C-portin bittien suunta (joka bitille erikseen). Porttien muita toimintoja voidaan ohjata tila-ohjausrekisterin ( ) avulla. Sen avulla voidaan määrätä tai selvittää muun muassa ovatko C-portin ulostulot normaaleja vai ei (langoitus, wired or) kellotetaanko C-portin sisääntulo STRA-signaalilla vai ei kellotetaanko STRB-signaalia, kun kirjoitetaan porttiin B vai ei aiheutuuko STRA-signaalista keskeytys vai ei tai onko STRA-signaali tullut. Lisäksi voidaan todeta, että jos C-portti kytketään B-porttiin ja päinvastoin, saadaan kaksisuuntainen 8-bittinen siirtoväylä, jota kellotetaan STRA ja STRB:n avulla. Tämä mahdollisuus selittää lähinnä porttien toimintalogiikkaa, käytännössä näin tuskin tehdään. Nämä portit voidaan käyttää myös osoite- ja datalinjoina, mikäli suorittimen sisäinen muisti ei riitä. Tällöin luonnollisesti menetetään rinnakkaiskäytön mahdollisuus Sarjaliityntäpiirit Sarjaliityntäpiirit ovat kaksisuuntaisia, ja ne voidaan ohjelmoida aiheuttamaan keskeytys merkin saavuttua tai kun se on lähetetty. Tyypillisesti ne lähettävät tai vastaanottavat merkin (tavun) kerrallaan, mutta niissä voi myös olla sisäänrakennettu puskuri, jolloin piirille voidaan siirtää tietoa tavua suuremmissa kokonaisuuksissa. Tarkastellaan esimerkkinä seuraavassa MC68HC811E2:n sarjaliityntäpiiriä. Piirin datarekisteri on osoitteessa 103F 16. Sama osoite on käytössä sekä lähtevälle että tulevalle datalle. Onko kyseessä kirjoitusvai lukurekisteri päätellään siitä, kirjoitetaanko vai luetaanko rekisteri. Piirin ohjausrekisteri SCCR1 osoitteessa 102C 16 määrää lähetettävän merkin pituuden ja muut vastaavat asiat, ja ohjausrekisteri SCCR2 (102D 16 ) ohjaa keskeytyksiä. Lisäksi on vielä tilarekisteri SCSR osoit-

18 Laitteistorajapinta 47 teessa 102E 16, jonka avulla voidaan kysyä ovatko rekisterit tyhjiä tai täynnä, virhelippujen arvot ja niin edelleen. Nopeus voidaan asettaa rekisterin BAUD (102B 16 ) avulla. Sarjaliitynnän nopeus on asetettavissa 300 bitistä 38,4 kilobittiin. Mikäli käytetään ulkoista sarjaliityntäpiiriä, se voi vaatia erillisen kellosignaalin, jonka saa tuotettua esimerkiksi ajastimella Ajastinpiirit Ajastinpiirit ovat monimutkaisimpia perusliityntäpiirejä. Ne ovat tavallisesti 16-bittisiä laskureita, joiden avulla voidaan laskea pulsseja generoida pulsseja, joiden taajuus ja leveys voi vaihdella jakaa taajuutta ja generoida keskeytyksiä, kun niissä olevaa lukua on vähennetty nollaan asti tai kasvatettu annettuun raja-arvoon. Ajastinpiirejä käytetään muun muassa kellokeskeytysten generointiin, vahtikoirina ja erilaisina laskureina ja pulssigeneraattoreina. Ajastin voi toimia sekä syöttö- että tulostuslaitteena A/D-muunnin Analogia-digitaalimuunnin konvertoi analogisen jännitesignaalin digitaaliseksi arvoksi, tyypillisesti 8-, 10-, tai 16-bittiseksi luvuksi. Tietyissä tehtävissä bittejä tarvitaan vielä tätäkin enemmän. Muunnin toimii joko jatkuvasti, jolloin lukemalla sen datarekisteriä saadaan viimeksi konvertoitu arvo tai sitten siten, että konversiota pyydetään ohjelmallisesti, ja piiri keskeyttää tai ilmoittaa tilalipulla, kun konversio on valmis. Muuntimen nopeus määrää maksiminäytteenottotaajuuden, joka muun muassa äänisovelluksissa on bittimäärän lisäksi hyvin tärkeä osa saadun signaalin laatua. A/D-muunnin on syöttölaite D/A-muunnin Digitaali-analogiamuunnin muuttaa digitaalisen arvon analogiseksi jännitteeksi. Laitteena se on harvinaisempi kuin A/D-muunnin. Muunnin koodautuu tyypillisesti yhdeksi muistipaikaksi, eikä se tarvitse (välttämättä) ohjaus- tai tilarekistereitä. Laite voi kuitenkin tarvittaessa ilmoittaa, milloin konversio on valmis. Laite on tulostuslaite.

19 48 Sulautettu ohjelmointi Muutamia yleisiä huomioita Elektroniikan ohjaus tapahtuu siis jonkin oheispiirin välityksellä. Yleensä ohjaaminen ei sinänsä ole vaikeaa, kunhan laite on tuttu. Valitettavasti uudenlaiseen laitteeseen tutustuminen voi viedä melkoisesti aikaa. Edes saman valmistajan piirit eivät välttämättä muistuta kovin paljoa toisiaan, joten tutustumista riittää. Ongelmana voi olla myös heikohko dokumentointi, jolloin yksityiskohdat täytyy selvittää kokeilemalla. Kuitenkaan kovin suuria ongelmia ei yleensä tarvitse odottaa. Lisäksi kokemus auttaa pikku hiljaa ongelmien ratkomisessa. Pahimmat ongelmat tulevat silloin, jos oheispiiri ei toimikaan odotetulla tavalla. Esimerkki Tellu-mikrohiirestä, joka käsitellään tarkemmin myöhemmin: 8-bittisen koneen tuli lukea 16-bittinen muuttuva luku laskurina toimivalta oheispiiriltä. Kun ensimmäinen tavu on luettu, piirin piti lukita toisen tavun sisältö, jotta arvo ei muuttuisi luvun aikana. Lukitus ei kuitenkaan toiminut, joten kasvavaan sarjaan arvoja tuli kummallisia poikkeamia: 00F9 16, 00FB 16, 00FE 16, , , , Tässä tapauksessa ongelma voidaan ratkaista ohjelmallisesti: palautetaan aina kolmen viimeksi luetun luvun mediaani (siis arvoltaan keskimmäinen), jolloin ylläolevasta sarjasta tulisi seuraava jono (vain viisi arvoa voidaan laskea): 00FB 16, 00FB 16, 00FE 16, , Yhden arvon toistuminen on ainakin tässä tapauksessa paljon pienempi ongelma kuin yksi suuri poikkeama. Vaikka edellä kuvattu ongelma olikin helposti ratkaistu, ratkaisun löytäminen ei ollut niin helppoa kuin sen esittäminen tässä. Yleisesti ottaen tarvitaankin melkoista kekseliäisyyttä, mikäli laitteet eivät toimikaan odotetusti. Itse asiassa edellä oleva ratkaisu on oikeastaan mittaussignaalin käsittelyä, johon palataan myöhemmin luvussa 8. Ohjauksen yhteydessä erityisen ongelmallisia ovat ne tilanteet, jossa ohjelmallisesti voidaan antaa sellainen ohjaus, joka voi vaurioittaa elektroniikkaa tai sen ohjaamaa mekaniikkaa tai ympäristöä. Tällaisen laitteen ohjelmoiminen vaatii paitsi hyvää huolellisuutta myös intensiivistä ja kattavaa testausta. Toinen keskeinen ongelma on järjestelmän käynnistäminen turvallisesti. Kun tietokonelaitteiston RESET-linja on alhaalla, sekä suoritin että oheispiirit ovat perustilassaan. Vasta alustussekvenssin loputtua

20 Laitteistorajapinta 49 oheispiirit antavat järkeviä ohjauksia. Jotta tämä vaihe ei aiheuttaisi ongelmia, tulee alustuksen järjestykseen kiinnittää huomiota, mutta väistämättä osa ongelmaa on hoidettava laitteistolla. Jotta järjestelmän toimivuudesta voitaisiin edes jotenkin varmistua, on elektroniikan testaamiseksi aina tehtävä testiohjelmat: keskeyttääkö laite, ilmoittaako se itse jostain virheestä, vastaako se odotetusti, toimiiko muisti ja niin edelleen. 2.7 Laitteistorajapinta abstraktiona Yleensä laitteistoa ei ohjata niin yksityiskohtaisesti kuin edellä on kuvattu, vaan käytössä on jonkintasoinen käyttöjärjestelmän ydin. Ytimiin palataan luvussa 7. Ydin jaetaan yleensä kahteen tasoon: ylempään, jossa toteutetaan varsinaiset käyttöjärjestelmän ominaisuudet, ja alempaa, joka tarjoaa liittymän laitteistoon. Tähän laitteistoliittymän rajapintaan viitataan yleensä nimellä HAL, Hardware Abstraction Layer. Käyttöjärjestelmä voidaan siirtää laitteistosta toiseen vaihtamalla vain HAL-tason "alapuolella" oleva toteutus vastaamaan uutta laitteistoa. Sen yläpuolella olevaa osuutta ei yleensä tarvitse muuttaa. Muuttaminen ei kuitenkaan ole tavatonta, sillä yleensä mikä tahansa rajapinta hieman "vuotaa", ja tämän takia suuret muutokset laitteistossa voivat näkyä myös HAL-tason yläpuolella. 2.8 Yhteenveto Tietokoneen keskeiset osat ovat: 1. suoritin, jonka osat ovat 1.1. kontrolliyksikkö 1.2. aritmeettis-looginen yksikkö (ALU) 1.3. rekisterit 2. muisti. Tilajärjestelmä koostuu suoritusoikeuksista ja rekisterisarjoista. Keskeytysjärjestelmässä useita erityyppisiä keskeytyksiä: 3. ohjelmavirhekeskeytys 4. ohjelmoitu keskeytys 5. ulkoinen keskeytys 6. käynnistys Oheislaiteliittymät joko rekisterien (ohjaus-, tila- ja datarekisterit) tai suoran muistisiirron (DMA, direct memory access) kautta.

Arto Salminen,

Arto Salminen, 2. Luento: Laitteistorajapinta Arto Salminen, arto.salminen@tut.fi Agenda Arkkitehtuuri Keskeytysjärjestelmä Oheislaiteliitynnät Oheislaitepiirejä Arkkitehtuuri Rekisterirakenteet ja keskeytysjärjestelmä

Lisätiedot

Käyttöjärjestelmän rakenne

Käyttöjärjestelmän rakenne Käyttöjärjestelmän rakenne Tietokonejärjestelmä = Laitteisto + ohjelmisto Sovellus saa laitteiston käyttöönsä kj:n avustuksella CPU ja muisti Oheislaitteet KJ tarjoaa laitteiston käytössä tarvittavat palvelunsa

Lisätiedot

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen rakentamisessa? 2013-2014 Lasse Lensu 2 Transistori yhdessä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 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ätiedot

Tietokoneen rakenne: Harjoitustyö. Motorola MC68030 -prosessori

Tietokoneen rakenne: Harjoitustyö. Motorola MC68030 -prosessori kevät 2004 TP02S-D Tietokoneen rakenne: Harjoitustyö Motorola MC68030 -prosessori Työn valvojat: Seppo Haltsonen Pasi Lankinen RAPORTTI 13.5.2004 Sisällysluettelo sivu Tiivistelmä... 1 Lohkokaavio... 2

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

TIES530 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ätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TIEP114 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ätiedot

MUISTIPIIRIT H. Honkanen

MUISTIPIIRIT H. Honkanen MUISTIPIIRIT H. Honkanen Puolijohdemuistit voidaan jaotella käyttötarkoituksensa mukaisesti: Puolijohdemuistit Luku- ja kirjoitusmuistit RAM, Random Access Memory - Käytetään ohjelman suorituksen aikaisen

Lisätiedot

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1 Käyttöjärjestelmät Tietokoneen rakenne Stallings, Luku 1 KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1 Sisältöä Keskusyksikkö Käskysykli Keskeytys ja sen käsittely Siirräntä Muistihierarkia

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. 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ätiedot

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA Tavallisimmin lukuja käsittelevien datasanojen tyypiksi kannattaa asettaa kokonaisluku 16 bitin INT, jonka vaihtelualueeksi tulee

Lisätiedot

1 Muutokset piirilevylle

1 Muutokset piirilevylle 1 Muutokset piirilevylle Seuraavat muutokset täytyvät olla piirilevylle tehtynä, jotta tätä käyttöohjetta voidaan käyttää. Jumppereiden JP5, JP6, JP7, sekä JP8 ja C201 väliltä puuttuvat signaalivedot on

Lisätiedot

Älykännykät ovat pieneen tilaan paketoituja, mutta suuret ominaisuudet omaavia tietokoneita.

Älykännykät ovat pieneen tilaan paketoituja, mutta suuret ominaisuudet omaavia tietokoneita. Mikä on tietokone PUNOMO NETWORKS OY 22.7.2016 pva, piirroskuvat J. Mansikkaviita Henkilökohtaisesti olen aina valmis oppimaan, vaikka en välitäkään tulla opetetuksi. - Winston Churchill Tietokone on elektroninen

Lisätiedot

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

Lisätiedot

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5)

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5) Luento 5 Suoritin ja väylä Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne Suoritin suoritin - CPU ALU rekisterit CU

Lisätiedot

Luento 5 Suoritin ja väylä

Luento 5 Suoritin ja väylä Luento 5 Suoritin ja väylä Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne 1 Suoritin suoritin - CPU ALU rekisterit CU

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Luento 2: LAITTEISTOSTA

Luento 2: LAITTEISTOSTA Käyttöjärjestelmät t I Luento 2: LAITTEISTOSTA Stallings, Luku 1 KJ-I S2005 / Tiina Niklander Auvo Häkkisen kalvojen pohjalta 2-1 Sisält ltöä Keskusyksikkö Käskysykli Keskeytys ja sen käsittely Siirräntä

Lisätiedot

S-108.3020 Elektroniikan häiriökysymykset. Laboratoriotyö, kevät 2010

S-108.3020 Elektroniikan häiriökysymykset. Laboratoriotyö, kevät 2010 1/7 S-108.3020 Elektroniikan häiriökysymykset Laboratoriotyö, kevät 2010 Häiriöiden kytkeytyminen yhteisen impedanssin kautta lämpötilasäätimessä Viimeksi päivitetty 25.2.2010 / MO 2/7 Johdanto Sähköisiä

Lisätiedot

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle, sovellusohjelmille ja käyttäjille? 2012-2013 Lasse Lensu

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi. Lämpötilahälytin Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi. Laite koostuu Arduinokortista ja koekytkentälevystä. Hälyttimen toiminnat ohjelmoidaan Arduinolle.

Lisätiedot

AU Automaatiotekniikka. Toimilohko FB

AU Automaatiotekniikka. Toimilohko FB AU080401 Automaatiotekniikka Toimilohko FB Tarkoitus Dokumentissa kuvataan, mikä on toimilohko (FB) miten toimilohko muodostetaan ja miten sitä sovelletaan S7 ohjelmointiympäristössä (STEP7) mitä etua

Lisätiedot

Piirien väliset ohjaus- ja tiedonsiirtoväylät H. Honkanen

Piirien väliset ohjaus- ja tiedonsiirtoväylät H. Honkanen Piirien väliset ohjaus- ja tiedonsiirtoväylät H. Honkanen Laitteiden sisäiseen tietoliikenteeseen on kehitetty omat dataväylänsä. Näistä tärkeimmät: 1 wire [ käyttää mm. Dallas, Maxim. ] I²C [ Trademark

Lisätiedot

lizengo Asennusopas Windows: in kopioiminen

lizengo Asennusopas Windows: in kopioiminen lizengo Asennusopas Windows: in kopioiminen Windows: in kopioiminen lizengo Asennusopas Klikkaa sitä Windows-versiota, jonka haluat kopioida USB-tikulle, niin pääset suoraan oikeaan oppaaseen. Windows

Lisätiedot

PEM1123/ 410993A. Asennus- ja käyttöohje SW/S2.5 viikkokello. ABB i-bus KNX. SW/S2.5 Viikkokello

PEM1123/ 410993A. Asennus- ja käyttöohje SW/S2.5 viikkokello. ABB i-bus KNX. SW/S2.5 Viikkokello PEM1123/ 410993A Asennus- ja käyttöohje SW/S2.5 viikkokello ABB i-bus KNX SW/S2.5 Viikkokello Sisällysluettelo 1.0 Kuvaus 1.1 Laitteen käyttö...3 1.2 Ominaisuudet...3 1.3 Näppäimet ja osat...4 1.4 Tekniset

Lisätiedot

Action Request System

Action Request System Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

6. Analogisen signaalin liittäminen mikroprosessoriin 2 6.1 Näytteenotto analogisesta signaalista 2 6.2. DA-muuntimet 4

6. Analogisen signaalin liittäminen mikroprosessoriin 2 6.1 Näytteenotto analogisesta signaalista 2 6.2. DA-muuntimet 4 Datamuuntimet 1 Pekka antala 19.11.2012 Datamuuntimet 6. Analogisen signaalin liittäminen mikroprosessoriin 2 6.1 Näytteenotto analogisesta signaalista 2 6.2. DA-muuntimet 4 7. AD-muuntimet 5 7.1 Analoginen

Lisätiedot

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2 Johdatus diskreettiin matematiikkaan Harjoitus 4, 7.10.2015 1. Olkoot c 0, c 1 R siten, että polynomilla r 2 c 1 r c 0 on kaksinkertainen juuri. Määritä rekursioyhtälön x n+2 = c 1 x n+1 + c 0 x n, n N,

Lisätiedot

Hälyri-tietojärjestelmän järjestelmätestaussuunnitelma ja -raporttimalli

Hälyri-tietojärjestelmän järjestelmätestaussuunnitelma ja -raporttimalli Hälyri-tietojärjestelmän järjestelmätestaussuunnitelma ja -raporttimalli Laatijat: Veli Mikko Puupponen ja Ilkka Rautiainen Päivämäärä: 26.5.2014 Versio: 1.0.0 1. Testausympäristö ja yhteenveto Testatun

Lisätiedot

3. Luento: Muistin hallinta. Tommi Mikkonen,

3. 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ätiedot

Pro 57 UM/S Setelilaskuri

Pro 57 UM/S Setelilaskuri Pro 57 UM/S Setelilaskuri Turvallisuusohjeet ja huoltoa koskevat säännökset Lue tämä käyttöohje ennen laitteen käyttöönottoa Laite pitää asentaa tasaiselle vaakasuoralle alustalle, pois vedestä ja vaarallisia

Lisätiedot

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out Digitaalitekniikan matematiikka Luku ivu (2).9.2 Fe C = Aseta Aseta i i = n i > i i i Ei i < i i i Ei i i = Ei i i = i i -- On On On C in > < = CI CO C out -- = + (-) (-) = + = C + Digitaalitekniikan matematiikka

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Pertti Pennanen License 1 (7) EDUPOLI ICTPro1 23.10.2013

Pertti Pennanen License 1 (7) EDUPOLI ICTPro1 23.10.2013 License Pertti Pennanen License 1 (7) SISÄLLYSLUETTELO Lisenssien hallinta... 2 Lisenssisopimus... 2 Yleisimmät lisensiointimallit... 2 OEM lisenssi... 3 Kelluva lisenssi... 3 Työasemakohtainen lisenssi...

Lisätiedot

Signaalien datamuunnokset

Signaalien datamuunnokset Signaalien datamuunnokset Muunnoskomponentit Näytteenotto ja pitopiirit Multiplekserit A/D-muuntimet Jännitereferenssit D/A-muuntimet Petri Kärhä 17/02/2005 Luento 4b: Signaalien datamuunnokset 1 Näytteenotto

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut järjestelmät Luku 2 Sivu 1 (??) Kiertokysely Perinteiset ohjelmointikielet kuten C tukevat hyvin sekventiaalista ohjelmointia, jossa herätteisiin reagointi on helppoa toteuttaa pollauksella

Lisätiedot

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Virtualisointiympä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ätiedot

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

14. 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ätiedot

GSM PUHEVIESTI & SMS HÄLYTYKSENSIIRTOLAITE

GSM PUHEVIESTI & SMS HÄLYTYKSENSIIRTOLAITE ZEUS4-VD GSM PUHEVIESTI & SMS HÄLYTYKSENSIIRTOLAITE V 1.2 ASENNUS, TOIMINTA JA OHJELMOINTI MAAHANTUOJA: FIN- ALERT ELECTRONICS OY WWW.FINALERT.FI PERUSTIEDOT ZEUS4 - VD on GSM hälytyksensiirtolaite joka

Lisätiedot

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori Miksi TTK-91? TTK-91 rakenne ja käskykanta-arkkitehtuuri Mikä on simulaattori? Miten TTK-91 ohjelmia suoritetaan simulaattorissa? 1 Miksi konekieltä?

Lisätiedot

Monimutkaisempi stop and wait -protokolla

Monimutkaisempi stop and wait -protokolla Monimutkaisempi stop and wait -protokolla Lähettäjä: 0:A vastaanottaja: ajastin lähettäjälle jos kuittausta ei kuulu, sanoma lähetetään automaattisesti uudelleen kuittaus: = ok, lähetä seuraava uudelleenlähetys

Lisätiedot

Kombinatorisen logiikan laitteet

Kombinatorisen logiikan laitteet Kombinatorisen logiikan laitteet Kombinatorinen logiikka tarkoittaa logiikkaa, jossa signaali kulkee suoraan sisääntuloista ulostuloon Sekventiaalisessa logiikassa myös aiemmat syötteet vaikuttavat ulostuloon

Lisätiedot

AU Automaatiotekniikka. Funktio FC

AU Automaatiotekniikka. Funktio FC AU080401 Automaatiotekniikka Funktio FC Tarkoitus Dokumentissa kuvataan, mikä on funktio miksi funktioita kannattaa käyttää milloin funktioita kannattaa käyttää mitä asioita on huomioitava funktiota luotaessa

Lisätiedot

Suomenkielinen versio. Johdanto. Laitteiston asennus. PU013 Sweex 1-portin rinnakkainen & 2 -portin sarja PCI-kortti

Suomenkielinen versio. Johdanto. Laitteiston asennus. PU013 Sweex 1-portin rinnakkainen & 2 -portin sarja PCI-kortti PU013 Sweex 1-portin rinnakkainen & 2 -portin sarja PCI-kortti Johdanto Älä altista PU013-korttia äärilämpötiloille. Älä aseta laitetta suoraan auringonvaloon tai sulje lämmityselementtejä. Älä käytä PU013-korttia

Lisätiedot

Trust PhotoCam LCD 2300 PHOTOCAM LCD Pika-asennusohje. Versio 1.0

Trust PhotoCam LCD 2300 PHOTOCAM LCD Pika-asennusohje. Versio 1.0 PHOTOCAM LCD 2300 Pika-asennusohje Versio 1.0 1 1. Johdanto Tämä käyttöohje on tarkoitettu Trust PhotoCam LCD 2300 -tuotteen käyttäjille. Jos kaipaat lisäapua, voit ottaa yhteyttä yhteen Trustin asiakaspalvelukeskuksista.

Lisätiedot

T80_a_BA.book Seite 1 Donnerstag, 22. April :01 16 Telestart T80

T80_a_BA.book Seite 1 Donnerstag, 22. April :01 16 Telestart T80 Telestart T80 D Deutsch 1 Dansk 61 DK GB English 11 Svenska 71 S F Français 21 Norsk 81 N I Italiano 31 Suomi 91 FIN ES Español 41 Polski 101 PL NL Nederlands 51 Русский 111 RU Käyttö- ja huolto-ohje

Lisätiedot

A11-02 Infrapunasuodinautomatiikka kameralle

A11-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ätiedot

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0

RockID-varastonhallintajärjestelmän käyttöohje. v. 1.0 RockID-varastonhallintajärjestelmän käyttöohje v. 1.0 Yleistä Rockstar lukijakäyttöliittymä Tuotteiden lukeminen lähtevään tilaukseen Tilaukseen kuulumattomat tuotteet Tuotteiden lukeminen tilauksesta

Lisätiedot

Rinnakkaisvalikko. Rinnakkaistila 1. Lisäasetus. Pääk. alustus. Rinnakkaistila 2. PCL-työn tunnis. Työn puskurointi. PS-työn tunnist.

Rinnakkaisvalikko. Rinnakkaistila 1. Lisäasetus. Pääk. alustus. Rinnakkaistila 2. PCL-työn tunnis. Työn puskurointi. PS-työn tunnist. Rinnakk.valikko-asetuksella voidaan muuttaa tulostimen asetuksia, jotka koskevat rinnakkaisportin (Vakio, rinn.p.- tai Rinn.portti -asetukset) kautta tulostimeen lähetettäviä töitä. Lisätietoja saat

Lisätiedot

tikra_oppimistavoitteet.doc Sivu 1 / / Teemu Kerola Oppimistavoitteet kurssilla Tietokoneen rakenne Osaa selittää Boolen algebran

tikra_oppimistavoitteet.doc Sivu 1 / / Teemu Kerola Oppimistavoitteet kurssilla Tietokoneen rakenne Osaa selittää Boolen algebran tikra_oppimistavoitteet.doc Sivu 1 / 5 7.8.2006 / Teemu Kerola Oppimistavoitteet kurssilla Tietokoneen rakenne Digitaalilogiikka Tuntee Boolen muuttujan ja totuusarvon käsitteet (Diskr. matem.) Osaa selittää

Lisätiedot

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden

Lisätiedot

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman

Lisätiedot

OHJEET LUE TÄMÄ AIVAN ENSIKSI!

OHJEET LUE TÄMÄ AIVAN ENSIKSI! 1/8 OHJEET LUE TÄMÄ AIVAN ENSIKSI! Sinulla on nyt hallussasi testi, jolla voit arvioida oman älykkyytesi. Tämä testi muodostuu kahdesta osatestistä (Testi 1 ja Testi ). Testi on tarkoitettu vain yli neljätoistavuotiaille.

Lisätiedot

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä Jakso 8 Ohjelman toteutus järjestelmässä Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 Prosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla kertaa

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys Tyypit, Parametrit Aktivointitietue (AT) AT-pino Käskyjen suoritussykli Suorittimen tilat Poikkeukset ja keskeytykset

Lisätiedot

ASTIANPESUKONE WD-6 Säätöohjeet

ASTIANPESUKONE WD-6 Säätöohjeet ASTIANPESUKONE WD-6 Säätöohjeet Käännös valmistajan alkuperäisestä ohjeesta Rev 4.2 (201505) 4246074, 4246075, 4246084, 4246152, 4246153, 4246154 Säätöohjeet METOS WD-6 6. Säätöohjeet Tämä kuvio laitteen

Lisätiedot

Suomenkielinen versio. Johdanto. Laitteiston asennus. PU011 Sweex 1-portin rinnakkainen PCI Express -kortti

Suomenkielinen versio. Johdanto. Laitteiston asennus. PU011 Sweex 1-portin rinnakkainen PCI Express -kortti PU011 Sweex 1-portin rinnakkainen PCI Express -kortti Johdanto Älä altista PU011-korttia äärilämpötiloille. Älä aseta laitetta suoraan auringonvaloon tai sulje lämmityselementtejä. Älä käytä PU011-korttia

Lisätiedot

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja. Liikennevalot Laite koostuu Arduinokortista ja koekytkentälevystä. Liikennevalon toiminnat ohjelmoidaan Arduinolle. Ledit ja muut komponentit asetetaan koekytkentälevylle. Arduino toimii laitteen aivoina.

Lisätiedot

Pitkäaikaistallennus. CSC - Tieteen tietotekniikan keskus IT2008 Ari Lukkarinen

Pitkäaikaistallennus. CSC - Tieteen tietotekniikan keskus IT2008 Ari Lukkarinen Pitkäaikaistallennus CSC - Tieteen tietotekniikan keskus IT2008 Ari Lukkarinen Mitä on pitkäaikaistallennus? Tiedon tallennuksen aikajänne ylittää tallennusjärjestelmän sekä laite-että ohjelmistokomponenttien

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 10 1 Funktion monotonisuus Derivoituva funktio f on aidosti kasvava, jos sen derivaatta on positiivinen eli jos f (x) > 0. Funktio on aidosti vähenevä jos sen derivaatta

Lisätiedot

Kontrollipolkujen määrä

Kontrollipolkujen määrä Testaus Yleistä Testaus on suunnitelmallista virheiden etsimistä Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä menetelmistä huolimatta Hyvät menetelmät, kuten katselmoinnit pienentävät

Lisätiedot

Tutustuminen tuotantolinjastoon

Tutustuminen tuotantolinjastoon Tutustuminen tuotantolinjastoon Hands-on harjoitus 1 1 Tehtävät 2 Tuotantolinjasto yleisesti 2.1 Asemien käsitteleminen (Kuva 1) 2.2 Tuotantolinjaston toiminta 3 Jakeluaseman kuvaus 4 Testausaseman kuvaus

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

GSRELE ohjeet. Yleistä

GSRELE ohjeet. Yleistä GSRELE ohjeet Yleistä GSM rele ohjaa Nokia 3310 puhelimen avulla releitä, mittaa lämpötilaa, tekee etähälytyksiä GSM-verkon avulla. Kauko-ohjauspuhelin voi olla mikä malli tahansa tai tavallinen lankapuhelin.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

Käyttöohje. Energent MagiCAD plugin

Käyttöohje. Energent MagiCAD plugin Käyttöohje Energent MagiCAD plugin Sisältö 1. Yleistä 1 Dokumentin sisältö... 1 Ohjelman asennus... 1 Vaadittavat ohjelmistot... 1 Asennus... 1 Ohjelman käynnistys... 2 2. Toiminnallisuudet 3 Insert Energent

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Palvelupyyntöjärjestelmä. Asiakkaan ohje

Palvelupyyntöjärjestelmä. Asiakkaan ohje Palvelupyyntöjärjestelmä Asiakkaan ohje Festum Software Oy Palvelupyyntöjärjestelmä asiakkaan ohje 2 ( 8 ) Sisällysluettelo 1. Palvelupyyntöjärjestelmä osana asiakastukea... 3 2. Käytön aloittaminen...

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

2. laskuharjoituskierros, vko 5, ratkaisut

2. laskuharjoituskierros, vko 5, ratkaisut 2. laskuharjoituskierros, vko, ratkaisut Aiheet: Klassinen todennäköisyys, kombinatoriikka, kokonaistodennäköisyys ja Bayesin kaava D1. Eräässä maassa autojen rekisterikilpien tunnukset ovat muotoa XXXXNN,

Lisätiedot

Tentti erilaiset kysymystyypit

Tentti erilaiset kysymystyypit Tentti erilaiset kysymystyypit Kysymystyyppien kanssa kannatta huomioida, että ne ovat yhteydessä tentin asetuksiin ja erityisesti Kysymysten toimintatapa-kohtaan, jossa määritellään arvioidaanko kysymykset

Lisätiedot

Arto Salminen, arto.salminen@tut.fi

Arto Salminen, arto.salminen@tut.fi 3. Luento: Muistin hallinta Arto Salminen, arto.salminen@tut.fi Agenda Mitä väliä? Erityyppiset muistit Ohjelman sijoittelu muistiin Ohjelman sisäinen muistinhallinta Muistinhallintayksikkö Välimuisti

Lisätiedot

DIMLITE Single. Sähkönumero Käyttöohje

DIMLITE Single. Sähkönumero Käyttöohje DIMLITE Single Sähkönumero 2604220 Käyttöohje T1 sisääntulo T1 sisääntulo Yksittäispainikeohjaus Nopea painallus T1 painikkeesta sytyttää valaistuksen viimeisimmäksi aseteltuun tilannearvoon. Toinen lyhyt

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Elektroniikkalajin semifinaalitehtävien kuvaukset

Elektroniikkalajin semifinaalitehtävien kuvaukset Elektroniikkalajin semifinaalitehtävien kuvaukset Kilpailija rakentaa ja testaa mikrokontrollerilla ohjattavaa jännitereferenssiä hyödyntävän sovelluksen. Toteutus koostuu useasta elektroniikkamoduulista.

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. 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ätiedot

Supply jännite: Ei kuormaa Tuuletin Vastus Molemmat DC AC Taajuus/taajuudet

Supply jännite: Ei kuormaa Tuuletin Vastus Molemmat DC AC Taajuus/taajuudet S-108.3020 Elektroniikan häiriökysymykset 1/5 Ryhmän nro: Nimet/op.nro: Tarvittavat mittalaitteet: - Oskilloskooppi - Yleismittari, 2 kpl - Ohjaus- ja etäyksiköt Huom. Arvot mitataan pääasiassa lämmityksen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2016 1 / 22 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Silent Gliss 9020/21, 9040/41 ja 5091 moottorit. Uusi moottorisukupolvi

Silent Gliss 9020/21, 9040/41 ja 5091 moottorit. Uusi moottorisukupolvi Silent Gliss 9020/21, 9040/41 ja 5091 moottorit Uusi moottorisukupolvi Elämää helpottavia innovaatioita Silent Glissillä on yli 40 vuoden kokemus sähkötoimisista verhokiskoista. Toimme ensimmäisenä markkinoille

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Käyttöohje Thermo Call TC3. Yleisiä ohjeita. Käyttämisestä. Hyvä Webaston käyttäjä

Käyttöohje Thermo Call TC3. Yleisiä ohjeita. Käyttämisestä. Hyvä Webaston käyttäjä Käyttöohje Thermo Call TC3 Yleisiä ohjeita Hyvä Webaston käyttäjä Kiitämme uuden Thermo Call TC3 kauko-ohjaimen hankinnasta. Tällä laitteella voitte käyttää Webasto-lämmitintä helpolla ja ajanmukaisella

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

Täydentäviä muistiinpanoja laskennan rajoista

Täydentäviä muistiinpanoja laskennan rajoista Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen

Lisätiedot

Uuden vieritestin käyttöönotto avoterveydenhuollossa

Uuden vieritestin käyttöönotto avoterveydenhuollossa Uuden vieritestin käyttöönotto avoterveydenhuollossa HUSLAB Kliininen kemia ja hematologia 2009 kemisti Paula Pohja-Nylander Tavallisimmat vieritestit avoterveydenhuollossa Hemoglobiini Anemiadiagnostiikka

Lisätiedot

Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta.

Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta. Gimp alkeet XII 9 luokan ATK-työt/HaJa Sivu 1 / 6 GIMP:in tasotyökalu Lue ensin nämä ohjeet! Harjoitus lopussa! GIMP:in tasotyökalu on nimensä mukaisesti työkalu, jolla hallitaan tasoja, niiden läpinäkyvyyttä,

Lisätiedot

Sääasema Probyte 2003

Sääasema Probyte 2003 Sääasema Probyte 2003 Yleistä Probyte SÄÄASEMA W2003 on sään mittaukseen tarkoitettu ulkoanturi, joka mittaa tuulen nopeutta, tuulen suuntaa, ulkolämpötilaa ja valoisuutta reaaliaikaisesti. Mittaukset

Lisätiedot