Forum: Mikrocontroller und Digitale Elektronik [STM32F4] Externes SDRAM als RAM nutzen


von Mampf F. (mampf) Benutzerseite


Lesenswert?

Guten Abend,

mein erstes Custom-Board mit STM32F429 und externem SDRAM läuft yay

Hat jemand zufällig einen Startup-Assembler-Code, der das SDRAM 
initialisiert, so dass ich dem Linker sagen könnte, dass der RAM bei 
0xd0000000 beginnt?

Oder kann man in der Main-Funktion irgendwie die Speicherverwaltung auf 
das externe SDRAM umschalten?

Wäre schön, wenn malloc oder new direkt den SDRAM verwenden könnte, 
damit man nicht alles zu Fuß machen muss.

Google war da leider nicht besonders ergiebig.

Vielen Dank für Hilfe,
Mampf

von STM Apprentice (Gast)


Lesenswert?

Mampf F. schrieb:
> Google war da leider nicht besonders ergiebig.

Entweder bist du zu blöd oder du lügst.

https://stm32f4-discovery.net/2014/05/library-14-working-with-sdram-on-stm32f429-discovery/

von Mampf F. (mampf) Benutzerseite


Lesenswert?

STM Apprentice schrieb:
> Mampf F. schrieb:
>> Google war da leider nicht besonders ergiebig.
>
> Entweder bist du zu blöd oder du lügst.
>
> https://stm32f4-discovery.net/2014/05/library-14-w...

Weder noch, aber ersteres könnte auf dich zu treffen ...

Hast du eigentlich verstanden, was ich geschrieben habe und hast du dir 
den Link der Seite angeschaut?

SDRAM funktioniert, ich kann problemlos mit p* auf das SDRAM zugreifen 
und einen 1-Zeilen-Wrapper kann ich mir auch selbst schreiben.

Wenn man dem Linker sagt, dass der Heap bei 0xd0000000 sein soll - quasi 
das interne RAM nicht verwendet wird - muss das SDRAM initialisiert 
sein, bevor die Main-Methode überhaupt aufgerufen wird ... Sogar noch 
bevor aus dem Flash Daten ins RAM kopiert werden ...

Der Link von dir ist eine triviale Krücke, auf die man verzichten kann 
;-)

von STM Apprentice (Gast)


Lesenswert?

Mampf F. schrieb:
> Hast du eigentlich verstanden, was ich geschrieben habe und hast du dir
> den Link der Seite angeschaut?

Dann schreib doch gleich richtig was du willst.

Mann muss ja auf das interne RAM nicht verzichten wenn man
externes verwenden will. Auch das kann man dem Linker sagen.

von Felix F. (wiesel8)


Lesenswert?

http://www.st.com/en/embedded-software/stsw-stm32065.html

Hier ist ein Beispiel genau dafür enthalten.

mfg

von Mampf F. (mampf) Benutzerseite


Lesenswert?

STM Apprentice schrieb:
> Mann muss ja auf das interne RAM nicht verzichten wenn man
> externes verwenden will. Auch das kann man dem Linker sagen.

Danke, das ist zumindest schon mal ein Anhaltspunkt, nach dem ich 
weitergurgeln kann.

Rein logisch steige ich da (noch) nicht dahinter ... Man müsste 
irgendwie den heap auf das externe SDRAM umschalten können und mein 
derzeitiges Wissen sagt, dass man das nur über das Linker Script machen 
kann.

Ich such noch ein bisserl, irgendwas muss es doch da geben ... Dürfte ja 
kein exotisches Problem sein.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Ah, so einfach kann es sein, wenn man richtig googelt ...

http://www.openstm32.org/forumthread2017

*edit*: Ah und dann macht das auch mit internem RAM und SDRAM Sinn ... 
Der Startup-Code nutzt den internen RAM, aber mit dem Umbiegen von _sbrk 
verwendet z.B. malloc dann das SDRAM ...

Genau das, was ich gesucht hab :)

von aGast (Gast)


Lesenswert?

STM Apprentice schrieb:
> Mampf F. schrieb:
>> Google war da leider nicht besonders ergiebig.
>
> Entweder bist du zu blöd oder du lügst.
>
> 
https://stm32f4-discovery.net/2014/05/library-14-working-with-sdram-on-stm32f429-discovery/

Hi Community,
bin gerade darüber gestolpert! Und ich muss es jetzt mal loswerden.
Was sollen eigentlich solche blöden Antworten? Die helfen ja nun gar 
nicht weiter.
Warum ist man dafür zu blöde?
Warum sollte jemand lügen?

Kann nur dazu nur sagen:
"Es gibt keine dummen Fragen. Nur dumme Antworten"

Mit freundlichen Grüßen...

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.