Testaus- ja debuggausjärjestelyt


[edellinen sivu] [seuraava sivu] [sisällysluetteloon] [etusivulle]

Mittaus- ja kehitystukilaitteista

Yleensä sekä laitteiston- että ohjelmiston testaamiseen käytetään tarkoitukseen hyvin sopivia laitteita:

Laitteiston testaaminen

Tässä projektissa kehitetyn laitteiston testaamiseksi ei käytettävissä ollut edellä kuvattuja laitteita (logiikka-analysaattoria tai emulaattoria). Oskilloskooppi olisi ollut saatavissa, jos sitä olisi tarvittu.

Laitteiston testaaminen tehtiin viidessä vaiheessa:

  1. Laitteiston testaaminen aloitettiin tarkistamalla tyhjästä piirilevystä yleismittarilla, ettei suunniteltaessa tai valmistettaessa ollut syntynyt oikosulkuja jännitevetojen ja tärkeimpien signaalien välille. Oikosulkuja ei löytynyt.

  2. Seuraavaksi juotettiin kiinni passiiviset ja käyttöjännitteen syöttämiseksi tarvittavat osat. Mikropiireille juotettiin kannat, mutta yhtään piiriä ei vielä asetettu paikalleen. Jännitteet kytkettiin ja yleismittarin avulla tarkistettiin, että käyttöjännite (+5V) ja maataso oli yhdistetty kaikille piireille oikein.

  3. Seuraavassa vaiheessa laitettiin RS-232-puskurin kantaan MAX232-puskuripiiri (joka ei tarvitse/sisällä virrankäytön ohjausta toimiakseen). Mitattiin, että piirin generoimat sarjaliitännän jännitetasot ovat oikeat tietokoneen sarjaporttia varten.

  4. Viimeisessä vaiheessa laitetiin mikrokontrolleri ja Buffalo-debuggeriohjelman sisältävä EPROM-muisti kantoihinsa ja yhdistettiin sarjalinja tietokoneeseen, johon käynnistettiin pääte-emulaattori. Jännitteet kytkettiin, jolloin laite lähetti odotetusti debuggeriohjelman käynnistysilmoituksen tietokoneelle.

    Laitteistosta havaittiin siis ainakin mikrokontrollerin resetointi jännitteiden kytkemisen seurauksena, yhteys ohjelmamuistiin ja sarjaliitännän kautta tietokoneelle suoraan toimiviksi.

    Ellei debuggeriohjelma olisi käynnistynyt, olisi täytynyt ryhtyä vianhakuun, joka olisi voinut osoittautua hyvinkin työlääksi puutteellisen työkaluvalikoiman takia.

  5. Muiden laitteistoon sisältyvien ominaisuuksien (mm. kellopiiri) testaus tehtiin ohjelmiston testauksen yhteydessä. Ongelmia ei löytynyt.

Laitteistosta ei siis löytynyt yhtään korjaamista vaativaa ongelmaa. Osittain tämä selittyy suunnitelmien tavallista huolellisemmalla tarkastamisella. Koska etukäteen oli tiedossa, ettei kunnollisia mittalaitteita olisi käytettävissä, käytettiin suunnitelmien läpikäyntiin aikaa useita työpäiviä (jakaantuneena useamman viikon ajalle).

Ohjelmistotestaus

Ohjelmiston testaamista olisi helpottanut, jos käytettävissä olisi ollut 68HC11F1:lle tarkoitettu emulaattori (käytettävissä olisi ollut Intel MCS-51:lle tarkoitettu emulaattori, josta ei tietenkään ollut mitään hyötyä).

Ensimmäisessä vaiheessa käytettiin laitteistoa itseään tietokoneeseen liitettynä ohjelmistokehityksen apuvälineenä:

