Forum: Mikrocontroller und Digitale Elektronik Funktionen auf dem EEPROM ablegen


von Remo (Gast)


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

von (prx) A. K. (prx)


Lesenswert?

Prinzipiell ja, da es sich um einen ARM Core handelt und ein ARM Core 
Code auch aus dem RAM ausführen kann. Du musst also den Code aus dem 
EEPROM ins RAM laden und dann ausführen.

von Remo (Gast)


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

von (prx) A. K. (prx)


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.

von Remo (Gast)


Lesenswert?

Hallo A. K.

vielen Dank für die Infos !!

LG
Remo

von Roland H. (batchman)


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.

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.