Forum: Mikrocontroller und Digitale Elektronik Bootloader + Interrupts


von John Smith (Gast)


Lesenswert?

Hallo,

ich bin dabei einen Bootloader in C mit WinAVR zu schreiben (ATmega32), 
der über UART-Interrupts das neue (zu flashende) Programm erhält. Dazu 
habe ich  die beiden BOOTSZ Bits (Häkchen nicht gesetzt) in PonyProg 
nicht gesetzt, damit die Boot-Reset-Adresse auf $7000(Bytes) / 
$3800(Words) zeigt. Desweiteren habe ich im Code IVSEL gesetz, nachdem 
ich zuvor IVCE gesetzt habe. Dadurch sollte die Interrupt-Vektor-Tabelle 
auf den Start der Boot-Flash-Sektion gelegt sein.

GICR = (1<<IVCE);
GICR = (1<<IVSEL);

Als drittes sind im Makefile die zwei folgenden Zeilen um den Code an 
die Stelle $7000 zu bekommen.

BOOTBLOCKSTARTADDRESS = 0x7000
LDSECTION  = --section-start=.text=$(BOOTBLOCKSTARTADDRESS)

Problem ist, daß bei Interrupts des UARTS der ATmega32 hängen bleibt.
Hat jemand eine Idee, woran das liegen könnte?

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.