Fórum témák
» Több friss téma |
Cikkek » AVR-Doper, USB-s ISP programozó AVR-Doper, USB-s ISP programozó
Szerző: Topi, idő: Aug 24, 2008, Olvasva: 123047, Oldal olvasási idő: kb. 5 perc
Az alábbi cikket Székvölgyi Pétertől (szekipepe) kaptam, melyben megosztaná mindenkivel a programozó használatát BSD alapú rendszereken. Olvassátok haszonnal Péter tollából az útmutatót. Ez úton is köszönjük. Nem nagyon találtam cikket a Topi féle AVR égető használatáról Linux/*BSD alatt és gondoltam összedobok egyet gyorsba. Előre is: a cikk a teljesség igénye nélkül íródott. A chip amit igazgattam egy AVR AtMega8-16PU. Szerencsénkre a ports fában megtalálható minden amire szükségünk lehet. Nálam a következő csomagok kerültek telepítésre: avr-binutils-2.18_4 GNU binutils for Atmel AVR 8-bit RISC cross-development ( Linuxon megtalálhatóak ezek a csomagok ugyanúgy. ) Egy része a program megírásához/debuggoláshoz kell. Maga az avrdude programra van csak szükségünk a flash írására és a többire az avr-en. A programozót nem HID kompatibilis módban használtam. Így be kellett töltenem az úgynevezett umodem kernel modult: kldload umodem Enélkül a következő sor jelent meg a rendszer üzenetek között ( dmesg konzol parancs ) ugen0: <obdev.at Hobbielektronika.hu: AVR-Doper, class 2/0, rev 1.10/1.00, addr 2> on uhub3 Így sajnos használhatatlan az eszköz. Ha már be volt töltve a modul csatlakoztatás előtt: ucom0: <obdev.at Hobbielektronika.hu: AVR-Doper, class 2/0, rev 1.10/1.00, addr 2> on uhub3 Ami számunkra lényeges az-az ucom[0-X]-ből a szám. Mivel ezzel azonosítható a rendszer milyen számot adott is az írónak és milyen néven lehet elérni a /dev alatt. Ebben az esetben 0-a volt vagyis a /dev/cuaU0 alatt érhető el az eszköz. ( Linuxon ebben a módban a ttyACM[0-x] alatt jelenik meg az eszköz. Ha a kernelbe bele van fordítva az ACM driver akkor gond nélkül működni fog. Későbbiekben amikor /dev/cuaU0-ra hivatkozok mindenki cserélje ki a neki megfelelőre. ) ( A linux/*BSD minden dev alatt file-ra jogokkal állít be automatikusan a rendszer, ezek beállítására én itt nem térek ki külön. Én speciel "sudo"-t használok az avrdude indításakor. Ez a program megemeli a privilégium szintjét a mögötte álló programnak és futtatja az utána megadott paraméterekkel. ) És akkor lássuk az avrdude paraméter listáját rövid magyarázattal: ( Simán elindítjuk az avrdude programot kiírja a konzolra. ) Usage: avrdude [options] avrdude project: http://savannah.nongnu.org/projects/avrdude Kapcsolók ( nem térek ki az összesre bővebb információt található az avrdude man oldalán ): -p : Ezzel a kapcsolóval lehet meghatározni milyen processzort is akarunk használni. Az avrdude mikor elkezdjük használni visszaellenőrzi ténylegesen ez a processzor van-e rákötve az íróra. ( az én esetemben atmega8 ) -F : Minden AVR cpu típusnak van egy signatúrája. Ezzel azonosítja a programozni kívánt processzort a rendszer. Ha ez nem megfelelő akkor az AVR védése érdekében az írási folyamatot el sem kezdi a rendszer, ha ennek ellenére szeretnénk végrehajtani ez a kapcsoló segíthet benne. ( Főként AtTiny45-ös processzor használtam ezt az opciót. ) -b : Az rs-232 sebességét meg kívánjuk határozni amivel kommunikál a gép az íróval itt tehetjük meg. (Néha előfordult, hogy a rendszer default sebességen túl gyorsan próbálta az írót elérni, emiatt én itt static 9600-at használtam, mivel így volt a legstabilabb. Több mint 100 írásból eddig egyszer sem volt gondom vele. ) -c : A programozó típusát lehet meghatározni vele. Az én esetben stk500v2. ( További opcionális írókat találhattok a man oldalon. ) -P : soros port elérése a /dev alatt. Az én esetemben /dev/cuad0 -U <memtype>:r|w|v:<filename>[:format] : Mit is szeretnénk a processzorral csinálni, részletek később. -v : Verbose mode, hogy sokkal több állapotjelzést adjon. Ha kétszer adunk kétszer "-v"-t akkor adja a legtöbb információt. Hiba esetén ez a kimenet segítséget adhat a megoldás keresésében. Én most két dolgot írok le mint is lehet csinálni a processzorral: Flash írása: A hexa file neve ledvez az esetemben ennek az égetése: avrdude -p atmega8 -F -b 9600 -c stk500v2 -P /dev/cuaU0 -U flash:w:ledvez Kírás folyamata: avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9307 avrdude: reading input file "ledvez" avrdude: input file ledvez auto detected as Intel Hex avrdude: writing flash (528 bytes): Writing | ################################################## | 100% 0.82s avrdude: 528 bytes of flash written avrdude: verifying flash memory against ledvez: avrdude: load data flash data from input file ledvez: avrdude: input file ledvez auto detected as Intel Hex avrdude: input file ledvez contains 528 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.72s avrdude: verifying ... avrdude: 528 bytes of flash verified avrdude: safemode: Fuses OK avrdude done. Thank you.
És végül maga a fuse bit lekérése, módosítása: avrdude -v -p atmega8 -F -b 9600 -c stk500v2 -P /dev/cuaU0 -U hfuse:r:high.txt:i -U lfuse:r:low.txt:i Kimenete: avrdude: Version 5.6, compiled on May 3 2009 at 15:27:06 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 4 20 128 0 no 512 0 0 9000 9000 0xff 0xff flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00 lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500V2 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9307 Reading | ################################################## | 100% 0.01s avrdude: writing output file "high.txt" Reading | ################################################## | 100% 0.01s avrdude: writing output file "low.txt" Ebben az esetben a hfuse és lfuse-t kiolvassuk a prociból és eltároljuk két külön fileban. Részletesebb magyarázat melyik bit mit jelent megtaláljátok a proci leírásában. Fuse bit alsó részének módosítása: avrdude -v -p atmega8 -F -c stk500v2 -P /dev/cuaU0 -U lfuse:w:0xE2:m A futtatás kimenete: avrdude: Version 5.6, compiled on May 3 2009 at 15:27:06 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Using Port : /dev/cuaU1 Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 4 20 128 0 no 512 0 0 9000 9000 0xff 0xff flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00 lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : STK500V2 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9307 Writing | ################################################## | 100% 0.02s avrdude: 1 bytes of lfuse written Reading | ################################################## | 100% 0.01s avrdude: verifying ... avrdude done. Thank you. VIGYÁZAT: a fuse bit átállítása a proci használhatatlanná tételét okozza, nagyon óvatosan bánjunk ezzel az opcióval. Nekem is egy procim bánja a próbálgatásokat. Mindenkinek sok sikert a használatban! Székvölgyi Péter -- Az eredeti cikk folytatódik a következő oldalon. A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |