BL40A1810 Mikroprosessorit, harjoitus 1 Käytettävä laitteisto Kurssin opetuslaitteistona käytetään Legon MINDSTORMS laitteita, jonka pääosia ovat ohjelmoitava NXT-yksikkö (Atmel ARM7, 64k RAM, 256k Flash), siihen liitettävissä olevat kolme servomoottoria, sekä etäisyys-, kosketus-, valo- ja äänianturit. Laitteet annetaan opiskelijoille lainaan kurssin ajaksi ja ne tulee palauttaa viimeistään perjantaina 26.4. Tero Ahoselle (h. 6510). NXT käynnistetään oranssista näppäimestä ja sammutetaan palaamalla menuvalikossa taaksepäin harmaalla näppäimellä. NXT:n vakio-ohjelmisto on korvattu nxtosek-käyttöjärjestelmällä, joka mahdollistaa laitteiston ohjelmoimisen C-kielellä ja tarjoaa kattavat funktiot laitteiston ohjaamiseen. nxtosek-käyttöjärjestelmästä sekä ohjelmoinnista on lisätietoa saatavissa mm. projektin kotisivustolta http://lejos-osek.sourceforge.net/ sekä Uppsalan yliopiston RTOS-kurssin kotisivustolta http://www.it.uu.se/edu/course/homepage/realtid/ht10/lab2. NXT:n funktiot on käyty yksityiskohtaisesti lävitse osoitteessa http://lejososek.sourceforge.net/ecrobot_c_api_frame.htm. NXT:n ohjelmointiin käytetään Eclipse-ohjelmointiympäristöä sekä Cygwinterminaalia, joita käyttäen c-kielinen lähdekoodi (esim. sample.c) ja oil-päätteinen ohjelmiston kuvauskoodi (esim. sample.oil) käännetään NXT:lle ladattavaksi rxepäätteiseksi binääritiedostoksi. Käännettävät tiedostot ja rxe-tiedoston nimi määritellään Makefile-tiedostossa, jonka tulee olla samassa hakemistossa c- ja oiltiedostojen kanssa. Noppasivuilla oleva Makefile-tiedosto mahdollistaa tiedostojen
sijoittamisen esimerkiksi muistipalikalle tai verkkolevylle. Kääntämisen jälkeen rxetiedosto voidaan siirtää NXT:lle, jonka pitää olla päällä ohjelman siirron aikana. Eclipsen ja Cygwin-terminaalin käytön perusteet Avataan Eclipse työpöydän kuvakkeesta. Mikäli ohjelma kysyy käynnistyessään kotihakemiston kohdetta, kannattaa siksi valita Eclipsen asennushakemisto C:\cygwin\eclipse. Tehdään aluksi Makefilen sisältävä projekti, johon liitetään hakemistossa C:\cygwin\nxtOSEK\Koodit\HelloWorld olevat tiedostot. Kieleksi valitaan C ja Toolchain for Indexer Settings kohtaan valitaan <none>. Tämän jälkeen Eclipsen näkymän pitäisi olla seuraavan kaltainen, alla olevaan kuvaan on avattu jo hakemistossa olevat kolme tiedostoa.
helloworld.c koodi muodostuu pakollisista kirjastomäärityksistä sekä taskin OSEK_Task_Background määrityksestä. Lisäksi koodissa on esillä 1ms:n ajastinkeskeytys, jota ei tällä kertaa käytetä. OSEK_Task_Background sisältään while-silmukassa toistuvan näytön tyhjennyksen, laitteiston statusruudun tulostuksen ja kokonaisluvun 65 tulostuksen ruudulle. helloworld.oil pitää sisällään laitteiston sekä taskin määrittelyt. Oil-tiedostoja muokataan, kun ohjelmassa on useita taskeja ja niiden halutaan toimivan määrätyin aikavälein.
Makefile-tiedosto pitää sisällään käännettävien tiedostojen nimet sekä ohjelman lopullisen nimen. Makefile-tiedostoa on muokattu siten, että c-, oil- ja Makefiletiedostot voivat sijaita esimerkiksi erillisellä muistipalikalla cygwinin alihakemiston sijaan.
Ohjelman ollessa valmis, se käännetään Build all käskyllä. Muistaa tallentaa muutoksesi ennen kääntämistä! Tarvittaessa voit siivota vasemman reunan tiedostolistausta samassa valikossa olevalla Clean -käskyllä. Mikäli ohjelma kääntyy oikein eikä siinä ole virheitä, Eclipse-ohjelman alareunan konsoliin tulisi tulostua: Vaihtoehtoisesti ohjelman kääntäminen voidaan tehdä Cygwinin Terminalpääteikkunassa, jota tarvitaan myös ohjelmaan siirtoon NXT:lle. Cygwin käynnistetään työpöydän kuvakkeesta ja sitä käytetään Unix:sta tutuilla käskyillä. Siirry helloworld-hakemistoon ja tarkastele hakemiston sisältöä ohjelman käännön jäljiltä käskyjen cd c:/cygwin/nxtosek/koodit/helloworld ls -l avulla. Alla olevassa kuvassa helloworld-ohjelma on onnistuneesti käännetty käskyllä make all ja tämän jälkeen hakemiston sisältö on tarkistettu käskyllä ls. Ohjelman käännöstiedostot voidaan tarvittaessa siivota käskyllä make clean.
Tiedostolistauksessa näkyvää rxeflash.sh-skriptiä käytetään valmiin ohjelman siirtämiseen NXT:lle. Varmista ennen ohjelman latausta, että NXT on kytketty usbkaapelilla tietokoneeseen ja käynnistetty oranssilla näppäimellä. Usb-yhteyden aktiivisuuden voi tarkistaa NXT:n näytön vasemmasta yläreunasta. Näiden asioiden ollessa kunnossa, siirrä ohjelma NXT:lle käskyllä./rxeflash.sh Mikäli ohjelma latautuu onnistuneesti NXT:lle, tulee konsoliin seuraavankaltainen tuloste: Mikäli konsoliin ei tulostu numerosarjaa, ei ohjelma ole jostain syystä siirtynyt NXT:lle.
Ohjelman käynnistäminen NXT:ltä Ohjelman ollessa ladattuna NXT:lle. tulee se valita käyttöön NXT:n My Files -> Software Files valikosta. Tämä valinta käynnistää NXT:n uudelleen ja lataa ohjelman Flash-muistista NXT:n käyttömuistiin. Nyt ohjelma on käynnistettävissä käynnistettävissä oikean nuolinäppäimen RUN-käskyllä. Mikäli saat testattua ohjelman toiminnan onnistuneesti, kokeile seuraavaa tehtävää: 1. Lisää ohjelmaan jokaisella ohjelmakierroksella arvoaan kasvattava laskuri, jonka arvo esitetään lcd-näytöllä kokonaisluvun 65 sijaan. Seuraavan kerran harjoituksissa käytetään antureita, joten ottakaa ensi viikolle mukaan vähintään NXT, usb-kaapeli, kosketusanturi (kytkettynä porttiin 1), äänianturi (2), valoanturi (3), etäisyysanturi (4) sekä liitäntäkaapelit NXT:n ja antureiden välille. Halutessanne voitte kasata jonkin laatikon ohjeissa neuvotuista ajoneuvoista.