Forum: Mikrocontroller und Digitale Elektronik STM32 Code im externen RAM


von Felix F. (wiesel8)


Lesenswert?

Hallo,

ich möchte gerne Code von einem externen RAM ausführen. Prinzipiell 
würde mir ein ATmega644 oder ähnliches reichen. Da der aber nur vom 
Flash laden kann, habe ich mich für einen STM32F1 mit FSMC entschieden. 
Hier möchte ich einen RAM Baustein anschließen und von dort Code 
ausführen. Von ST gibts auch ne AN und Beispielcode, wo das mit einem 
NOR gemacht wird, sollte also problemlos funktionieren?!

Da ich nicht so der Elektronik-Experte bin, bräuchte ich jetzt noch Rat, 
welche Art von RAM ich am besten verwende (Vor-/Nachteile) und wie ich 
es am besten Anschließe (AN?)?
Speicher im Bereich 1MB reichen mir.
System soll mit 3,3V laufen.

Ach ja, ich möchte das Programm nicht per Debugger etc. einspielen, 
sondern es soll ein "Bootloader" auf dem int. Flash laufen, der dann das 
Programm in den ext. RAM kopiert. Das das Programm nur bis zum nächsten 
Reset im RAM bleibt, ist mir bewusst :)

Über weitere Ratschläge, was ich alles beachten soll bin ich natürlich 
dankbar.

mfg

von Markus M. (adrock)


Lesenswert?

Naja, Du bräuchtest wohl ein statisches SRAM, so wie in der Application 
Note (ich nehme an es war AN2784?) beschrieben.

Laut diesem Post

http://electronics.stackexchange.com/questions/31456/running-executable-from-external-sram

dürfte es übrigens wesentlich langsamer sein den Code aus dem externen 
Speicher auszuführen.

Wenn Du ein MByte (nicht MBit) meinst, müsstest Du also ein asynchrones 
512k x 16bit SRAM nehmen. Dann noch die gewünschte Versorgungsspannung 
als Kriterium und mit diesen Daten kannst Du dann bei dem bevorzugten 
Lieferanten suchen.

In der AN steht doch direkt ein Chip drin: IS61WV51216BL

Der kostet um die 15 EUR und hat 1 MByte.

...wobei man man natürlich bei einem solchen Aufbau (Timings im 10ns 
Bereich) schon in Bereiche kommt, wo man auf jeden Fall ein sauberes 
Layout braucht denke ich mal. Also wird wohl auf jeden Fall ein Board 
notwendig sein.

Aber das können andere hier sicher besser beurteilen.

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Wie oft und wie schnell willst du denn deine Programme wechseln? Bzw. 
warum willst du das ganze machen? Und woher sollen die neuen 
Programmdaten denn kommen?
Ja, passender SRAM ist teuer.

von Jim M. (turboj)


Lesenswert?

Felix F. schrieb:
> Speicher im Bereich 1MB reichen mir.
> System soll mit 3,3V laufen

Dann würde ich mir eher die STM32F7 anschauen, die haben bis 512KB 
on-Chip RAM.

Externer RAM an µC ist eher unschick: Braucht reichlich Pins und ist 
trotzdem lahm. Wenn der nicht grade für ein knallbuntes LCD gebraucht 
wird, würde ich den möglichst immer weglassen.

von Felix F. (wiesel8)


Lesenswert?

Hallo,

die langsamere Ausführgeschwindigkeit ist OK. Mir hätte prinzipiell ja 
auch ein 20MHz ATmega gereicht.

10ns brauche ich gar nicht. Ein billigerer Chip mit ~50ns ist auch noch 
ok.
Einen bevorzugten Lieferanten habe ich nicht, nur die Eckdaten müssen 
stimmen, deshalb frage ich ja die Experten hier was zu empfehlen wäre ;)

Einen konkreten Anwendungsfall gibt es noch nicht, bis jetzt ist es nur 
eine Spielerei, deshalb will ich auch keinen MC mit mehr RAM, sondern es 
so umständlich machen ;)

Gibts gegen den was einzuwenden?
http://www.mouser.de/ProductDetail/Cypress-Semiconductor/CY62157EV30LL-45ZSXI/?qs=7NE86GkllXftCpnrBM6eEA==

mfg

von m.n. (Gast)


Lesenswert?

Felix F. schrieb:
> habe ich mich für einen STM32F1 mit FSMC entschieden

Die gibt es auch schon mit 96 KB RAM. Wenn Du Deinen RAM-Bedarf aber 
noch garnicht so genau abschätzen kannst, würde ich das ext. RAM erst 
einmal weglassen und einen F407 im 144 pol. Gehäuse nehmen. Die kosten 
nur minimal mehr und sind pinkompatibel zu Versionen mit mehr internem 
RAM (F427/F745). Man kann diese µCs auch sehr langsam takten.
Mit einem Nucleo-Board kannst Du Deine Software erproben, ohne den 
Lötkolben angefaßt zu haben. Sofern nicht RAM an einem Stück benötigt 
wird, kann man es auch aufteilen und unabhängige Programmteile an die 
gleiche Adresse ins RAM legen (overlay).

Felix F. schrieb:
> Gibts gegen den was einzuwenden?

Kannste nehmen. Nur mußt Du aufpassen, daß der FSMC bei kleinen Gehäusen 
(<= 100 pol.) nicht komplett herausgeführt ist. Da ist dann noch ein 
xx573 erforderlich.

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.