AVRStudion käyttö debuggaukseen. Emulaattori 24.8.2008 pva



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

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Jypelin käyttöohjeet» Ruutukentän luominen

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Ohjelmoinnin peruskurssi Y1

RACE-KEEPER COMPARO PC-OHJELMAN PIKAOHJE

OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys

2.2. Tietokoneohjelman tekeminen pva, kuvat jma

Ohjelmoinnin perusteet Y Python

Ohjeet Libre Officen käyttöön

AALTO-VALVONTALAITE TST5102

Hellä ensikosketus. Tomi Kiviniemi

6.3. AVR_rauta. EEPROM-muisti pva

E-RESULTS LITE -OHJEET

SATAKUNNAN AMMATTIKORKEAKOULU Sähkötekniikan koulutusohjelma. M-koodit Omron servojen ohjauksessa. Luovutettu. Hyväksytty

5. HelloWorld-ohjelma 5.1

Arduino ohjelmistokehitys

MixW ja Dx-vihjeet (ohje) oh3htu

Machine Control Studio - Kuinka päästä alkuun. Ohjelmointiympäristö Unidrive M ja MCi2x0 laitteille

Konsolin näytössä näkyy käytettäessä ohjaavia viestejä, joita kannattaa tämän ohjeen lisäksi seurata.

Helppokäyttöisyyttä Windows Vista käyttöjärjestelmän asetuksilla

5. HelloWorld-ohjelma 5.1

Ohjelmistojen virheistä

Luku 7 Uusien Mallien Tiedostot

Maha Eurosystem jarrulaskentaohjelman asennusohje versio

SYDÄN-HÄMEEN RASTIT 2017 TULOSPALVELUN OHJEET LAITTEISTO 2. LAITTEISTON VALMISTELU 3. VALMISTELUT ENNEN TAPAHTUMAA

sivu 1 Verkkopäätteen muuttaminen Anvian uuteen tekniikkaan Ohje käy seuraaviin verkkopäätteisiin

(Tätä ohjetta saa käyttää yliopiston opetustarkoituksiin ja jatkokehittelyyn.)

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen

KEHITYSTOIVEIDEN JA VIRHEIDEN KIRJAUSOHJE INTERNETISTÄ

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

OHJE Jos Kelaimeen kirjautuminen ei onnistu Windows-koneilla

CEM DT-3353 Pihtimittari

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

1 Tivax siirto uuteen koneeseen

Tiedonsiirto helposti navetta-automaation ja tuotosseurannan välillä

Tasohyppelypeli. Piirrä grafiikat. Toteuta pelihahmon putoaminen ja alustalle jääminen:

BL40A1810 Mikroprosessorit, harjoitus 1

Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi

Mikro-ohjain µc harjoitukset - yleisohje

IDE asennus, Integrated Development Environment Atmelin AVR-mikro-ohjaimille pva

ASCII-taidetta. Intro: Python

GEOS 1. Ilmastodiagrammi Libre Office Calc ohjelmalla

SYDÄN-HÄMEEN RASTIT TULOSPALVELUN OHJEET v.2 1. LAITTEISTO 2. LAITTEISTON VALMISTELU 3. VALMISTELUT ENNEN TAPAHTUMAA

Ohjelmoinnin perusteet Y Python

Tikon Web-sovellukset

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Windows

Riikka Marttinen, Helsingin Tikoteekki, Windows 7:n helppokäyttötoiminnot

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

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

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/

Ohjelmoinnin peruskurssi Y1

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

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

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

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

Ksenos Prime Käyttäjän opas

Opetussuunnitteluprosessi WebOodissa - OpasOodi

6.1 Tekstialueiden valinta eli maalaaminen (tulee tehdä ennen jokaista muokkausta ym.)

ClassPad fx-cp400 OS2-päivitys. + Manager-ohjelmisto ja Physium-sovellus

Simulaattorin asennus- ja käyttöohje

