Forum: Compiler & IDEs ChibiOS mit Segger Embedded Studio


von Markus M. (adrock)


Lesenswert?

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

von Nico W. (nico_w)


Lesenswert?

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.

von Kaj (Gast)


Lesenswert?

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.

von Markus M. (adrock)


Lesenswert?

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.
von Til S. (Firma: SEGGER) (til_s)


Angehängte Dateien:

Lesenswert?

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.

von Nico W. (nico_w)


Lesenswert?

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
von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

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.

von Gerd E. (robberknight)


Lesenswert?

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.

von Gerhard (Gast)


Lesenswert?

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

von Markus M. (adrock)


Lesenswert?

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
Noch kein Account? Hier anmelden.