Yleistä. 08.10.07 Sulautetut järjestelmät 1



Samankaltaiset tiedostot
Arto Salminen,

käännösprosessi Kääntäjä Konekielikääntäjä (Assembler) Yhdistelijä (linker) Lataaja (loader)

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

Kontrollerin sisäisten komponenttien käytöstä. Vielä vähän asiaa sisäisten lohkojen käytöstä

OHJ-4301 Sulautettu Ohjelmointi

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmän rakenne

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

Stallings, Luku 4.1. KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1. KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 12-1

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

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

7. Luento: Ytimet. Tommi Mikkonen,

Käyttöjärjestelmät: Virtuaalimuisti

Väylät. Prosessorin tie ulkomaailmaan Pienissä järjestelmissä vain yksi väylä. Osoite, data ja ohjaussignaalit Prosessori ainoa herra (master)

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Kertausluento luennoista 1-3 1

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

OHJ-4301 Sulautettu Ohjelmointi

Luento 4 Aliohjelmien toteutus

Mikrokontrollerit. Mikrokontrolleri

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

Arto Salminen,

Ohjelmiston testaus ja laatu. Testaus yleistä

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

Arto Salminen,

Ohjelmointiharjoituksia Arduino-ympäristössä

Arto Salminen,

Tietorakenteet ja algoritmit

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Lyhyt kertaus osoittimista

Jakso 4 Aliohjelmien toteutus

Arto Salminen

Tietueet. Tietueiden määrittely

MAA10 HARJOITUSTEHTÄVIÄ

Agenda. Johdanto Säätäjiä. Mittaaminen. P-, I-,D-, PI-, PD-, ja PID-säätäjä Säätäjän valinta ja virittäminen

Prosessi perinteisesti

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

11/20: Konepelti auki

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

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Luento 5 (verkkoluento 5) Suoritin ja väylä

Lisää segmenttipuusta

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Luento 8 Ohjelman toteutus järjestelmässä

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Tavoite. Monitorit. Monitori Hoare Monitori. Minimoi virhemahdollisuuksia. Monitori Synkronointimenetelmiä Esimerkkejä

2 Konekieli, aliohjelmat, keskeytykset

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Jakso 8 Ohjelman toteutus järjestelmässä

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Jakso 8 Ohjelman toteutus järjestelmässä

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Tietorakenteet ja algoritmit

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

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

Luento 4 Aliohjelmien toteutus

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

KYMENLAAKSON AMMATTIKORKEAKOULU

Jakso 8 Ohjelman suoritus järjestelmässä

Jakso 8 Ohjelman suoritus järjestelmässä

CUDA. Moniydinohjelmointi Mikko Honkonen

Väli- ja loppuraportointi

2.2 Täydellinen yhtälö. Ratkaisukaava

OHJ-1151 Ohjelmointi IIe

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Laitteistonläheinen ohjelmointi

Luento 4 Aliohjelmien toteutus

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

Monipuolinen esimerkki

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

6. Luento: Skedulointi eli Vuoronnus. Tommi Mikkonen,

Jakso 4 Aliohjelmien toteutus

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

3. Luento: Muistin hallinta. Tommi Mikkonen,

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Prosessi (4) Suorituksessa olevan ohjelman esitysmuoto järjestelmässä. Jakso 8 Ohjelman suoritus järjestelmässä. Prosessin elinkaari (9)

Luento 5 (verkkoluento 5) Suoritin ja väylä

Esimerkkejä derivoinnin ketjusäännöstä

Tietorakenteet ja algoritmit

Transkriptio:

Yleistä Luennot tiistaisin 8-10, TB111, I periodi ei harjoituksia harjoitustyö (auto) II periodilla harjoitustyön esittely I periodin lopussa erikseen ilmoitettavana aikana 08.10.07 Sulautetut järjestelmät 1

Mikä on sulautettu järjestelmä? hiiri? näppäimistö? DVD-soitin? ipod? XBox? Mitä erityistä siinä on? 08.10.07 Sulautetut järjestelmät 2

Sulautettu järjestelmä Erikoistunut, sovitettu käyttötarkoitukseen sekä ohjelmiston että laitteiston osalta Usein osa laajempaa järjestelmää tai hierarkkinen Suljettu/staattinen järjestelmä Vika/virhesietoinen järjestelmä 08.10.07 Sulautetut järjestelmät 3