kokoaminen 1. Ota ASPER ajanottolaitteisto 1- kentän laatikosta ja siirrä kisakentälle 2. Kokoa yleisönäyttö sopivaa paikkaan ja vedä sille sähkö

Laiteläheinen C-kieli osa 1 pva

YLEISTÄ ALOITUS. Laitteen kuvaus. Näytön kuvaus. Laitteen käynnistäminen ja sammuttaminen UP = YLÖS DOWN = ALAS BACK = TAKAISIN

Henkilö- ja koulutusrekisterin asennusohje

Uutiskirjesovelluksen käyttöohje

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Tekstinkäsittelyn jatko Error! Use the Home tab to apply Otsikko 1 to the text that you want to appear here. KSAO Liiketalous 1

Laiteläheinen C-kieli, yleistä

1. NetBeans-ohjelman asennus ja käyttöönotto pva

Differentiaali- ja integraalilaskenta 1. Tietokoneharjoitus: ratkaisut

L7 8.8 Tulorekisteriaineistot: Aineistojen lähetys ja virhetilanteet, aineistojen korjaaminen

Pajun sähköpostien siirto Outlookiin

Sanat, sointumerkit...

Avaa sovellus (PERUSAURORA)

Verkkosivut perinteisesti. Tanja Välisalo

Siirtymät, tehosteet, daesitys Sisällysluettelo

NETIKKA PCTV KÄYTTÖOHJE

MASSER Loader V2.00. käyttö- ja asennusohje

OHJELMOINTILAITE 10/50

LP-levyn digitointi Audacity-ohjelmalla

Transkribuksen pikaopas

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Kuvaruudun striimaus tai nauhoitus. Open Broadcaster Software V.20. Tero Keso, Atso Arat & Niina Järvinen (muokattu )

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Automaster tai MBS. 2. ODBC - ajurin asennus (jos ei ole jo asennettu)

Visma Avendon asennusohje

CipherLab CPT-8001L -tiedonkeruupäätteen käyttö Ecomin kanssa

Ohjeet asiakirjan lisäämiseen arkistoon

1. HARJOITUS harjoitus3_korjaus.doc

Tutustu ohjelman omiin ohjeisiin valitsemalla: Ohje > Avustus.., jotka avautuvat selaimessa

Harjoitustyö: virtuaalikone

VSP webmail palvelun ka yttö öhje

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

NOOX xperio herätyskello valvontakamera

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Transkriptio:

AVRStudion käyttö debuggaukseen. Emulaattori 24.8.2008 pva Hän joka mikro-ohjain-oppia ilmaiseksi jakaa, hän elää ja kuolee rikkaana. - Mr Ben Mable Yleistä Perusteellisesti ja huolella suunniteltu koodi on tehokkain tapa kirjoittaa toimiva ja selkeä ohjelma vähimmillä virheillä. Mutta sulautettu koodi on niin laiteläheistä ja sitä kautta kryptistä (monimutkaista), että on vaikea välttyä virheiltä. Virheiden eliminointi alkaa jo koodin järkevästä kommentoinnista. Ohjelmavirheitä on historiallisista syistä ruvettu nimittämään bugeiksi. Virheiden etsintä ja poistaminen on siten de-buggaamista, bugien poistoa. AVR-studiolla voi koodin kohdistuvien perustöiden (kirjoittaminen, kääntäminen ja koodin lataaminen AVR:n ohjelmamuistiin) lisäksi tehdä em. virheiden jäljitystä, debuggausta, ohjelmassa olevalla simulaattorilla tai JTAGICE-emulaattorilla: - voit käynnistää ohjelman ajon - pysäyttää ohjelman suorituksen kesken ajon - askeltaa ohjelmaa käsky kerrallaan - asettaa koodiin pysäytyskohtia, breakpointeja, o ja tarkastella AVR:n rekistereiden ja muistipaikkojen sisältöjä, porttien I/O-pinnien tiloja, muuttujien arvoja, jne. 90/10-sääntö Ohjelmaprojektin työajasta 90% kuluu testaukseen ja virheiden etsimiseen/korjaamiseen. Jotta ohjelmiston toiminta olisi varmaa, se on testattava myös oikeassa suoritusympäristössään. 1

