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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.