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



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

4. Lausekielinen ohjelmointi 4.1

11/20: Konepelti auki

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

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

TKT224 KOODIN KOON OPTIMOINTI

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

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

Mikrokontrollerit. Mikrokontrolleri

9. Luento: Ohjelmistotyö. Tommi Mikkonen,

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Kertausluento luennoista 1-3 1

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

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

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

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

Turvakriittisen projektin menetelmät ja työkalut

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

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

SISÄLLYS sisällys 1 Tietokoneen toimintaperiaate ja käyttö 2 Tietokoneen historia 3 Tietokoneen rakenteen ja toiminnan perusteet

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

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

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

Käännös, linkitys ja lataus

ELM GROUP 04. Teemu Laakso Henrik Talarmo

C++ Kuva 1-1. C- ja C++ kielien perustana olevat kielet.

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

4. Lausekielinen ohjelmointi 4.1

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

2 Konekieli, aliohjelmat, keskeytykset

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

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Käyttöjärjestelmät: prosessit

Ohjeita Siemens Step7, Omron CX Programmer käyttöön

3. C-kieli sulautetun järjestelmän ohjelmointikielenä , pva

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Laiteläheinen C-kieli, yleistä

Monipuolinen esimerkki

Osoitin ja viittaus C++:ssa

Koodaamme uutta todellisuutta FM Maarit Savolainen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Oleelliset vaikeudet OT:ssa 1/2

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietorakenteet ja algoritmit

Virtuaalikoneiden generointi Vmgen-kääntäjällä

Ohjelmointi 1. Kumppanit

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

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

AVRStudion käyttö debuggaukseen. Emulaattori pva

12. Javan toistorakenteet 12.1

2.2. Tietokoneohjelman tekeminen pva, kuvat jma

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

S11-09 Control System for an. Autonomous Household Robot Platform

1. Keskusyksikön rakenne

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: tietotyypit (2)

2. Sulautettu järjestelmä ja mikro-ohjain , pva

Ohjelmoinnin perusteet Y Python

11. Javan toistorakenteet 11.1

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori

Miksi konekieltä? Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori. Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91: rekisterit

Jakso 2 TTK-91-tietokone ja sen KOKSI-simulaattori

Simulaattorin asennus- ja käyttöohje

12. Javan toistorakenteet 12.1

Arto Salminen,

Kemian tekniikan kandidaattiohjelman ohjelmointikurssi (5 op)

Ohjelmoinnin peruskurssi Y1

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

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Ohjelmoinnin perusteet Y Python

Ohjelmiston toteutussuunnitelma

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

A TIETORAKENTEET JA ALGORITMIT

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

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Ohjelmointi 1 / syksy /20: IDE

Luento 2 TTK-91 tietokone ja sen KOKSI simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä?

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

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Visual Basic -sovelluskehitin Juha Vitikka

Johdatus ohjelmointiin

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

OHJ-4301 Sulautettu Ohjelmointi

Luento 2 TTK-91 tietokone ja sen simulaattori. Miksi konekieltä? Tietokone TTK-91. Miksi ei oikeaa konekieltä? TTK-91 (1) TTK-91 laitteisto

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

15. Ohjelmoinnin tekniikkaa 15.1

Transkriptio:

Mikrokontrollerit Kontrollerin sisäisten komponenttien käytöstä Mikrokontrollerit Vielä vähän asiaa sisäisten lohkojen käytöstä Sulautetussa järjestelmässä laitteiston ominaisuudet hallitaan ohjelmistolla. Pino Löytyy lähes kaikista piireistä. Last in, first out (LIFO) Yleensä (ei aina) käskykannassa on PUSH ja POP-käskyt pinon käsittelyyn. Sulautetuissa järjestelmissä rajoituksia pinon käytössä. Pinon koko voi olla hyvin pieni. Esim. PIC17C42:ssa 16-tasoinen pino eikä PUSH/POP-käskyjä. Sitä siis voidaan käyttää vain paluuosoitteiden käsittelyyn. Hardwired stack pinorekisterit vain muutama muistipaikka. Eivät tue sisäkkäisiä aliohjelmia tai parametrien talletusta pinoon. Jos pinomuisti on sijoitettu RAM:iin, sen käyttöä rajoittaa silti RAM-muistin koko. Pino ja muuttujat pidettävä erillään. Pinon käytön erikoispiirteitä sulautetuissa järjestelmissä. Kaikkia rekistereitä tai mitään rekistereitä ei talleteta automaattisesti pinoon aliohjelmaan siirryttäessä. Tietoa voidaan siirtää myös rekistereissä. Jos rekistereiden arvoja on talletettava, ne voidaan tallettaa RAM-muistiin muuttujina. Rekisteripankit (8051:ssä neljä).