Suunnittelu Järjestelmä koostuu yleensä sekä laitteistosta että ohjelmistosta Jos toimitaan standardi laitteistoilla, puhutaan usein reaaliaikajärjestelmistä Sovellus ja osa laitteistosta dedikoitua Toimitaan perinteisen kj:n alaisuudessa tai rinnalla Kurssilla lähinnä puhumme täysin dedikoiduista järjestelmistä 08.10.07 Sulautetut järjestelmät 4

Esimerkkejä laitteistoista Pieni järjestelmä ( microchip ) Keskisuuri ( atmel ) Sulautettu Linux ( Axis ) Fpga pohjainen ( xilinx ) Dynaaminen ( tensilica ) Perinteinen ( freescale ) 08.10.07 Sulautetut järjestelmät 5

Erityispiirteitä Rajatut resurssit Kiinteät tehtävät Sovellus ei terminoidu Ei pakotietä 08.10.07 Sulautetut järjestelmät 6

Ohjelmointi Suljettu, erikostunut järjestelmä ei sisällä ohjelmointityökaluja eikä laitteistoresursseja Ohjelmistot kehitetään muussa ympäristössä -> ristikäännös 08.10.07 Sulautetut järjestelmät 7

Ohjelmointityökalut Ristikääntäjä Gcc tai muu kääntäjä Muut työkalut Assembler, yhdistelijä, yms Ajoajan kirjastot, esim C-kielessä kielen tuki C-standardikirjasto IO-kirjasto käyttöjärjestelmätuki 08.10.07 Sulautetut järjestelmät 8

Kielentuki Suorituksen kannalta välttämättömät rutiinit, C-kielessä esim. kertolasku arkkitehtuureille joissa ei käskynä Käynnistysrutiinit, joilla kontrolli siirtyy ohjelmaan 08.10.07 Sulautetut järjestelmät 9

C-standardikirjasto Ohjelmoijalle tutut rutiinit, joita C-kielessä käytetään (malloc, printf, strlen,... ) Jakautuu kolmeen ryhmään laiteriippumattomat (strlen, strcpy,... ) yleinen IO (printf, sprintf,... ) käyttöjärjestelmä rajapinta ( fopen, signal,... ) 08.10.07 Sulautetut järjestelmät 10

IO-kirjasto laitekohtainen IO-toiminto, useimmiten merkki-io (getchar, putchar,... ) käytetään joko suoraan tai standardikirjaston kautta 08.10.07 Sulautetut järjestelmät 11

Muuta Newlib on kirjastopaketti, joka sisältää C- standardikirjaston kevennetyn version. kirjaston vaatima käyttöjärjestelmätuki on minimoitu tavoitteena helpottaa sovellusten siirtoa sulautettuihin (tai muihin pieniin) järjestelmiin 08.10.07 Sulautetut järjestelmät 12

Käyttöjärjestelmätuki laitteisto- tai sovelluskohtaiset rutiinit käyttöjärjestelmän emulointiin C-standardikirjasto odottaa joidenkin käyttöjärjestelmärutiinien olemassaoloa esim. fopen open emulointi tai kj (jos sellainen on) tarpeen yhteensopivuuden nimissä, jos halutaan sovittaa standardisovelluksia sulautettuun ympäristöön 08.10.07 Sulautetut järjestelmät 13

Ohjelmointityökalut Kääntäjä (C, C++, Java, tms. ) assembler (gas,... ) yhdistelijä (gld,... ) muut työkalut nm, ar, objdump, objcopy,... Debuggeri (gdb, ) 08.10.07 Sulautetut järjestelmät 14

Kääntäjä useimmiten gcc (tai sen variantti) tuottaa symbolista konekoodia (.s) 08.10.07 Sulautetut järjestelmät 15

assembler arkkitehtuurikohtainen symbolisen konekoodin kääntäjä objektikoodiksi (.o) usein näkymätön vaihe käännöksessä objektikoodi paikastariippumatonta 08.10.07 Sulautetut järjestelmät 16

yhdistelijä yhdistelee objektikoodit erilähteistä (ohjelmoija, kirjastot) valmiiksi tulostiedostoksi sitoo ohjelman sijoittelun muistiin poimii koodialueet yhteen läjään dataalueet toiseen, jne... 08.10.07 Sulautetut järjestelmät 17