Emulaattori Emulaattori on joko kallis itsenäinen erikoislaite, joka korvaa mikro-ohjaimen, tai se voi olla vain liitäntä PC-koneeseen. Kummassakin tapauksessa kohteessa ajetaan emulaattori-ohjelmaa ja samalla kaapataan MCU:n raudasta tietoja. Oikea emulaattori matkii todellista mikro-ohjainta. Emulaattori on simulointia monipuolisempi testausmenetelmä koska simulaattoriohjelma ajetaan PC:ssä, mutta emulaattoriohjelmaa ajetaan oikeassa ympäristössä. Yleensä teollisuuden käyttämät emulaattorit ovat kalliita, mutta JTAGliitännän sisältävät AVR-ohjaimet tarjoavat edullisen tavan oppia emulointia ja samalla, mikä parasta, mikro-ohjaimen toimintaa. USB-JTAG Dongle For Programming and Emulation, tämä on eräs Atmelin JTAG-klooni. PV-M322 Jossa tuo klooni on integroitu ATmega32-opetuskortille. PV-M322-kortilla on apuohjain ATmega16, johon on ohjelmoitu Atmelin tarjoama emulaattoriohjelma. AVRStudio puolestaan pyörii PC-koneessa Windows-ympäristössä ja yhdessä sen ja tuon ATmega16:ssa olevan ohjelman avulla voit tutkia samalla kortilla olevan varsinaisen tutkittavan/opiskeltavan ATmega32-ohjaimessa ajettavan ohjelman etenemistä ja toimintaa. 2

Tai voit asettaa debuggaus-tilanteessa ohjelmaan pysäytyskohtia, breakpoints, jolloin voidaan katsoa mitkä tietyn käskysekvenssin jälkeen ovat rekistereiden ja muuttujien tilat. Asettamalla uusia pysäytyskohtia ja ajamalla koodia uudelleen ja uudelleen kunnes virhe paikantuu. JTAG-emulaattorilla debugatessa kirjoittamaasi koodia ajetaan koko ajan oikeassa mikroohjaimessa, sitä ei siis simuloida. Joten, kun virheet on ensin korjattu, koodi toimii varmasti oikein. Debuggauskoodista Kun lähdekoodista on käännetty ajokelpoinen ohjelma, se pitää vielä saada ladattua AVR:n ohjelmamuistiin. (PC:ssä sitä ei voi ajaa, koska Pentium ei ymmärrä AVR-koodia). Ohjelmointiohjelmat (loaderit, lataajaohjelmat) eivät valitettavasti selviydy lataamisesta ilman lisäohjeita. Siksi tiedosto on laajennettava nuo tarvittavat ohjeet sisältäväksi Intel-hex-formaatissa olevaksi koodiksi. Toimiakseen simu/emulaattorina AVR Studio tarvitsee puolestaan tutkittavasta koodista erikoisen objektitiedoston, joka sisältää - tietoa C-koodin formaatista, kuten C-kielistä lähderivejä vastaavat ohjelmaosoitteet - muuttujien nimet, tyypit ja osoitteet, - funktioiden nimet ja muuta sellaista. C-kääntimet tekevät varsinaisen käännöksen lisäksi lukuisia erilaisia, eri käyttötarkoitukseen tarkoitettuja tiedostoja (riippuen makefile-tiedoston konfiguroinnista). Formaatti Tarkenne Selitys Extended Intel hex *.hex Ajokelpoinen käännöstulos, joka sisältää koodin lisäksi vain tiedot joita tarvitaan kun siirretään koodi AVR:n flash-muistiin. Ei sovi debuggaukseen ELF/DWARF *.elf Tämä on avoimen standardin debuggausinfo, jota AVRStudio lukee. Viimeisin on DWARF2-formaatti, jonka avr-gcc osaa tehdä oikein konfiguroituna. Varmistu, että tämä on käytössä. AVR COFF *.cof Vanha COFF on avoimen standardin debuggaus-formaatti, joka on tarkoitettu työkaluja AVR-ohjaimille tekevien yritysten käyttöön. 3

Emulaattorin käyttö Emulointi-työkalulla ajetaan tutkittavaa ohjelmaa oikeassa ympäristössä ja selvitetään ohjelman toimintaa ja etsitään ohjelmavirheitä. Jos virheitä löytyy, ne poistetaan/korjataan. Kaikki eri toiminnot on valittavissa pikakuvakkeilla tai alasvetovalikosta. Tällä pikaohjeella pääsee mainiosti alkuun. AVRStudio sisältää erittäin perusteelliset ohjeet, Helpit, joihin tutustumalla ohjelmasta saa oivan työkalun AVR-ohjelmien kehitystyöhön. Käsky Kuvaus Funktio Start Aloitetaan debuggaus. Debugging Run Ohjelman ajo. F5 Ajo jatkuu kunnes käyttäjä pysäyttää sen tai saavutetaan breakpoint. Break Lopettaa tai keskeyttää ohjelman ajon. Sen voi tehdä milloin vain CTRL + F5 kesken ohjelman ajon. Kun ajo keskeytynyt, infoikkunoiden data päivitetään. Reset AVR:n resetointi. Shift + F5 Show next Statement Asettaa keltaisen nuolimerkin, marker, ohjelmariville joka seuraavaksi suoritetaan. Vastaa ohjelmalaskurin arvoa. Step Into Ohjelman ajo askeleittain (Single Stepping) Step Over Step Out Jos olet lähdekoodimodessa, source code mode, ajetaan yksi rivi. Step into suorittaa vain yhden käskyrivin kerrallaan. Rivin suorituksen jälkeen infoikkunoiden data päivitetään. Painele F11 ja joka painalluksen jälkeen tarkkaile ikkunoissa olevien muuttujien, rekistereiden, ym. arvoja ja vertaa niitä ohjelman lähdekoodin käskyihin. Ajetaan yksi käsky. Jos käsky on funktiokutsu, ajetaan koko funktio läpi, joten saadaan illuusio kuin se olisi yksi käsky. Ajetaan käskyjä funktion sisällä kunnes funktio on valmis, complete, tai saavutetaan breakpoint. F11 F10 Shift + F11 Run to Cursor Auto Step Animoitu ajo Ajetaan koodia kunnes saavutetaan käskyrivi jossa kursori on. Jos sitä ennen vastaan tulee breakpoint, se ohitetaan ja jatketaan kunnes kursori tavoitettaan. Ajetaan käsky kerrallaan kunnes saavutetaan breakpoint tai käyttäjä antaa break-käskyn. Kaikkien ikkunoiden info päivitetään joka käskyn jälkeen. CTRL + F10 ALT+ F5 Käynnistä viimeistään tässä vaiheessa malliprojekti, Pemu.aps tai joku muu omatekoinen koodi. 4

