Nee, es geht mal nicht um den Bootloader, sondern um die Übertragung eines HEX-Files in den Atmega 328P.

Für meinen 23cm Transceiver gibt es einige Leute, die die Firmware weiter entwickeln und über Github fertige Dateien zur Verfügung stellen. Und da ich keinen Programmer habe, sondern einige Arduino Uno, benutze ich einen davon als Programmiergerät.

Schritt 1:

Arduino Uno vorbereiten als Programmer.

Dazu aus der Arduino IDE aus den Beispielen den Sketch zum ArduinoISP ganz normal in den Uno hochladen. Dabei sollten noch keine weiteren Komponenten angeschlossen sein.

Schritt 2:

Den neuen Atmega328 und ein 10µF Elko in das Breadboard stecken und mit ein paar Jumperkabel verdrahten:

Wichtig ist der Elko am Reset-Pin des Arduino. Fehlt dieser Elko, resettet sich der Arduino jedesmal selbst während seiner Arbeit, was aber nicht sein soll.

Schritt 3 (Linux):

Das HEX-File auf dem Rechner bereit halten, ein Terminal öffnen, den Rechner mit dem Arduino Uno per USB verbinden. Das Kommando avrdude sollte vorher bereits installiert sein.

Folgendes Kommando eingeben:

avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -v -U flash:w:"hex-file.hex":i
Erklärung der Parameter (s.a. ‘man avrdude’)
-p m328p partno – ist der Controller-Typ , der zu programmieren ist
-P /dev/ttyUSB0 ist der Port, an dem der Arduino sich anmeldet. Könnte auch ttyUSB1 sein.
-c avrisp Konfiguriere die Programmer-ID, Pin-Konfiguration
-b 19200 Baudrate festlegen. Andere haben bei mir nicht funktioniert
-v Verbose, Ausgabe während der Arbeit
-U flash:w:”hex-file.hex”:i Eine Funktion ausführen.
Flash ROM des Gerätes ansprechen (flash:), die angegebene Datei (:”hex-file.hex”) im Intel-Hex-Format (:i) schreiben (:w)

Wenn alles geklappt hat, sollte es so oder ähnlich aussehen. Bei mir stehen die Hex-Dateien im Verzeichnis ~/Ablage/hex-files:

dl8aap@hamradio ~/Ablage/hex-files $ avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -v -U flash:w:”hex-file.hex”:i

avrdude: Version 6.3
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is “/etc/avrdude.conf”
User configuration file is “/home/dl8aap/.avrduderc”
User configuration file does not exist or is not a regular file, skipping

Using Port : /dev/ttyUSB0
Using Programmer : avrisp
Overriding Baud Rate : 19200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : STK500
Description : Atmel AVR ISP
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FF
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 “hex-file.hex”
avrdude: writing flash (9324 bytes):

Writing | ################################################## | 100% 10.30s

avrdude: 9324 bytes of flash written
avrdude: verifying flash memory against hex-file.hex:
avrdude: load data flash data from input file hex-file.hex:
avrdude: input file hex-file.hex contains 9324 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 5.67s

avrdude: verifying …
avrdude: 9324 bytes of flash verified

avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as FF
avrdude: safemode: Fuses OK (E:FF, H:D9, L:E2)

avrdude done. Thank you.

ACHTUNG

Vor dem Stecken oder Entnehmen des Mikrocontrollers unbedingt die Schaltung stromlos machen – USB-Kabel ziehen!

 

(M)eine kleine Wetterstation mit einem Raspberry Pi (Teil 8)

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.