Ohjelmointityökalut *.c *.s *.o exe? käännös, assembly, yhdistely, entä sitten? Miten sulautetussa järjestelmässä koodi saadaan muistiin? 08.10.07 Sulautetut järjestelmät 18

Muistinkäyttö sulautettu järjestelmä staattinen ohjelma sijoitetaan suoraan muistiin, ei massamuistia ohjelmoijan kerrottava eri tarkoituksiin käytettävissä olevat muistialueet (Flash)ROM, RAM, etc... lisäksi koodi on saatava muistiin oikeaan paikkaan ja käynnistettyä 08.10.07 Sulautetut järjestelmät 19

Ohjelman lataus jos järjestelmä aivan tyhjä, erillisellä ohjelmointilaitteella luodaan ohjelmarom yleensä laitteistoissa on jonkinlainen ohjelma valmiina ( bootrom, bios, etc... ) AVR-prosessori: muistissa valmiina flashohjelmointi (vrt: PC-bios päivitys) tämä osaa ladata/käynnistää koodin 08.10.07 Sulautetut järjestelmät 20

Ohjelman lataus pelkkä sovellus kaikki tehtävä itse bios olemassa bios tekee perus alustuksen, käynnistää sitten sovelluksen sovellus flashmuistissa, josta bios sen tunnistaa ja osaa käynnistää tai configuraatio eeprom (vrt. PC-bios) joka kertoo, mistä sovellus löytyy 08.10.07 Sulautetut järjestelmät 21

Ohjelman lataus aina koodia ei haluta ajaa ROM pohjalta, silloin siirto RAM-muistiin ja suoritus sieltä testausvaiheessa käynnistys usein eri tavalla kuin lopullisessa järjestelmässä 08.10.07 Sulautetut järjestelmät 22

Muistettavaa koodi läsnäolevaa (resident), ei erillistä latausta käynnistyksessä mitä mahdollinen bios alustaa, mikä jää sovelluksen tehtäväksi lopullinen vs. testaus, onko tilanteessa eroja 08.10.07 Sulautetut järjestelmät 23

Ohjelmointityökalut gnu binutils sisältää edustavan joukon erilaisia ohjelmia, joita saattaa sulautettua järjestelmää ohjelmoidessa tarvita miten saat ohjelmasi kohdejärjestelmään? download-mekanismit, tiedostomuodot bootstrap 08.10.07 Sulautetut järjestelmät 24

Ohjelmistotestaus Simulaattori olisi kiva, ettei tarvitse aina ajaa testiä kohdelaitteistossa Onko kohdelaitteisto olemassa ohjelmaa tehtäessä? Tarvitaanko laitteistoon tukea testaukselle debug-portti tms. 08.10.07 Sulautetut järjestelmät 25

Testaustyökalut Logiikka-analysaattori Oskilloskooppi Emulaattorit prosessorille eprom-emulaattori 08.10.07 Sulautetut järjestelmät 26

Ohjelmistoarkkitehtuurit Silmukka Keskeytysohjattu Prosessipohjainen 08.10.07 Sulautetut järjestelmät 27

Silmukka pienten järjestelmien ydin yksinkertainen vaikkapa näppäimistö voisi olla tällainen 08.10.07 Sulautetut järjestelmät 28

Silmukka Sopii järjestelmiin, joissa ei ajoitusvaatimuksia tehdään vai yhtä asiaa tai pieniä peräkkäin pyörii prosessorin sallimalla vauhdilla Start: jsr _Init clra loop: out a,scanreg in ScanReg,b and #1,b beq nokey jsr SendCode nokey: add #2,a jmp loop 08.10.07 Sulautetut järjestelmät 29

Silmukka jos tarvitsee tehdä montaa asiaa lomitettuna ja ajoitettuna, hankaluudet alkavat loop: JSR eka JSR tokan_alku JSR eka JSR tokan_loppu JMP loop 08.10.07 Sulautetut järjestelmät 30

Silmukka jos ajoitus silmukan keston avulla laske syklejä, silmukka oikean kestoinen if:n eri haarat saman kestoisiksi 08.10.07 Sulautetut järjestelmät 31

Keskeytysohjattu ydin Keskeytys, mikä se on? Asynkroninen aliohjelmakutsu Keskeytysmekanismia käytetään Oheislaitteiden palvelupyyntöihin Poikkeustilanteiden käsittelyyn Käyttöjärjestelmäkutsujen tekemiseen 08.10.07 Sulautetut järjestelmät 32

Keskeytysmekanismeja Suora, siirry osoitteeseen X Vektoroitu, Siirry osoitteeseen, joka löytyy keskeytysvektorin alkiosta N N on keskeytyksen tyypin mukaan määräytyvä tai oheislaitteen antama tunniste Suorita käsky, jonka oheislaite antaa (8085) 08.10.07 Sulautetut järjestelmät 33

Toiminto keskeytyksen tullessa Talletetaan prosessorin tila yleensä PC + tilarekisteri, useimmiten myös keskeytykset kielletään talletus pinoon tai erikoisrekistereihin myös muuta voidaan tallettaa Pino talletuspaikkana sallii sisäkkäiset keskeytykset, eli keskeytys voidaan keskeyttää Rekisteriä käyttävissä arkkitehtuureissa tarvitaan lisätoimenpiteitä, mikäli näin tällaista halutaan 08.10.07 Sulautetut järjestelmät 34

Toiminta keskeytyksen tullessa tilajaollisissa arkkitehtuureissa tilanvaihto USER -> SUPERVISOR paluuta varten oma käsky (RTI) 08.10.07 Sulautetut järjestelmät 35

mc680x0 Tallettaa ohjelmalaskurin ja tilarekisterin pinoon Kysyy keskeytysvektorin oheislaitteelta Tai käyttää kiinteää vektoria (exceptions tai autovector) Nostaa suoritusprioriteetin keskeytyspyynnön tasolle (siis ei suoraan kiellä kaikkia keskeytyksiä) Siirtyy etuoikeutettuun tilaan Kontrolli vektorin osoittamaan paikkaan 08.10.07 Sulautetut järjestelmät 36

sparc Tallettaa tilan keskeytyspinoon (kovossa) Pc:t, cwp, asi, ccr, pstate, traptype Siirtyy etuoikeutettuun tilaan Kieltää keskeytykset Siirtyy käyttämään alternate globals rekistereitä Traptype ohjaa kontrollin vektorin kautta 08.10.07 Sulautetut järjestelmät 37

arm Siirtyy käyttämään pyynnön mukaisia rekistereitä Tallettaa ohjelmalaskurin R14 rekisteriin Tilarekisteri ohjelmalaskurissa Kieltää keskeytykset Neljä tilaa (user, firq, irq, svc) Kontrolli pyynnön mukaiseen osoitteeseen 08.10.07 Sulautetut järjestelmät 38

Toiminto keskeytyksen tullessa Kovo tallettaa (yleensä) vain tärkeimmän, ohjelmoijan huolehdittava lopusta itse Keskeytys voi tulla koska tahansa, mikäli keskeytykset sallittu Yleensä vain käskyjen välissä (tai seurauksena) Löytyy arkkitehtuureja, joissa keskeytyksiä käsitellään myös kesken käskyn 08.10.07 Sulautetut järjestelmät 39

Keskeytys Asynkroninen aliohjelmakutsu Esittelee rinnakkaisuuden prosessoriarkkitehtuureihin Tämä huomioitava sovelluksissa yleensä rekisterien arvojen säilyttävä ennallaan keskeytyksen yli yhteisten muuttujien käsittely Keskeytys vs. tausta Keskeytys vs. keskeytys 08.10.07 Sulautetut järjestelmät 40

Keskeytysohjattu ydin koostuu taustasilmukasta ja keskeytyspalveluista silmukassa tehdään jotain kiireetöntä varsinainen toiminta keskeytyspalveluissa 08.10.07 Sulautetut järjestelmät 41

Keskeytysohjattu ydin ajoitetut toiminnot kellokeskeytykseen tapahtumaohjatut toiminnot omiin laitekeskeytyksiin taustasilmukka voidaan ymmärtää silmukkaytimeksi paljoa ei kuitenkaan saa yrittää tehdä samaan aikaan priorisointi, päällekkäiset keskeytykset 08.10.07 Sulautetut järjestelmät 42

Keskeytysydin prosessorin rekisterit voidaan jakaa kiinteästi eri keskeytyspalveluiden kesken vaatii paljon rekistereitä/vähän tehtäviä 08.10.07 Sulautetut järjestelmät 43

Keskeytysohjattu ydin ongelma: keskeytyspalvelu ei saa olla pitkä tai keskeytyslatenssi kasvaa keskeytyslatenssi: kauanko aikaa menee palvelupyynnöstä (keskeytys) homman valmistumiseen 08.10.07 Sulautetut järjestelmät 44

Keskeytysohjattu ydin Ongelma: miten keskeytyspalveluiden välinen prioriteetti määräytyy? Keskeytyspalvelu periaatteessa atominen toiminto Kun se on käynnistynyt, se suoritetaan loppuun, ennen kuin seuraava keskeytys käsitellään Vähemmän tärkeä käsittely voi viivästyttää kiireisempää 08.10.07 Sulautetut järjestelmät 45

Keskeytys ohjattu ydin Sisäkkäiset keskeytykset voidaan sallia Ohjelmallisesti Laitteistossa Huomioita kontekstit tallettuvat pinomaisesti Ensiksi tulleen keskeytyksen käsittely viivästyy eniten Saattaa johtaa liian pitkiin latensseihin 08.10.07 Sulautetut järjestelmät 46

Huomioita Ongelma pinomainen (keskeytys)kontekstien talletus Kontekstit puretaan käänteisessä saapumisjärjestyksessä Usein kuitenkin saapumisjärjestys haluttaisiin säilyttää Ratkaisu: Irrotetaan kontekstit pinosta Sijoitetaan ne erilliseen taulukkoon, josta kiireisin valitaan suoritukseen Näin on keksitty prosessiydin 08.10.07 Sulautetut järjestelmät 47

Prosessiydin ongelma jaetaan joukoksi tehtäviä (funktioita) nämä priorisoidaan ja liipaistaan suoritukseen keskeytyksistä 08.10.07 Sulautetut järjestelmät 48

Prosessi funktio ja sen konteksti konteksti -> prosessorin tila funktion suoritusaikana konteksti voidaan tallettaa ja ladata 08.10.07 Sulautetut järjestelmät 49

Prosessiydin periaate joku konteksti ladattuna ja suorituksessa muut odottavat saapuva keskeytys tallettaa aktiivisen kontekstin aktivoi muita konteksteja kiireellisin ladataan suoritukseen 08.10.07 Sulautetut järjestelmät 50

Prosessiydin prioriteetit voivat olla dynaamisia sulautetuissa järjestelmissä usein staattinen prosessijako kaikki prosessit luodaan alustuksessa yksikään prosessi ei terminoidu 08.10.07 Sulautetut järjestelmät 51

Prosessiydin valmiita ytimiä saatavilla kaupallisesti reaaliaikakäyttöjärjestelmät VRTX OS-9 psos QNX yms. 08.10.07 Sulautetut järjestelmät 52

Prosessiydin tukee modulaarisia sovelluksia helpottaa ohjelmistokehitystä keskeytysten kautta rinnakkaisuus tulee esiin, käytännön sulautetut järjestelmät kooperatiivisia mekanismit yhteisten muuttujien käsittelyyn 08.10.07 Sulautetut järjestelmät 53

Rinnakkaisuudesta yksinkertainen tapaus taustaprosessi <> keskeytyspalvelu monimutkaisemmat tapaukset prosessi <> prosessi 08.10.07 Sulautetut järjestelmät 54

Rinnakkaisuudesta missä mahdolliset ongelmat ovat? yhteiset muuttujat Laiterekisterit Latenssin tuomat ajoitusongelmat koodin vapaakäyntisyys Globaalit muuttujat ovat potentiaalisesti yhteisiä kirjastojen vapaakäyntisyys? 08.10.07 Sulautetut järjestelmät 55

Rinnakkaisuudesta Ongelmat muuttujien atomisuus 8/16/32-bittiset luvut <> 8/16/32 bittinen arkkitehtuuri muuttujaryhmien konsistenssi kaksi muuttujaa pitää olla synkronisoitu esim. puskurin indeksit vs. merkkien määrä 08.10.07 Sulautetut järjestelmät 56

