Forum: Compiler & IDEs In den Bootloader springen geht schief


von Michael (Gast)


Lesenswert?

Hallo,

ich möchte aus der laufenden Applikation in den Bootloader springen, 
leider hängt sich das Programm auf.

Der Bootloader ist getestet und läuft.
HW: Atmega128

So sieht mein Aufruf aus:

cli();
asm volatile("jmp 0x1FC00");

über Watchdog und reset funktioniert es, aber mit direktem Sprung nicht, 
habt Ihr einen Tip?

Gruß michael

von Michael M. (Gast)


Lesenswert?

ein WD reset ist ein reset-vorgang, der alle register in den 
reset-zustand setzt.
das macht dein jump nicht und da liegt wohl der hase im pfeffer.

von Karl H. (kbuchegg)


Lesenswert?

Michael M. schrieb:
> ein WD reset ist ein reset-vorgang, der alle register in den
> reset-zustand setzt.
> das macht dein jump nicht und da liegt wohl der hase im pfeffer.

Ich denke es ist wieder mal das leidige Thema
Word-Adre3ssierung versus Byte-Adressierung

von Stefan E. (sternst)


Lesenswert?

Karl heinz Buchegger schrieb:
> Ich denke es ist wieder mal das leidige Thema
> Word-Adre3ssierung versus Byte-Adressierung

Ne, ist es hier mal nicht. ;-)
1
asm volatile("jmp 0x1FC00");
2
  cc:  0c 94 00 fe   jmp  0x1fc00

Ich tippe auch darauf, dass im Bootloader irgendein Hardware-Init schief 
läuft, weil in den Registern nicht die erwarteten Default-Werte stehen. 
Oder 1fc00 (fe00) ist schlicht die falsche Adresse, weil die Fuses nicht 
stimmen.

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.