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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.