Hallo allerseits,
ich möchte einen Arduino-Bootloader für den Atmega328 (nicht Atmega328P)
zum Laufen bringen. Gebrannt werden soll er über einen Arduino Uno als
ISP. Der Takt soll 8MHz intern sein. Ich habe einen entsprechend
bestehenden und funktionierenden Bootloader genommen und den Chip in
allen Dateien umbenannt, damit nicht die Adresse des Atemga328P sondern
die des Atmega328 genommen wird.
Die Datei-Hierarchie des Bootloader-Ordners:
1 | >avr
|
2 | -boards.txt
|
3 | >bootloaders
|
4 | -ATmegaBOOT_168.c
|
5 | -ATmegaBOOT_168_atmega328_8MHz.hex
|
6 | -Makefile
|
Die Änderungen:
boards.txt:
1 | atmega328_2.build.mcu=atmega328
|
Makefile:
1 | atmega328_8MHz: TARGET = atmega328_8MHz
|
2 | atmega328_8MHz: MCU_TARGET = atmega328
|
3 | atmega328_8MHz: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' -DBAUD_RATE=38400
|
4 | atmega328_8MHz: AVR_FREQ = 8000000L
|
5 | atmega328_8MHz: LDSECTION = --section-start=.text=0x7800
|
6 | atmega328_8MHz: $(PROGRAM)_atmega328_8MHz.hex
|
Das "p" wurde einfach überall gelöscht. Der Rest ist gleich zu dem
funktionierenden Bootloader. Anschließend wurde die HEX-Datei mit dem
Makefile erstellt.
Nun zum Ergebnis: Beim nicht abgeänderten Bootloader kommt eine
Fehlermeldung dass die Signatur falsch ist (logischerweise). Bei meinem
kommt diese Meldung nicht mehr, also gehe ich davon aus dass der Chip
erfolgreich erkannt wird und die Verbindungen zu ihm keinen
Wackelkontakt o.Ä. haben. Dafür kommt immer folgende eher allgemeine
Fehlermeldung:
1 | ***failed;
|
2 | avrdude: verification error, first mismatch at byte 0x0000
|
3 | 0x07 != 0xff
|
4 | avrdude: verification error; content mismatch
|
5 | Fehler beim Brennen des Bootloaders.
|
Was muss ich im Bootloader noch abwandeln oder gibt es einen anderen
Grund warum das nicht funktionieren will? Ich habe die HEX-Datei auch
schon mit dem Standart-Makefile der IDE (dort ist eine Option für
"atmega328_notp" vorhanden) erstellt mit gleichem Ergebnis.
Gruß
Daniel