Forum: Mikrocontroller und Digitale Elektronik In App von Bootloader springen


von Sina A. (sinapse)


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?

von Apollo M. (Firma: @home) (majortom)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sina A. schrieb:
> verschwende ich dann nicht ein wenig platz auf meinem stack?

Initialisiert denn die Anwendung den Stack nicht neu?

von Sina A. (sinapse)


Lesenswert?

ah,

"Initialisiert denn die Anwendung den Stack nicht neu?"

das wollte ich hören... d.h. es wird von addresse 0 nicht direkt meine 
main aufgerufen, sondern zunächst die c runtime Environment durchlaufen, 
die dann alles resetet?

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Sina A. (sinapse)


Lesenswert?

ja, ein avr... vom reset vektor geht es dann zum startup code nehme ich 
an?

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.