En snabb guide med AVRisp mkII med Linux som värd.

Här skriver vi inga frågor. Här finns svaren.
Användarvisningsbild
psynoise
EF Sponsor
Inlägg: 7155
Blev medlem: 26 juni 2003, 19:23:36
Ort: Landvetter

En snabb guide med AVRisp mkII med Linux som värd.

Inlägg av psynoise »

Kompilera C-koden:

Kod: Markera allt

$ avr-gcc -g -Os -mmcu=atmega88 -c demo.c
-g ger oss debug-information.
-Os ger optimering för minskad kod storlek.
-mmcu, här ställer vi in målprocessor.
-c säger att vi ska kompilera.

Länka ihop en binärfil:

Kod: Markera allt

$ avr-gcc -g -mmcu=atmega88 -o demo.elf demo.o
-o ger utdata till fil.

Skapa intel-hexfil:

Kod: Markera allt

$ avr-objcopy -j .text -j .data -O ihex demo.elf demo.hex
-j kopiera endast nämnd sektion.
-O väljer objektformat för utmatningsfil.

Skriv till mikrokontrollern:

Kod: Markera allt

$ avrdude -P usb -p m88 -c avrispmkII -e -U flash:w:demo.hex
-P välj port för identifiering av programmerare.
-p målprocessor.
-c programmerare.
-e raderar innehållet i flash och eeprom hos målprocessor.
-U utför minneshantering enligt parametrar, i exemplet ovan skriver vi till flash-minnet.


För mer utförligare information se:
$ avr-gcc --help
$ man gcc
$ man avr-objcopy
$ man avrdude
samt dokumentationen för avr-libc, finns under /usr/share/doc/avr-libc/avr-libc-user-manual/ i Ubuntu Linux.
Användarvisningsbild
psynoise
EF Sponsor
Inlägg: 7155
Blev medlem: 26 juni 2003, 19:23:36
Ort: Landvetter

Re: En snabb guide med AVRisp mkII med Linux som värd.

Inlägg av psynoise »

Vill man komma ännu enklare undan kan jag rekommendera Mfile för att skapa en Makefile.

http://www.sax.de/~joerg/mfile/

Ladda ner tarballen och kopiera innehållet till /usr/local/share/mfile:

Kod: Markera allt

$ wget http://www.sax.de/~joerg/mfile/mfile.tar.gz
$ tar xzvf mfile.tar.gz
$ sudo cp -R mfile/ /usr/local/share/
I Ubuntu Linux kan man ändra tcl-interpreter till standard Wish genom att ändra första raden i /usr/local/share/mfile/mfile.tcl från

Kod: Markera allt

#!/usr/local/bin/tixwish
till

Kod: Markera allt

#!/usr/bin/wish
För att kunna starta Mfile enkelt via terminalen skapar vi en symbolisklänk:

Kod: Markera allt

$ sudo ln -s /usr/local/share/mfile/mfile.tcl /usr/local/bin/mfile
Sedan är det bara att starta Mfile i din källkodskatalog.

Kod: Markera allt

$ mfile &
Nu kan du välja avr-model, källkodsfiler, optimeringar, programmerare...

För att kompilera och länka ihop alla filer kör vi:

Kod: Markera allt

$ make
För att programmera våran mikrokontroller kör vi:

Kod: Markera allt

$ make program
Vill vi städa efter oss och tabort alla objektfiler kan vi även köra:

Kod: Markera allt

$ make clean
Användarvisningsbild
jadler
EF Sponsor
Inlägg: 407
Blev medlem: 28 maj 2009, 12:03:43
Ort: Vidja, Huddinge, Stockholm
Kontakt:

Re: En snabb guide med AVRisp mkII med Linux som värd.

Inlägg av jadler »

Tips 1: Jag hade till en början problem med behörigheterna på AVRisp mkII under Ubuntu 9.04 64-bit, och löste det med enkla udev-regler. Första försöket var lite klumpigt, kom jag på i efterhand, och jag tog fram en bättre lösning.

Senaste lösningen: Improved udev rules for mcu programmers and usb serial adapters
Bakgrundsinformation: AVRISP MkII, permission problems with avrdude and Ubuntu 9.04 amd64

Själva udev-regeln för AVRisp mkII respektive PicKit II:

Kod: Markera allt

SYSFS{idVendor}==”03eb”, SYSFS{idProduct}==”2104″, MODE=”0660″, GROUP=”plugdev”, SYMLINK+=”avrispmkII-%n”
SYSFS{idVendor}==”04d8″, SYSFS{idProduct}==”0033″, MODE=”0660″, GROUP=”plugdev”, SYMLINK+=”pickit2-%n”
Symlink är inte nödvändig för att det skall fungera, men jag kan lätt se vad som är inkopplat. Läs gärna hela mina texter för att se hur jag gjort, det var lite trial and horror för att komma fram till en vettig lösning.

Jag har också använt liknande teknik för att hålla koll på och skapa mer beskrivande symlink:s till alla olika USB till serie-adaptrar (FTDI etc), vilket jag också beskriver på dessa sidor.

Tips 2: Vad gäller avrdude rekommenderar jag att man skapar filen ~/.avrduderc

Kod: Markera allt

default_programmer = "avrispmkII";
default_parallel = "usb";
för att slippa ange programmerare varje gång (förutsatt att man använder en och samma typ för det mesta). Jag har inte testat att sätta USB-port som default på detta sätt, men det lär skall fungera. Direktiven i denna fil anger defaultvärden för kommandoradens -c och -P. Läs mer i man-sidan, pdf-dokumentationen eller på http://www.nongnu.org/avrdude/.

Tips 3: (Någonstans har jag läst en rekommendation att använda det längre namnet på resp µC, t.ex. attiny2313 istället för t2313, när man anger vad man vill programmera för krets. Jag minns ej motivering, men det fungerar bra. Man minskar ju risken att råka skriva 2313 som i själva verket betyder AT90S2313.)

Bonustips: Använd http://www.engbedded.com/fusecalc/ för att räkna ut fuse-värden för AVR.

Nyckelord (för forum-sökning): linux, ubuntu, udev rules, udevadm, udevinfo
Felmeddelande, behörighet: avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted"
remne
Inlägg: 241
Blev medlem: 11 februari 2007, 14:11:21
Ort: Linköping

Re: En snabb guide med AVRisp mkII med Linux som värd.

Inlägg av remne »

..eller så använder man Eclipse och AVR pluginet till Eclipse - så sköter den allting automagiskt :)
Användarvisningsbild
jesse
Inlägg: 9234
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: En snabb guide med AVRisp mkII med Linux som värd.

Inlägg av jesse »

psynoise: tack för en liten introduktion i kompilatorernas värld.

remne: kan du utveckla det? Finns det ett särskilt AVR plugin för Eclipse att ladda ner nånstans? Vad ingår i det? AVR-libs,avrdude,simulator???

EDIT: eeh. förresten, jag hittade det här.
Tack för tipset!
Skriv svar