mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Befehle aus Externem Speicher?


Autor: Ferdinand Stehle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo;

Ich habe mich gefragt, ob man aus einem extrnem Speicher (E²Prom,Flash)
auch irgendwie mit einem AVR Befehle auslesen kann. Dann könnte man
größere Programme schreiben und diese evtl. auch aus Compact Flash
Karten o.ä. lesen. Oder muss man dann einen Controller ohne internen
Programmspeicher benutzen?

Ich bedanke mich schonmal für jede Antwort!

Autor: DerInder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
AVRs können ausschliesslich Programme im internen Flash ausfühen.

Gruß
-=jens=-

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ganz ohne weiteres geht es nicht.
Aber folgende Überlegung : µC läuft mit einer Art Betriebssystem. Man
kann jetzt ein Programm auswählen und der µC lädt sich das ins flash.
Dann kann er es auch ausführen - habe ich schon mal im Internet gesehen
- weiß aber nicht mehr wo. Sorry.

MfG, Khani

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das Zauberwort was Khani meinte heisst: Bootloader.

Mfg
Dirk

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry Dirk,

ich meinte so eine Art erweiterten BootLoader, welcher auch mit der FAT
auf einem Medium umgehen kann, bzw. wie ein richtiges Betriebssystem
Programme laden und starten kann. Wenn dann nämlich ein Programm fertig
ist, dann könnte man ja ein anderes laden und das starten. Kann das der
Bootloader ? Wenn man so ein Betriebssystem als Bootloader aufbauen
kann, dann nehme ich alles zurück ;-).

MfG, Khani

Autor: womisa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe da so eine "wahnsinnige IDEE". Mehr als Spielerei gedacht.
Man implementiert auf dem AVR einen JAVA Interpreter so eine Art JME
und holt die "DATEN bzw. das zu interpretierende Programm über eine
ser. Schnittstelle vom PC.
Eine Implementierung einer JVM (java virtuelle machine) alleine auf dem
AVR scheitert an den resourcen (1MB Flash 1MB RAM).
Man könnte dann den AVR leicht programmieren und hat super,kostenlose
Entwicklungsumgebungen.
Ziel ist die einfache Anbindung von Hardware zur Datenerfassung.

Etwa so wie das "TINI" von Dallas, jedoch läuft dort alles auf eine
8051.
Falls von Interesse DSC80C400 bzw DSTINIm400 mit DSTINIs400.
Kennt sich jemand mit diesen "Dingern" aus.
Board mit Internetanschluß und ser Schnittstellen ca. 100$

Bitte nicht schimpfen, was haltet Ihr davon?

MfG
Achim

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es Dir nur darum geht, den Speicher zu erweitern (also z.B. keinen
mobilen Speicher, Flashcard etc.) dann würde ich vorschlagen, den
"echten" Programmcode von den konstanten Daten (Strings, Graphiken
etc.) zu trennen. Die konstanten Daten kannst Du dann im externen
Speicher halten und bei Bedarf ins RAM kopieren.
Um mit reinem Programmcode das Flash vollzukriegen, musst Du wohl
ziemlich viel programmieren. Meistens machen Daten einen Großteil des
"Codes" aus (Texte, Menues ...).

Externen Code im AVR auszuführen ist dagegen immer mit Programmieren
des internen Flash verbunden.

Stefan

Autor: Markus Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ferdinand:
Warum muß es unbedingt ein AVR sein? Es gibt so viele Prozessorfamilien
und die AVRs sind für diese Art der Aufgabe eher ungeeignet. Daß die
AVRs internen Speicher haben hat mit dem Problem nicht direkt zu tun;
es liegt daran, daß die AVRs Daten- und Codebus getrennt haben
(Havard-Architektur) und der Codebus nicht nach außen geführt ist.

@Khani:
Das funktioniert im Prinzip schon so, die Frage ist, ob man die
FAT-Unterstützung in den Bootloader bringt. Außerdem: Warum sollte man
einen für die Aufgabe völlig ungeeigneten Microcontroller benutzen und
dann von hinten durch die Brust ins Auge ?

@Achim:
Auf einem AVR würde man ja auch nicht eine volle JVM sondern eher eine
KVM implementieren. Laut
http://developers.sun.com/techtopics/mobility/midp... ist
der Speicherbedarf dort bei 40-80KB, was für einen Mega128 durchaus
machbar wäre.

@Stefan:
Wenn man die Definition von Code nicht so eng sieht, dann kann man bei
den AVRs schon Code im RAM ausführen, z.B. den erwähnten Javabytecode
oder auch Code für einen Basicinterpreter. Aber natürlich keinen
Maschinencode (außer man interpretiert auch den).

Markus

Autor: Sascha Biedermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Also hier http://www.cinetix.de/avise/ findet man eine art
Forth-Interpreter, der mit nem AVR aufgebaut ist. Das Programm im
AVR-Flash führt dann ein in einem ext. EEPROM als ASCII-Text
gespeichertes Programm aus.

Autor: Ferdinand Stehle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ich habe diese Sache mit dem Bootloader nicht verstanden...der
soll dann Assempler Befehle in den Flash laden und dann ausführen?


Und da währe ja nioch diese Idee mit dem Java Programm...das wäre dann
aber doch auch ziemlich langsam...der würde dann doch die Java Befehle
aus einem externem Speicher laden, dann interpretieren und dann
ausführen. Also auch viele Asm-Befehle hintereinander?

Autor: Markus Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ferdinand:
Genau. Der Bootloader ist bei den AVRs die einzige Möglichkeit, wie ein
Programm den Flashspeicher ändern kann. Nach dem Einschalten (oder
einem Reset) wird der Bootloader gestartet (wenn es einen gibt) und der
entscheidet dann, ob das Flash programmiert werden soll. Das normale
Programm kann das Flash nicht verändern, damit bei einem Absturz das
Programm sich nicht versehentlich selbst überschreibt.

Java und Basicinterpreter sind auf jeden fall relativ langsam (im
vergleich zu reinem Maschinencode), aber bei vielen Anwendungen stört
dies auch nicht. Es gibt eben keine einzelne Lösung die für Probleme
geeignet ist.

Markus

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.