Also wenn ich in das "m32def.inc" schaue, dürfte Dein Sprung ins Nirwana
gehen:
1 | .equ FIRSTBOOTSTART = 0x3f00
|
2 | .equ SECONDBOOTSTART = 0x3e00
|
3 | .equ THIRDBOOTSTART = 0x3c00
|
4 | .equ FOURTHBOOTSTART = 0x3800
|
Viele wichtige Defines, die Atmel in seinen Includes hat, fehlen leider
in den Includes des AVR-GCC.
Es ist völlig witzlos, die Interrupts zu verbiegen.
Wenn das Bootprogramm Interrupts braucht, muß es das gefälligst selber
tun. Beim Start durch Reset sind die ja auch nicht verbogen.
Dagegen ist es aber nötig, alle selber benutzte Interrupts zu disablen,
sonst hüpft der Bootloader ins Nirwana, wenn er dafür keine Handler hat.
Die UART muß auch disabled werden, könnten ja noch Bytes im
Empfangspuffer sein, die den Bootloader stören.
Daher wird der Bootloaderstart per Watchdog sehr gerne verwendet, damit
hat man ohne Aufwand einen sauberen Resetzustand.
Peter