STM32 Kompilierungsschwierigkeiten

OP #6208886
Lesenswert?

Hallo zusammen,
ich lese gerade das Buch "Beginning STM32" von Warren Gay und versuche 
die Beispiele (mit libopencm3) mit Cygwin unter Windows zu kompilieren - 
wie auch im Buch beschrieben.
Nun habe ich das Problem, dass obwohl der Pfad in der Makedatei 
angegeben ist, die Dateien nicht gefunden werden. Der ganze Pfad zu den 
Dateien ist:
/home/root/STM32/stm32f103c8t6/libopencm3/include/libopencm3/cm3/scb.h

Beim Kompilieren sieht man ebenfalls, dass 
-I/home/root/STM32/stm32f103c8t6/libopencm3/include angegeben wurde - 
ich habe es auch versucht die benötigten Header-Dateien in das 
Verzeichnis der Quelldateien zu kopieren und #include<datei.h> in 
#include"datei.h" zu ändern. Das funktioniert, aber es sind viel zu 
viele Dateien die ich ändern und kopieren müsste.

Was könnte hier der Fehler sein?

Danke und viele Grüße,
Scott

Hier ist die Ausgabe:
1
[~/STM32/stm32f103c8t6]
2
$ make
3
make -C rtos/libwwg
4
make[1]: Entering directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg'
5
make -w -C ./src
6
make[2]: Entering directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg/src'
7
arm-none-eabi-gcc -Os -g -std=c99 -mthumb -mcpu=cortex-m3 -msoft-float -mfix-cortex-m3-ldrd -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common -ffunction-sections -fdata-sections -I/home/root/STM32/stm32f103c8t6/libopencm3/include -I/home/root/STM32/stm32f103c8t6//rtos/libwwg/include -I./rtos -I. -MD -Wall -Wundef -DSTM32F1 -I/home/root/STM32/stm32f103c8t6/libopencm3/include -I/home/root/STM32/stm32f103c8t6//rtos/libwwg/include -o usbcdc.o -c usbcdc.c
8
usbcdc.c:7:10: fatal error: libopencm3/cm3/scb.h: No such file or directory
9
7 | #include <libopencm3/cm3/scb.h>
10
| ^~~~~~~~~~~~~~~~~~~~~~
11
compilation terminated.
12
make[2]: *** [../../../Makefile.incl:111: usbcdc.o] Error 1
13
make[2]: Leaving directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg/src'
14
make[1]: *** [Makefile:8: all] Error 2
15
make[1]: Leaving directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg'
16
make: *** [Makefile:41: libwwg] Error 2
Gast #6210240
Lesenswert?

Bist Du beim installieren in den falschen Pfad geraten?

Ich habe es mal unter Linux probiert:
1
cd ~
2
mkdir Apress
3
cd Apress/
4
git clone https://github.com/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC.git
5
cd Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/
6
git clone https://github.com/libopencm3/libopencm3.git
7
make

Damit wird alles richtig übersetzt.
Gast #6210274
Lesenswert?

Noch einmal präziser:

wenn Du ein spezielles Projekt compilieren möchtest, musst Du das in das 
makefile im Pfad "Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/" eintragen.
Dann das make auch in diesem Pfad aufrufen.

z.B.: PROJECTS = miniblink uart uarthwfc hse rtos/oled

Das compiliert dann all diese Projekte.
Nur beim "make clean" habe sie gespart, es wird nicht alles erstellte 
auch wieder gelöscht.
OP #6210923
Lesenswert?

Vielen Dank für deine Antwort.

Ich habe endlich das Problem gefunden. Es gab bei Cygwin Probleme mit 
den Dateipfaden. Damit der Compiler die Pfade findet, musste ich in der 
Makedatei statt dem Linux Pfad Format home/folder/, alle Pfade ins 
Windows Format umschreiben D:\home\folder. Warum davor manche Dateien 
gefunden wurden und andere nicht ist mir bis heute nicht klar.
#6239809
Lesenswert?

Hi Leute,

ich beschäftige mit stm32f103 und stm32f072. Reine Hobbyanwendung.
Es macht immer wieder Spaß im hohen Alter noch zu Lernen.

Diese Hardware habe ich.
Blue-pill, black-pill und NUCLEO-64 STM32F103, STM32F072.

Nur beim "make clean" habe sie gespart, es wird nicht alles erstellte
auch wieder gelöscht.
Nöö, so geht es "make clobber"

Ich habe es mal unter Linux armhf probiert:
ODROID-XU4 BS ARMBIAN

make -C rtos/libwwg
make[1]: Entering directory 
'/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/rtos/libwwg'
make -w -C ./src
make[2]: Entering directory 
'/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/rtos/libwwg/s 
rc'
arm-none-eabi-gcc -Os -g -std=c99 -mthumb -mcpu=cortex-m3 -msoft-float 
-mfix-cortex-m3-ldrd -Wextra -Wshadow -Wimplicit-function-declaration 
-Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common 
-ffunction-sections -fdata-sections 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/libopencm3/i 
nclude 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg 
/include  -I./rtos -I.  -MD -Wall -Wundef -DSTM32F1 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/libopencm3/i 
nclude 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg 
/include   -o getline.o -c getline.c
getline.c:5:20: fatal error: memory.h: No such file or directory
 #include <memory.h>
                    ^
compilation terminated.

Die Datei memory.h fehlt. Ich in der Datei getline.c die //#include 
"memory.h"
auskommentiert. Muss noch geprüft werden.

@ Scott F.
Wie ist das Buch nach den ersten Übungen.
Ich möchte es vielleicht kaufen.

Schau mal im Pfad
/home/user/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg/i 
nclude
hier müsste memory.h sein?

Schöne Grüße vom Rhein
Gruß
Kurt
#6239878
Lesenswert?

Fehler gefunden.
When compiling and you get the error message getline.c:5:20: fatal 
error: memory.h: No such file or directory, at the line where it is 
coded as "#include <memory.h>", you may have to change that to "#include 
<string.h>" instead. The compiler folks have sometimes moved the header 
file.


Nachtrag:

#include <string.h> anstatt #include <memory.h> und es funktioniert.

Gruß
Kurt

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