Forum: Compiler & IDEs Erfahrungen mit ChibiOS & ChibiStudio auf STM32Fxxx


von Peter S. (psavr)


Lesenswert?

Hallo allerseits

Wer hat Erfahrungen mit ChibiOS & ChibiStudio auf STM32Fxxx im Vergleich 
zu anderen IDEs und RTOS (z.B. FreeRtos)

http://www.chibios.org/dokuwiki/doku.php

ChibiStudio scheint ein sehr gut konfiguriertes und aufgeräumtes 
Sorglos-Eclipse-Packet für ARM-CPUs zu sein und ChibiOS ein performantes 
RTOS mit guter HAL-Abstraktion und Treiberunterstützung (speziell für 
STM32Fxxx).

Wer verwendet ChibiOs+Studio und wie sind die Erfahrungen?

von Ben W. (ben_w)


Lesenswert?

habe mal kurz mit ChibiOS rumgespielt und fand es sehr gut.
Vorallem hat mich der tickless mode interessiert.
einziger wermutstropfen, man sollte versuchen sich an die ganzen 
guidelines und APIs zu halten, wenn nötig die vorhanden erweitern und 
nicht ein komplett anderes, eigenes Süppchen kochen.

Das studio hatte ich nicht wirklich in Verwendung.

von Gerd E. (robberknight)


Lesenswert?

ChibiOS in seinen verschiedenen Ausprägungen verwende ich gerne. 
Funktioniert zuverlässig, das HAL macht wirklich HAL und heißt nicht nur 
so, die verschiedenen RTOS-Funktionen wie Threads, Locks, Timer, 
Messages,... haben mir geboten was ich gesucht hab und haben 
funktioniert wie sie dokumentiert waren.

Das Studio habe ich mir nicht angeschaut.

Ich würde die Entscheidung RTOS und IDE unabhängig voneinander treffen. 
RTOS halte ich dabei für die wesentlich wichtigere Entscheidung.

Wenn eine IDE nicht übergriffig ist und Dinge tut, die sie nicht sollte 
(wie z.B. den Buildprozess monopolisieren), dann kann man die auch ohne 
größeren Stress später noch wechseln wenn man was besseres findet.

Lies Dir als Einführung das ChibiOS-Buch durch, dort werden die 
verschiedenen Konzepte erklärt.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Peter S. schrieb:
> ChibiStudio scheint ein sehr gut konfiguriertes und aufgeräumtes
> Sorglos-Eclipse-Packet für ARM-CPUs zu sein

wenn es hautsächlich um ein Sorglos Packet geht kann ich noch mbed-os 
empfahlen. Für die dickeren STM32F4 das mbed-os 5, das enthält Keil 
RTX5. Für die kleineren F1 (oder auch Cortex-M von anderen Herstellern) 
ist das ältere mbed 2 besser weil sparsamer, das RTOS kann man da aber 
auch einfach hinzufügen.
Die mbed Implementierung für die STM baut auch auf HAL/LL, Komponenten 
die nicht im OS enthalten sind kann man sich aus dem HAL selber 
dazubauen.

von Besucher (Gast)


Lesenswert?

ChibiOS hat mir sehr gut gefallen, aber im Original-Zustand ist es nicht 
zu gebrauchen, weil mehrere while(1)-Schleifen drin sind. Einen Teil 
kann man umdefinieren, weil __attribute__((weak)) verwendet wird, aber 
nicht alle. Man müsste also die Quellen ändern, aber das möchte man ja 
vermeiden (evt. auch aus Lizenzgründen). Die mehrfach geschachtelten 
#defines machen es auch nicht einfacher. ChibiOS scheint zum größeren 
Teil aus #defines zu bestehen :(

Aus meinem Merkzettel von damals (es mag besser geworden sein):
vector table:
    ChibiOS füllt diese auf dem Umweg über viele #defines und den Rest
    mit _unhandled_exception(), was eine Endlos-Schleife ist. Die 
Funktion
    lässt sich im Original nicht ersetzen. Und in einer eigenen vector
    table muss man die ChibiOS-Funktionen von Hand eintragen.
    Beides ist nicht akzeptabel. Deshalb müsste der Loader die Adressen
    von _unhandled_exception() durch unseren HardFaultHandler() 
ersetzen.
    Die Lösung in exception.c ist auch nicht so toll: Wenn eine ChibiOS-
    Funktion dazu kommt, meldet der Linker ein doppelt definiertes 
Symbol.
    Wenn aber eine Funktion wegfällt, wird stillschweigend wieder die
    _unhandled_exception() eingetragen.

von Peter (Gast)


Lesenswert?

MBED OS ist sicher interessant und umfangreich. So wie ich es sehe kann 
man sich ein Projekt-Gerüst mit den gewünschten Libraries in der 
Online-IDE zusammenstellen, ausprobieren und dann exportieren. Auf die 
Dauer ist die Online-IDE etwas fummelig.

Aber bietet MBED auch eine IDE als lokale Installation an? (Vorzugswese 
für Windows und Linux)

von Johannes S. (Gast)


Lesenswert?

Peter schrieb:
> Aber bietet MBED auch eine IDE als lokale Installation an? (Vorzugswese
> für Windows und Linux)

ja,
das geht mit dem mbed-cli (command line interface). Für Windows gibt es 
einen Installer der die Toolchain, Python und nötige Python Libs in 
einem Rutsch installiert. Für Linux muss man sich durch die Anleitung 
hangeln, ist aber auch nicht kompliziert weil nur Standard Pakete 
benutzt werden.

Dann startet man z.B. mit dem mbed-os-blinky (für die fetteren F4/F7), 
https://github.com/ARMmbed/mbed-os-example-blinky auf den lokalen 
Rechner clonen. Der ganze Ablauf ist auf der blinky Seite beschrieben:
1
mbed import mbed-os-example-blinky
2
cd mbed-os-example-blinky
3
mbed compile -t GCC_ARM -m DISCO_F407VG

Der import holt den code aus dem git oder mercurial repo und fügt die 
Library mbde-os hinzu. Das sind einige MegaBytes weil die immer für alle 
Targets ist und der Download dauert etwas.
Dann compiliert man z.B. den Code für ein STM Dicovery F407 oder anderes 
Target, eine Liste bekommt man wenn man für -m etwas ungültiges wie XX 
angibt. Auf der mbed Site unter Hardware sind nur die offiziellen 'mbed 
enabled' boards gelistet, aber man kann per mbed-cli auch andere 
benuzten. Z.B. das beliebte Bluepill mit dem F103. Das läuft aber besser 
mit dem mbed2, ein Projekt kann man so erstellen:
1
md myProject
2
cd myProject
3
mbed new . --mbedlib
4
mbed add https://os.mbed.com/users/mbed_official/code/mbed-dev/
5
mbed compile -m BLUEPILL_F103C8 -t GCC_ARM

per mbed export kann man dann eine Projektconfig für seine Lieblings IDE 
oder für ein makefile schreiben wenn man nicht mit 'mbed compile' 
arbeiten möchte.

Ich wollte hierzu immer mal einen Artikel ins Wiki schreiben, vielleicht 
fange ich am WE mal an.

von Johannes S. (Gast)


Lesenswert?

um den Thread nicht zu kapern habe ich zum Thema mbed einen eigenen 
Thread aufgemacht, daher bitte den vorherigen Post löschen.

Zum Thema mbed geht es hier weiter: 
Beitrag "mbed - oder es muss nicht immer Arduino sein"

von Nico W. (nico_w)


Lesenswert?

Ich arbeite noch nicht allzu lange mit ChibiOS. Das ganze System 
dahinter gefällt mir allerdings sehr.


Vor allem das interne Debugsystem, was man während der 
Entwicklung/Debuggen scharf schaltet, kann man gut auf eigenen Code 
erweitern.


Basic Treiber wie ein ChibiOS-printf können problemlos in eigene Treiber 
erweitert werden.


Hilfreich bei Chibios ist auf jeden Fall ein Hardware-Debugger, weil 
vieles zur Laufzeit stoppt bzw. ausgewertet wird.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Eine weitere Alternative wäre noch embOS und Embedded Studio:
https://www.segger.com/products/rtos/embos/
https://www.segger.com/products/development-tools/embedded-studio/

Vorteil ist, dass man nicht auf Cortex-M beschränkt ist sondern auch 
Support für z.B. RISC-V hat. Wer weiß schon, was man in 3 Jahren 
einsetzen möchte.

von Christopher J. (christopher_j23)


Lesenswert?

Til S. schrieb:
> Vorteil ist, dass man nicht auf Cortex-M beschränkt ist sondern auch
> Support für z.B. RISC-V hat.

ChibiOS unterstützt auch andere Architekturen wie z.B. Cortex-A, PowerPC 
oder AVR.

Ein Vorteil von ChibiOS gegenüber embOS sehe ich hingegen in der Lizenz. 
ChibiOS ist dual lizenziert GPLv3 oder kommerziell, wobei es für 
letztere Variante in gewissem Umfang auch kostenlose Kontingente gibt.

Hier ging es aber auch nicht um embOS sondern um ChibiOS.

Bezüglich der IDE, also ChibiStudio stimme ich meinen Vorrednern zu. 
Kann man nutzen, muss man aber nicht. OS und HAL sind grundsätzlich 
unabhängig von jeglicher IDE.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Christopher J. schrieb:
> ChibiOS unterstützt auch andere Architekturen wie z.B. Cortex-A, PowerPC
> oder AVR.
Danke für den Hinweis, das kannte ich noch gar nicht. Wobei bei AVR 
steht "Semi-official status, it will likely become official soon.".

Christopher J. schrieb:
> Ein Vorteil von ChibiOS gegenüber embOS sehe ich hingegen in der Lizenz.
> ChibiOS ist dual lizenziert GPLv3 oder kommerziell, wobei es für
> letztere Variante in gewissem Umfang auch kostenlose Kontingente gibt.

Deswegen hatte ich das auch nur erwähnt. Ist aber bei embOS nicht 
anders. Seit Ende letzten Jahres gibt es keine technischen Limitierungen 
mehr in der freien Version und es kann ganz offiziell für nicht 
kommerzielle Projekte kostenlos eingesetzt werden. Für kommerzielle 
Projekte gibt es natürlich die normalen Lizenzen.
Und den Support gibt es vom embOS Team für beides nicht nur in einem 
gewissen Umfang ;-).


Ich finde ChibiOS aber definitiv ein interessantes Projekt für den 
Hobbybereich! Ich werde nur in diesem Leben kein Fan mehr von Eclipse 
;-).

von Gerd E. (robberknight)


Lesenswert?

Til S. schrieb:
>> Ein Vorteil von ChibiOS gegenüber embOS sehe ich hingegen in der Lizenz.
>> ChibiOS ist dual lizenziert GPLv3 oder kommerziell, wobei es für
>> letztere Variante in gewissem Umfang auch kostenlose Kontingente gibt.
>
> Deswegen hatte ich das auch nur erwähnt. Ist aber bei embOS nicht
> anders. Seit Ende letzten Jahres gibt es keine technischen Limitierungen
> mehr in der freien Version und es kann ganz offiziell für nicht
> kommerzielle Projekte kostenlos eingesetzt werden.

Also hier https://www.segger.com/products/rtos/embos/
unter "embOS RTOS—Trial, Library and Source Code" ist die kostenlose 
Version als "Trial" gekennzeichnet. Und da fehlt ein ganz wichtiges 
Häkchen bei "embOS source code". Keinen Source zu haben ist ein ganz 
wesentliche Einschränkung, da ich dann z.B. nicht mehr alles debuggen 
kann und bei Bedarf auch keine Anpassungen, Erweiterungen oder eigene 
Bugfixes mehr vornehmen kann.

Außerdem ist natürlich nur "non-commercial use" auch eine massive 
Einschränkung. Projekte mit kommerziell verkaufter Hardware aber Open 
Source Firmware fallen damit raus.

Daher finde ich den Lizenzvergleich zwischen der Segger Trial und 
ChibiOS GPL oder Apache ziemlich weit hergeholt.

Hier sind zum Vergleich mal die License-Details von ChibiOS:
http://www.chibios.org/dokuwiki/doku.php?id=chibios:licensing:start

> Ich werde nur in diesem Leben kein Fan mehr von Eclipse

Ein RTOS ist (hoffentlich) von einer IDE unabhängig und hat daher nichts 
damit zu tun ob Du Fan von Eclipse bist oder nicht.

von Nico W. (nico_w)


Lesenswert?

Gerd E. schrieb:
> Ein RTOS ist (hoffentlich) von einer IDE unabhängig und hat daher nichts
> damit zu tun ob Du Fan von Eclipse bist oder nicht.


Zumindest bei ChibiOS. Kenne embOS nicht.


Nur für das Debuggen nehme ich Eclipse mit OpenOCD. Ist schön bequem. 
Aber auch nicht das ChibiStudio. Gibt aktuell leider keine Version für 
Linux und hatte auch noch keine Zeit/Lust mich damit auseinander zu 
setzen.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Gerd E. schrieb:
> Also hier https://www.segger.com/products/rtos/embos/
> unter "embOS RTOS—Trial, Library and Source Code" ist die kostenlose
> Version als "Trial" gekennzeichnet.

Ja, richtig, wir hätten sie auch "Hugo" oder "Berta" nennen können aber 
historisch gesehen war die Version nur für die Evaluierung gedacht, 
daher "Trial". Ich bin aber offen für Namensvorschläge ;-).


Gerd E. schrieb:
> Und da fehlt ein ganz wichtiges
> Häkchen bei "embOS source code". Keinen Source zu haben ist ein ganz
> wesentliche Einschränkung, da ich dann z.B. nicht mehr alles debuggen
> kann und bei Bedarf auch keine Anpassungen, Erweiterungen oder eigene
> Bugfixes mehr vornehmen kann.

Die Dateien, die du im Source Code brauchst, um Anpassungen an Hardware 
zu machen, sind natürlich als Source Code enthalten.

Ich gebe dir soweit recht, das RTOS Source Code nice to have ist aber es 
ist keine wesentliche Einschränkung. Du sollst ja auch nicht das RTOS 
debuggen oder Bugfixe vornehmen. In dem unwahrscheinlichen Fall, das du 
tatsächlich ein Problem feststellst kannst du dich einfach bei uns 
melden und wir kümmern uns um alles weitere noch am gleichen Tag. Die 
Alternative heißt man hat wie bei ChibiOS oder FreeRTOS den Source Code 
und muss selber Bugfixe vornehmen oder darauf warten, dass die Community 
sich darum kümmert.

Ich denke beides hat seine Vor- und Nachteile.


Gerd E. schrieb:
> Außerdem ist natürlich nur "non-commercial use" auch eine massive
> Einschränkung. Projekte mit kommerziell verkaufter Hardware aber Open
> Source Firmware fallen damit raus.

Stimmt, aber das ist halt nicht unserer Zielgruppe. embOS wird entweder 
von Hobbyisten oder von Firmen für kommerzielle Produkte eingesetzt. Bei 
kommerziellen Produkten geht es um die "Total cost of ownership" und da 
übersteigen die Lohnkosten sehr schnell die embOS Lizenzkosten. Und für 
Hobbyisten ist non commercial per Definition kein Problem.

Gerd E. schrieb:
>> Ich werde nur in diesem Leben kein Fan mehr von Eclipse
>
> Ein RTOS ist (hoffentlich) von einer IDE unabhängig und hat daher nichts
> damit zu tun ob Du Fan von Eclipse bist oder nicht.

Ja, klar, das war auf ChibiStudio bezogen, hat natürlich nichts mit 
ChibiOS zu tun! Sorry, hätte ich klarer schreiben sollen.

von Nico W. (nico_w)


Lesenswert?

Til S. schrieb:
> Die
> Alternative heißt man hat wie bei ChibiOS oder FreeRTOS den Source Code
> und muss selber Bugfixe vornehmen oder darauf warten, dass die Community
> sich darum kümmert.

Du versuchst gerade CHibiOS in eine Bastelecke zu schieben. Das ist es 
aber absolut nicht. Dahinter steckt sicher nicht eine Bude wie Segger. 
Aber es ist kein Community-Projekt rein aus freiwilligen.

Allerdings durch den offenen Quelltext sind Bugs sehr schnell 
ersichtlich und werden meist innerhalb von wenigen Stunden behoben.

von Johannes S. (Gast)


Lesenswert?

und FreeRTOS hat ja mittlerweile auch ein paar Jahr Entwicklungszeit 
hinter sich und das Amazon das geschluckt hat zeugt auch von Qualität. 
Wettbewerb gibt es reichlich in dem Markt, und wenn Til hier Support auf 
kurzem Dienstweg anbietet finde ich das auch gut.
Am 27.02.-01.03. ist ja wieder die embedded World in Nürnberg, wer da 
ernsthaftes Interesse hat kann sich die verschiedenen Kandidaten ja 
vorführen lassen und vergleichen.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Nico W. schrieb:
> Du versuchst gerade CHibiOS in eine Bastelecke zu schieben. Das ist es
> aber absolut nicht. Dahinter steckt sicher nicht eine Bude wie Segger.
> Aber es ist kein Community-Projekt rein aus freiwilligen.

Nö, wieso Bastlerecke? Ist doch super, dass es heutzutage so viele RTOS 
gibt, aus denen man wählen kann! Ich dachte nur, das es ein Community 
Projekt sei aber da liege ich anscheinend falsch? Ich habe auf der 
Webseite auf Anhieb nicht gefunden, wer dahinter steckt :-).

von Gerd E. (robberknight)


Lesenswert?

Til S. schrieb:
> Gerd E. schrieb:
>> Also hier https://www.segger.com/products/rtos/embos/
>> unter "embOS RTOS—Trial, Library and Source Code" ist die kostenlose
>> Version als "Trial" gekennzeichnet.
>
> Ja, richtig, wir hätten sie auch "Hugo" oder "Berta" nennen können aber
> historisch gesehen war die Version nur für die Evaluierung gedacht,
> daher "Trial". Ich bin aber offen für Namensvorschläge ;-).

Der Name wäre mir nicht so wichtig. Aber "Free" klänge dennoch besser 
als "Trial".

> Ich gebe dir soweit recht, das RTOS Source Code nice to have ist aber es
> ist keine wesentliche Einschränkung. Du sollst ja auch nicht das RTOS
> debuggen oder Bugfixe vornehmen. In dem unwahrscheinlichen Fall, das du
> tatsächlich ein Problem feststellst kannst du dich einfach bei uns
> melden und wir kümmern uns um alles weitere noch am gleichen Tag.

Bevor ich weiß ob der Bug in meinem Code ist oder im RTOS, muss ich mir 
das Ganze aber erst mal im Debugger ansehen. Und da finde ich es sehr 
sinnvoll, wenn ich da durch alles, auch die Teile des RTOS, voll 
durchsteppen kann und sofort sehe was da passiert. Damit ich da die 
Datenstrukturen und den C-Source sehe und mich nicht durch Assembler 
durchkämpfen muss, brauche ich den Source des RTOS. Alles andere ist für 
mich eine ernst zu nehmende Einschränkung.

