Makefile für STM32

OP #6401605
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
Gast #6405120
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.
Gast #6405130
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 .
#6405509
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.

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