Mein C-Programm (avr-gcc) für den ATmega 8515 läuft unzuverlässig bzw.
nicht korrekt, sobald das Programm in den Bootloader-Bereich hineinragt.
Das Phänomen tritt allerdings nur nach einem Reset des 8515 auf. Sobald
ich den Code verkleinere, z.B. indem ich einen konstanten, als PROGMEM
deklarierten Byte-Array kürze, verschwindet das Problem komplett.
Die entsprechenden Fuses sind auf BOOTSZ1 = BOOTSZ0 = BOOTRST = 1
gesetzt, d.h. der Bootloader ist meinem Verständnis nach deaktiviert.
Ich möchte auch keinen Bootloader.
Muß ich sonst noch etwas beachten, wenn normaler Anwendungscode im
Bootloader-Bereich liegt? Gibt es innerhalb des Programms Restriktionen?
Sollten eher ausführbarer Code oder Konstanten (const uint8_t data[]
PROGMEM) im Bootloader-Bereich liegen? Kann ich das im Code irgendwie
erzwingen, z.B. einfach durch die Reihenfolge?
Oder könnten die Probleme daher stammen, daß Avrdude bei der
Programmierung irgendwie patzt?
1 | avrdude -p m8515 -P /dev/ttyACM0 -c stk500 -U flash:w:program.hex
|
Ich verwende den Diamex S2 USB-Programmer und das ISP-Interface des
ATmegas.