Kirjoittaja Aihe: AVR-ohjelmointia eclipsellä (tai ilman)  (Luettu 6189 kertaa)

237

  • Käyttäjä
  • Viestejä: 17
    • Profiili
AVR-ohjelmointia eclipsellä (tai ilman)
« : 14.07.11 - klo:18.30 »
Tere!

Olen lueskellut useita topiikkeja mm. AVRfreaksista, ja tullut siihen tulokseen, että Eclipse olisi kenties helpoin graafinen käyttöliittymä C:llä koodaamiseen ja koodin kääntämiseen ja lataamisen mikrokontollerille. Ongelmaksi muodostuukin se, ettei asennuksesta ole kovinkaan selkeää dokumentaatiota, ja netistä löytämäni ohjeet eivät toimi (ts. joku vaihe jää aina välistä kun tulee herjoja tai tiedostoa ei löydy, tai se ei kelpaa ubuntu 11.04:lle jne jne).

Käytännössä pitäisi siis saada Eclipseen C-tuki ja kääntäjä, sekä joku lisäosa, mutta kun en osaa asentaa niitä, ja tälle uudemmalle eclipselle ei kyseistä dokumentaatiota löytänyt. Toinen vaihtoehto olisi tietysti käyttö ilman graafista käyttöliittymää.

Olen asentanut AVRduden, AVRgcc:n ja sen tarvitsemat paketit. C:n koodaaminen onnistuu kyllä ihan vaikka geditissä, mutta nuo muut toiminnot (Assembler, fuse-ohjelmointi,konekielelle kääntäminen ja optimointi jne) pitäisi jotenkin saada toimimaan. Kaiken kaikkiaan tuo erillisten pakettien muodostama kokonaisuus on sen verran vaikeaselkoinen, etten saa kokonaisuutta toimimaan oikein millään tavalla. mikäli jollakulla on kokemuksia mkrokontrollereista ubuntulla tai linuxilla yleensä, niin arvostaisin neuvoja suuresti.

crope

  • Käyttäjä
  • Viestejä: 817
  • Fedora 12
    • Profiili
    • http://palosaari.fi/
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #1 : 18.07.11 - klo:03.32 »
On kyllä tullut useampaankin otteeseen koodailtua Linuxilla AVR piireille. Editorina tosin se Gedit ja sitte käännös ja flashäys komentoriviltä. Voisin kyllä sanoa että ei tuossa kannata ihan mahdottomman monimutkaisia systeemeitä virittelemään.

Pistä perusjutut eka toimimaan ja kokeile että saat jonku LEDin vaikka vilkkumaan. Jos se tuntuu sittenkin kömpelöltä käyttää niin ala viritteleen siihen Eclipseen.

Assembler, sulakkeiden ohjelmointi, konekäännökset ja optimoinnit onnistuvat myös sopivilla työkaluilla ja käännösvipusilla. Sulakkeet esim. pystyt sillä flasherillä ohjelmoimaan, eli avrdude yleensä. Ei niihin tarvi, eikä pidä, edes yleensä koskea. En tiedä millasta optimointia kaipaat, mutta kuvittelen että haluat jostain erikoisesta syystä optimoida C-kääntäjän tekemää koodia. Silloin pistät kääntimeen vipusia ja se tulostaa sellasen asm koodin jota voit optimoida. Siihenkään ei kyllä se Eclipse liity mitenkään.


Antti

237

  • Käyttäjä
  • Viestejä: 17
    • Profiili
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #2 : 18.07.11 - klo:13.10 »
Mites nuo "perusjutut" oikein laitetaan toimimaan? Olen suhteellisen pihalla ubuntun konsolikäytöstä, vaikka perus C-koodausta olenkin gcc:llä tehnyt. Olisiko missään kunnollista opasta, jossa käytäisiin vaihe vaiheelta läpi tarvittavien pakettien asennus ja käyttöönotto, jotta saisi edes tuon perus AVR flässäyksen toimimaan?

crope

  • Käyttäjä
  • Viestejä: 817
  • Fedora 12
    • Profiili
    • http://palosaari.fi/
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #3 : 18.07.11 - klo:18.29 »
Mites nuo "perusjutut" oikein laitetaan toimimaan? Olen suhteellisen pihalla ubuntun konsolikäytöstä, vaikka perus C-koodausta olenkin gcc:llä tehnyt. Olisiko missään kunnollista opasta, jossa käytäisiin vaihe vaiheelta läpi tarvittavien pakettien asennus ja käyttöönotto, jotta saisi edes tuon perus AVR flässäyksen toimimaan?

No aloita vaikka siitä että saat AVR-piiriin JTAGilla yhteyden käyttäen avrdudea. On ihan ensimmäinen temppu. Sen jälkeen jostain netistä tongit ohjeet kuinka käännetään joku hello world. Jos sulla on joku valmis development board niin lataa valmistajalta siihen joku sovellus ja flashää se. Omaa tekoa se laite tuskin on taidoista päätellen.

