AVR Code von externem Speicher ausführen

Gast #333743
Lesenswert?

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!
Gast #333746
Lesenswert?

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.
Gast #333747
Lesenswert?

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.
Persönliche Seite #333748
Lesenswert?

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)
Gast #333752
Lesenswert?

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.
Gast #333754
Lesenswert?

> 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.
Gast #333755
Lesenswert?

>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...)
Gast #333758
Lesenswert?

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.
Gast #333759
Lesenswert?

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.
#333760
Lesenswert?

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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren