STM32 Linkerscript, Startupcode

OP #6166237
Lesenswert?
• ▲
▼
Hallo Leute
ich hab da eine Frage zu C auf STM32. Ich habe mir da vor Jahren ein 
Makefile zusammenkopiert, und ein minimalistisches Linkerscript und 
einen Startupcode für STM32 geschrieben. Ich habe versucht, so viel wie 
nur geht weg zu lassen.
Startupcode, Linkerscript und Makefile scheinen wunderbar zusammen zu 
funktionieren für C. Was ich noch nicht getestet habe, ist malloc(), 
dafür müsste man wohl noch ein spezielles Symbol im Linkescript 
definieren (ist das richtig?).

Dazu 2 Fragen.
1) für malloc() und free() muss die Funktion sbrk definiert sein. Sollte 
nicht die Standardlibrary die beinhalten? ich habe ehrlich gesagt 
absolut keinen Schimmer, welche Library ich verwende, ich habe nur 
gcc-arm-none-eabi in der neuesten verfügbaren Version installiert:
1
$ arm-none-eabi-gcc -v
2
Using built-in specs.
3
COLLECT_GCC=arm-none-eabi-gcc
4
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-none-eabi/9.2.0/lto-wrapper
5
Target: arm-none-eabi
6
Configured with: ../gcc-9.2.0/configure --prefix=/usr --mandir=/usr/share/man --with-pkgversion='Fedora 9.2.0-1.fc31' --with-bugurl=https://bugzilla.redhat.com/ --infodir=/usr/share/info --target=arm-none-eabi --enable-interwork --enable-multilib --with-python-dir=share/arm-none-eabi/gcc-9.2.0/python --with-multilib-list=rmprofile --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --enable-languages=c,c++ --with-newlib --disable-nls --disable-shared --disable-threads --with-gnu-as --with-gnu-ld --with-gmp --with-mpfr --with-mpc --with-headers=yes --with-system-zlib --with-sysroot=/usr/arm-none-eabi
7
Thread model: single
8
gcc version 9.2.0

eventuell ist es die newlib, die benutzt wird?
Jedenfalls, was muss ich noch ändern, damit malloc funktioniert?

2) eventuell würde ich auch gern C++ verwenden, dazu bin ich aber nicht 
sicher, ob ich im Linkerscript die Sektionen .ctors/.dtors benötige, 
ODER das __preinit_array und __init_array. Man findet beide Varianten im 
Netz.
Und was muss im Startupcode noch hinzugefügt werden? ich dachte immer, 
dass der Startupcode auch beim GCC beiliegt, aber das scheint nicht der 
Fall zu sein.
Angehängte Dateien:

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.