Forum: Mikrocontroller und Digitale Elektronik Makefile für STM32


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jonas B. (holocron)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich wollte für mein STL µC ein Makefile schreiben, allerdings bin ich 
noch etwas ratlos wie ich das anstellen soll. Ich hab erst mal versucht 
Teile von meinem C++ Makefile zu übernehmen, kombiniert mit einem das 
ich im Internet gefunden hab (das auskommentierte sind Flags ,deren Sinn 
ich noch nicht herausgefunden hab):

.SUFFIXES:
.PHONY: all compile test
.PRECIOUS: %.o

CC=arm-none-eabi-gcc
SF=st-flash

CFLAGS  = -std=gnu99 -g -Wall -pedantic -Wextra -specs=nosys.specs
#CFLAGS += -mlittle-endian -mthumb -mthumb-interwork
#CFLAGS += -fsingle-precision-constant -Wdouble-promotion

HEADERS = $(wildcard *.h)
MAIN_BINARIES = $(basename $(filter %Main.cpp, $(wildcard *.cpp)))
OBJECTS = $(addsuffix .o, $(basename $(filter-out %Main.cpp %Test.cpp, 
$(wildcard *.cpp))))
LIBEARIES =

all: compile checkstyle

compile: $(MAIN_BINARIES)

checkstyle:
  python3 ../cpplint.py --repository=. *.c *.h

%Main: %Main.o $(OBJECTS)
  $(CC) $(CFLAGS) -o $@ $^ $(LIBARIES)

%.o: %.c $(HEADERS)
  $(CC) $(CFLAGS) -c $<

clean:
  rm -f *.o *.elf *.bin

Allerdings wird noch nicht mal irgendwas ausgeführt oder kompiliert. Wie 
ich flashen kann bin ich auch noch unsicher. Hat da jmd. eine Idee? 
Benutzt man überhaupt in "richtigen" µC-Projekten noch händische 
Makefiles?

Mein µC ist der STM32 by ST NUCLEO-L432KC.

Danke und Grüße

: Bearbeitet durch User
von Hääääääääääääääääääääääää# (Gast)


Bewertung
-4 lesenswert
nicht lesenswert
Benutz einfach die IDE von ST und fertig. Immer diese Bastelei ...

von meiomei (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Benutzt man überhaupt in "richtigen" µC-Projekten noch händische
> Makefiles?

"Man" schon, aber du besser nicht!

Mein Vorrednder hat es dir schon gesagt was zu tun ist.

von A. B. (Gast)


Bewertung
3 lesenswert
nicht lesenswert
Was hat das mit STM32 zu tun? Wenn man ein Makefile erstellen will und 
nicht weiß, wie es geht, besorgt man sich die Literatur z. B. zu GNU 
Make 
(https://www.gnu.org/software/make/manual/make.html#Simple-Makefile) und 
macht's danach. Wozu gibt's diese Doku wohl???
Und wenn man sich nicht die Mühe machen WILL, das zu lernen, läßt man 
es einfach.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das Beste ist, dass die CubeIDE sogar ein Makefile für dich erstellt.

von Jonas B. (holocron)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für die Tipps. Mit der CubeIDE klappt das prima. Aber woran ich 
gerade rätsle: wie kann ich denn die Register ansprechen? Ich wollte 
stm32f10x_map.h inkludieren, aber die wird von der IDE nicht erkannt.

von W.S. (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Aber woran ich
> gerade rätsle: wie kann ich denn die Register ansprechen? Ich wollte
> stm32f10x_map.h inkludieren, aber die wird von der IDE nicht erkannt.

Normalerweise spricht an die Hardwareregister mit den Namen an, die sie 
im Referenzmanual haben. Kann bei ST aber auch anders sein.

Und du kämpfst gerade gegen deine IDE. Wieso eigentlich?

Mir wäre es schnurz, wenn eine IDE irgend eine Datei "nicht erkennt" 
(was soll das eigentlich heißen:'nicht erkannt'?).
Ich würde schlichtweg in die Quelle schreiben
#include "stm32f10x_map.h"
und besagte Headerdatei in das Verzeichnis kopieren, wo auch die 
C-Quelle steht. Dann sollte die IDE eigentlich keinen Spuk um diese 
Datei mehr machen können. Ja, ist ein bissel Holzhammer, aber erstmal 
besser als garnix.

Allerdings vermute ich mal, daß besagte Datei irgendwo außerhalb des 
gerade angesagten Such-Bereiches liegt und schlichtweg nicht GEFUNDEN 
wird anstelle nicht erkannt.

W.S.

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Frage ist, ob das Contiki Betriebssystem benutzt werden soll, oder 
ob es wirklich nur um Registernamen geht, weil die zufällig in der Datei 
stehen.

Wenn Contiki, hat das wenig mit CubeIDE zu tun und verlangt ein anderes 
Vorgehen.

Für CubeIDE stehen die Register in der stm32f103xb.h .

von Axel S. (a-za-z0-9)


Bewertung
2 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Ich wollte stm32f10x_map.h inkludieren,
> aber die wird von der IDE nicht erkannt.

Du sprichst wirr.

Was du wohl meintest: der Compiler (genauer: der Präprozessor) wirft 
eine Fehlermeldung für die Zeile mit dem #include, weil er die zu 
includierende Datei nicht findet.

Ich empfehle einen Blick in die Dokumentation des Compilers, konkret den 
Teil, der die "-I" Kommandozeilenoption erklärt.

Eine IDE ist am Ende nur ein GUI, das einen Editor, den Compiler, ein 
Flash-Tool und den Debugger aufruft. Also bis auf den Editor im Prinzip 
das gleiche macht wie ein Makefile. Manche Leute finden es praktisch, 
daß man die Suchpfade für #include Files bei einer IDE in einem 
Popup-Dialog zwei oder drei Ebenen tief verschachtelt eintragen kann. 
Ich finde das umständlich (umständlicher als die CFLAGS Variable im 
Makefile zu setzen jedenfalls). YMMV.

von Bauform B. (bauformb)


Bewertung
0 lesenswert
nicht lesenswert
pegel schrieb:
> Für CubeIDE stehen die Register in der stm32f103xb.h

Das halte ich für ein Gerücht, weil:

Jonas B. schrieb:
> Mein µC ist der STM32 by ST NUCLEO-L432KC.

Und dabei bin ich auch skeptisch:

Jonas B. schrieb:
> Ich wollte stm32f10x_map.h inkludieren

von pegel (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gut, alternativ in der:

stm32l432xx.h

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.