2. Sulautettu järjestelmä ja mikro-ohjain 11.12.2007, pva Henkilökohtaisesti olen aina valmis oppimaan, vaikka en välitäkään tulla opetetuksi. - Winston Churchill Yleistä Sulautettu järjestelmä, Embedded System, on järjestelmä, jossa laitteisto ja ohjelmisto on sulautettu (embedded, upotettu) erottamattomasti yhteen. Kun lämmitämme mikroaaltouunissa pitsan, tyhjennämme astianpesukonetta tai etsimme televisiosta kauko-ohjaimella uusia kanavia, tuskin tulemme ajatelleeksi että käytämme kaikkiin noihin toimiin mikrotietokonetta. Kun tietokone on liitetty osaksi jonkin laitteen toimintaa siten, ettei sitä käytössä huomaa, tai ulospäin laite ei vaikuta tietokoneelta, sanomme kokonaisuutta sulautetuksi järjestelmäksi. Sulautettu järjestelmä, Embedded System, koostuu mikro-ohjaimesta, joka on yhdelle piipalalle integroitu mikroprosessori, muistipiirit ohjelmalle ja käsiteltävälle tiedolle, liitännät ulkomaailmaan ja tarvittavat ohjelmistot. Sulautetun järjestelmän päätehtävänä on valvoa ja ohjata sen elektronisen laitteen toimintoja johon se on integroitu. Mikro-ohjaimia voi olla useitakin samassa laitteessa, esimerkkinä vaikka kamerakännykkä ja DVD-soitin. Mikro-ohjaimella pyritään tuomaan laitteeseen älyä. Äly merkitsee lisää ominaisuuksia ja käyttömukavuutta, parempaa luotettavuutta, pienempää tehonkulutusta ja mikä ehkä tärkeintä, pienempiä valmistuskustannuksia. Sulautetulle järjestelmälle on tyypillistä reaaliaikaisuus. Mikroohjaimen on reagoitava välittömästi ärsykkeen saatuaan. Auton turvatyynyn on lauettava juuri oikeaan aikaan, samoin digikameran ja palohälytyksen on lähdettävä viiveettä ja oikeaan paikkaan. Jatkuvasti, tietämättämme, törmäämme sulautettuihin järjestelmiin. Nykykoti on täynnä sulautettua elektroniikkaa. Aamukahvit keitetään, lasten lelut ääntelevät, isän harrasterobotti liikkuu ja kodin viihde-elektroniikka toimii tietokoneen valvonnassa. Töihin tai kouluun ajamme autolla, jossa mikroohjaimia on kymmenittäin. Yhteydenpito kavereihin hoidetaan kännykällä, jonka tietoliikenteen hoitavat monet prosessorit ja tietoverkoissa on vielä niitä lisää. Sulautetun järjestelmän suunnittelu ja tekeminen edellyttää ohjelmiston ja laitteistojen syvällistä tuntemusta. Laitteisto-osaamiseen liittyy usein tarve tuntea sovelluskohde ja sen toiminta perusteellisesti. Upotetun systeemin rautaa ja sen ohjelmistoa suunnitellaan ja tehdään yleensä samanaikaisesti. Pienissä järjestelmissä työn tekee sama henkilö, suuremmissa joka työhön on oma spesialisti.
2.1. Mikrotietokone Tietokone on elektroninen laite, joka suorittaa sille annettua tehtävää eli ohjelmaa. Tietokone voi olla yleiskäyttöinen, - moneen erilaiseen tehtävään soveltuva, kuten PC, tai johonkin tiettyyn erityistarkoitukseen valmistettu, - jollaisia kaikki sulautetut järjestelmät ovat. Tämä kirja opastaa mikro-ohjaimen C-kieliseen ohjelmointiin. Siksi tutkitaan vain 8-bittisen sulautetun järjestelmän mikrotietokonetta. PC-ympäristö unohdetaan. Samat peruskäsitteet koskevat kyllä kaikkia tietokoneita, vain yksityiskohdissa - ja koossa, on eroja. Mikroprosessori, suoritin, CPU, Central Processing Unit CPU on mikro-ohjaimen sydän. Se hakee ohjelman käskyn ohjelmamuistista, tulkitsee sen ja jos käskyyn liittyy tiedon käsittelyä, hakee tarvittavan tiedon muistista ja lopuksi tekee käskyn määräämän toimenpiteen tiedolle. Käsitelty tieto toimitetaan takaisin muistiin, tai se pannaan I/O-portin (input/output, tulo/lähtö) kautta ohjaamaan moottoria, näytetään LCD-näytössä, tms. Ohjelmamuisti, Program Memory Ohjelmamuisti säilöö ohjelman käskyt. Sen tulee pitää tietonsa vaikka käyttösähkö katkeaa, eli sen tulee olla ns. haihtumatonta muistia. Sulautetuissa systeemeissä käytetään ohjelmamuistina flashmuistia. Datamuisti, Data Memory, (käyttömuisti) Datamuistissa tallennetaan käsiteltävä ja käsitelty tieto. Siksi sitä on kyettävä sekä lukemaan, että kirjoittamaan. Sulautetun järjestelmän datamuisti on tyypiltään SRAM, Static Random Access Memory, staattinen RAM. Tulo- ja lähtöliitännät, I/O-piirit, Input/Output I/O-liitännät ovat IC-piirejä (Integrated Circuit) ja/tai irtokomponentein tehtyjä kytkentöjä, joilla prosessori liittyy ulkoiseen maailmaan. Näitä ovat esimerkiksi erilaiset anturit (lämpötila-anturi, savuilmaisin, ovikytkin) ja toimilaitteet (näyttö, summeri, tasavirtamoottori, toinen tietokone, Internet). Kello-oskillaattori, Clock Oscillator Kaikki toiminta mikrotietokoneessa tapahtuu kello-oskillaattorin tahdittamana. Virtalähde, Teholähde, Power Supply Tietokone toimii sähköllä, jota saadaan paristosta, akusta tai virtalähdeosan avulla vaihtosähköverkosta. 2
2.2.1. Mikroprosessori, CPU, Central Processing Unit Mikroprosessori on mikrotietokoneen keskusyksikkö, joka suorittaa sille ohjelmakoodina annettua tehtävää. CPU voidaan ajatella koostuvan kolmesta lohkosta. 1. Datan käsittely-yksikkö 2. Koodin käsittely-yksikkö 3. Osoitteen käsittely-yksikkö Tässä lohkokaaviokuva AVR-mikro-ohjaimesta. JTAG-liitäntä on olennainen osa nykyaikaista mikroohjainta, sen toiminnasta ja käytöstä lisää liitteessä. 3
1. Tietokone käsittelee tietoa Tiedon käsittely tapahtuu tietokoneen keskusyksikössä, CPU, Central Prosessing Unit. Tietokone tosin ei tiedä yhtään mitään. Se osaa vain laskea. Ja kun se ei tunne muita numeroita kuin 1 ja 0, ei sen laskentataitokaan kovin kaksinen ole. Tästä voi jo päätellä, että mikroprosessorissa täytyy olla tiedonkäsittely-yksikkö, jossa tuo tiedon työstäminen tapahtuu. Tiedon käsittely voi olla esim. tiedon siirto jostain rekisteristä toiseen rekisteriin tai varsinaiseen muistiin, tai päinvastoin, jonkin rekisterin alustus (arvon asettaminen). Parhaimmillaan se on varsinaista tiedon manipulointia, kuten yhteenlaskua, vähennyslaskua, inkrementointia, dekrementointia, vertailua, AND-operaation tekoa, jne. Tiedon käsittely tapahtuu Accu-rekisterin ja ALUn, Aritmeettis-Looginen yksikkö, yhteistyönä. AVR-ohjaimissa on 32 akkua, General Purpose Register. 2. Miten tietoa käsitellään? Jossain on oltava ohjeet tiedonkäsittelyyn. Ohjeet ovat ohjelmassa, jonka ohjelmoija on kirjoittanut. Siis prosessorissa on oltava osa joka hakee, tunnistaa ja toimii noiden ohjeiden mukaan. Ohjeiden tulee olla yksinkertaisia, joten niitä tarvitaan paljon. Ohjeet ovat pieniä, peräkkäisiä käskyjä, joita tietokone käsittelee hirmuisella nopeudella. Siis toisen lohkon tulee olla käskynkäsittely-yksikkö. Se sisältää myös ohjaus- ja valvontaosan, Control Unit, joka tahdittaa CPU:n sisäisiä toimintoja ja liitäntäpiirien kautta kytkettyjen toimilaitteiden työskentelyä. 4
3. Mistä ohjeet ja työstettävä tieto haetaan, tai minne käsitelty tieto viedään? CPU osoittaa osoiteväylän avulla ohjelmamuistia kun sieltä haetaan ko. osoitteesta käsky käskyrekisteriin. Osoitetta tarvitaan myös, kun haetaan käsiteltävä tieto muistista tai ulkoisesta piiristä, tai kun käsitelty tieto tallennetaan tai viedään ohjaamaan ulkoista laitetta. Prosessorin postipoika on sen kolmas lohko eli osoitteenkäsittely-yksikkö. Ohjelmalaskuri, Program Counter, on osoiterekisteri joka pitää kirjaa ohjelmasta ja osoittaa seuraavaksi noudettavan käskyn osoitteeseen. Ohjelmalaskuri nollautuu tietokoneen käynnistyessä, joten osoitteessa 0x0000 tulee olla ohjelman ensimmäinen käsky. Toinen tärkeä osoiterekisteri on pinomuistin osoitusrekisteri, Stack Pointer. Pinomuisti on datamuistista varattu muistialue, johon keskeytyksen tullessa pääohjelman paluuosoite ja muuttujat tallennetaan. Kun keskeytysohjelma on suoritettu, pääohjelman paluuosoite palautetaan pinosta CPU:n ohjelmalaskurin arvoksi ja pääohjelma jatkuu siitä mihin jäätiin. Näin ajatellen monimutkaisen mikroprosessorin toiminta on helppo ymmärtää. Ja mikä parasta, kaikki prosessorit toimivat samalla periaatteella pienimmästä AVR Tinysta suurimpaan PC:n Pentiumiin. Elektronikko näkee prosessorin, joka - sisältää tuhansittain (miljoonittain) MOSFET-transistoreita, - joista on tehty - portteja, kiikkuja, laskureita, multipleksereitä, koodereita... Ohjelmoija näkee prosessorin, joka - sisältää rekistereitä ja - käskyt, joilla rekistereitä manipuloidaan 2.2.2. Puolijohdemuistit Valmis tietokoneohjelma pitää tallentaa johonkin, josta se on saatavissa käyttöön aina, kun sitä tarvitaan. Myös käsiteltävä, tai käsitelty, tieto pitää tallentaa johonkin. Koodin ja datan tallennukseen käytetään puolijohdemuisteja. Puolijohdemuisti on elektroninen piiri, joka tallentaa numeroita sähköisessä muodossa. 5
Muistiin tallennetaan binäärilukuja, jotka ovat joko käskyjä tai tietoa (dataa). Jokaisella muistipaikalla on oma osoite ja kussakin muistipaikassa on tallessa yksi binääriluku, tavu, joka puolestaan koostuu kahdeksasta bitistä. Bitit tallennetaan muistikennoihin. Muistien toiminta ja käyttö eroaa tuon tallennustavan perusteella. Tänä päivänä sulautetuissa järjestelmissä on käytössä kolmea muistityyppiä: Datamuisti, Data Memory Datamuisti on käyttömuistia jota pitää voida lukea ja kirjoittaa tavu kerrallaan. SRAM-muistikenno (Static Random Access Memory), siis se mihin yksittäinen bitti tallennetaan, koostuu MOSFETtransistoreista rakennetuista kiikuista (flip-flop). Tieto häviää käyttösähkön katkettua. Kuva 1. SRAM-muisti. 6
Ohjelmamuisti, Program Memory Ohjelmamuistin tulee olla haihtumatonta ROM-tyyppistä muistia (Read Only Memory), eli se säilyttää tietonsa sähkökatkoksen yli. Ohjelmointi, bittien tallentaminen muistikennoon, tapahtuu ennen muistin käyttöönottoa. Flash-muisti on tämänpäivän ohjelmamuistia. Siinä bitti talletetaan FET-transistorin gate-kapasitanssiin (kondensaattoriin). Flash-muistia ei voi käsitellä RAM-muistin tapaan bitti bitiltä, vaan kokonainen muistilohko pitää alustaa ja ohjelmoida kerrallaan. Alustettuna eli tyhjennettynä flash-muistin kaikki bitit ovat loogiselta tilaltaan ylhäällä, siis '1'. Lukeminen kyllä onnistuu tavu (8 bittiä) kerralla. Kuva 2. Ohjelmamuisti. Ikidatamuisti EEPROM-muistia (Electrically Eraseable Programmable Read Only Memory) voidaan lukea ja kirjoittaa bitti bitiltä ja se säilyttää tietonsa sähkökatkoksen yli. Sinne talletetaan tavallisesti dataa jota tarvitaan uudelleen ja uudelleen (esim. anturidatan korjauskerrointaulukko). Kallista ja hidasta. 7
Hyvä tietää The AVR is a family of RISC microcontrollers from Atmel. The AVR architecture, first conceived by two electronic engineering students at the Norwegian Institute of Technology (NTH), has been refined and developed by Atmel Norway, in a division founded by the chip's architects. The AVR architects, Vergard Wollan and Alf-Egil Bogen. Bogen's 1992 NTH thesis was "High Speed Analog to Digital Converters in CMOS". 8
Mikrotietokone on laite, - joka suorittaa ohjelmamuistiin tallennettujen käskyjen ( =ohjelma) avulla mikroprosessorin (=CPU) ohjauksessa tiedonsiirtoa työmuistin (RAM) ja syöttö/tulostuslaitteiden (input/output) välillä - ja ennenkaikkea tiedonkäsittelyä. Mikroprosessori, suoritin, CPU on komponentti, - jonka toiminta on ohjattavissa muistiin tallennetuilla käskyillä (=ohjelma) se voi käskyjen mukaan: - siirrellä tietoa - suorittaa aritmetiikka (+, -, inkrementointi, dekrementointi...) ja loogisia operaatioita (AND, OR...) - tehdä päätöksiä (if-else) Mikro-ohjain, mikrokontrolleri on komponentti, jossa samaan piiriin on integroitu * mikroprosessori, * ohjelma- ja työmuistit * ja Input/Output-piirit. Se on siis yhdelle piirille (=chip) integroitu tietokone. 9