Kurs podstawowy
AVRDUDE - omówienie

Posiadanie programatora to nie wszystko. Niezbędny jest też program do obsługi programatora. Jeżeli posiadamy programator, który nie jest wspierany przez środowisko Atmel Studio 7.0 bez programu sterującego nic nie zrobimy. Najlepszym wyborem jest AVRDUDE. To za jego pomocą będziemy mogli ładować dane do pamięci mikrokontrolerów, a także pobierać zawartość mikrokontrolera i zapisywać ją na dysku. Ten artykuł opisuje sposób instalacji i obsługi programu AVRDUDE. Dowiemy w jaki sposób go używać.

 

 

Programator USBasp nie jest wspierany przez środowisko Atmel Studio 7.0, ale możliwa jest integracja programatora z platformą Atmel Studio. Konieczne jest posiadanie zewnętrznego programu, który będzie uruchamiany przez Atmel Studio do kontroli programatora USBasp. Tym programem będzie AVRDUDE.

 

Zaznaczam jednak, że nie jest to zalecana konfiguracja, z uwagi na pewne ograniczenia, jakie posiada programator USBasp. Tanie wersje tego programatora nie posiadają konwertera napięć i mogą nie współpracować poprawnie z mikrokontrolerami zasilanymi napięciami powyżej 3,3 V. Nie współpracuje również ze wszystkimi mikrokontrolerami Atmela. Możliwe będzie programowanie mikrokontrolerów AVR wyposażonych w interfejs ISP. Znacznie lepszym rozwiązaniem jest zakup klona AVRISPRMKII. O ile cena najtańszych programatorów USBasp waha się w granicach 10 - 20 zł. Na znanym chińskim portalu sprzedażowym spotkać można nawet programatory USBasp w cenie poniżej 5 zł z darmową przesyłką do Polski. Dobrej jakości programator USBasp z konwerterem napięć kosztuje od 40 do 70 zł. Biorąc pod uwagę możliwości programatora USBasp oraz jego cenę uważam, że klon AVRISPMKII w cenie od 60 do 70 zł jest zdecydowanie lepszym rozwiązaniem, gdyż posiada konwerter napięć, zabezpieczenia linii interfejsu ISP, posiada wsparcie środowiska Atmel Studio oraz co najważniejsze współpracuje ze wszystkimi mikrokontrolerami rodziny AVR obecnymi oraz przyszłymi. Sposób instalacji programatora zgodnego z AVRISPMKII opiszę w oddzielnym artykule.

 