Rinnakkaisuudesta Yksinkertainen tapaus lähetyskeskeytys <> (tausta)prosessi keskeytysytimen tyypillinen tilanne keskeytyspalvelu atominen, vain prosessi tarvitsee erillistä huomiota Myös käyttöjärjestelmissä, joissa prosesseilla erilliset muistiavaruudet 08.10.07 Sulautetut järjestelmät 57

Rinnakkaisuudesta char buf[buflen]; int count = 0; int in = 0; int out = 0; char *TX = TX_REG_ADDR; /* keskeytyspalvelu, kutsutaan keskeytysvektorin kautta */ void OutIntr() { if( count ) { *TX = buffer[out]; out = (out+1) % BUFLEN; count--; } else { DisableOutIntr(); } } /* Tulostusrutiinit, sovellus kutsuu tulostaessaan merkin */ void Putchar( char c ) { DisableInts(); IO_Putc( c ); EnableInts(); } void IO_Putc( char c ) { if( count < BUFLEN ) { buffer[in] = c; in = (in+1) % BUFLEN; count++; EnableOutIntr(); } } 08.10.07 Sulautetut järjestelmät 58

Rinnakkaisuudesta Keskeytysten oikea-aikainen kielto ratkaisee Sopivilla algoritmeilla tarve voidaan välttää Mikäli arkkitehtuuri sallii Mikäli tilanne sallii 08.10.07 Sulautetut järjestelmät 59

Rinnakkaisuudesta Monimutkaisempi tapaus lukija-kirjoittaja kahden prosessin välillä eroaa edellisestä sillä, että kumpi tahansa osallistuja on keskeytettävissä yhteisen muistin omaavilla prosesseilla sulautetut järjestelmät, käyttöjärjestelmissä, jotka tuntevat säikeet tuttu kj-kurssilta 08.10.07 Sulautetut järjestelmät 60

Harjoitustyöstä laitteistona auto, jossa linux-kortti ja sillä apuna 2 AVR-mikrokontrolleria tehtävänä ohjelmoida linux-sovellus ja sille avuksi toiseen AVR:ään apu-sovellus. 08.10.07 Sulautetut järjestelmät 61

Lohkokaavio 08.10.07 Sulautetut järjestelmät 62

Ohjelmointitekniikoita Ytimien piirteitä Oheislaitteiden käsittelystä Muistinhallinnasta Perustekniikoita Säätöalgoritmeista 08.10.07 Sulautetut järjestelmät 63

Ytimien piirteitä Silmukkaydin pieniin yksinkertaisiin järjestelmiin ajoitusten tai prioriteettien hallinta hankalaa monoliittinen, hankala modularisoida 08.10.07 Sulautetut järjestelmät 64

Ytimien piirteitä keskeytysydin jos ei paljoa tekemistä, mutta kovat vasteaikavaatimukset Hankala paljon prosessointia vaativissa tehtävissä 08.10.07 Sulautetut järjestelmät 65

Ytimien piirteitä Prosessiydin Joustava ja skaalautuva, helpottaa sovelluksen modularisointia pienissä tehtävissä voi kuormittaa liikaa muistettavaa irrottava <> ei-irrottava kiinteä prioriteetit, round-robin vai dynaaminen skedulointi? 08.10.07 Sulautetut järjestelmät 66

Reaaliaikatehtävä Yleinen muoto task() { init(); for(;;) { do_work(); } } 08.10.07 Sulautetut järjestelmät 67

Reaaliaikatehtävä Vaihtoehtoinen muoto func() { if(!initialized ) { init(); } else { do_work(); } return; } 08.10.07 Sulautetut järjestelmät 68

Reaaliaikatehtävät Yleinen muoto prosessiytimissä Vaihtoehtoinen muoto käytössä eiirroittavaa skedulointia käytettäessä, erityisen käyttökelpoinen pienillä prosessoreilla pienissä tehtävissä 08.10.07 Sulautetut järjestelmät 69

Oheislaitteiden käsittelystä Kyselläänkö vai keskeyttääkö? miten keskeytyksiä hallitaan? keskeytyksen kuittaus tasoherkkä <> reunaherkkä Synkroninen vai asynkroninen muista volatile C-kielessä readonly/writeonly rekisterit päällekkäiset rekisterit varjorekisteri tekniikka 08.10.07 Sulautetut järjestelmät 70

