Externes Flash für Unterprogramme

Gast #2250114
Lesenswert?

Hallo!

Ich habe zwar noch keine konkreten Pläne, möchte vorher aber wissen ob 
das geht:

Ich habe vor, (vorzugsweise) einen Atmega 16/32 zu verwenden. Damit 
möchte ich ein 128x64 Display ansteuern. Wäre es möglich, dass ich 
Unterprogramme in ein externes Flash brenne und dann mit dem µC zu 
diesem externen Speichersegment springe wo das Programm liegt, dieses 
zeilenweise einlese und ausführe?

Vorzugsweise würde ich ein serielles Flash von Atmel verwenden.

Bitte um Antworten!
#2250123
Lesenswert?

Marcus schrieb:
> Ich habe vor, (vorzugsweise) einen Atmega 16/32 zu verwenden. Damit
> möchte ich ein 128x64 Display ansteuern. Wäre es möglich, dass ich
> Unterprogramme in ein externes Flash brenne und dann mit dem µC zu
> diesem externen Speichersegment springe wo das Programm liegt, dieses
> zeilenweise einlese und ausführe?

Nein es ist nicht möglich. Du kannst beim AVR Code nur aus dem internen 
Flash ausführen.

Gruß Skriptkiddy
Gast #2250124
Lesenswert?

vor der frage stehe ich auch zur zeit, evtl. kann noch jemand einen link 
reinwerfen wie es überhaupt funktioniert programmcode auf einem externen 
speicher zu legen und diesen dann über den hauptcontroller auszuführen. 
vorzugsweise für atmegas. :)
Gast #2250134
Lesenswert?

Marcus schrieb:
> Unterprogramme in ein externes Flash brenne und dann mit dem µC zu
> diesem externen Speichersegment springe wo das Programm liegt, dieses
> zeilenweise einlese und ausführe?

Soll da so eine Art Script abgelegt werden? Das zeilenweise macht mich 
etwas stutzig.

Bitte beschreibe den Sinn und Zweck. Da gibt es vielleicht noch andere 
Lösungen.
#2250137
Lesenswert?

peter schrieb:
> vor der frage stehe ich auch zur zeit, evtl. kann noch jemand einen link
> reinwerfen wie es überhaupt funktioniert programmcode auf einem externen
> speicher zu legen und diesen dann über den hauptcontroller auszuführen.
> vorzugsweise für atmegas. :)

Direkt geht das bei AVRs gar nicht.

Was du machen kannst, ist, im ATmega einen Interpreter zu 
implementieren, der sich dann seinen Code vom externen Medium lädt und 
ausführt.
#2250138
Lesenswert?

Naja du kannst statt eines Mega16/32 auch ein Mega8515 nehmen, der hat 
ein externes Speicherinterface oder eben Mega64 /Mega128.

Wenn du direkt den Code vom externen Speicher ausführen willst brauchst 
du ein richtiges XMEM-Interface. Wenn du den Code selbst noch 
interpretierst ("bytecode interpreter") dann gehts auch ohne.
#2250141
Lesenswert?

Auch durch mehrfaches Nachfragen geht es nicht.

Man könnte durch den Bootloadermechanimus das gesamte Programm aus einem 
externen Speicher in den internen übertragen, dann nach einem Reset aus 
dem internen ausführen.
Aber direkt aus einem externen Speicher geht halt nicht.

Ein Ausweg wäre nur, im internen Speicher einen irgendwie gearteten 
Interpreter als Programm zu haben, der seine Befehle nach und nach von 
externem Speicher liest und ausführt.

Das gilt für AVR; bei anderen CPUs kann es anders aussehen.
Gast #2250167
Lesenswert?

ev. ist es ausreichend, alle im Flash gespeicherten Konstanten (Texte, 
Graphiken, konstante Arrays ...) ins externe Flash zu speichern. Das 
dürfte bei einem Graphik-Display schon einiges sein. Nur der reine Code 
bleibt dann im internen Flash.

Gruß, Stefan
Gast #2250206
Lesenswert?

@Stefan: Danke für deinen (für mich zumindest) hilfreichen Tipp. So 
könnte ich es ja eigentlich machen.

@Spess: Ich verwende vorzugsweise den Atmega 16 bzw. 32 weil ich welche 
herumliegen habe.

@alle Anderen: Vielen Dank für eure schnellen und auch hilfreichen 
Antworten!
Gast #2250227
Lesenswert?

Ich weiß, das ist jetzt eine etwas blöde Frage, aber wie bringe ich 
eigentlich Daten via PC in das Flash? Ich möchte im Flash ein Charset 
für das Display ablegen. Kann ich das einfach via Programmer (MySmartUSB 
MK2) machen oder ist das etwas komplizierter?
Gast #2250240
Lesenswert?

Hi

>Ich weiß, das ist jetzt eine etwas blöde Frage, aber wie bringe ich
>eigentlich Daten via PC in das Flash? Ich möchte im Flash ein Charset
>für das Display ablegen.

Kommt auf deine Programmiersprache an. In Assembler per .db, in C als 
Array den Zeichensatz in dein Programm einbinden und mitflashen.

>@Spess: Ich verwende vorzugsweise den Atmega 16 bzw. 32 weil ich welche
>herumliegen habe.

Hoffentlich geschenkt bekommen.

MfG Spess
Gast #2250254
Lesenswert?

Ich programmiere in C

Sorry, ich habe mich jetzt unklar formuliert. Ich möchte das Chaset ins 
EXTERNE Flash/EEPROM brennen. Wie stelle ich das an? Wenn ich das 
Charset mitflashe, dann ist es ja nur im AVR drinnen. Das externe 
Flash/EEPROM ist bzw. wird später via I2C mit dem µC verbunden.
Gast #2250274
Lesenswert?

Hi

Dann wirst du dir erst mal ein Programmiergerät basteln müssen. Und u.U. 
noch die passende PC-Software dazu schreiben.

Ehrlich gesagt sehe ich in deinen Vorhaben keinen Vorteil gegenüber 
einem passenden Controller. Hast du überhaupt schon eine Vorstellung zum 
notwendigen Flashbedarf?

MfG Spess

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