Forum: Mikrocontroller und Digitale Elektronik AVR: Anwendung im Bootloader-Bereich


von Lars Beiderbecke (Gast)


Lesenswert?

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.

von Cube_S (Gast)


Lesenswert?

BOOTRST = 1? Das sorgt doch gerade für den Reset im BOOT-Bereich, also 
gerade das was Du nicht willst.

von Lars Beiderbecke (Gast)


Lesenswert?

Nee, andersrum:

BOOTRST Reset Address
1 : Reset Vector = Application Reset (address $0000)
0 : Reset Vector = Boot Loader Reset (see Table 78 on page 177)

“1” means unprogrammed, “0” means programmed
(laut ATmega 8515 Datenblatt)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.