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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.