Zaprogramować ATMEGA32 z Avrdude w Linux

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
mariusz_edw
Użytkownik
Posty: 307
Rejestracja: 22 lip 2005, 13:02
Lokalizacja: Polanica Zdrój
Kontakt:

Zaprogramować ATMEGA32 z Avrdude w Linux

Post autor: mariusz_edw » 02 maja 2013, 20:06

Mam pod ręką Raspberry Pi (Raspbian) oraz dwa programatory:

ID 16c0:05e1 VOTI CDC-ACM class devices (modems)
ID 16c0:05dc VOTI shared ID for use with libusb

Potrzebuję zaprogramować Atmega32 po ISP (za pomocą któregoś z programatorów powyżej).

Ktoś podpowie tak to zrobić, krok po kroku? (zero doświadczeń z programowaniem za pomocą Comand Line Interface, sterownikami do programatorów w środowisku linux itp. Prośba o pomoc.

Zainstalowałem avrdude:

Kod: Zaznacz cały

root@raspberrypi:/home/pi# avrdude
Usage: avrdude [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
  -C <config-file>           Specify location of configuration file.
  -c <programmer>            Specify programmer type.
  -D                         Disable auto erase for flash memory
  -i <delay>                 ISP Clock Delay [in microseconds]
  -P <port>                  Specify connection port.
  -F                         Override invalid signature check.
  -e                         Perform a chip erase.
  -O                         Perform RC oscillator calibration (see AVR053).
  -U <memtype>:r|w|v:<filename>[:format]
                             Memory operation specification.
                             Multiple -U options are allowed, each request
                             is performed in the order specified.
  -n                         Do not write anything to the device.
  -V                         Do not verify.
  -u                         Disable safemode, default when running from a script.
  -s                         Silent safemode operation, will not ask you if
                             fuses should be changed back.
  -t                         Enter terminal mode.
  -E <exitspec>[,<exitspec>] List programmer exit specifications.
  -x <extended_param>        Pass <extended_param> to programmer.
  -y                         Count # erase cycles in EEPROM.
  -Y <number>                Initialize erase cycle # in EEPROM.
  -v                         Verbose output. -v -v for more.
  -q                         Quell progress output. -q -q for less.
  -?                         Display this usage.

avrdude version 5.11.1, URL: <http://savannah.nongnu.org/projects/avrdude/>
root@raspberrypi:/home/pi#

Dwa programatory wpięte i widziane przez system:

Kod: Zaznacz cały

root@raspberrypi:/home/pi# lsusb
Bus 001 Device 018: ID 16c0:05dc VOTI shared ID for use with libusb
Bus 001 Device 017: ID 16c0:05e1 VOTI CDC-ACM class devices (modems)
root@raspberrypi:/home/pi#
Co dalej?

Awatar użytkownika
Ertew
Użytkownik
Posty: 1418
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 04 maja 2013, 17:04

Plotka głosi że linuks nie potrzebuje specjalnych sterowników, wystarczy że system umie dogadać się z kontrolerem usb (wykryć programator) a całą transmisję obsługuje program avrdude.
Niestety na linuksie mało się znam, mogę pomóc z zakresu średniej znajomości avrdude.


Podstawowa sprawa, to po numerach identyfikacyjnych usb nic nie zdziałasz, musisz znać typ programatora z którego korzystasz.

Następnie spróbuj wywołać coś takiego (najlepiej bez podłączenia uC):

Kod: Zaznacz cały

avrdude.exe -c usbasp -p m32 -t
Spowoduje to ustawienie avrdude na procesor mega32 i próbę połączenia się z programatorem usbasp. Jeśli masz taki programator, to avrdude wchodzi w tryb terminalowy i czeka na kolejne komendy. Przy okazji pewnie nawrzeszczy że uC ma nieprawidłową sygnaturę lub go brak.
? albo help poda listę dostępnych opcji, a exit albo quit zamknie ten tryb i avrdude.

Awatar użytkownika
mariusz_edw
Użytkownik
Posty: 307
Rejestracja: 22 lip 2005, 13:02
Lokalizacja: Polanica Zdrój
Kontakt:

Post autor: mariusz_edw » 05 maja 2013, 10:59

Zdaje się, że zadziałało.

Jedyne co zrobiłem to zainstalowałem avrdude, wpiąłem programator do USB, umieściłem plik hex bezpośrednio w katalogu domowym, następnie:

Kod: Zaznacz cały

root@raspberrypi:/home/pi# avrdude -p m32 -c usbasp -P usb -U flash:w:St_pom_147.hex

avrdude: AVR device initialized and ready to accept instructions

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

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

Writing | ################################################## | 100% 205.03s



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

Reading | ################################################## | 100% 130.89s



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

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

root@raspberrypi:/home/pi#

ODPOWIEDZ