Czym tak naprawdę jest AVRDUDE. Jest to program konsolowy stworzony przez Briana S. Dean`a jako prywatny projekt dla programowania in-system mikrokontrolerów Atmel AVR. Program udostępniany jest na zasadzie wolnego oprogramowania i dostępny całkowicie za darmo.

Program AVRDUDE to narzędzie do pobierania, przesyłania i manipulowania zawartością pamięci flash oraz eeprom mikrokontrolerów AVR z wykorzystaniem technologii ISP, czyli umożliwiające programowanie mikrokontrolerów bez konieczności demontażu z układu w którym pracuje. Program ten współpracuje w wieloma modelami programatorów i mikrokontrolerów. Co kilka lat wydawane są przez administratorów projektu nowe wersje obejmujące aktualizację o wsparcie dla nowych programatorów oraz mikrokontrolerów. Nas jednak będzie interesować jedynie wykorzystanie programu do współpracy z programatorem USBasp oraz mikrokontrolerami AVR wyposażonymi w interfejs SPI i na tym się skupię.

Program AVRDUDE można pobrać korzystając z linku w sekcji załączniki, na dole strony. Na dysku tworzymy katalog np. AVRDUDE w miejscu, które nam najbardziej odpowiada i rozpakowujemy do niego dwa pliki z pobranego przez nas archiwum: avrdude.exe oraz avrdude.conf.

Używanie AVRDUDE sprowadza się do uruchomienia w trybie konsoli programu avrdude.exe wraz z podaniem odpowiednich parametrów. Poniżej znajduje się opis najważniejszych parametrów programu avrdude.exe z wyjaśnieniem ich składni.

-p partno

Jedyny wymagany parametr, jaki należy przekazać do programu, wskazujący model mikrokontrolera, na którym będą wykonywane operacje. Poniżej znajduje się lista wybranych mikrokontrolerów wspieranych przez avrdude.exe i USBasp.

Wybrane mikrokontrolery AVR wraz z ich identyfikatorami partno
Oznaczenie Mikrokontroler Sygnatura FLASH EEPROM SRAM
m8 ATmega8 1E9307 8 KB 512 B 1 KB
m48 ATmega48 1E9205 4 KB 256 B 512 B
m48p ATmega48P 1E920A 4 KB 256 B 512 B
m88 ATmega88 1E930A 8 KB 512 B 1 KB
m88p ATmega88P 1E930F 8 KB 512 B 1 KB
m168 ATmega168 1E9406 16 KB 512 B 1 KB
m168p ATmega168P 1E940B 16 KB 512 B 1 KB
m168pb ATmega168PB 1E9415 16 KB 512 B 1 KB
m328 ATmega328 1E9514 32 KB 1 KB 2 KB
m328p ATmega328P 1E950F 32 KB 1 KB 2 KB
m103 ATmega103 1E9701 128 KB 4 KB 4 KB
m128 ATmega128 1E9702 128 KB 4 KB 4 KB
m1280 ATmega1280 1E9703 128 KB 4 KB 8 KB
m1281 ATmega1281 1E9704 128 KB 4 KB 8 KB
m1284 ATmega1284 1E9706 128 KB 4 KB 16 KB
m1284p ATmega1284P 1E9705 128 KB 4 KB 16 KB
m16 ATmega16 1E9403 16 KB 512 B 1 KB
m161 ATmega161 1E9401 16 KB 512 B 1 KB
m162 ATmega162 1E9404 16 KB 512 B 1 KB
m163 ATmega163 1E9402 16 KB 512 B 1 KB
m164p ATmega164P 1E940A 16 KB 512 B 1 KB
m169 ATmega169 1E9405 16 KB 512 B 1 KB
m32 ATmega32 1E9502 32 KB 1 KB 2 KB
m329 ATmega329 1E9503 32 KB 1 KB 2 KB
m3290 ATmega3290 1E9504 32 KB 1 KB 2 KB
m64 ATmega64 1E9602 64 KB 2 KB 4 KB
m640 ATmega640 1E9607 64 KB 4 KB 8 KB
m644 ATmega644 1E9609 64 KB 2 KB 4 KB
m644p ATmega644P 1E960A 64 KB 2 KB 4 KB
m649 ATmega649 1E9603 64 KB 2 KB 4 KB
m6490 ATmega6490 1E9604 64 KB 2 KB 4 KB
m8515 ATmega8515 1E9306 8 KB 512 B 512 B
m8535 ATmega8535 1E9308 8 KB 512 B 512 B
t12 ATtiny12 1E9005 1 KB 64 B -
t13 ATtiny13 1E9007 1 KB 64 B 64 B
t15 ATtiny15 1E9006 1 KB 64 B -
t25 ATtiny25 1E9108 2 KB 128 B 128 B
t26 ATtiny26 1E9109 2 KB 128 B 128 B
t45 ATtiny45 1E9206 4 KB 256 B 256 B
t85 ATtiny85 1E930B 8 KB 512 B 512 B
1200 AT90S1200 1E9001 1 KB 64 B -
2313 AT90S2313 1E9101 2 KB 128 B 128 B
2333 AT90S2333 1E9105 2 KB 128 B 128 B
2343 AT90S2343 1E9103 2 KB 128 B 128 B
4414 AT90S4414 1E9101 4 KB 256 B 256 B
4433 AT90S4433 1E9203 4 KB 128 B 256 B
4434 AT90S4434 1E9202 4 KB 256 B 256 B
8515 AT90S8515 1E9301 8 KB 512 B 512 B
8535 AT90S8535 1E9301 8 KB 512 B 512 B
c128 AT90CAN128 1E9781 128 KB 4 KB 4 KB

 

-b boudrate

parametr określający szybkość transmisji portu RS232 dla poszczególnych programatorów. Wartość zapisana w pliku konfiguracyjnym zastępowana jest tym parametrem.

-B bitclock

parametr określa okres zegara dla interfejsu JTAG lub zegara ISP (tylko dla JTAG ICE), wartość podaje się w mikrosekundach, lub alternatywnie  w jednostkach częstotliwości z podaniem wagi jednostki, czyli Hz, kHz oraz MHz. Dla mikrokontrolerów pracujących z zegarem o częstotliwości poniżej 4 MHz parametr ten należy obowiązkowo podawać w wierszu poleceń lub zapisać wartość domyślną default_bitclock w pliku konfiguracyjnym.

-c programmer-id

parametr określający programator jaki będziemy wykorzystywany do łączenia się z mikrokontrolerem. Poniżej znajduje się lista programatorów obsługiwanych przez AVRDUDE wraz z ich identyfikatorami.

USB
LIsta programatorów obsługiwanych przez AVRDUDE wraz z ich identyfikatorami
Programator Identyfikator Złącze
Wiring wiring szeregowe
Arduino arduino szeregowe
FT2232D based generic programmer avrftdi USB
FT2232H based generic programmer 2232HIO USB
FT4232H based generic programmer 4232h USB
Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2 jtagkey USB
FT232H based module from FTDI and Glyn.com.au UM232H USB
O-Link, OpenJTAG from www.100ask.net o-link USB
Openmoko debug board (v3) openmoko USB
Luminary Micro LM3S811 Eval Board (Rev. A)"; lm3s811 USB
TIAO USB Multi-Protocol Adapter tumpa USB
Atmel AVR ISP avrisp szeregowe
Atmel AVR ISP V2 avrispv2 szeregowe
Atmel AVR ISP mkII avrispmkII USB
The Bus Pirate buspirate szeregowe
The Bus Pirate (bitbang interface, supports TPI) buspirate_bb szeregowe
Atmel STK500 stk500 szeregowe
Atmel STK500 Version 1.x firmware stk500v1 szeregowe
Crossbow MIB510 programming board mib510 szeregowe
Atmel STK500 Version 2.x firmware stk500v2 szeregowe
Atmel STK500 V2 in parallel programming mode stk500pp szeregowe
Atmel STK500 V2 in high-voltage serial programming mode stk500hvsp szeregowe
Atmel STK600 stk600 USB
Atmel STK600 in parallel programming mode stk600pp USB
Atmel STK600 in high-voltage serial programming mode stk600hvsp USB
Atmel Low Cost Serial Programmer avr910 szeregowe
FT245R Synchronous BitBang ft245r USB
FT232R Synchronous BitBang ft232r USB
BitWizard ftdi_atmega builtin programmer bwmega USB
Arduino: FT232R connected to ISP arduino-ft232r USB
uncompatino with all pairs of pins shorted uncompatino USB
FTDI TTL232R-5V with ICSP adapter ttl232r USB
USBasp, http://www.fischl.de/usbasp/ usbasp USB
NIBObee nibobee USB
Any usbasp clone with correct VID/PID usbasp-clone USB
USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/ usbtiny USB
Atmel Butterfly Development Board butterfly szeregowe
Atmel AppNote AVR109 Boot Loader avr109 szeregowe
Atmel AppNote AVR911 AVROSP avr911 szeregowe
Mikrokopter.de Butterfly mkbutterfly szeregowe
Atmel JTAG ICE (mkI) jtagmkI szeregowe
Atmel JTAG ICE mkII jtagmkII USB
Atmel JTAG ICE mkII in ISP mode jtag2isp USB
Atmel JTAG ICE mkII in debugWire mode jtag2dw USB
Atmel JTAG ICE mkII in AVR32 mode jtagmkII_avr32 USB
Atmel JTAG ICE mkII PDI mode jtag2pdi USB
Atmel AVR Dragon in JTAG mode dragon_jtag USB
Atmel AVR Dragon in ISP mode dragon_isp USB
Atmel AVR Dragon in PP mode dragon_pp USB
Atmel AVR Dragon in HVSP mode dragon_hvsp USB
Atmel AVR Dragon in debugWire mode dragon_dw USB
Atmel AVR Dragon in PDI mode dragon_pdi USB
Atmel AVR JTAGICE3 in JTAG mode jtag3 USB
Atmel AVR JTAGICE3 in PDI mode jtag3pdi USB
Atmel AVR JTAGICE3 in debugWIRE mode jtag3dw USB
Atmel AVR JTAGICE3 in ISP mode jtag3isp USB
Atmel AVR XplainedPro in JTAG mode xplainedpro USB
Atmel AVR XplainedMini in debugWIRE mode xplainedmini USB
Atmel-ICE (ARM/AVR) in JTAG mode atmelice USB
Atmel-ICE (ARM/AVR) in PDI mode atmelice_pdi USB
Atmel-ICE (ARM/AVR) in debugWIRE mode atmelice_dw USB
Atmel-ICE (ARM/AVR) in ISP mode atmelice_isp USB
Jason Kyle's pAVR Serial Programmer pavr szeregowe
MicroChip's PICkit2 Programmer pickit2 USB
FLIP USB DFU protocol version 1 (doc7618) flip1 USB
FLIP USB DFU protocol version 2 (AVR4023) flip2 USB
Brian Dean's Programmer, http://www.bsdhome.com/avrdude/ bsd równoległe
STK200 stk200 równoległe
Pony Prog STK200 pony-stk200 równoległe
Dontronics DT006 dt006 równoległe
Bascom SAMPLE programming cable bascom równoległe
Nightshade ALF-PgmAVR, http://nightshade.homeip.net/ alf równoległe
Steve Bolt's Programmer sp12 równoległe
Picoweb Programming Cable, http://www.picoweb.net/ picoweb równoległe
ABCmini Board, aka Dick Smith HOTCHIP abcmini równoległe
Futurlec.com programming cable futurlec równoległe
Xilinx JTAG cable xil równoległe
Direct AVR Parallel Access cable dapa równoległe
AT-ISP V1.1 programming cable for AVR-SDK1 from  micro-research.co.th atisp równoległe
ERE ISP-AVR ere-isp-avr równoległe
Altera ByteBlaster blaster równoległe
Frank STK200 frank-stk200 równoległe
Atmel at89isp cable 89isp równoległe
Use the Linux sysfs interface to bitbang GPIO lines linuxgpio równoległe
design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts ponyser szeregowe
Lancos SI-Prog siprog szeregowe
serial port banging, reset=rts sck=dtr mosi=txd miso=cts dasa szeregowe
serial port banging, reset=!dtr sck=rts mosi=txd miso=cts dasa3 szeregowe
serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts c2n232i szeregowe

 

-C config-file

parametr którym jest ścieżka do pliku konfiguracyjnego avrdude.conf znajdującego się w innym katalogu niż program avrdude.exe

-D

wyłączenie automatycznego kasowania pamięci flash, gdy w opcji -U została ona określona.

-e

parametr ustawiający opcję czyszczenia mikrokontrolera, pamięć flash ROM oraz EEPROM zapisywana jest wartością 0xFF, resetowane są wszystkie lock bity.

-E exitspec[...]

parametr określający w jakim stanie ma znajdować się port równoległy po fazie programowania, domyślnie AVRDUDE pozostawia port równoległy w takim stanie w jakim go zastał przy starcie, dozwolone argumenty to reset, noreset, vcc, novcc, d_high, d_low, przy podawaniu wielu argumentów należy rozdzielić je przecinkiem.

-F

parametr wyłączający odczyt sygnatury mikrokontrolera, domyślnie AVRDUDE próbuje odczytać sygnaturę mikrokontrolera

-i delay

parametr określający opóźnienie w [\mus] pomiędzy zmianami stanu bitów, w przypadku wolniejszych mikrokontrolerów służy do spełnienia warunku aby prędkość programowania nie byłą wyższa niż 1/4 częstotliwości taktowania mikrokontrolera

-l logfile

parametr określający plik, do którego zapisywane będą komunikaty konsoli AVRDUDE, komunikaty nie będą wyświetlane na ekranie.

-n

parametr wyłączający zapis danych do mikrokontrolera, użyteczny przy debugowaniu

-O

parametr inicjujący kalibrację wewnętrznego oscylatora RC zgodnie z notą aplikacyjną Atmela AVR053, parametr wspierany jest wyłącznie przez programatory STK500, AVRISP mkII oraz JTAG ICE mkII, wynik kalibracji zapisanie będzie w pamięci mikrokontrolera w komórce o adresie 0x00.

-P

parametr określający port, do jakiego został podłączony programator

-q

parametr wyłączający wyświetlanie paska postępu podczas zapisu lub odczytu mikrokontrolera podwójne wywołanie tego parametru wyłącza pasek postępu całkowicie

-u

parametr wyłączający domyślne sprawdzanie fusebitów przed programowaniem

-s

parametr wyłączający tryb bezpieczny zmiany fusebitów, domyślnie przed każdą zmianą fusebitów wyświetlany jest monit o potwierdzenie zmiany

-t

parametr inicjalizujący interaktywny terminal

-U memtype:op:filename[:format]

parametr wskazuje na operację na pamięci. Może to być zapis, odczyt nie tylko pamięci flash, czy EEPROM, ale również fuse bitów procesora
 dozwolone argumenty memtype
 eeprom - pamięć eeprom
 efuse – rozszerzone fuse bity
 flash – pamięć flash procesora
 hfuse – high fuse bity
 lfuse – low fuse bits
 lock – lock bity
Identyfikator op wskazuje na operacje do wykonania (zapis, odczyt, weryfikacja)
 dozwolone argumenty op
 r – read (odczytaj)
 w- write (zapisz)
 v – verify (sprawdź)
filename wskazuje na plik na którym wykonywana jest operacja. Należy podać nazwę pliku, ewentualnie ścieżkę dostępu do niego.
[:format] wskazuje na format oczekiwanych/przeznaczonych danych.
 dozwolone argumenty [:format]
 i – Intel hex
 s – motorola S-record
 r – raw binary
 m – np. przy zapisie fuse bitów, umożliwia podanie wartości w formacie 0x (hex)
 a – autodetect

 

Przykłady poleceń AVRDUDE:

  1.  avrdude -p m8 -c usbasp -U flash:w:c:/file.hex:i - zapis za pomocą programatora USBasp do pamięci flash mikrokontrolera ATmega8 zawartości pliku file.hex znajdującego się w katalogu głównym dysku c w formacie Intel hex.
  2. avrdude -p m32 usbasp -U flash:r:c:/flash.bin:r - odczyt za pomocą programatora USBasp zawartości pamięci flash mikrokontrolera ATmega32 i zapis w katalogu głównym dysku c pliku flash.bin z odczytanymi danymi
Autor: Orici
Linki zewnętrzne
Wyświetleń: 1242|Komentarzy: 0|Ocena: 0|Głosów: 0