Funktionen auf dem EEPROM ablegen

Gast #2972967
Lesenswert?
• ▲
▼
Hallo,

gibt es eine Möglichkeit Funktionen auf einem EEPROM abzulegen und diese 
in das Hauptprogramm "main()" einzubinden?
Versuchen würde ich das gerne mit einem Gecko Starter-Kit von Energy 
Micro und zwei seriellen EEPROMs (SPI). Die Funktionen sollen 
unterschiedlichen Inhalt haben, aber den gleichen Namen.

z.B. so:
1
main()
2
{
3
int wert=0;
4
int ergebnis=0;
5

6
wert=get_value();
7
ergebnis=foo_EEPROM(wert);
8
}
9

10
//Im EEPROM 1 steht:
11
foo_EEPROM(wert)
12
{
13
int i=0;
14

15
i=wert*2;
16

17
return i;
18
}
19

20
//Im EEPROM 2 steht:
21
foo_EEPROM(wert)
22
{
23
int i=0;
24

25
i=(wert-4)*23;
26

27
return i;
28
}

Ich hab hier im Froum was von Interpretern und Bootloadern gelesen, 
frage mich jedoch ob das nicht einfacher geht ... vielleicht könnte man 
dem µC vorgaukeln, dass das EEPROM ein Teil des Programmspeichers ist?

Wäre das ein praktikabler Weg, oder macht man das ganz anders?

LG
Remo
Gast #2973014
Lesenswert?
• ▲
▼
A. K. schrieb:
> Du musst also den Code aus dem
> EEPROM ins RAM laden und dann ausführen.

Hallo A. K.

dake für Deine schnelle Antwort.
Da ich sowas noch nie gemacht habe:
Kannst Du mir einen Wink geben wo ich nachlesen kann, wie man so etwas 
macht?
Ich frage mich z.B. in welcher Form ich den Code im Ram (und auch im 
EEPROM) ablegen muss, damit er ausführbar ist ... wie erfolgt dann der 
Funktionsaufruf usw.

LG
Remo
#2973018
Lesenswert?
• ▲
▼
Remo schrieb:
> Ich frage mich z.B. in welcher Form ich den Code im Ram (und auch im
> EEPROM) ablegen muss, damit er ausführbar ist ... wie erfolgt dann der
> Funktionsaufruf usw.

Der Aufruf erfolgt indirekt, also per Zeiger auf eine Funktion. Wie du 
die Funktionen so schreiben kannst, dass sie passend für eine Stelle im 
RAM kompiliert werden und darin dafür Platz gelassen wird, das hängt vom 
Entwicklungssystem ab. Siehe dessen Doku oder Forum.
#2973314
Lesenswert?
• ▲
▼
Remo schrieb:
> Ich hab hier im Froum was von Interpretern und Bootloadern gelesen,
> frage mich jedoch ob das nicht einfacher geht

Die Methode "Copy EEPROM to RAM, and run in RAM" ist irgendwie 
naheliegend. Und es würde nicht alles auf den Kopf stelen :-)

Alternativ kann man (e)lua als Interpreter einbinden. Das macht dann 
Sinn, wenn man genügend Ressourcen hat (RAM) und portabel oder 
funktional programmieren bzw. skripten will.

Ausserdem (ich kenne Forth nicht): 
http://www.mikrocontroller.net/articles/Forth bzw. 
http://pygmy.utoh.org/riscy/manual.html

Wenn nun der Interpreter endlich auf dem µC läuft, dann wiederum könnte 
man das "Run in RAM" - Vorgehen als weniger einfach/flexibel ansehen. 
Das hat schon seinen Charme.

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.