Forum: Mikrocontroller und Digitale Elektronik AVR Code von externem Speicher ausführen


von Michael Stather (Gast)


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!

von D. W. (dave) Benutzerseite


Lesenswert?

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.

von A.K. (Gast)


Lesenswert?

Falscher Controller-Architektur. Wenn du so etwas vorhast, bist du mit
Von-Neumann-Controllern wie MSP430 oder ARM weit besser bedient.

von A.K. (Gast)


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.

von Michael Stather (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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)

von hans dieter (Gast)


Lesenswert?

ähm der avr32 kann das, leider gibts die noch nicht wirklich

von A.K. (Gast)


Lesenswert?

Und ist auch nicht wirklich ein AVR, sondern eher eine Art lizenzfreier
ARM.

von Hannes L. (hannes)


Lesenswert?

> ähm der avr32 kann das, leider gibts die noch nicht wirklich

Das ist ja auch kein "AVR" im klassischen Sinne...

...

von Christoph Kessler (db1uq) (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bascom ist ein Compiler.

Nur ein Interpreter kann auf einem AVR Programme aus dem RAM (oder
sonstigem externen Speicher) ausführen.

von Rolf Magnus (Gast)


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.

von Rahul (Gast)


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

von Rainer Stamm (Gast)


Lesenswert?

gibt es einen MSP430 mit externem Speicherinterface???

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

AFAIK nein. Das ist IMHO das, was die MSP430-Reihe abrunden würde.

von Michael Stather (Gast)


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.

von Rahul (Gast)


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.

von Dirk D. (dirkd)


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

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
Noch kein Account? Hier anmelden.