In App von Bootloader springen

OP #5383530
Lesenswert?

hallo,

es wird oft vorgeschlagen hiermit:
1
void (*start)( void ) = 0x0000;
von einem Bootloader in die Applikation zu springen.

Wenn ich nun mit
1
 start();
in die Applikation springe, verschwende ich dann nicht ein wenig platz 
auf meinem stack? wegen rücksprungadresse und retten der Register bei 
einem funktionsaufruf? ist da
1
asm ("jmp 0000")
nicht sauberer?
(Firma: @home) #5383547
Lesenswert?

Sina A. schrieb:
> in die Applikation springe, verschwende ich dann nicht ein wenig platz
> auf meinem stack? wegen rücksprungadresse und retten der Register bei
> einem funktionsaufruf? ist daasm ("jmp 0000")

ich mache zwar einen jmp in meinem bootloader, aber nur um den footprint 
klein zu halten.
ansonsten dürfte das egal sein, wenn wie es sollte der stackpointer in 
der applikation neu initialisiert wird, sprich alles auf dem stack wird 
verworfen.


mt
Persönliche Seite #5384238
Lesenswert?

Sina A. schrieb:
> es wird von addresse 0 nicht direkt meine main aufgerufen, sondern
> zunächst die c runtime Environment durchlaufen, die dann alles resetet?

Ich kenne Deine Entwicklungsumgebung nicht. Üblich ist es, den 
startup-Code zu verwenden, den der Compiler mitliefert.

Was liegt denn bei Deinem Controller an Adresse 0?

Wenn das ein AVR ist, dann liegt da der Reset-Vektor.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren