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
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.
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.
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.
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.
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 .
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.
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
Hallo, alles klar, vielen Dank für die Antworten und Tipps. Ich konnte alle Headerfiles finden und hat alles geklappt. Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.