Pysäytyskohdat, Breakpoints Debuggereitten tärkeimpiä ominaisuuksia on breakpoints-asetus, pysäytyskohdat. Ohjelman ajo aloitetaan alusta ja se keskeytyy pysäytyskohtaan. Tämän jälkeen voit katsella, mitkä ovat rekisterien ja muuttujien ym. arvot ja päätellä, onko ohjelma toiminut tähän asti oikein. Ellei, keskeytyskohtaa on siirrettävä alkuun päin. Jos taas kaikki on ok, tästä voi jatkaa joko asettamalla uuden keskeytyskohdan edemmäksi tai voi olla viisasta jatkaa yksittäisillä käskyillä. Keskeytyskohdan asetus: Siirrä kursori halutulle riville ja paina F9 tai klikkaa pikakuvaketta. Lähdekoodi-ikkunan vasempaan laitaan ko. rivin alkuun tulee punainen ympyrä merkiksi pysäytyskohdasta. Resetoi ohjelma; Debug, Reset. Keltainen kursorinuoli menee riville DDRB = 0xFF; Käynnistä ohjelma painamalla F5-näppäintä. Ohjelma käy hetken ja pysähtyy em. riville. Resetoi ohjelma, aja yksittäisellä käskyllä pari riviä eteenpäin niin, että Watches-ikkunan muuttujien arvot asettuvat ja tee sama F5 uudelleen. Toista muutaman kerran. debugger Ajonaikaisten virheiden jäljitykseen ja korjailuun tarkoitettu ohjelma. bug On ohjelmassa oleva virhe. Pieni ötökkä (hyönteinen), joka aiheutti häiriöitä ensimmäisissä tietokoneissa jäätyään releiden kontaktien väliin. Ymmärrä - mitä sulautettu systeemisi tekee - mitä resursseja se käyttää - miten se kommunikoi ulkomaailman kanssa Virheiden korjaaminen on helpompaa kuin niiden löytäminen. 5

Vinkkejä emulaattorin käytöstä Start Debugging Avataan projektitiedosto ja käynnistetään debuggaustoiminto. Avataan halutut infoikkunat (Watch, Memory etc.) ja askelletaan C-koodia käsky kerrallaan (F11). Debug, Start debugging, tällä aloitetaan ja samalla tarvittavat valikot aktivoituvat. Program Counter, ohjelmalaskuri on rekisteri, joka osoittaa osoitteeseen jossa on seuraavaksi ajettava konekoodin käsky. Resetissä tuo osoite on nolla, jossa sii on oltava ohjelman ensimmäinen käsky. Ennen varsinaista omatekemää koodia, joka alkaa main-funktiossa, ajetaan ns. start-up-tiedosto, jossa tehdään ohjelman alkuasetuksia (mm. pino-osoitin, Stack Pointer). Sen käännin sijoittaa koodin alkuun automaattisesti. Suoritettavaa C-koodin käskyriviä osoittaa keltainen nuoli koodirivin vasemmassa laidassa, katso seuraava kuva. Aivan debuggauksen alussa se osoittaa riviä main-funktion alussa, mutta tässä vaiheessa ohjelmalaskuri on jo osoitteessa 0x49. Se on siis jo ajanut start-upin. Muuttujien katselu, View, watch Kun debugataan C-koodia, aina tarvitaan tietoa muuttujista. Siirrä kursori Watch-ikkunan Name-ruutuun ja valitse hiiren oikealla Add Item, kirjoita ruutuun muuttujan nimi. tai, klikkaa luku-muuttujaa ja raahaa se hiirellä view-ikkunaan. tai, maalaa koodissa muuttuja, klikkaa hiiren oikealla ja valitse avautuvasta valikosta Add to watch. Kun ajo stopataan, muuttujat päivitetään automaattisesti. 6

