Logiikka-analysaattori on nimenomaan digitaalitekniikan tutkimista varten kehitetty mittalaite. Se tarjoaa käytettäväksi tyypillisesti kymmeniä mittakanavia, joiden tilaa seurataan vain binaarisena (0/1). Tyypillisesti analysaattoreilla voi tehdä sekä tila- että ajoitusmittauksia.
Sopivalla ohjelmoinnilla logiikka-analysaattori saadaan esittämään kerätyt tiedot esim. kontrollerin väylän tapahtumina, tunnistamaan väylässä näkyneet käskyjen haut ja esittämään käskykoodit selväkielisinä (jos analysaattorin ohjelmaan sisältyy disassembler-ominaisuus). Tämän toiminnan mahdollistavia ohjelmia saa yleensä analysaattorien valmistajilta yleisimpiä kontrollereja varten, mahdollisesti erillistä korvausta vastaan.
Logiikka-analysaattoreita valmistavat mm. useat tunnetut mittalaitteiden valmistajat, kuten Tektronix ja Hewlett-Packard.
Koska emulaattori on liitetty todelliseen laitteistoon, voi sitä rajoitetusti käyttää myös laitteiston testaamiseen: Laitteisto-ominaisuuksia voi yleensä kokeilla käsin (esim. kirjoittamalla suoraan emulaattorin komentotilasta I/O-portteihin) ja laitteiston toimimattomuudesta johtuvien ongelmien jäljittäminen on myös mahdollista seuraamalla niiden ohjelmistolle aiheuttamia ongelmia (esim. pysäyttämällä ohjelma, kun halutusta muistipaikasta on luettu määrätty arvo).
Emulaattoria käytettäessä ohjelman suoritus voidaan pysäyttää tai siihen voidaan vaikuttaa muuten ajonaikana. Ohjelman suorituksen tarkkaileminen ohjelmaa pysäyttämättä ei edes välttämättä ole mahdollista. Emulaattorit sisältävät myös muistia käytettäväksi kohdelaitteiston muistina ohjelmankehitystyössa: Esimerkiksi mikrokontrollerin sisäinen ROM voidaan emuloinnin aikana korvata emulaattorin RAM-muistilla, johon kirjoitukset kontrollerilla itsellään on estetty.
Emulaattoreita valmistavat mm. mikrokontrollerien valmistajat sekä monet juuri tälle sektorille erikoistuneet yritykset, kuten Softaid. Aikaisemmin (1980-luvulla) oli tyypillistä, että emulaattori sisältyi ns. kehitystukilaitteistoon, joka käsitti myös ohjelmiston kehittämiseen tarvittavan tietokoneen (ja oli pääsääntöisesti erittäin kallis). Nykyisin valtaosa emulaattoreista on PC-tyyppisiin laitteisiin liitettäviä lisälaitteita. Myös suurin osa markkinoilla olevista ohjelmankehitystyökaluista on PC-ohjelmia.
Jos sovelluksen rakenne on sellainen, ettei sen pysäyttäminen hetkeksikään ole mahdollista, saattaa logiikka-analysaattori olla emulaattoria parempi vaihtoehto ohjelmistonkin toiminnan selvittämiseen.
ROM-emulaattorit ovat suhteellisen halpoja. Sellaisen voi myös rakentaa itse vastaavan kokoisesta RAM-piiristä ja muutamasta logiikkapiiristä.
(katso esim. SofTec Microsystemsin EPROM-emulaattori)
Laitteiston testaaminen tehtiin viidessä vaiheessa:
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.
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:
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.
[versio 1.5, 1996/03/10 20:08:32] [Lähetä palautetta Laurille]