Mikrokontrollerit Vielä vähän asiaa sisäisten lohkojen käytöstä RAM Assembler-ohjelmoinnissa monesti muuttujat globaaleja. PC-ympäristöstä tutut menettelytavat muuttujien käytössä eivät välttämättä toimi sulautetuissa järjestelmissä. Paikallisten muutujien käytössä sulautetuissa järjestelmissä oltava tarkkana (pino). Ohjelmoijan on usein kerrottava linkkerille, mistä muistialueet alkavat ja tila pinolle on usein varattava manuaalisesti. Muuttujien alustus tärkeää. Kiinteä vai dynaaminen muistinvaraus. Globaalit muuttuja ovat datasegmentissä. Funktiot koodisegmentissä Paikalliset muuttujat sijoitetaan pinoon. Dynaamisille muuttujille varataan tilaa data-alueen lopusta (heap). Pieni työmuisti pakottaa keksimään ratkaisuita esim. circular buffer Mikrokontrollerit Vielä vähän asiaa sisäisten lohkojen käytöstä I/O Mikro-ohjaimissa erilaisia käytäntöjä porttien ohjauksessa. Esim. AVR:ssä erikoisrekisterit sille onko portti input vai output. Esim. kytkinvärähtelyt on otettava huomioon ulkoisia ohjauksia käsiteltäessä. Kyselläänkö vai keskeytetäänkö? Suoritusnopeus Right answer, late, is the wrong answer Hard deadline ehdoton vaatimus toiminnalle. Esim. UART:sta on luettava edellinen tieto ennen kuin sinne kirjoitetaan uutta tietoa. Soft deadline yksittäiset lipsahdukset vaatimuksista sallittuja kunhan keskimääräinen palveluaika on vaatimusten mukainen. Esim. UART:n lukeminen purkurista sallii pieniä viiveitä silloin tällöin, kunhan keskimäärin lukeminen on nopeampaa kuin kirjoitus.

Mikrokontrollerit Sulautettujen järjestelmien ohjelmistosuunnittelusta Sulautetun järjestelmän kehitysvaiheita Systeemisuunnittelu (system evaluation) Laitesuunnittelu (hardware design) Ohjelmistosuunnittelu (firmware design) Integrointi (integration) Testaus (verification) Vaiheet eivät ole aikajärjesteyksessä vaan esim. laite- ja ohjelmistosuunnittelua tehdään useimmiten samanaikaisesti. Aina ei myöskään voida tehtäviä rajata selvästi. Prosessiin kuuluu yleensä myös vaatimusmäärittelyjen ja dokumentaation tekeminen. Oikean prosessorin valintaa vaatimusmäärittelyjen pohjalta käsiteltiin kurssin alkupuolella. Seuraavassa tarkastellaan lyhyesti ohjelmiston toteutukseen liittyviä asioita.

Ohjelmiston kehitykseen ja toteutukseen tarvitaan: Kehitysympäristö tai ainakin kääntäjä/linkittäjä Ohjelmointilaite Debug-työkalut Kehitysympäristöjä sekä piirivalmistajilta että muilta. Assemblerkehitysympäristöjä saatavissa monesti ilmaiseksi. Yksinkertaiset järjestelmät voidaan testata yksinkertaisesti ohjelmoimalla laite ja tutkimalla toiminta. Monimutkaisemmat vaativat parempia työkaluja. Debuggerin avulla voidaan monitoroida ohjelman toimintaa asettamalla ohjelmankeskeytyksiä (breakpoints) haluttuihin kohtiin, jolloin debuggerin avulla päästään tutkimaan suorittimen tilaa, rekistereitä, muistipaikkojen sisältöä ym. Laiteläheisessä ohjelmoinnissa tunnettava järjestelmän komponentit Muistit ja I/O-porttien osoitteet Käytettävissä oleva muisti Rekisterit bittitasolla Jokaisen portin jokaisen pinnin käyttötarkoitus Oheispiirien käyttötapa Kaikki muukin toimintaan liittyvä Ohjelmistoa on helppo muuttaa. (Jos ohjelmisto on hyödyllinen, sitä on tarve päivittää.) Sulautetuissakin järjestelmissä ohjelmistoa päästään testaamaan kunnolla vasta, kun kaikki muu toimii. Projektien aikataulut tiukkoja onko aikaa huolelliseen testaukseen ja dokumentointiin. Miten testata aukottomasti, että ohjelma toimii aina kaikissa tilanteissa. Vaatimusmäärittelytkin ohjelmiston osalta monesti puutteelliset.

