Forum: Mikrocontroller und Digitale Elektronik Externer Speicher am Atmega128


von Alex1 (Gast)


Lesenswert?

Hallo...

Ich habe ein neues Project vor und bin dabei mir Hardware Auszusuchen.
Das grosse Ding ist: Ich brauche massenhaft Speicher.

Als Programm code wuerden mir wahrscheinlich die 128k des Atmega128
reichen, aber ich brauche mehr SRAM und ... .

Der Atmega128 kann 64k extern adressieren.

Da ist es ja so, dass man an die ersten ~4k des externen Speichers
nicht drankommt. Kann man ev. durch eine geschikte Adressdekodierung
auch die ersten ~4k nutzen?

Zum zweiten koennte ich ein Flash zusaetzlich gebrauchen. Ich habe etwa
40k Daten, die waehrend des Programmablaufs nicht veraendert werden,
aber es wird permanent darin gesucht.
Kann man diese externe 64k aufteilen in z.B. 32k SRAM und 32k Flash?

Danke
Alex

von Gerit (Gast)


Lesenswert?

was für ein Projekt ist das ?

von Alex1 (Gast)


Lesenswert?

Hallo...

Es eine Art Spielecomputer werden.

Alex

von sebezahn (Gast)


Lesenswert?

Vielleicht ist das für dich interessant, gerade bei einem
"Spiele-Rechner": http://members.aon.at/voegel/

Gruß
Sebezahn

von Dominik (Gast)


Lesenswert?

Den Speicher kannst Du problemlos aufteilen.
Allerdings solltest Du Dir überlegen, ob Du dafür nicht einen anderen
Controller nimmst. Das macht die Software und Hardware viel einfacher.
Fujitsu hat sehr schöne, auch Renesas hat ganz brauchbare (für beide
gibt es kostenlose C-Compiler).

von Alex1 (Gast)


Lesenswert?

Wie geht das denn?
Muss ich dann nicht dem Linker auch sagen, wie gross mein SRAM ist und
das ROM DatenSegment ist?
Kann ich das Flash (ist ja dann parallel angeschlossen) auch problemlos
programmieren?

Eine andere Hardware weiss ich nicht. Grosse Teile des Codes sind schon
in C++ geschrieben. Die umzuschreiben in C ... Hmmm...


Alex

von Dominik (Gast)


Lesenswert?

Dem Compiler musst Du das nur sagen, wenn Du das RAM nicht selber
verwaltest. Das hängt von Deiner Software ab. Beim AVR-GCC kannst Du
bestimmen, ob der Compiler das RAM komplett nutzt, nur für den HEAP
oder gar nicht.
Das Flash kannst Du im Prinzip schon programmieren, so funktioniert das
beim PC ja auch.
Vielleicht schreibst Du mal, wie Deine Software aufgebaut ist und
welchen Compiler Du verwendest.

von Jörg Wunsch (Gast)


Lesenswert?

Alternativ kann man natürlich noch über Speicherbankaufteilungen
nachdenken.  Sowas wurde schon beim Z80 gemacht.

von Alex1 (Gast)


Lesenswert?

Hallo...

Ich benutze WinAVR.

Ich hatte an eine Adressdekodierung in 8k Schritten gedacht. Ueber
einen GAL.

Ich habe Bibliotheken, die etwa 40kB Gross sind. Diese sollen in den
Flash-Speicher. Der Rest von 64kB soll bleiben fuer das SRAM. Nur
wollte ich das so machen, dass wenn ich die Bibliotheken kleiner
bekomme, moechte ich ueber den GAL von den 40 kB etwas abzwacken und
dem SRAM zukommen lassen.

Eine Weitere Frage waere, ob man eine etwas groesseren Adressbereich
hinbekommt. Man koennte ja z.B. es so machen, dass wenn man z.B. eine
ganz bestimmte Adresse im GAL (ich weiss nicht ob so etwas mit einem
GAL geht. Ich habe das frueher mit einem Altera so gemacht) schreibt,
dann praktisch die Adressleitung A16 setzt und somit nochmal 64kB
bekommt. Ist so etwas den mit einem GAL moeglich ? Vielleicht ein
anderer Baustein ausser Altera?


Alles nur Fragen ;-()

Danke.
Alex

von Dominik (Gast)


Lesenswert?

So etwas geht, auch mit einem GAL. Ich würde allerdings ein CPLD nehmen.
Die verbrauchen weniger Strom. Vielleicht ein Xilinx XC9536XL, den gibt
es für ca. 2,50 bei Reichelt. Software dazu bei Xilinx kostenlos,
ISP-Programmer-Bauanleitungen dazu im Netz.

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.