www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm aus Seriellem EE-Prom ausführen


Autor: Freddy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für meinen selbstgebauten Datenlogger mit Atmel ATmega32L habe ich
einzelne Messmodule zum anstecken an den Datenlogger gebaut. Auf ihnen
befindet sich jeweils ein kleiner serieller EE-Prom (SPI-Bus). Zur Zeit
lege ich einfach nur die Abgleichdaten auf den EE-Proms ab. Jedoch
hatte ich nun die Idee evtl. auch gleich die kleinen, Modulspezifischen
Messroutinen mit auf dem EE-Prom abzulegen und diesen halt etwas größer
zu wählen. Es hätte einfach den Vorteil, Programmspeicher beim
ATmega32L einzuspaaren, daher sich das sonst doch schon ganz schnell
mal hochsummiert. Ich programmiere den Datenlogger in GNU-C, jedoch
habe ich derzeit keine ahnung, wie ich es realisieren könnte, eine im
externen EE-Prom gespeicherte Messroutine auszuführen.

Aus der Assembler-Programmierung hatte ich noch so etwas in erinnerung,
das man die Software erst einmal in den RAM kopiert und dann einfach
den Programmzeiger auf die neue Adersse im RAM herumbiegt und somit das
Programm welches im RAM liegt ausführt.
Wie so etwas jedoch mit GNU-C realisierbar ist weis ich nicht

Hat jemand so etwas oder etwas ähnliches schon einmal gemacht und
könnte mich da mal aufklären, wie dies realisierbar ist.


MfG Freddy

Autor: ape (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein AVR kann keinen externen Code ausführen.
Die Archtitektur ist dafür nich ausgelegt.
Die einzige Möglichkeit besteht darin mittels Bootloader das Programm
ins Flash zu schreiben aber das geht nich beliebig oft.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dass der AVR nicht einfach so neu programmierbar ist, findet man auch in
anderen Threads.
Die Version mit dem RAM und Adressbereich umbiegen stammt noch aus
8051er Zeiten.
Ich weiss ja nicht, wie deine Messroutinen aussehen. Vielleicht könnte
man eine Art Interpreter schreiben, der sich dann die seinen Messablauf
quasi zeilenweise aus dem EEprom holt, ihn dann bearbeitet und dann die
nächste Anweisung holt. Dann müsste man sich einfach einen Befehlssatz
ausdenken. Nicht anders haben damals der C64 und der Apple II
gearbeitet (im Basic-Modus). Man hätte also quasi einen
Software-Prozessor auf dem AVR laufen (dafür gibt es bestimmt auch
einen anderen Begriff, Informatiker mögen mir verzeihen).
Natürlich wäre die Geschwindigkeit nicht mehr so hoch wie bei einem
maschinencodierten Programm, aber bei der Aufnahme einer Raumtemperatur
über 10 Tage (eine Vermutung) käme es auf eine Mikrosekunde mehr oder
weniger wohl nicht an...
Schönen Gruß
Rahul

----
21 ist nur die halbe Wahrheit

Autor: Ronny Schulz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm.. vor einigen Jahren, habe ich das mal mit einem 8051 gemacht. Das
war auch in C. Natürlich sollte das genauso mit einem AVR gehen. Die
Routinen müssen dann aber so aufgebaut sein, dass es nur relative
Sprünge gibt. Oder die Adresse für das Programm ist fest eingestellt.

Ich würde das EEPROM auslesen, im Speicher ablegen und dann diese
Adresse eben aufrufen. Ein Funktion in C ist ja auch nichts anderes als
ein Zeiger. Nur müsste ich jetzt echt ganz genau überlegen, wie das
jetzt funktionierte.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Freddy!

http://www.simreal.com/i_fuzbol.html

Scheint ein einfacher Interpreter im AVR zu sein. Schau mal, ob es für
Deine Zwecke verwendbar ist.

Sven

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 10.000 Schreibzyklen des Bootloaders dürften kein Problem sein,
wer konfiguriert schon ein Gerät 10.000 mal um.
Warscheinlich brechen auch eher die Modulstecker ab.

Aber die beiden oder mehrere C-Programme unter einen Hut zu bringen
dürfte haarig werden. Die wissen doch beide nichts voneinander, d.h. an
welche Adressen die Funktionen gelinkt werden und welcher RAM für wen
benutzt wird.

Daher würde ich auch zu einer Art SPS-Interpreter raten.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.