Ohjelmistotyökalujen valinta


[edellinen sivu] [seuraava sivu] [sisällysluetteloon] [etusivulle]
Ohjelmistotyökalujen valinta jakaantui kahteen osaan: Sopivien kehitystyökalujen, eli ohjelmoitikielien ja -kääntäjien valintaan, sekä ohjelmien testausympäristöön tarvittavien työkalujen valitsemiseen. Jälkimmäiseen kuuluvaa debuggeriohjelmaa on käsitelty testaus- ja debuggausjärjestelyjen yhteydessä, kohdassa ohjelmistotestaus.

Ohjelmistotestauksessa olisi ollut periaatteessa mahdollista käyttää myös kontrollerisimulaattoria, joka mahdollistaa ohjelmien ajamisen ilman aitoa laitteistoa. Simulaattoreita olisi ollut saatavissa Internetin kautta, mutta niiden käyttämiseen liittyy yksi ikävä ongelma: Yleensä simulaattorit eivät osaa simuloida I/O-laitteita, jotka on liitetty kontrolleriin. Koska tässä työssä I/O-laitteiden ohjaaminen oli keskeisessä osassa, ei simulaattorin käyttöä edes harkittu.

Ohjelmankehitystyökalujen osalta valinta kohdistui ilmaiseksi saatavilla oleviin työkaluihin. Niitä etsittiin ja haettiin Internetistä. Tarpeellisia ohjelmia olivat assembler- ja C-kääntäjät. Myös FORTH-kielen käyttämistä harkittiin. Tarjolla olevista kääntäjistä suurin osa on tarkoitettu MS-DOS-järjestelmille. Tarkoituksena oli kuitenkin tehdä kehitystyö Unix-järjestelmällä.

Assembler-kääntäjät

Assembler-kääntäjiä on Internetistä saatavilla erittäin suuri joukko. Tyypillisesti lähes kaikissa tarjolla olevissa assemblereissa on sama ongelma: Ne eivät tue erillisen linkkerin käyttämistä, vaan vaativat kääntämään koko ohjelman kerralla. Toimintamalli soveltuu vain pienien ohjelmien kääntämiseen.

Tunnetuin assembler-kääntäjä on Motorolan julkistama ohjelma, josta on olemassa versiot lähes kaikille Motorolan prosessoreille. Sekään ei tue linkkausta, mutta on tarpeellinen mm. Buffalo-debuggeriohjelman kääntämistä varten.

Linkkausta tukevia, Unixissa toimivia assembler-kääntäjiä löytyi vain yksi: Gcc:lle tarkoitetun 68HC11-loppupään mukana tulee kääntäjä ja linkkeri. Sen kokeileminen jäi tosin erittäin vähäiseksi, koska gcc:tä ei päätetty käyttää. Ohjelmiston kääntämiseen käytettiin kirjoittajan omatekoista assembler-kääntäjää, joka kääntää myös projektissa käytetyn C-kääntäjän tuottaman koodin, joka ei ole puhtaasti "Motorola-tyylin" mukaista.

C-kääntäjät

Internetistä on saatavissa kohtalaisen runsas valikoima C-kääntäjiä 68HC11:lle. Osa tarjolla olevista on demoversioita kaupallisista tuotteista, mutta joukkoon mahtuu pari public domain- tai vapaasti jaettavaa kääntäjääkin. Tarve päästä tekemään kehitystyö Unix-järjestelmällä johti jälkimmäisten tutkimiseen, koska kaikki löydetyt kaupallisten tuotteiden demoversiot oli tarkoitettu MS-DOS:lle.

Vapaasti saatavista kääntäjistä on saatavissa myös lähdekoodi, joten kääntäminen omalle työasemalle onnistuu kohtuullisella työpanoksella. Alunperin kääntäjävaihtoehtoja oli kaksi:

Kääntäjän valintaa tehtäessä oli tarkoituksena käyttää MCX11-kerneliä ja keskeyttävää moniajoa. Gcc hylättiin sen käyttämän pseudorekisterisysteemin takia. Small-C:tä ei kelpuutettu, koska se ei toteuta riittävää osajoukkoa C-kielestä. Valmiiden vaihtoehtojen vähentyessä olemattomiin nousi ratkaisuksi kirjoittajan 80-luvulla tekemä C-kääntäjä, "5+c", joka oli suunniteltu tuottamaan koodia 6809:lle. Tässäkin kääntäjässä on ongelmansa: Sitä ei ole koskaan tehty aivan loppuun asti (ts. se sisältää tunnttuja, joskin pieniä bugeja).

"5+c"-kääntäjän loppupäähän lisättiin mahdollisuus tuottaa koodia HC11:lle. Lisäys tehtiin suoraviivaisesti, koska projektin tarkoituksena ei ollut tehdä parasta mahdollista C-kääntäjää, vaan vain saada aikaiseksi käyttökelpoinen sellainen. 6809:n ja 68HC11:n käskykanta ja rekisterirakenne ovat suhteellisen samanlaisia, mikä helpotti työtä oleellisesti. Suurimmassa osassa tapauksista vain muutettiin kääntäjä tuottamaan 6809-käskyn sijasta yksi tai useampia 68HC11-käskyjä, mikä toisinaan johtaa ikävän pitkiin käskysekvensseihin (6809:n käskykanta on huomattavasti ilmaisuvoimaisempi). Koodin kokoa olisi helppoa supistaa n. 30% muuttamalla toimintamallia ja ottamalla käyttöön muutamia yksinkertaisia optimointeja.

Myös "5+c":n kuuluva assembler-kääntäjä vaati muutamia muutoksia kääntääkseen myös HC11-koodia. Linkkeriin ei tarvittu muutoksia.

Työn tuloksena syntyi kääntäjä, joka tuottaa tähän tarkoitukseen hyvin sopivaa, joskin turhan paljon tilaa vaativaa koodia. Kääntäjä ei kuitenkaan laadullisesti ole sellaisella tasolla, että sen voisi julkaista.

Kaupalliset C-kääntäjät

Seuraavista kaupallisista C-kääntäjistä on saatavissa tietoa sekä osasta demoversio internetin kautta:


[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.