Antti

237

  • Käyttäjä
  • Viestejä: 17
    • Profiili
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #4 : 24.07.11 - klo:18.20 »
No, mulla on tossa pino PDIP-koteloisia kontrollereita, jotka voin tökkiä koekytkentäalustaan. Itse laitteet ovat kylläkin omatekoisia, mutta niihin olen yleensä laittanut jonkinmoisen debuggausmahdollisuuden. Osaan kyllä AVR-rautapuolen, elektroniikan ja laiteläheisen ohjelmoinnin, mutta tässä tämä linux ja ohjelman siirtäminen C-tiedostosta kontrollerille tuottaa niitä ongelmia, johon ei taidot riitä, muutoinhan olisin postannut kysymyksen tyystin toisille foorumeille. Voisiko joku siis linkata tai selostaa, miten:
A) Geditillä tai vastaavalla koodattu koodi käännetään AVR:lle sopivaan muotoon
B) Miten AVR:n flässäykseen tarvittavat ohjelmat (paketit?) asennetaan (mitä kaikkea tarvitaan) ja
C) Miten niitä käytetään ilman graafista käyttöliittymää?

muep

  • Käyttäjä
  • Viestejä: 896
    • Profiili
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #5 : 24.07.11 - klo:20.38 »
A) Geditillä tai vastaavalla koodattu koodi käännetään AVR:lle sopivaan muotoon
Samoin kuin PC:llekin yhteensopivaan muotoon, mutta tarkoitukseen sopivalla kääntäjällä. Tämmöisen saa paketista gcc-avr. Siellä taas löytyy avr-gcc -nimellä gcc joka tuottaakin AVR-yhteensopivia binääreitä.

B) Miten AVR:n flässäykseen tarvittavat ohjelmat (paketit?) asennetaan (mitä kaikkea tarvitaan) ja
Avrdude ja Avarice ovat molemmat käypiä tuohon hommaan, mutta riippuu vähän flashaamiseen käytettävästä laitteistosta että kumpi on sopivampi.

C) Miten niitä käytetään ilman graafista käyttöliittymää?
Tässä taas tarkat komennot riippuvat ainakin flashauslaitteistosta ja ohjelmoitavan prosessorin mallista. Jos kuvaat tarkemmin laitteistosi niin joku ehkä pystyy antamaan tarkatkin ohjeet.

