STM32F10X_CL Linker script

Gast #1681407
Lesenswert?
• ▲
▼
In meinem Projekt setze ich den STM32F105RB ein.
Also Connectivity Line mit 128k Flash, 32k Ram.

Als Basis benutze ich ein Projekt von M. Thomas
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32
Läuft so auch erstmal alles wunderbar.
Aber ich weiß, dass das Linker script nur für den STM32F103 mit weniger 
Periperie ist.
Wenn ich im Makefile
CDEFS = -DSTM32F10X_MD
in
CDEFS = -DSTM32F10X_CL
ändere, spuckt der Usart nur noch Müll aus.

Ich würde jetzt gerne das Linker script und was sonst noch notwendig ist 
anpassen, damit alles korrekt läuft.

Im STM32F10x_128k_20k_flash.ld habe ich die Zeile
RAM      (RWX) : ORIGIN = 0x20000000+0, LENGTH = 32K-0
in
RAM      (RWX) : ORIGIN = 0x20000000+0, LENGTH = 20K-0
geändert. Reicht das?

In startup_stm32f10x_md_mthomas.c werde ich alle isr (isr_vectorsram) 
ergänzen müssen, die der 105 mehr hat.

Sonst noch etwas?

Ich bin mit den ARMs noch ziemlicher Anfänger (vorher AVR) und die ganze 
Linkergeschichte muss noch etwas sacken.
Bin aber lernwillig :)
Gast #1681563
Lesenswert?
• ▲
▼
Stack pointer sollte passen, da Martin das alles sehr schön über Makros 
gemacht hat.
_estack = ORIGIN(RAM)+LENGTH(RAM);

Nach meinem Verständnis muss in der "stm32f10x.h" nichts angepasst 
werden, da die zur ST lib gehört.
Alle Anpassungen da drin werden über die defines aus der makefile 
gemacht.
Ich benutze jetzt die V3.2.0 der ST Lib und nun läuft Usart.
Vermutlich hat die V3.1.2 einen Bug beim PLL initialisieren.

Jetzt zickt noch der CAN interrupt, aber das ist auch nur eine Frage der 
Zeit :)
Gast #1681665
Lesenswert?
• ▲
▼
Hm, ist nicht der Interrupt, sondern der CAN läuft mit 1/3 der 
Geschwindigkeit, wie er sollte.
Also ca. 12Mhz statt 36Mhz.

Das gleiche Phänomen hatte ich vorher mit Usart unter V3.1.2.
Ein Bug in der PLL Init sollte es ja wohl nicht sein?
(Firma: EleLa - www.elela.de) #1681740
Lesenswert?
• ▲
▼
Ich habe bei mir die "stm32f10x.h" angepasst, damit Eclipse die richtige 
Codevervollständigung hat.

Ich nutze die von ST gelieferten *.s Dateien nicht weil ich einen 
Bootloader drin habe. Deshalb würde die Interrupts nicht mehr tun.
Ich hab mit da was eigenes gestrickt.
In jedem Fall musste ich die Variable "SystemCoreClock" auch von Hand 
mit der richtigen Zahl beschreiben, denn ich initialisieren die Clocks 
auch selbst, so wie in der FW-Lib V2.x. Aktuell nutze ich auch die 
FW-Lib 3.2.0 und damit funktioniert CAN und USART prinzipiell richtig.
Gast #1682187
Lesenswert?
• ▲
▼
Hm, ok.
Ich musste die "stm32f10x.h" jetzt auch anpassen, weil die PLL beim 105 
anders initialisiert wird als beim 103.
Kein direkter Bug, aber auf jeden Fall unschön. Der Code sollte ja durch 
die Lib eigentlich sehr leicht portierbar sein.
Bin gerade noch dabei, den Sinn davon zu verstehen.
(Firma: EleLa - www.elela.de) #1682288
Lesenswert?
• ▲
▼
Irgendwo müsste man im User-Code Bereich dieses Define setzen können, 
aber die "stm32f10x.h" kann natürlich kein User-Code-Define einbinden.

Die Lösung wäre schlichtweg man hätte eine kleine Header-Datei die 
Konfigurationen/Defines beinhaltet und von der "stm32f10x.h" eingebunden 
ist. Denn in der "stm32f10x.h" rum zu doktorn ist eigentlich tötlich.
Einen Kompiller/Linker Schalter zu verwenden ist irgendwie doof, denn 
Eclipse blendet die nicht aktiven Defines (#ifdef) im Code aus, damit 
hat man viel mehr überblick.

Unschön finde ich auch wo die Variable "SystemCoreClock" initialisiert 
wird, denn die wird in der gesammten FW-LIB verwendet.

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.