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
1 | -I /home/jogger/eclipse-workspace/Testprojekt |
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.
Bist Du sicher, dass in Deinem obigen Ausschnitt alle Parameter durch ein Leerzeichen getrennt sind? Hänge doch mal das Makefile an.
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.
HSE_VALUE=8000000 STM32F4XX USE_STDPERIPH_DRIVER USE_STM32F4_DISCOVERY STM32F407VG In der CoIDE mache ich diese globalen Symbole bekannt.
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.
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.