Oft ist es auch kein klarer Bug in meinem Code oder dem des RTOS, 
sondern einfach ein nicht voll dokumentierter Randfall oder von mir 
falsch verstandene Dokumentation. Ein kurzer Blick in den Source klärt 
das normal viel schneller als jeder Support. Und das, wenns mal 
notwendig sein sollte, auch spät Abends oder am Wochenende.

> Bei
> kommerziellen Produkten geht es um die "Total cost of ownership" und da
> übersteigen die Lohnkosten sehr schnell die embOS Lizenzkosten.

Sich mit dem Support bei einem Hersteller auseinanderzusetzen kostet 
aber auch Lohnkosten.

Meine Erfahrungen bei so manchen Herstellern von Tools und Libraries 
sind da durchwachsen. Beim einen Hersteller funktioniert es gut, bei 
anderen braucht man 5x mehr Zeit sich mit dem Support rumzuschlagen und 
die von der Echtheit eines Bugs zu überzeugen als das kurz selbst zu 
fixen.

Wegen solchen Erfahrungen wird bei uns in der Firma das Angewiesen sein 
auf Support des Herstellers als deutliches Negativkriterium eingestuft. 
Und solange wir die Supportqualität eines konkreten Herstellers nicht 
kennen, das Vorhandensein von Herstellersupport auch nicht als 
deutlichen TCO-Vorteil.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Gerd E. schrieb:
> Der Name wäre mir nicht so wichtig. Aber "Free" klänge dennoch besser
> als "Trial".

Hmm...finde ich ehrlich gesagt einen guten Vorschlag! Ich werde mal 
darüber nachdenken.

Gerd E. schrieb:
> Bevor ich weiß ob der Bug in meinem Code ist oder im RTOS, muss ich mir
> das Ganze aber erst mal im Debugger ansehen. Und da finde ich es sehr
> sinnvoll, wenn ich da durch alles, auch die Teile des RTOS, voll
> durchsteppen kann und sofort sehe was da passiert.

Ja, stimmt, das kann es einfacher machen aber meine Erfahrung ist, dass 
viele Leute noch nicht einmal das Manual lesen und sich dann auch nicht 
solche Mühe machen wollen.
Wir bekommen das dann als Support-Anfragen und können sehr schnell 
antworten das dieses oder jenes in der Applikation falsch gemacht wurde. 
Aber auch solche Anfragen sind recht selten weil wir durch viel Debug 
Code alles, was man so falsch machen kann, abfangen können. Man bekommt 
dann eine Fehler-Message, die einem sagt, was man falsch gemacht hat, 
und sieht im Call Stack, wo man es falsch gemacht hat.

Gerd E. schrieb:
> Sich mit dem Support bei einem Hersteller auseinanderzusetzen kostet
> aber auch Lohnkosten.

Aber weniger als wenn man es selber fixen muss (solange der Hersteller 
vernünftigen Support macht).

> Meine Erfahrungen bei so manchen Herstellern von Tools und Libraries
> sind da durchwachsen. Beim einen Hersteller funktioniert es gut, bei
> anderen braucht man 5x mehr Zeit sich mit dem Support rumzuschlagen und
> die von der Echtheit eines Bugs zu überzeugen als das kurz selbst zu
> fixen.

Das kann ich voll bestätigen. Mit so etwas hatte ich auch schon meinen 
Spaß. Ich mag es selber nicht, wenn ich Support brauche und dann 
tagelang auf eine Antwort warten muss.
Aber gerade in dem Punkt versuchen wir uns ja zu unterscheiden und legen 
sehr viel Wert auf die Qualität des embOS Supports. Du bekommst den 
Support direkt von den embOS Entwicklern und musst dich nicht erst mit 
einem 1st Level Support rumschlagen.

Deswegen würde ich jedem, der ein RTOS evaluiert, auch immer raten sich 
nicht nur die technische Seite anzuschauen sondern auch einfach mal den 
Support zu testen. Wie schnell bekomme ich eine Antwort? Wie kompetent 
war die Antwort? usw...

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.