Fórum témák

» Több friss téma
Cikkek » AVR programozás Ubuntu-n
AVR programozás Ubuntu-n
Szerző: mosomate, idő: Dec 5, 2014, Olvasva: 11718, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   6 / 8

Az elkészült programunkat már csak le kell tölteni az AVR-be. Ehhez az AVRDUDE-ot fogjuk használni, ami nagyon sok programozót és AVR-t támogat. Hobbista körökben saját megfigyeléseim szerint a három legnépszerűbb programozó-klón az STK500, az AVRISP mkII és a JTAG-ICE. Én egy STK500v2-t fogok használni ISP interfésszel a vezérlő felé, de bármelyik típushoz van az interneten forrás. Megmutatom, hogy ezt hogyan lehet működésre bírni AVRDUDE-al.
Telepítsük az avrdude nevű csomagot:

sudo apt-get install avrdude

Ha csak azt a parancsot adjuk ki, hogy avrdude, akkor kiírja az opcióit, ezek közül néhány fontosabb:
   -p: a programozandó vezérlő típusa
   -b: A soros port jelzési sebessége (az én STK500-asomnál elő van írva 115200 baud érték)
   -c: programozó típusa
   -P: az a soros port, amire rá van kötve a programozó
   -U: memória operáció. Ez utóbbi némi magyarázatra szorul.
Itt azt adhatjuk meg, hogy a memória melyik részével, mit csináljon az avrdude.
Ennek a paraméternek az első része a memória típusa: flash, eeprom, alsó fuse bájt (lfuse), felső fuse bájt (hfuse), kiterjesztett fuse bájt (efuse);
A második az operáció jellege: írás (w), olvasás (r), megerősítés (v);
A harmadik a bemeneti, vagy kimeneti fájl, illetve formátum.
Nézzünk egy pár példát:

Ha szeretnénk letölteni a frissen elkészített prog.hex fájt akkor:
flash:w:prog.hex
 
Kiolvassuk az alsó fuse bájtot az lfuse.hex-be:
lfuse:r:lfuse.hex:i

Több példa, és részletesebb bemutatás az alábbi oldalon található: http://www.ladyada.net/learn/avr/avrdude.html

A legtöbb programozó klón valamilyen soros portként jelenik meg a rendszerünkben, így az avrdude-ot alapból csak rendszergazdai jogosultsággal, vagyis sudo-val tudnánk használni, de, ezt is ki lehet játszani. Ha megkeressük az eszközünket a /dev struktúrában, akkor látszik, hogy a dialout a tulajdonos csoport, amihez magunkat hozzáadva már meg is oldottuk ezt a problémát.
Bejegyzés a /dev-ben:

crw-rw----  1 root dialout   188,   0 nov   29 14:28 ttyUSB0

Adjuk magunkat hozzá a dialout csoporthoz:

sudo adduser felhasználónév dialout

Ezek után vígan használható sudo nélkül. Ha mégsem, akkor jelentkezzünk ki, majd újra be, és akkor már működni fog.

Konkrét példák:
Töltsük le az elkészült hex-et. Nálam ez így zajlik:

avrdude -c stk500v2 -p t45 -P /dev/ttyUSB0 -b 115200 -U flash:w:prog.hex

Ha minden rendben történt, akkor az avrdude ezt írja ki:

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9206
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 "prog.hex"
avrdude: input file prog.hex auto detected as Intel Hex
avrdude: writing flash (136 bytes):

Writing | ################################################## | 100% 0.08s

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

Reading | ################################################## | 100% 0.07s

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

avrdude: safemode: Fuses OK (H:FF, EF, L:62)

avrdude done.  Thank you.

Először kiolvassa a flasht. Ha van benne értelmes program, akkor azt törölni kell, ezt meg is teszi, majd kiírja a programunkat, végül ismét kiolvassa, és meggyőződik róla, hogy nem történt hiba az írás során.

Alsó fuse bájt kiolvasása:

avrdude -c stk500v2 -p t45 -P /dev/ttyUSB0 -b 115200 -U lfuse:r:lfuse.hex:i

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.07s

avrdude: Device signature = 0x1e9206
avrdude: reading lfuse memory:

Reading | ################################################## | 100% 0.02s

avrdude: writing output file "lfuse.hex"

avrdude: safemode: Fuses OK (H:FF, EF, L:62)

avrdude done.  Thank you.

A fájl tartalma:
:01000000629D
:00000001FF
Ami ebből érdemi információt hordoz, az az első sor, abból is 10. és 11. karakter (62), amit bináris formában felírva ezt kapjuk:
01100010, ami megegyezik az attiny45 adatlapjában az alsó fuse bájt gyári állapotával.
lfuse


A cikk még nem ért véget, lapozz!
Következő: »»   6 / 8
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem