OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, TB 109 Arto Salminen, arto.salminen@tut.fi
Läpäisyvaatimukset Hyväksytysti suoritetut: Tentti Harjoitustyöt
Harjoitustyöt 3 harjoitustyötä Jokaisesta mahdollisuus tienata 6p, eli siis max 18p Tehdään pareittain Luonteeltaan tyypillisiä sulautetun ohjelmiston toteuttamiseen liittyviä tehtäviä Jos joku keksii oman aiheen, on mahdollisuuksien rajoissa toteuttaa siihen liittyvä ohjelmisto, mutta asiasta on sovittava etukäteen Työt voimassa vain tähän toteutuskertaan liittyen (kuka arvaa tässä kohtaa että aiomme uudistaa kurssia ensi vuodeksi?)
Tentti ja arvostelu Tentti: 5 tehtävää, joista jokaisesta max. 6p Läpipääsyyn vaaditaan 12p Arvostelu: Puolet arvosanasta harjoitustöiden laatuun perustuen (max 18p), toinen puoli tentistä (30p-12p=18p) Tästä syystä harkkatyöt ja tentti voimassa vain tällä samalla toteutuskerralla!
Yhteenveto #1: Johdanto Sulautettu järjestelmä Ohjelmisto ja laitteisto ovat kiinni toisissaan niin saumattomasti ettei kumpikaan ole käyttökelpoinen ilman toista Useita erilaisia insinööritieteitä osana suunnittelua Ohjelmiston toteutuksessa joudutaan usein yhdistämään eri alojen asiantuntijoiden vaatimukset Sulautettu ohjelmointi Ymmärrys mitä taustalla olevan laitteiston oletetaan tekevän Sisäänrakennettu rinnakkaisuus, aikakriittisyys, reaktiivisuus ja vikasietoisuus (sekä yhä useammin myös hajautus!)
Yhteenveto #2: Laitteistorajapinta Sulautettu arkkitehtuuri Keskeytykset Oheislaitteet
Yhteenveto #3: Muistinhallinta Eri muistityypit soveltuvat eri käyttöön Myös saman tyypin sisällä erilaisia toteutuksia, hintoja, kokoja, ominaisuuksia, jne. Muistin käytön suunnitteleminen ohjelmoijan vastuulla Sekä koko muistin kulutuksen osalta pienissä järjestelmissä Että yksittäisen prosessin osalta suuremmissa järjestelmissä MMU tarjoaa suojausmekanismin prosessien välille; ei aina vaihtoehto Välimuisti nopeuttaa tilastollisesti, mutta ei sovi kaikkein reaaliaikaisimpien ohjelmistojen toteuttamiseen
Yhteenveto #4: Prosessit ja säikeet Prosessit sisältävät yhden tai useampia säikeitä saman osoiteavaruuden sisällä Säie pienin skeduloitava yksikkö Run, Ready, Wait (+ lisätiloja tarpeen mukaan?) Keskeytyksissä säikeen (prosessin) ympäristö (rekisterit + tilasana) talletetaan ympäristöpinoon Ajettava säie vaihdetaan vaihtamalla ympäristö toiseksi Keskeytyksessä palattaessa palautetaan ympäristö Keskeytyskäsittely voidaan keskeyttää Käyttöjärjestelmäpyynnöt keskeytysmekanismin avulla
Yhteenveto #5: Rinnakkaisuudesta Rinnakkaisuuden ongelmat Jakoperusteet Reaaliaikajärjestelmät
Yhteenveto #6: Skedulointi Irrottava ja irroittamaton skedulointi Useita skedulointialgoritmeja, joilla erilaisia ominaisuuksia Pikatesti: Tehdään leikkikuorma ja kokeillaan miten käy Monimutkaisempi testi: Matkitaan järjestelmää tarkemmin; kirjoituspöytäkokeilut Analyysi: Järjestelmän ominaisuuksien perusteella voidaan laskea käyttöastetta/skeduloituvuutta Periodisuus ja sporadisuus
Yhteenveto #7: Ytimet Ytimien erot kulminoituvat siihen, miten ytimen ja sovelluksen toiminnot erotetaan Pollava ydin: Ydin ja sovelluslogiikka kietoutuneet toisiinsa; ohjausrakenne ikuinen silmukka Keskeyttävä ydin: Ydin ja sovelluslogiikka kietoutuneet toisiinsa; ohjausrakenne keskeytykset Prosessiydin: Ydin ja sovelluslogiikka erotettu toisistaan; laiteohjaus ytimessä, sovelluslogiikka prosesseissa Monoliittinen vs. mikroydin Useita valmiina saatavia ytimiä; jos tarvitset johonkin todelliseen laitteeseen ytimen, tutki edes saatavilla olevat vaihtoehdot ennen kuin ryntäät oman toteutuksen kimppuun ( oma kiinnostus + omat harrastukset on eri asia ;-)
Yhteenveto #8: Lyhyesti säätämisestä P-, I-, D-, PI-, PD- ja PID-säätimet valitaan käyttötarkoituksensa mukaan ja viritetään toimimaan optimaalisella, mutta turvallisella tavalla. Mitta-anturien kalibrointi on usein tarpeen valmistustoleranssien ja kulumisen vaikutuksen poistamiseksi Järjestelmän turvallisuus on syytä ottaa aina huomioon
Yhteenveto #9: Ohjelmistotyö Kehitys- ja käyttöympäristöt eivät ole samat Suuri joukko erilaisia avustavia työkaluja; eivät kuitenkaan voi kokonaan korvata oikean laitteen käyttöä kehityksen aikana Laitteiston testaus on osa ohjelmiston tehtävää oikeastaan lähes aina Iteratiivinen kehitystyyli lähes välttämätöntä ohjelmistotyössä
Yhteenveto #10: Kohti suurempia sulautettuja Painopiste laitteen hereille saamisesta laitteen pitkäaikaiseen käyttöön Valmiit ohjelmistopinot Vuotavien abstraktioiden hallinta Joustavuutta tuovat suunnitteluratkaisut Määrittelyn oikeellisuus ja täsmällisyys
Yhteenveto #11: Vikasietoisuus Vikasietoinen järjestelmä kykenee jatkamaan toimintaansa itsenäisesti myös silloin kun siinä on vikaa Vikaturvallisen järjestelmän suunnittelussa on huomioitu erikseen ettei vikaantumisesta ettei tule vaaraa Vikasietoisuus voi kohdistua vain vikoihin jotka on otettu huomioon osana suunnittelua Ohjelmistojen sisäisen vikasietoisuuden toteutuskeinoina Ohjelman toiminnan tarkkailu Defensiivinen ohjelmointi
Yhteenveto #14: Hajautetut sulautetut Hajautettu skedulointi luo omat haasteensa laadunvarmistukselle Erilaiset väylät voivat yksinkertaistaa järjestelmän rakentamista, mutta ne voivat myös vaatia uudenlaisten suunnitteluongelmien ratkaisua Laitteen sisäisen kapasiteetin hyödyntäminen
Onnea tenttiin! Muuta? ja kilpailuun!