Hallo!
obwohl für uns die AVRs im Moment locker ausreichen, möchte ich mich
nebenbei in die ARM-Welt einarbeiten. Man weiss ja nie, was das nächste
Projekt für Anforderungen stellt und ich möchte dann vorbereitet sein.
Außerdem gefällt es mir nicht, von einem Chiphersteller abhängig zu sein
...
Also habe ich mir nun für erste Tests das STM32F4xx-Discovery-Kit
bestellt und nach
http://www.mikrocontroller.net/articles/STM32F4-Discovery
Eclipse mit CDT und ARM-Plugin sowie die CodeSourcery Werkzeugkette und
stlink installiert (unter Debian).
Nun wollte ich heute morgen das LED-Blink-Beispiel aus dem Tutorial
übersetzen, aber der Compiler weigert sich standhaft, die Quelltexte der
STM32-Standardbibliothek zu übersetzen.
In der stm32f4xx.h findet sich ja Folgendes,
#ifdef USE_STDPERIPH_DRIVER
#include "stm32f4xx_conf.h"
#endif /* USE_STDPERIPH_DRIVER */
um die von mir freigegebenen Header-Dateien einzubinden.
Das Problem: er weigert sich standhaft, meine stm32f4xx_conf.h zu
finden, obwohl sich diese im Projektverzeichnis befindet.
Ich habe nun sogar schon mit -iquote das Projektverzeichnis explizit
angegeben (sollte ja eigentlich nicht nötig sein, oder?), aber keine
Chance:
arm-none-eabi-gcc -DUSE_STDPERIPH_DRIVER -DUSE_STM32F4_DISCOVERY
-DSTM32F4XX -DHSE_VALUE=8000000
-I/usr/local/stm32/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/CMSIS/In
clude
-I/usr/local/stm32/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/CMSIS/De
vice/ST/STM32F4xx/Include
-I/usr/local/stm32/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/STM32F4x
x_StdPeriph_Driver/inc -I"/home/jogger/eclipse-workspace/Testprojekt"
-O0 -Wall -Wa,-adhlns="StdPeriph/stm32f4xx_adc.o.lst" -c
-fmessage-length=0 -iquote /home/jogger/eclipse-workspace/Testprojekt
-MMD -MP -MF"StdPeriph/stm32f4xx_adc.d" -MT"StdPeriph/stm32f4xx_adc.d"
-mcpu=cortex-m4 -mthumb -g3 -gdwarf-2 -o "StdPeriph/stm32f4xx_adc.o"
"/usr/local/stm32/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/STM32F4xx
_StdPeriph_Driver/src/stm32f4xx_adc.c"
In file included from
/usr/local/stm32/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/STM32F4xx_
StdPeriph_Driver/inc/stm32f4xx_adc.h:38:0,
from
/usr/local/stm32/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/STM32F4xx_
StdPeriph_Driver/src/stm32f4xx_adc.c:104:
/usr/local/stm32/STM32F4xx_DSP_StdPeriph_Lib_V1.0.1/Libraries/CMSIS/Devi
ce/ST/STM32F4xx/Include/stm32f4xx.h:6968:30: fatal error:
stm32f4xx_conf.h: No such file or directory
compilation terminated.
Irgendwie habe ich wohl Tomaten auf den Augen, denn das ist ja
eigentlich ein lösbares Problem - dachte ich zumindest bisher ;-)
Wo liegt mein Fehler?
Chris D.
Chris D. schrieb:> Das Problem: er weigert sich standhaft, meine stm32f4xx_conf.h zu> finden, obwohl sich diese im Projektverzeichnis befindet.
In welchem Verzeichnis liegt die Datei? Was sag "ls -l" in diesem
Verzeichnis? Groß-/Kleinschreibung?
Chris D. schrieb:> -I"/home/jogger/eclipse-workspace/Testprojekt"
Probiere mal
Roland H. schrieb:> Chris D. schrieb:>> Das Problem: er weigert sich standhaft, meine stm32f4xx_conf.h zu>> finden, obwohl sich diese im Projektverzeichnis befindet.>> In welchem Verzeichnis liegt die Datei? Was sag "ls -l" in diesem> Verzeichnis? Groß-/Kleinschreibung?
Welche Datei? Die stm32f4xx_conf.h liegt im aktuellen
Projektverzeichnis:
jogger@fantast:~/eclipse-workspace/Testprojekt> ls -l
drwxr-xr-x 3 jogger jogger 4096 Jun 9 11:13 Debug
-rw-r--r-- 1 jogger jogger 1402 Jun 8 14:55 main.c
-rw-r--r-- 1 jogger jogger 24159 Jun 8 13:38 startup_stm32f4xx.S
-rw-r--r-- 1 jogger jogger 1229 Jun 8 13:15 stm32f4xx_conf.h
-rw-r--r-- 1 jogger jogger 5033 Jun 8 13:34 stm32_flash.ld
-rw-r--r-- 1 jogger jogger 21856 Jun 8 13:35 system_stm32f4xx.c
In diesem Verzeichnis wird der Befehl auch ausgeführt.
Groß- und Kleinschreibung habe ich auch schon geprüft. Das kann aber
eigentlich auch nicht das Problem sein, da ich die Include-Verzeichnisse
in Eclipse per Datei-Dialog zusammengeklickt habe.
> Chris D. schrieb:>> -I"/home/jogger/eclipse-workspace/Testprojekt">> Probiere mal>>
1
> -I /home/jogger/eclipse-workspace/Testprojekt
2
>
Das hat erwartungsgemäß leider nichts geändert :-/
Gibt es vielleicht irgendwelche Konfigurationsdateien für den
arm-none-eabi-gcc, die dazwischenfunken? Aber eigentlich sollte man ja
eh per -I alle Voreinstellungen überschreiben können.
Chris D.
Roland H. schrieb:> Bist Du sicher, dass in Deinem obigen Ausschnitt alle Parameter durch> ein Leerzeichen getrennt sind?
Ja, ziemlich - ich habe den Befehl eben nochmal Stück für Stück
zusammengesetzt - nix :-(
> Hänge doch mal das Makefile an.
Ich bin bei Eclipse ziemlicher Neuling. Da die Makefiles automatisch
generiert werden, vermute ich mal, dass sie sich alle im
Debug-Verzeichnis befinden. Ich habe das mal gezippt angehängt.
Auf den ersten Blick sehe ich da nichts gravierend Falsches - Sources
passen, Objektdateien auch ...
Ich muss zugeben: ich bin ziemlich ratlos
Chris D.
Hi,
Das vergnügen mit einrichten von Eclipse für ARM habe ich auch schon
hinter mir.
wenn es für Windoof 64bit sein dürfte, könnte ich Dir die ganze Arbeit
ersparen und ne fertige Eclipse Lösung bieten.
Dann müsstest du lediglich, den µC-Typ, HSE_VALUE, StartUp-File und
linker script anpassen.
Wenn du willst, schicke ich Dir die IDE?!?
Gruß
Hallo Jens,
danke für das Angebot, aber wir haben hier nur Linux (und WinXP 32-Bit
in einer VBox).
Klar, das Einrichten dauert etwas, aber: prinzipiell sehe ich in der
Befehlsausgabe des Makefiles auch keinen Fehler - Eclipse scheint also
das zu machen, was es soll: Include-Pfade stimmen, Sourcen scheinen zu
stimmen, Aufruf stimmt - nur diese simple Header-Datei im selben
Verzeichnis wird vom Compiler offenbar nicht erkannt.
Chris D.
Arggghh ...
Ich hab den Fehler gefunden.
Ich hatte mir gedacht: "Verdammtnochmal, dann setzt Du das jetzt mal
direkt in die Headerdatei der StdLibrary ein:
#ifdef USE_STDPERIPH_DRIVER
#include "/home/jogger/eclipse-workspace/Testprojekt/stm32f4xx_conf.h"
#endif /* USE_STDPERIPH_DRIVER */
Ergebnis wieder:
fatal error:
/home/jogger/eclipse-workspace/Testprojekt/stm32f4xx_conf.h: No such
file or directory
compilation terminated.
Gedacht: "DAS ... KANN ... NICHT ... SEIN!"
Also habe ich versucht, den Dateinamen einfach mal mit "ls -al ... "
anzeigen zu lassen - und wie man das in der Kommandozeile der Bash so
macht, mit Tab-Pfadergänzung.
Das Ergebnis sieht man im angehängten Screenshot! (mein "NEIIIIIN!"
glücklicherweise nicht ;-)
Offenbar waren hinter dem sichtbaren Dateinamen "stm32f4xx_conf.h" noch
zwei Leerzeichen, die mit dem normalen "ls -al" nicht auffallen ...
Dateinamen korrigiert ... Compilation läuft wunderbar durch
Ich hatte schon viel, aber DAS hatte ich auch noch nie.
Wahrscheinlich hatte ich mit der Maus etwas in der Bash markiert und die
Leerzeichen dann mitgenommen.
Was gibt es doch für Scheißfehler ... :-}
Schönes WE noch :-)
Chris D.
Hatte gerade den selben Fehler. Bei mir lags daran dass die libs im
Ordner "STM32 libraries" abgelegt waren. Offenbar mag der compiler auch
keine Leerzeichen im Pfad.