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

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.