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!
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
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
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
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
@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/articles/api/ 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
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.
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?
@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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.