Kannattaa kuitenkin alkuun asennella nuo työkalut ja katsella niiden ohjeita. Internetistä löytyy myös varsin kattavasti niille apua kun hakee esimerkiksi työkalun nimellä.
[http://smolt.fedoraproject.org/show?uuid=pub_ac53b581-021a-4b76-bd14-e7d51f55462f]Pöytäkone[/url]
Läppäri

Heikki Ketoharju

  • Käyttäjä
  • Viestejä: 716
  • Tee enemmän, harmittaa vähemmän!
    • Profiili
    • heikki.ketoharju.info
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #6 : 27.07.11 - klo:17.32 »
Minulla ei ole pienintäkään käsitystä aiheesta mistä keskustelette mutta jos nimimerkki 237 olet _ihan_ pihalla komentoriviympäristössä, niin oletko jo vilkaissut Linux.fi -wikiä? Aina silloin kun haluan nopeasti tietoa miten Linux toimii graafisen käyttöliittymän alla, suuntaan ekaksi tuonne noin. Komentorivistä siellä on kirjoitettu paljon kaikenlaista hauskaa ja monestakin eri näkökulmasta: http://linux.fi/wiki/Portaali:Komentorivi

Näyttää sieltä löytyvän myös jokunen rivi AVR:stä, mutta ei kovin hirveästi. Voithan vilkaista, olisiko jossain artikkelissa hyödyllisiä linkkejä muualle: http://linux.fi/wiki/Avr

Toivottavasti joku AVR-ohjelmoinnista (tai ohjelmoinnista ylipäätään) jotain ymmärtävä osaa auttaa sinut paremmin alkuun. Itsekin aikanaan Linux-käytön aloittaneena tiedän sen turhautumisen tunteen, kun ei yhtään tiedä mistä etsiä ja keneltä kysyä, jos aihe on vähän spesiaalimpi.
-
Minä kirjoittelen suomenkielisiä ohjeita Linux-musiikintekoon:
http://linux.fi/wiki/Musiikinteko_Linuxilla
-
Kansainvälinen Linux-audio -wiki, sovellusluettelo ja äänikorttitietokanta:
http://wiki.linuxaudio.org

237

  • Käyttäjä
  • Viestejä: 17
    • Profiili
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #7 : 28.07.11 - klo:15.11 »
AVR-GCC on asennettu, mutta mulla ei edelleenkään ole hajua, mihin laitan peruskirjastot kuten "io" ja "delay". Lisäksi olisi omia kirjastoja, mutta ne toiminevat ihan "normaalisti" pääohjelman C-tiedoston rinnalla.

AVRdude asennettu. Fläserinä on AVR ISP MK2- merkkinen mokkula, joka liitetään USB-porttiin. ("Jossain" luki että toimii AVRduden kanssa) Sarja/rinnakkaisportit alkavat olla menneen talven lumia, eikä niitä löydy esim. läppäristä.

Sitten kontrollereina käytösä atmegaa ja attinyä, yksi AtUSB-proggiskin on työn alla. ilmeisesti avrdude tukee melko lailla kaikkia.

EIköhän suurin ongelma ole siinä, etten ole onnistunut löytämään yhtään opasta kaikkien ohjelmien ja pakettien yhteiskäytöstä. Erillisten pakettien dokumentaatio löytyy kyllä, mutta ne ovat peruspulliaiselle varsin vaikeaselkoisia. Olisiko missään kunnollista tutoriaalia avrgcc:n ja avrduden yhteiskäytöstä ja yksinkertaisen ohjelman kääntämisestä ja lataamisesta kontrolleriin?

muep

  • Käyttäjä
  • Viestejä: 896
    • Profiili
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #8 : 28.07.11 - klo:22.53 »
Ainakin Ruuvipenkissä näyttäisi olevan ihan suomeksi ja Ubuntulle ohje jossa näytetään yksinkertainen ohjelma AVR-kontrollerille ja se miten se saadaan laitteeseen. Oletko tähän jo törmännyt?
[http://smolt.fedoraproject.org/show?uuid=pub_ac53b581-021a-4b76-bd14-e7d51f55462f]Pöytäkone[/url]
Läppäri

crope

  • Käyttäjä
  • Viestejä: 817
  • Fedora 12
    • Profiili
    • http://palosaari.fi/
Vs: AVR-ohjelmointia eclipsellä (tai ilman)
« Vastaus #9 : 08.08.11 - klo:12.25 »
Postiluukusta kopsahti uusi AVR-JTAGi ja pitihän sitä testailla. Edellinen stk500 mallinen oli vanha RS232-portilla oleva eikä suostunut toimimaan edes kolmella USB-RS232 palikalla jotka sattuivat laatikossa olemaan.

Asennetaan tarvittavat työkalut:
Koodia: [Valitse]
yum install avrdude avr-gcc avr-libc

JTAGi koneeseen kiinni ja dmesg-tulosteesta oikea portti, no ttyUSB0 tietty... Sitten vain avrdudeen kokeilemaan sopivia parametrejä. Lankku sattui olemaan Olimex AVR-MT-128 eli piiri on ATmega128 => -p m128. Jtagin protokollasta ei ollut tietoa, mutta entuudestaan tiesin stk500 ja jtag1 olevan aika yleisiä protokollia. stk500 antoi timeouttia, sitten  jtag1 ja vola, yhteys piiriin saatiin. Tässä vaiheessa täytyy tietenkin olla JTAG laitteessa kiinni ja virrat päällä.
Koodia: [Valitse]
avrdude -c jtag1 -p m128 -P /dev/ttyUSB0

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9702

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Käytetyn lankun datasheetti kertoo releen ja LEDin olevan kytkettynä portin A jalkaan 6. Vaikuttaa pätevältä paikalta testa.

Tehdään yksinkertaisin mahdollinen ohjelma asian testaamiseksi.
Koodia: [Valitse]
cat << EOF > avrtest.c
#include <avr/interrupt.h>

int main(void)
{
DDRA |= _BV(PA6); /* enable relay w/ LED */
PORTA |= _BV(PA6); /* relay w/ LED on */
return 0;
}
EOF


Käännetään ohjelma.
Koodia: [Valitse]
avr-gcc -mmcu=atmega128 avrtest.c -o avrtest.elf

Konvertoidaan käännetty ohjelma avrdudelle kelpaavaan formaattiin.
Koodia: [Valitse]
avr-objcopy -O ihex avrtest.elf avrtest.hex

Tuupataan ohjelma laitteeseen avrdudella.
Koodia: [Valitse]
avrdude -c jtag1 -p m128 -P /dev/ttyUSB0 -U flash:w:avrtest.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9702
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "avrtest.hex"
avrdude: input file avrtest.hex auto detected as Intel Hex
avrdude: writing flash (264 bytes):

Writing | ################################################## | 100% 0.09s

avrdude: 264 bytes of flash written
avrdude: verifying flash memory against avrtest.hex:
avrdude: load data flash data from input file avrtest.hex:
avrdude: input file avrtest.hex auto detected as Intel Hex
avrdude: input file avrtest.hex contains 264 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.06s

avrdude: verifying ...
avrdude: 264 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Niksnaks lankkuu boottaa itsensä ja rele naksahtaa päällä ja LEDi palaa punaisena.