Memory, Muisti - koodi on flash-muistissa, - muuttujat SRAMmissa (pääosin), - I/O-rekisterit on mapattu I/O-muistialueelle, - ja vielä on EEPROM. Kaikki päivitetään kuten edellä on käynyt ilmi. Debugatessa pitää optimointi ottaa pois päältä, jos suinkin mahdollista. Tällöin ohjelman kulun seuraaminen on helpompaa. Optimointi esim. nopeuttaa koodia jättämällä muuttujan arvot rekisteriin eikä kirjoita niitä takaisin muistiin ja tämä saattaa tuottaa virheellisiä tulkintoja ohjelman kulusta. Muista myös C-käännin tekee esim. for-silmukat nollasta n:nään väärinpäin. Eli: vaikka kirjoittamasi koodisilmukka lähtee nollasta eteenpäin kohti loppuarvoa n, näyttää debuggeri arvoa n. PV-LEDIT Simulaattorin ja emulaattorin lisäksi testauksessa käytettäviä työkaluja ovat mm. logiikkaanalysaattori ja oskilloskooppi. Halvin testeri on oikein käytettynä PV-LEDIT-moduuli. Seuraavista vinkeistä saattaa virheiden etsinnässä olla apua Sulautettujen ohjelmakehitys tehdään PC-ympäristössä, mutta testaus tehdään oikeassa sulautetun laitteessa. Koodin perusajo voidaan kokeilla PC:ssä pyörivässä AVRStudion simulaattorissa. Se mahdollistaa rajoitetun testauksen. Emulointi tapahtuu ajamalla koodia oikeassa ympäristössä, siis PV-M322-kortissa ja debuggaus tapahtuu JTAG-testiliitännän kautta AVRStudiossa. Käännösaikaiset virheet C-käännösprosessi on hyvin monimutkainen, jossa voi ilmetä monenlaisia virheitä. Esikäännin työstää direktiivit, laajennetaan makrot, luetaan mukaan header- ja muut tiedostot jne. Tässä vaiheessa esiintyvät useimmat virheet. Jos koodi ei käänny, virheen löytäminen on kohtuullisen helppoa. Seuraa vain kääntimen virheilmoituksia. Vaikka koodi kääntyy, se ei vielä takaa koodin oikeellisuutta. Kääntyminen kertoo vain että kielioppivirheet puuttuvat. Ajonaikaiset virheet Tähän vaiheeseen tultaessa käännösvirheet on onnistuneesti korjattu. Ajonaikaiset virheet ovat yleensä aika vaikeita selvittää. Ohjelma toimii, mutta aikaansaa vääriä tuloksia tai tekee outoja ja odottamattomia asioita. Olet voinut unohtaa jotain, joku määritys puuttuu tai on väärä. Jos koodin ajo kaataa ohjelman, silloin on yleensä edessä vaikeampi selvitystyö. 7

1. Työstä yksi asia kerrallaan Korjaa yksi vika kerrallaan ja aloita aina ensimmäisestä virheilmoituksen virheestä. Kun ok, seuraava jne. Ei milloinkaan yhtä muutosta enempää yht aikaa. 2. Moduloi Kun ohjelman koko kasvaa, jaa se pienempiin osiin. Niistä vika löytyy helpommin. 3. Yksinkertaista. KISS, keep it simpple, s. Kirjoita vain yksi käsky per rivi. Ei monimutkaisia komentoja. Mitä luettavampaa koodi on, sitä helpommin virheet löytyvät. Koodi toimimaan, eikä näyttöä kavereille kuinka eteviä ollaan. 4. Puhumalla Yksi parhaita tapoja löytää bugit, on näyttää koodia kavereille. Isoissa taloissa koodit auditoidaan, eli koodaaja kertoo mitä koodi missäkin kohdassa tekee ja toiset kaverit yhdessä käyvät sitä läpi. 5. Aseta breakspoints Jos pitää esim varmistua käykö koodi juuri tietyssä funktiossa, aseta stoppi tuohon funktioon. Tai tulosta jossain tietyssä vaiheessa muuttujan arvo. return(), exit() 6. Monitoroi muuttujat Käytä PV-LEDIT-moduulia, joka on halvin debuggaustyökalu. Jos käytössä on LCD-näyttö tai PC:n monitori, voit käyttää printf(). 7. Dokumentoi Dokumentoidessa joudut ajattelemaan asiaa perusteellisesti, tällöin saattaa jokin vikatilanne aueta. 8. Lue lisää kirjoja ja muita dokumentteja Tai kirjoita itse ;>) Perehdy aiheeseen, myös sen elektroniikkaan. Lue Atmelin AVR-dokumenttia. 8