Sulautetun ohjelmiston rakenteesta Ohjelmisto sulautettuihin järjestelmiin voidaan rakentaa monella tavalla. On olemassa joitakin tavallisia rakenteita tai toteutustapoja (arkkitehtuureita), jotka ohjaavat funktioiden, keskeytysten ym. käyttöä. Eri lähteissä arkkitehtuurit jaetaan vähän eri tavoin. Valintaan vaikuttavat mm. vaadittavat vasteajat, keskeytysten määrä ja käsittely. Myös käytettävissä oleva suoritin vaikuttaa ohjelmistoarkkitehtuurin valintaan samoin kuin suorittavien tehtävien määrä. Muita vaikuttavia asioita ovat esim. ohjelma- ja datamuistin määrä. Ohjelmistoarkkitehtuureita / toteutustapoja Silmukka (single polling loop, Round-Robin) Yhdessä päättymättömässä silmukassa pollataan kaikkia sisäisiä ja ulkoisia toimintoja (esim. näppäimistöä). Edellyttää, että kaikki prosessit ovat saatavilla kaiken aikaa. Keskeytyksiä ei välttämättä lainkaan / sopii järjestelmiin, joissa ei ajoitusta. Toiminnot prosessorin sallimalla vauhdilla Ei toimi, mikäli jokin prosesseista vaatii lyhyemmän palveluajan kuin loopin suoritus pahimmassa tapauksessa. Uuden ominaisuuden lisääminen voi olla kohtalokasta koko järjestelmän toimivuuden kannalta. while (1) { process1(); process2(); process3(); }

Ohjelmistoarkkitehtuureita / toteutustapoja Tilakone (state machine) Ohjelma on yhdessä tilassa kerrallaan. Ainoastaan ko. tilaan liittyvät funktiot mukana. Jokaisella tilalla oma koodinsa. Haittana voi olla tarve kopioida samat toiminnat useampaan tilaan. Voi helposti johtaa monimutkaiseen rakenteeseen jos paljon toimintoja ja syötteitä. Ohjelmistoarkkitehtuureita / toteutustapoja Monitilakone/silmukka (multiple state machine/polling loop) Jokaisella prosessilla voi olla omat tilansa. Prosessien ajamisesta huolehditaan silmukassa. Inkrementaalinen tilakone (incremental state machine) Jokaista prosessia suoritetaan muutamia käskyjä joka kierroksella riippumatta siitä mitä tehtävät ovat. Joka prosessi huolehtii sisäisestä ohjelman seurannasta ja jatkaa ohjelman suoritusta keskeytyneestä kohdasta seuraavalla kierroksella. Näyttää, että kaikkia prosesseja ajetaan samaan aikaan, joskin hitaasti.

Mikro-ohjain ymmärtää vain konekieltä. Ohjelmia ei käytännössä kirjoiteta konekielellä, assemblerilla kylläkin. Assemblerin käskyt ja osoitusmuodot ovat prosessorikohtaisia ja kytköksissä arkkitehtuuriin. Sulautetussa järjestelmässä ohjelmiston kehitys tapahtuu muualla kuin lopullisessa käyttöympäristössä. Pienet järjestelmät suunnitellaan yleensä PC:llä olevassa kehitysympäristössä. Ohjelma voidaan kirjoittaa millä tahansa tekstieditorilla. On kuitenkin hyviä kehitysympäristöjä, jotka generoivat ohjelmistoa (alustavat rekistereitä, tekevät keskeytyspalveluohjelman rungon, alustavat tiedonsiirtomekanismit, ). Nämä nopeuttavat ohjelmistonsuunnittelua. Lausekielet Sulautettujen järjestelmien ohjelmointiin käytettyjä lausekieliä C, PLM, Java, BASIC. C saatavissa kaikkein pienimpiä kontrollereita lukuunottamatta lähen kaikkiin suorittimiin. C++ ei yhtä laaja tuki. Prosessorien tehokkuuden kasvaessa Java kasvattaa suosiotaan. + Lausekieltä käytettäessä ei tarvitse tietää prosessorin rekistereitä, muistin osoitusmuotoja tai osata prosesorikohtaista konekielistä käskykantaa. + Lausekielen siirrettävyys on paljon parempi kuin konekielen ja onnistuu periaatteessa kääntäjää vaihtamalla. + Samoin uudelleenkäytettävyys ja ohjelman ylläpito ovat helpompia kuin konekielisen ohjelman. + Lausekielen taitajia enemmän. - Kääntäjissä eroja eivätkä pysty samaan kuin ohjelmoija. - Lausekieliset käännösympäristöt kalliimpia kuin assembler - Kielen normaalit ominaisudet eivät kaikki toimi sulautetussa ympäristössä.