Onneksi 'HC11:n ominaisuudet riittävät ja sopivat monitori/debuggeriohjelman ajamiseen kohdelaitteistolla itsellään. Kaikkien mikrokontrollerien kanssa asia ei ole näin, mm. "pienemmän pään" yhden sirun kontrollereilla ei aina RAM-muisti riitä testattaville ohjelmille eikä kaikilla arkkitehtuureilla sitä voi edes käyttää ohjelmien tallettamiseen. Joillakin kontrollereilla (mm. MCS-51-perhe) taas ohjelmien on oltava omassa muistiavaruudessaan, johon ei voi kirjoittaa, mikä haittaa suuresti debuggerin toimintaa (laitteisto voidaan toki suunnitella siten, että ohjelma-avaruuteen kirjoittaminen tapahtuu data-avaruuden kautta, mutta käytännön syyt voivat pakottaa jättämään tämän mahdollisuuden käyttämättä).

Debuggeriohjelman käyttäminen ei ratkaisuna tietenkään vastaa erillistä emulaattorilaitetta, koska on aina mahdollista, että testattava ohjelma sotkee debuggeriohjelman toiminnan. Erillinen emulaattori tarjoaa myös enemmän ominaisuuksia.

Debuggeriohjelmien ominaisuuksista löytyy yleensä mm. seuraavat toiminnot:

Tälle mikrokontrollerille oli tarjolla useita erilaisia tarkoitukseen soveltuvia ohjelmia. Käytettäväksi otettiin Motorolan julkaisema Buffalo, joka vaatii ROM-muistista hieman alle 8 kilotavua. Se sisältää edellä olevien ominaisuuksien lisäksi mm. rivi-assembler- ja disassember-kääntäjät (rivi-assembler kääntää yhden assembler-rivin kerrallaan suorituskelpoiseksi koodiksi. Se ei mahdollista symbolien käyttämistä, mutta tekee pienien kertakäyttöisten testiohjelmien ja nopeiden muutoskokeilujen laatimisen varsin mukavaksi).

Buffalo on saatavana lähdekoodina. Lähdekoodiin lisättiin mm. kontrollerin chip select-logiikan ohjelmointi toimimaan halutulla tavalla ja siitä poistettiin joukko tarpeettomia ominaisuuksia.

Ohjelmiston testaamista varten prototyypin laitteistossa on muutamia eroja lopulliseen kokoonpanoon verrattuna:

Buffaloon sisältyvä "käsky kerrallaan"-suoritus edellyttäisi lisäystä, jota ei tehty: Yksi ajastimen ulostuloista pitäisi yhdistää kontrollerin ulkopuolelta sen XIRQ-keskeytykseen (Buffalo toteuttaa ominaisuuden ohjelmoimalla ajastimen antamaan keskeytyksen heti kun testattavan ohjelman suoritusvuorossa oleva käsky on käynnistetty. XIRQ-keskeytystä käyttämällä keskeytys saadaan aikaiseksi myös tavalliset keskeytykset estävän käskyn jälkeen).

LCD-näyttöjen päivityksen turvaaminen johti tilanteeseen, jossa Buffaloa käytettiin lähinnä ohjelmiston lataamiseen ja käynnistämiseen. Virheet oli etsittävä lähdekoodia lukemalla, koska ajossa olevaa ohjelmaa ei voinut pysäyttää. Virheiden etsimistä tosin helpotettiin lisäämällä ohjelmistoon sarjaliitäntää käyttäviä debug-tulosteita (sarjaliitännälle ei ollut muuta käyttöä testauksen ensimmäisessä vaiheessa).

Toisessa vaiheessa otettiin FlashROM-muisti käyttöön. Lokiohjelmisto ohjelmoitiin sinne vaihtamalla RAM-piirin tilalle Flash. Myös Buffalo laitettiin samaan muistiin, mutta toiseen lohkoon siten, että 'HC11:n toimintatilavalinnalla saadaan valittua kumpi käynnistetään: Lokiohjelmisto toimii, kun on valittu normaali toimintatila ja Buffalo, kun valitaan testitila.


[edellinen sivu] [seuraava sivu] [sisällysluetteloon] [etusivulle]

[versio 1.5, 1996/03/10 20:08:32] [Lähetä palautetta Laurille]

Copyright © 1996 Lauri Aarnio. All Rights Reserved.