Hi, habe jetztt für mehrere Stunden versucht, mal ein ChibiOS HAL Test (GPIO) unter Segger Embedded Studio für einen STM32F405 zu builden, aber ich kriegs nicht hin. ChibiOS basiert auf diversen Makefiles und hat wirklich eine ziemlich verzweigte Include-Orgie. Am Ende scheitere ich momentan damit, dass angeblich bestimmte #defines nicht gesetzt sind und somit ein Test im Preprocessor fehlschlägt: (hal_lld.h) /* * HSI related checks. */ #if STM32_HSI_ENABLED #else /* !STM32_HSI_ENABLED */ ... #error "HSI not enabled, required by STM32_MCO1SEL" Dabei ist das entsprechende Symbol STM32_HSI_ENABLED sehr wohl in einem vorherigen Include definiert (und wird auch geparsed): (mcuconf.h) /* * HAL driver system settings. */ #define STM32_NO_INIT FALSE #define STM32_HSI_ENABLED TRUE Hat das jemand mit der Segger IDE schonmal zum Laufen zu bekommen? Grüße Markus
Wenn ich make mit mehreren Prozessen Aufrufe, habe ich manchmal ähnliche Effekte. Also ein make -i4 kann Fehlerfrei durchlaufen. Manchmal aber nicht. Hab noch nie im Detail drum gekümmert. Bei einem zweiten Aufruf läuft der durch. However. Vielleicht Mal make -i1 ausführen. Ansonsten ist das ChibiOS-Forum immer ein guter Anlaufpunkt für schnelle Hilfe.
Nico W. schrieb: > Wenn ich make mit mehreren Prozessen Aufrufe, habe ich manchmal ähnliche > Effekte. > > Also ein make -i4 kann Fehlerfrei durchlaufen. Manchmal aber nicht. Hab > noch nie im Detail drum gekümmert. Bei einem zweiten Aufruf läuft der > durch. Das Problem ist ganz einfach: Annahme: Es gibt zwei Dateien A und B. A soll zu einer lib gebaut werden und B soll diese lib dann benutzen. Wenn das Makefile nicht sauber geschrieben ist, dann passiert folgendes: make -j1: Datei A wird zur lib gebaut, und Datei B kann ohne Probleme compiliert werden. make -jN: N > 1 Das compilieren von Datei A und B wird gleichzeitig angestossen. Da Datei A aber noch nicht zur lib gebaut wurde, und damit die lib fehlt, schlaegt der Build von Datei B fehl. Datei A wird aber fertig zur lib gebaut. Wird der Build neugestartet funktioniert der Build jetzt, weil die lib jetzt existiert.
Habe schon mehrfach versucht alles zu löschen und build neu zu starten - kein Erfolg. Es ist auch keine Lib im eigentlichen Sinne, alle Files wurden dem Projekt in der IDE hinzugefügt (auch die fraglichen Includes). Leider kann man auch nicht einfach alle Files aus den Subdirectories stumpf dem Projekt hinzufügen, da die ganze Dateistruktur für viele verschiedene Controller gemacht ist und je nach Typ andere Files gezogen werden. Werde wohl die Originalstruktur kopieren, alle Files wegschmeißen die nicht benötigt werden, dann komplett in die IDE importieren und nochmal versuchen. Schön ist aber anders. Leider ist die Doku von ChbiOS nicht gerade toll was den Umgang mit verschiedenen IDEs angeht. Mir ist auch nicht klar, welche von den CMSIS Files wie startup.s und diverse Includes nun noch benötigt werden oder nicht?
Beitrag #5665391 wurde vom Autor gelöscht.
Markus M. schrieb: > Leider kann man auch nicht einfach alle Files aus den Subdirectories > stumpf dem Projekt hinzufügen, da die ganze Dateistruktur für viele > verschiedene Controller gemacht ist und je nach Typ andere Files gezogen > werden. Ich weiß, dass dies auf ChibiOS bezogen war aber trotzdem der Hinweis, das man in Embedded Studio rekursiv Dateien aus Unterverzeichnissen hinzufügen kann. Dann könnte man hingehen und einzelne Sachen wieder exkludieren. Vielleicht hilft das.
Bei ChibiOS kann man nicht einfach rekursiv alles zusammen klatschen. Gibt es keine Möglichkeit wie bei Eclipse ein bestehendes Makefile-Projekt zu importieren? Letztendlich ist ChibiOS genau das. Edit: Hab den Punkt mit dem exkuldieren überlesen. Ich würde es dennoch nicht so machen. Das System dahinter ist eigentlich nicht schlecht.
:
Bearbeitet durch User
Nico W. schrieb: > Gibt es keine Möglichkeit wie bei Eclipse ein bestehendes > Makefile-Projekt zu importieren? Makefiles importieren geht bei Embedded Studio leider noch nicht aber ich habe es mal den Kollegen auf die Wunschliste gesetzt.
Das Makefile-System von ChibiOS ist eigentlich recht gut gemacht, da man damit sein Projekt unabhängig von einer IDE automatisiert und reproduzierbar bauen kann. Auch das Einbinden von externen Bibliotheken oder das Aktualisieren von ChibiOS ist sehr gut möglich. Durch die Makefiles ist das alles sehr schön in einem Versionskontrollsystem pflegbar. Finde ich viel besser umgesetzt als bei so manchem anderen System. Ich würde daher nicht versuchen das Buildsystem einer IDE da mit Gewalt draufzwingen, das macht Dir nur unnötig Aufwand und Du musst wieder von vorne anfangen wenn Du auf eine neue ChibiOS-Version updaten willst. Ich kenn die Segger-IDE nicht, aber vielleicht kannst Du die irgendwie austricksen, indem Du der vorgaukelst der Aufruf von "make" sei ein Compiler, Präprozessor oder ähnliches. Halt so daß die IDE nur das make rausforkt und das make alles weitere übernimmt.
Hallo Markus, ich habe für Chibi/OS HAL ein Projekt in der IAR Workbench angelegt und das ging ziemlich problemlos. Aus meiner Sicht sinnvoll ist es: 1)die Order-Struktur von Chibi/OS zu übernehmen und in der IDE abzubilden (in Form von Foldern beim Embedded Studio) 2) in die Präprozessoreinstellungen die Pfade auf die include-Dateien einzutragen. Damit klappt das Ganze ohne große Probleme. Wie auch schon o.a. ist das Chibi/OS Support Forum sehr zu empfehlen! Gruss Gerhard
OK, danke für die Hinweise. Ja, wahrscheinlich wäre es am einfachsten, wenn man die ChibiOS Objekte mit den Makefiles übersetzt die es mitbringt unter der Verwendung des Compilers aus der IDE. Muss mal sehen ob ich das hinbekomme. Einfach die Files/Folder importieren wird nicht funktionieren, da eben Funktionen mit geichem Namen vorhanden sind, und je nach CPU-Auswahl in den original Makefiles dann entsprechend selektiert werden. Werde mal einen Blick in das Supportforum werfen.
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.