STM32 Flash und RAM Adressen konfigurieren

OP #2824508
Lesenswert?

Wie geht das beim GCC?

Muss da der exakte STM32 Typ, z.B. STM32F103ZET6 angegeben werden oder 
kann man einen Grundtyp definieren (z.B. STM32F103) und die Flash, bzw. 
RAM Adressen und Größen individuell mit weiteren Parametern bestimmen?

Wäre es möglich das interne RAM eines Controllers nahtlos mit Hilfe von 
externem RAM zu vergrößern?
Gast #2824599
Lesenswert?

> und die Flash, bzw. RAM Adressen und Größen individuell mit
> weiteren Parametern bestimmen?

Das wird ueber Linkerscripte gemacht.

> Wäre es möglich das interne RAM eines Controllers nahtlos
> mit Hilfe von externem RAM zu vergrößern?

Wenn der Controller ein externes Speicherinterface hat dann ist das 
moeglich.

Olaf
Gast #2825507
Lesenswert?

>gcc [TypController]=STM32 ?

>Linkerscript = ?

Beispiele finden sich zuhauf z.B. in der STM32 Std-Peripheral Lib
oder ähnlichen Produkten (oft Files mit der Endung '.ld').

>Erstellt gcc nicht das Linkerscript?

Nein, das machst Du! Woher soll der Compiler wissen,
was Du wie und wohin linken willst?

Bei den GNU Binutils ist ein binutils.pdf dabei.
Da solltest Du Dir 'reinziehen!

http://www.embedds.com/programming-stm32-discovery-using-gnu-tools-linker-script/
OP #2826100
Lesenswert?

Zeichnungen und Screenshots schrieb:
> Nein, das machst Du! Woher soll der Compiler wissen,
> was Du wie und wohin linken willst?

Beim Freepascal Compiler sieht das etwas anders aus.
http://www.freepascal.org
Dort ist ein selbst erstelltes Linker Script wohl nicht notwendig.

Da wird der exakte Typ des Controllers beim compilieren mit angegeben. 
Die RAM und Flash Adressen sind im Compiler hardcoded hinterlegt, was 
ich allerdings für nicht besonders gut halte. Denn bei neuen Controllern 
mit geänderten Speichergrößen steht man dann auf den Schlauch. Bzw. wenn 
man das RAM selbst erweitert.

Ich bin dabei auf Linux für den STM32 zu programmieren.

Hier hat jemand schon Vorarbeit geleistet.
http://j-software.dk/stm32f103.php

Das funktioniert soweit schon ganz gut.
Da ich viel in Pascal programmiere kann ich das dann schnell auf die 
STM32 Controller portieren.

Meine Idee dort ist, dass man die RAM und Flash Basisadressen und Größen 
einfach durch weitere Parameter - die man dem Compiler übergibt - 
überschreibt.

Hat der GCC überhaupt nichts mit dem Linkerscript zu tun? Irgendwoher 
muss der Linker ja wissen welche Dateien er zusammenfügen soll. Muss man 
das auch alles von Hand machen?

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