Assembler Assembler-ohjelmointi (konekieli) esimerkiksi kun kontrolleri hyvin rajoitettu muistin tai rekistereiden osalta lyhyt, edullinen ja yksinkertainen toteutus tarpeen keskeytyspalvelun nopea suoritus välttämätöntä arkkitehtuurikohtainen symbolisen Mikäli lähdekielinen ohjelma tehty lausekielellä, asembler välivaihe voi olla näkymätön. Kontrollirakenteet kirjoitetaan hyppyjä tai vastaavaa menetelmää käyttäen. Laskutoimitukset joudutaan käsittelemään osaoperaatioina ja välituloksien tallennuksesta on huolehdittava. Konekielessä ei tietotyyppejä samassa mielessä kuin lausekielissä. Kääntäjät/Linkittäjät Objektikoodi paikasta riippumatonta. Linkittäjä yhdistelee ohjelmasta ja kirjastoista käännetyt objektikoodit valmiiksi tulostiedostoksi. Linkittäjä sijoittaa ohjelmafunktiot, pinon ja data-alueet suoraan tiettyihin osoitteisiin muistiin. Ohjelmoija kertoo eri tarkoituksiin käytettävissä olevat muistialueet.

Optimointi Lausekielisiset kääntäjät tarjoavat usein mahdollisuuden eritasoiseen optimointiin. Esim. optimointi vähentää turhaa rekistereiden ja RAM-muistin välistä liikennöintiä. Usein voidaan optimoida joko nopeuden tai muistinkulutuksen suhteen valinta koskee yleensä koko koodia. Jotkin osoitteet voidaan kuitenkin jättää optimoinnin ulkopuolelle. Mikäli sulautettu järjestelmä toteutetaan lausekielisellä ohjelmointityökalulla, kääntäjän pitäisi tukea myös assembler-funktioiden ja -käskyjen kirjoittamista. Volatile! Sulautetun ohjelmiston kehitysympäristöistä Simulaattori PC:ssä toimiva ohjelma, jolla voidaan tutkia ohjelman toimivuutta CPU:ssa. Ei toimi reaaliajassa eikä sillä voi tutkia kaikkia ongelmia. Tarpeen ainakin, jos sulautetun järjestelmän laite ei vielä valmis. Simulaattorissa pystyy seuraamaan mm. muuttujien, I/O-kanavien ja prosessorin rekistereiden tilaa esimerkiksi askeltamalla ohjelmakoodia käsky kerrallaan tai pysäyttämällä ohjelman suorituksen haluttuun kohtaan. Esim. AVR Studio

Sulautetun ohjelmiston kehitysympäristöistä Emulaattori Emulaattori tarjoaa simulointia monipuolisemman ja luotettavamman testausmenetelmän. Matkii todellista suoritinta. Ohjelma ladataan emulaattorin muistiin tai emulaattorin kautta järjestelmän ohjelmamuistiin. Ohjelman suoritus voidaan pysäyttää asetetuista ehdoista ja päästään tutkimaan rekistereiden ja muistin sisältö. Emulaattori voi tukea lausekielen rakenteita (source-level debug). Prosessorikohtaisia ja kalliita. Simulaattorin ja emulaattorin lisäksi muita testauksen työkaluja mm. logiikka-analysaattori ja oskilloskooppi. Sulautetun ohjelmiston testauksesta Järjestelmän integrointi ja testaus Prototyypin testaus edellyttää yleensä laite- ja ohjelmistosuunnittelijoiden tiivistä yhteistyötä. Laitesuunnittelussa tapahtuneita virheitä voidaan paikata ohjelmistolla. Hajoita ja hallitse! Oheislaitteiden testaukseen tarvitaan monesti testiohjelmistoja. Esim. Prosessorin ja muistien toimintaa voidaan testata yksinkertaisella ohjelmistolla, joka ohjaa piirissä olevia ulkoisia liitäntöjä. Näytön testaus kirjoittamalla näytölle testidataa. Keskeytysten testaus voidaan suorittaa vaikkapa asettamalla ja nollaamalla jokin piirin lähdöistä keskeytysten perusteella ja tutkimalla lähdön tilaa oskilloskoopilla. Sarjaportin toimintaa (nopeudet, pariteetit, ) voidaan testata liittämällä laite tietokoneeseen.