Ich habe gehört, dass es möglich ist an einen AVR externen Flash-Speicher anzuschliessen. Ist es auch möglich Code direkt von diesem auszuführen? Oder vielleicht sogar direkt von einer SD-Karte? Oder muss aller ausführbare Code im Bootloader gelesen und dann in den integrierten Flash programmiert werden? Ich habe schon im Netz gesucht aber leider nichts gefunden. Vielen Dank für Eure Hilfe!
Der AVR hat die "Harvard-Architektur" (Google) und das hat die Konsequenz, dass nur aus dem Flash Code ausgeführt werden kann. Jedoch könntest du versuchen einen Befehlsinterpreter zu bauen, der dann aber um Einiges langsamer ist.
Falscher Controller-Architektur. Wenn du so etwas vorhast, bist du mit Von-Neumann-Controllern wie MSP430 oder ARM weit besser bedient.
Was einzig geht: SD-Karte als Quelle des Bootloaders verwenden, also statt ISP oder seriellem Bootloader einen SD-Karte verwenden. Beliebig oft geht das natürlich nicht, irgendwann ist das Flash ausgelutscht.
Danke für Eure Antworten. Das mit der Harvard-Architektur schliesst ja nicht aus, dass der AVR Code von externem Flash (also anstatt vom internen) ausführen kann. Wäre halt praktisch genau wegen der begrenzten Lebensdauer des Flashs.
Nein, der AVR kann eben keinen Code vom externen Flash ausführen. Zugegeben, ungeschickt ausgedrückt; dies ist ja nicht implizit eine Harvard-Eigenschaft. Theoretisch könnten ja AVRs mit zwei getrennten nach außen geführten Bussystemen existieren. Allerdings gibt es (bzw. soll irgendwann geben) AVRs, die anstelle des Flash internes SRAM verwenden, das nur von einem speziellen Bootloader beschrieben werden kann und danach hardwaremäßig vor Schreibzugriffen verriegelt ist. Abfallprodukt ist die sehr viel höhere erzielbare Geschwindigkeit (48 MHz Taktfrequen). Damit meine ich die USB-Device-Controller AT76C712/713 (http://www.atmel.com/dyn/products/product_card.asp?part_id=3579)
ähm der avr32 kann das, leider gibts die noch nicht wirklich
> ähm der avr32 kann das, leider gibts die noch nicht wirklich
Das ist ja auch kein "AVR" im klassischen Sinne...
...
Und wie ist das mit BASCOM? Sitzt da nicht nur der Interpreter im Flash und das BASIC-Programm steckt im externen Speicher? Oder war das beim Basic-Stamp so? Ich hab mit beidem noch nicht gearbeitet.
Bascom ist ein Compiler. Nur ein Interpreter kann auf einem AVR Programme aus dem RAM (oder sonstigem externen Speicher) ausführen.
> Abfallprodukt ist die sehr viel höhere erzielbare Geschwindigkeit > (48 MHz Taktfrequen). Ich hätte das eher umgekehrt gesehen: Die AVRs sollen schneller werdem, können dann aber das Programm nicht mehr direkt aus einem Flash-Speicher lesen, weil der zu langsam ist. Deshalb steigt man notgedrungen auf RAM um.
>Wäre halt praktisch genau wegen der begrenzten Lebensdauer des Flashs. Da stellt sich doch die Frage, wie oft man die Firmware einer Steuerung ändern will. Wenn man sie konfigurieren will, nimmt man das EEPROM, um die Parameter zu speichern (hat auch einen höheren Wiederbeschreinungszyklus). Wenn man das Flash während des Entwicklungsvorganges schon durch zuviele Schreibzyklen "schrottet", sollte man seine Entwicklungsmethode mal überdenken. Wieso will bloß immer alle Welt auf einem AVR oder dergl. dauernd das Flash braten? Bei mir laufen in und die selben Anwendungen auf dem Controller, bis das komplette Gerät entsorgt wird. Vielleicht zwischendurch noch mal ein Firmware-Update. Aber das tötet nicht das Flash. Könnte mir jemand eine Anwendung nennen, bei der man dauernd das Flash ändern muß? (In einem solchen Fall würde ich den Umstieg auf eine andere Controller-Architektur empfehlen...)
Wir wollen mit nem AVR eine Art Spielekonsole bauen, mit VGA Ausgabe. Die Spiele sollen von einer Flashkarte ausgeführt werden. Die AVRs haben für uns einfach den Vorteil dass sie gut dokumentiert, einfach zu programmieren und vor Allem billig sind.
Der Classic-Gameboy basiert auf dem Z80... Dabei wurde IMHO das EPROM mit jedem Spiel ausgetauscht (Atari 800 lässt grüssen). Da könnte man auch den kompletten AVR in die Spiele-Cartridge packen, und nur die Anzeige-Elektronik etc. in der Konsole belassen.
Wie schon mal erwähnt könnt Ihr Euch einen Bootloader schreiben. Beim Reset wird in einen Bootloader gesprungen. Bootloader wartet auf Einlegen der Speicherkarte. Der Bootloader ließt von der Speicherkarte welches Spiel gespeichert ist. Wenn Spiel auf Karte ungleich Spiel im Flash wird das Spiel als Applikation ins Flash geschrieben und anschließend gestartet. Das macht das Flash zwar nicht ewig mit, aber vielleicht genügt es. Das ganze dauert natürlich auch etwas (Lesen des Spiels und Flashen).
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.