mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 Programm in Hex, aus EEPROM ausführen


Autor: Manfred D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend ;)
Benutze einen Atmega8 und Programmiere ihn in C, habe an dem Atmega ein 
EEPROM angeschlossen und würde nun gerne dort verschiedene Programme 
speichern und Ausführen,
also ich stelle mir das so vor, die Firmware des Atmega's soll über die 
RS232 die Programme im Hex Format empfangen und im EEPROM speichern,
das zu realisieren  dürfte für mich kein Problem sein,
was mir mehr Probleme bereitet ist wie ich den Hex Code dann von der 
Firmware ausführen lassen kann,
vllt. kann mir ja jemand nen Tipp geben.
gruß Walter D.

Autor: holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht IMHO nicht ohne Weiteres, da der AVR keine Programme im RAM 
abarbeiten kann. Du müßtest den EEPROM Inhalt auf den Flash umkopieren 
mit einer Art Bootloader und danach den AVR Restarten..


Gruß,

Holm

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein AVR kann Programme grundsätzlich nur aus dem Flash ausführen. Der 
Code muss also zunächst ins Flash geschrieben werden. Dazu müsstest Du 
einen Bootloader programmieren, der die Daten nach Bedarf aus dem EEPROM 
ausliest und ins Flash schreibt.

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist mit dem Atmel auf Grund der Harvard Architektur (getrennter
Speicher für Daten und Programme) eher unmöglich sein - vom evtl.
RAM Bedarf mal ganz abgesehen.

Der einzige Weg wäre, die Programme wieder ins interne Flash zu 
schreiben
aber das ist sicherlich nicht das was Du vor hast.

Gruß, Marcus

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

einfache Antwort: geht nicht. Die AVR können Programmcode nur aus dem 
Flash ausführen.

Allgemeine Anmerkung: als Hex-Format ist es natürlich unsinnig, weil 
Hex-Format eine ASCII-Kodierte Darstellung eines Binär-Codes mit 
Adressangaben ist, wo er hingehört.
Kostet also das 2-3fache des Platzes und Routinen , die den HEX-Code 
wieder in die Binär-Darstellung konvertieren.

Wenn überhaupt, also als Binär-Code ablegen.

komplizierte Antwort: man könnte einen Bootloader ablegen, der den Flash 
des AVR aus dem EEPROM jeweils umprogrammiert. Nicht sinnvoll, weil der 
Flash sich nicht beliebig oft neu programmieren läßt.

Für solche Sachen ist ein AVR einfach garnicht geeignet.

Möglich wäre ein Interpreter als Firmware (Java, Basic, eigenes 
Konstrukt, daß den Code aus dem EEPROM interpretiert.

Ich gebe zu, daß ich schon ein paarmal darüber nachgedacht haben, ein 
uraltes Tiny-Basic oder das klassische 8k-Basic auf einen AVR zu 
tragen...

Allerdings mehr zum Spaß als für ernstafte Anwendungen. ;)

Gruß aus Berlin
Michael

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist ein Basic-Interpreter für ATMEGA8515: 
http://72.41.86.92/dproj/ab163/at163b.htm

MfG Paul

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael U.:
Er hat ja nicht gesagt, wie oft er ein neues Programm überspielen will. 
Wenn das nicht allzu häufig geschieht, ist das auch mit einem AVR mit 
Bootloader kein Problem (ATMEL garantiert für das Flash mittlerweile 
100000 Lösch-Schreib-Zyklen, die muss er erst mal hinbekommen, und die 
Wahrscheinlichkeit, dass das Flash beim 100001. Zyklus kaputtgeht, ist 
verschwindend gering). Ist halt ein bisschen Programmieraufwand, aber 
ich würde auf keinen Fall sagen, dass ein AVR da ungeeignet ist.

Im Übrigen hast Du recht: die Programmdaten sollten natürlich binär 
abgelegt werden, sonst muss der Bootloader erst noch den Hex-Code 
auseinanderwurschteln.

Gruß

Johannes

Autor: Manfred D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah so viele Antworten ;)
hm das mit dem basic ist keine schlechte Idee hab ich noch garnicht dran 
gedacht, wenn ich die Programme Kompiliere liegen sie doch im Binär Code 
vor?
der Code müsste doch direkt ausführbar sein.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Paul Baumann:
Danke, sieht seht interessant aus.
Muß mir seinen Source mal genauer anschauen.

Gruß aus Berlin
Michael

Autor: Schubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Manfred D.
Nein, eine Hex-Datei ist nicht direkt ausführbar.
In der Datei sind z.B. Checksummen, etc. enthalten, die für die 
fehlerfreie Programmierung des Chips notwendig sind.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael U.
Ja, das funktioniert auch prima. Ich habe eine Maschinensteuerung damit
realisiert, die ich jederzeit mit dem "Müh- und Notbook" ändern kann.
Für ein Einzelstück wolte ich keine SPS nehmen. Ist nur eine einfache
Ablaufsteuerung, aber dafür ist das wie gemacht.

MfG Paul

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.