Muistinhallinnasta paikalliset vs. yhteiset muuttujat pysyvät vs. automaattiset muuttujat Kiinteä vs. dynaaminen varaus 08.10.07 Sulautetut järjestelmät 71

Muistin käyttö Kiinteät varaukset Pysyvä dynaaminen varaus Dynaaminen varaus/omat muistialtaat Dynaaminen varaus/yhteinen muistiallas Prosessiytimessä pohdittava myös pinon käyttö. 08.10.07 Sulautetut järjestelmät 72

Muistin käyttö int a; main() { int b; int *cp; } cp = malloc(n); Globaali muuttuja Data alueella Funktio Koodi alueella Paikalliset muuttujat Pinossa Dynaaminen muuttuja Varataan data-alueen loppuun (yleensä siellä on ns. heap) 08.10.07 Sulautetut järjestelmät 73

Koodialue.text Data-alue.data Data-alue.bss Vapaa alue Keko, eli dynaaminen varaus täyttää vasemmalta Pinoalue - stack Pino täyttää oikealta 08.10.07 Sulautetut järjestelmät 74

Perustekniikoita perinteisesti paljon ohjelmamuistia, vähän datamuistia Aika vs. tila Taulukointi laskennan sijaan Lasketaan etukäteen taulukkoon, esim funktiot kuten sin(), cos(), tan() sopivia uhreja. 08.10.07 Sulautetut järjestelmät 75

Perustekniikoita Puskurointi Kiertävä puskuri tavallinen tekniikka Yksinkertaista muistin uudelleen käyttöä In pointer Out pointer 08.10.07 Sulautetut järjestelmät 76

Säätöalgoritmeista Peruskäsitteet asetusarvo eli haluttu arvo oloarvo eli mitattu arvo erosuure, edellisten erotus ohjausarvo, mitä laitteelle kerrotaan, jotta erosuure pienenisi 08.10.07 Sulautetut järjestelmät 77

Säätöalgoritmeista kolme perussäätäjää P-säätäjä I-säätäjä D-säätäjä ja yhdistelmät PI, PD, PID 08.10.07 Sulautetut järjestelmät 78

P-säätäjä yksikertaisin säätäjä u = K*e + M u, ohjausarvo e, eroarvo K, kerroin M, ohjauksen nolla-arvo 08.10.07 Sulautetut järjestelmät 79

P-säätäjä Mitä isompi ero, sitä suurempi ohjaus jättää aina pienen virheen sopivilla kertoimilla voi alkaa värähdellä 08.10.07 Sulautetut järjestelmät 80

I-säätäjä Integroiva säätäjä, perustaa ohjauksen useampaan kuin yhteen eroarvoon u = K * average( e(1) e(k) ) u, ohjausarvo e( n ), eroarvot k, montako huomioidaan K, kerroin 08.10.07 Sulautetut järjestelmät 81

I-säätäjä ei reagoi pieniin muutoksiin ei asentovirhettä hidas käytetää harvoin yksin 08.10.07 Sulautetut järjestelmät 82

D-säätäjä Derivoiva säätäjä, perustaa ohjauksen erosuureiden derivaattaan u = K * ( e(n) e(n-1) ) nopea herkkä värähtelemään ei yksinään käyttökelpoinen 08.10.07 Sulautetut järjestelmät 83

PID-säätäjä Yleissäätäjä P osa huolehtii perussäädöstä D osa tuo nopeutta I osa vaimentaa värähtelytaipumusta saavuttaa asetusarvon, ei virhettä 08.10.07 Sulautetut järjestelmät 84

Esimerkki Pieni sovellus (worms) Laitteisto MVME133 Mc68020 2 Mb Ram sarjaportti Valmiina debug rom, joka initialisoi prosessorin ja osaa ladata koodin rammuistiin RAM pohjainen suoritus 08.10.07 Sulautetut järjestelmät 85

Esimerkki Yksinkertainen ydin Synkroninen vuorottelu, 4 prosessia, ei keskeytyksiä 08.10.07 Sulautetut järjestelmät 86

Esimerkki Rakenne Initialisointi IO-rutiinit glue -rutiinit, eli liityntä DEBUG-ROMiin Ydin sovellus 08.10.07 Sulautetut järjestelmät 87