Hallo @all, ich habe die Toolchain von: http://fun-tech.se/stm32/OpenOCD/index.php für den STM32 erfolgreich installiert und alles läuft soweit. eclipse, gdb und auch das Blinky Beispiel funktionieren. Als nächstes wollte ich die Standard Peripheral Library v3.5.0 von ST einbinden. Dazu bin ich wie hier beschrieben vorgegangen: http://www.embedds.com/st32mvldiscovery-project-template-for-gcc/ Ganz unten auf der Seite gibt es das Ganze noch mal als zip Datei. Das Problem kommt schon beim compilieren der main.c in der die includes nicht gefunden werden. Im makefile sind meiner Meinung nach alle Pfade für -I angegeben. Hab auch schon einiges versucht z.B. volle Pfadangabe, prüfen der TAB und Leerzeichen im Makefile usw. Leider habe ich noch keinen Erfolg dabei gehabt. Hat schon mal jemand dieses Template-Projekt zum laufen gebracht oder vielleicht ein ähnliches? viele Grüsse
noch vergessen: die .h Dateien und Libraries sind natürlich an der richtigen Stelle installiert :-)
Hi Pegel Und was ist mit TAB und Leerzeichen in den Pfadnamen? Nützlich wäre auch gewesen, Du hättest die Fehlermeldungen geliefert. ZiZi.
Hallo ZiZi, die neue Fehlermeldung ist: arm-none-eabi-gcc -c -o main.o main.c main.c:22:23: schwerwiegender Fehler: stm32f10x.h: Datei oder Verzeichnis nicht gefunden Kompilierung beendet. make: *** [main.o] Fehler 1 Neu deswegen weil ich inzwischen die Toolchain von: http://fun-tech.se/stm32/OpenOCD/index.php noch einmal mit gcc-4.6.1 und den jeweils neuesten Tools erstellt habe. Durch ein zusätzliches "make list" lasse ich mir auch die Pfad-Variablen ausgeben: list: @echo -e "uincdir **************************************" @echo $(UINCDIR) @echo -e "incdir ***************************************" @echo $(INCDIR) ls $(UINCDIR) Das passt soweit auch. Aber leider bleibt der Fehler :-(
In dieser Zeile:
> arm-none-eabi-gcc -c -o main.o main.c
fehlen die include-Direktiven (-I Option). Oder woher soll der Compiler
wissen, wo er die Header herholen soll?
In der/den Kommandozeile(n) für den Compiler muss so was wie
arm-none-eabi-gcc -I $(INCDIR)
stehen.
Das von Dir oben angegebene Beispiel von embedds.com hat bei mir
übrigens out-of-the-box
funktioniert.
OpenOCD steht mit Deinem Prob in keinem Zush..
ZiZi.
ZiZi. schrieb: > In dieser Zeile: > >> arm-none-eabi-gcc -c -o main.o main.c > > fehlen die include-Direktiven (-I Option). Oder woher soll der Compiler > wissen, wo er die Header herholen soll? Genau das verstehe ich nicht. Sollte nicht im Makefile Zeile 154 genau das gemacht werden? Das Makefile hier von der Seite ist das aus der zip: http://www.embedds.com/st32mvldiscovery-project-template-for-gcc/
Ich habe gerade die originale zip Datei noch einmal runtergeladen, entpackt und make ausgeführt. Meldung: .dep/crt.o.d:1: *** Mehrfache Target-Muster. Schluss. hattest Du das auch? wenn ich dann .dep lösche und make ausführe hab ich wieder den vorherigen Fehler :-(
Hallo pegel,
>.dep/crt.o.d:1: *** Mehrfache Target-Muster. Schluss.
Hatte ich jetzt auch.
Inhalt von .dep löschen. das sind dependency Files, die automatisch neu
generiert werden.
Meine Aussage von gestern bez. "funktioniert out-of-the-box"
muss ich korrigieren. Ich habe auch mit einem anderen template Projekt
gespielt, bei der 'make' funktioniert hat. Bei einem erneuten
Versuch heute hatte ich die selben Probleme Wie Du.
Und dass stm32f10x.h nicht gefunden wird, liegt an
einem Gross-/Kleinschreibungsproblem in
STM32vldiscovery.h (Zeile 30), wo STM32f10x.h inkludiert wird
(statt stm32f10x.h).
Spielt bei einem Wind*ws Filesystem i.d.R keine Rolle.
Unix Filesysteme sind aber case-sensitiv.
Offensichtlich benutzt Du Linux.
HDH,
ZiZi.
Hallo ZiZi, es freut mich das Du noch dabei bist ;-) Du hast Recht, ich nutze Linux für die Toolchain. Hab auch gleich probiert das include in der STM32vldiscovery.h zu korrigieren was aber leider noch nicht den Erfolg brachte. Darauf hin habe ich alle Dateien auf ähnliche Probleme untersucht aber keine weiteren Groß/Kleinschreibungs Fehler gefunden. Weiterhin habe ich auch noch ein anderes Template gefunden: http://www.micromouseonline.com/blog/2009/10/19/another-stm32-project-template und siehe da es funktioniert! Dann kann ich schon mal ausschließen das das Problem in meiner Toolchain liegt. Da Du mir den Fehler bestätigt hast, werde ich als nächstes mal versuchen die beiden Makefile zu vergleichen. Ich bin immer noch der Meinung das da der Fehler liegt. MfG pegel
Trotz weiterer Fehlermeldungen bin ich jetzt einen Schritt weiter. http://www.embedds.com/st32mvldiscovery-project-template-for-gcc/ im Makefile Zeilen: 154 157 160 163 fehlen jeweils nach dem % der . z.B.: aus %o : %c wird %.o : %.c usw.
Geschafft! Das war das Problem. Die Warnungen ergaben sich auch dem Parameter: -Wstrict-prototype Ist jetzt auch gelöst. Dank an ZiZi
Hallo Pegel, >im Makefile Zeilen: 154 157 160 163 >fehlen jeweils nach dem % der . >z.B.: aus >%o : %c >wird >%.o : %.c >usw. Das war bei mir nicht notwendig. rm -rf .dep/ und STM32 > stm32x in Libraries/Utilities/STM32vldiscovery.h war bei mir alles. Der build läuft ohne jegliche Warnungen durch. Compiler: $ arm-none-eabi-gcc -v Using built-in specs. COLLECT_GCC=arm-none-eabi-gcc COLLECT_LTO_WRAPPER=/usr/local/arm-2011.03/bin/../libexec/gcc/arm-none-e abi/4.5.2/lto-wrapper Target: arm-none-eabi Configured with: /scratch/janisjo/arm-eabi-lite/src/gcc-4.5-2011.03/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-eabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} -D__CS_SOURCERYGXX_MAJ__=2011 -D__CS_SOURCERYGXX_MIN__=3 -D__CS_SOURCERYGXX_REV__=42 %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --disable-shared --enable-lto --with-newlib --with-pkgversion='Sourcery G++ Lite 2011.03-42' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-headers=yes --with-sysroot=/opt/codesourcery/arm-none-eabi --with-build-sysroot=/scratch/janisjo/arm-eabi-lite/install/arm-none-eab i --with-gmp=/scratch/janisjo/arm-eabi-lite/obj/host-libs-2011.03-42-arm-n one-eabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/janisjo/arm-eabi-lite/obj/host-libs-2011.03-42-arm- none-eabi-i686-pc-linux-gnu/usr --with-mpc=/scratch/janisjo/arm-eabi-lite/obj/host-libs-2011.03-42-arm-n one-eabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/janisjo/arm-eabi-lite/obj/host-libs-2011.03-42-arm-n one-eabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/janisjo/arm-eabi-lite/obj/host-libs-2011.03-42-arm -none-eabi-i686-pc-linux-gnu/usr --with-libelf=/scratch/janisjo/arm-eabi-lite/obj/host-libs-2011.03-42-ar m-none-eabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/janisjo/arm-eabi-lite/install/arm-none- eabi/bin --with-build-time-tools=/scratch/janisjo/arm-eabi-lite/install/arm-none- eabi/bin Thread model: single gcc version 4.5.2 (Sourcery G++ Lite 2011.03-42) (Der "." in Filenamen hat bei Unix Systemen keine spezielle Bedeutung, er ist ein Zeichen wie jedes andere). ZiZi.
ZiZi schrieb: > Das war bei mir nicht notwendig. Eigenartig. Bei mit geht es nicht ohne. Aber hauptsache es läuft jetzt. Ich habe auch auf der original Seite einen Kommentar hinterlassen. Meine arm-none-eabi-gcc -v Ausgabe fällt etwas bescheidener aus: # arm-none-eabi-gcc -v Es werden eingebaute Spezifikationen verwendet. COLLECT_GCC=arm-none-eabi-gcc COLLECT_LTO_WRAPPER=/daten/programme/stm32-gcc-4.6.1/libexec/gcc/arm-non e-eabi/4.6.1/lto-wrapper Ziel: arm-none-eabi Konfiguriert mit: ../configure --target=arm-none-eabi --prefix=/daten/programme/stm32-gcc-4.6.1 --enable-interwork --enable-multilib --enable-languages=c,c++ --with-newlib --without-headers --disable-shared --with-gnu-as --with-float=soft --with-cpu=cortex-m3 --with-tune=cortex-m3 --with-mode=thumb --disable-libssp --with-gnu-ld Thread-Modell: single gcc-Version 4.6.1 (GCC) Jetzt kann die eigentliche Lernphase mit dem STM32 beginnen :-)
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.