26. tammikuuta 2011

ATXMega 192A3 ja Ubuntu 10.04

Minulla on nykyään Atmelin ATXMega-sarjan mikro-ohjaimella varustettu lauta, kuten aikaisemmassa jutussa kerroin. Hiljattain minulla oli aikaa perehtyä sen ohjelmoimiseen Linux-ympäristössä. Eteen tuli pari ongelmaa, joihin esittelen ratkaisuni seuraavassa.

Laitteisto:
  • Ubuntu 10.04
  • ARVISP mkII -ohjelmointilaite
  • ATXMega 192A3

Koeponnistus Arduinolla
AVRISP mkII (Kuva Windell H. Oskay, www.evilmadscientist.com)
Aluksi yritin ohjelmointia Eclipseen asennettavalla liitännäisellä, mutta se ei suostunut tunnistamaan ohjelmointilaitetta lainkaan. En ole kuitenkaan fakkiintunut IDE:n käyttämiseen, joten minulle komentorivillä kääntäminen ja Makefilen värkkääminen käsin käy ihan yhtä hyvin. Otin siis käteen Lauri Jämsän kirjoittaman oppaan AVR-kehityksestä Linuxissa. Ensimmäiseksi testasin robottiautoartikkelissa mainitsemaani Arduinoa, minkä ohjelmointi ei sarjaportin kautta enää onnistu, kun Arduinon bootloader ei siinä suostu enää toimimaan. Ensin kokeilin yhteyttä Arduinoon komennolla

avrdude -c avrispv2 -p m168 -P usb
Sen jälkeen kopioin malliohjelman tiedostoon, latasin Makefilen sabluunan, tein Jämsän mainitsemat muutokset (tietenkin omalle ohjelmoijalle ja mikro-ohjaimelle) muutokset, käänsin ja latasin koodin lautaan. Homma sujui kuin tanssi. 

Yo dawg!
Seuraavaksi vaihdoin XMega-laudan tulille ja kokeilin yhteyttä ja sain virheilmoituksen. Tulin siihen tulokseen, että ohjelmointilaitteen firmware on liian vanha kyseisen piirin ohjelmoimiseen, joten edessä oli ohjelmoijan ohjelmointi. Sitä en edes yrittänyt tehdä Linuxissa, vaan teetätin sen koulussa Tomilla, joka teki sen käyttäen AVR Studiota ja siihen sisällytettyä ohjelmointilaitteiden päivitysominaisuutta. Illalla kun pääsin kotiin kokeilin uudestaan komentoa
avrdude -c avrispv2 -p atxmega192a3 -P usb
 ja sain laitteelta kohteliaan ilmoituksen, että yhteys on kunnossa.

JAMK XMega

Kääntäjäongelma
Muokkasin seuraavaksi testiohjelman ja Makefilen uudelle laudalle sopivaksi ja yritin kääntää sen. GCC vastasi ilmoittamalla, että käyttämäni kohdemikro-ohjain ei ole tuettu. Aloin selvittämään, mikä versio avr-gcc:stä tukisi mikro-ohjaintani ja se urakka osoittautuikin odotettua hankalammaksi. Kyseessä on ilmeisesti patch, jonka ovat tehneet FreeBSD-projektin kehittäjät, mutta jota jostain syystä ei ole käännetty Ubuntun versioon paketista. Lopulta löysin deb-paketit kääntäjästä, joissa uusimpien XMega-piirien tuki oli mukana. Poistin ensin Ubuntun oman paketin, asensin korvaavaan, käänsin ohjelman ja latasin sen lankkuun ongelmitta.

Ei kommentteja:

Lähetä kommentti