Ausführbarer Code ins EEPROM schreiben?

OP #3324392
Lesenswert?

Hallo,

ist es möglich ausführbaren und kompilierten Code in das EEPROM zu 
schreiben und zur Ausführungszeit in den Flash Speicher zu laden und 
auszuführen?

Teilweise kann ich mit die Frage auch selbst beantworten. Natürlich geht 
es so naiv nicht, da die Sprungadressen die der Assembler festgelegt hat 
ja alle vermurkst werden.

Gibt es denn Ideen wie man das ganze angehen kann?
#3324441
Lesenswert?

Dennis A. schrieb:
> ist es möglich ausführbaren und kompilierten Code in das EEPROM zu
> schreiben und zur Ausführungszeit in den Flash Speicher zu laden und
> auszuführen?

Nur wenn der unbekannte MC das unterstützt (Bootloader-API).

Dennis A. schrieb:
> Natürlich geht
> es so naiv nicht, da die Sprungadressen die der Assembler festgelegt hat
> ja alle vermurkst werden.

Nur wenn die Ladeadresse im Flash eine andere ist, als zur Linkzeit 
angegeben wurde.

Dennis A. schrieb:
> Gibt es denn Ideen wie man das ganze angehen kann?

Wozu?
Ich sehe keinen Sinn darin.
Gast #3324920
Lesenswert?

Dennis A. schrieb:

> ist es möglich ausführbaren und kompilierten Code in das EEPROM zu
> schreiben und zur Ausführungszeit in den Flash Speicher zu laden und
> auszuführen?

Wenn der µC grundsätzlich self-programming beherrscht: Natürlich.

> Teilweise kann ich mit die Frage auch selbst beantworten. Natürlich geht
> es so naiv nicht, da die Sprungadressen die der Assembler festgelegt hat
> ja alle vermurkst werden.

Bei relativen Sprüngen gibt's überhaupt kein Problem, bei absoluten nach 
"außerhalb" des nachgeladenen Codes ebenfalls nicht. Und der Rest (falls 
es einen gibt) muß halt beim Laden in den Flash "reloziert" werden. Das 
ist trivial, man übersetzt den Code für Basisadresse 0 und addiert die 
tatsächliche Ladeadresse an allen Stellen, wo es nötig ist.

> Gibt es denn Ideen wie man das ganze angehen kann?

Entweder den fraglichen Code gleich "position-independent" übersetzen 
oder man schreibt ein *.obj-File in's EEPROM. Das enthält alle zur 
Relozierung nötigen Informationen (außer der tatsächlichen Zieladresse 
natürlich, die ist ja erst zur Laufzeit bekannt)

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