Forum: Mikrocontroller und Digitale Elektronik Was für Vorteile bzw Nachteile habe ich mit RTOS(freeRTOS)


von hello (Gast)


Lesenswert?

Muss ich mich dann nicht mehr um die Hardware kümmern oder wie 
funktioniert es? Bin im Moment an einem ARM Cortex-M von Atmel.

von Simon H. (simi)


Lesenswert?

hello schrieb:
> Muss ich mich dann nicht mehr um die Hardware kümmern oder wie
> funktioniert es?

Richtig. Die wird beim Download automatisch mit runtergezogen. :-)

Spass beiseite. Was Du wohl meinst, ist ein HAL (Hardware Abstraction 
Layer). Das hat aber nichts mit FreeRTOS zu tun. Den kriegst Du 
normalerweise vom Prozihersteller. Cortex-M? Dann solltest Du mal nach 
CMSIS googlen. Aber achtung: Das ist ein Reizthema! ;-) Es wurde hier 
auch schon über dessen Sinn oder Unsinn diskutiert.

FreeRTOS ist im Wesentlichen ein Scheduler. Google und Wikipedia werden 
Dir verraten, um was es da geht. Kurz gesagt: Es unterstützt Dich, wenn 
Du mehrere Tasks quasi parallel laufen lassen möchtest. Also z.B. eine 
LED blinken lassen, einmal pro Sekunde ein Display updaten, jedesmal, 
wenn eine Taste gedrückt wird, diesen Tastendruck entprellen und 
handlen, wenn über USB ein Requst kommt, den beantworten....

Stell Dir mal das Gewürge vor, wenn Du das alles irgendwie in eine 
grosse while{true}-Schleife würgen müsstest. Und das erspart Dir ein 
Scheduler.

Aber eben, das war nur eine SEHR grobe Erklärung. Auf der FreeRTOS-Seite 
hat's aber eine gute Erklärung, die sollte Dir mit diesem Start-Schubs 
nun auch helfen können.

Gruäss
Simon

von Purzel H. (hacky)


Lesenswert?

Es geht im Wesentlichen darum, wie kann man mit ein paar Duzend 
Megahertz ein paar Relais ansteuern. Wobei jedes eine eigene 
Funktionslitaet und Timing hat.

Nee. Man kann mit einer Zustandsmaschine auch unabhaengige Prozesse 
ansteuern. Mit zunehmender Komplexitaet, resp Verzahnung der Prozesse 
wird die Zustandsmaschine immer komplizierter. Ab einer gewissen 
Komplexitaet ist dann ein RTOS wieder einfacher.

von (prx) A. K. (prx)


Lesenswert?

Simon Huwyler schrieb:

> Cortex-M? Dann solltest Du mal nach
> CMSIS googlen. Aber achtung: Das ist ein Reizthema! ;-) Es wurde hier
> auch schon über dessen Sinn oder Unsinn diskutiert.

Auch die nächste CMSIS Version 3 enthält selbst fast keinen HAL. Nur für 
die Core-Peripherie wie NVIC/Systick, nicht aber für die 
herstellerspezifischen Teile. Dafür enthält sie aber aber ein RTOS.;-)

Andersrum, die HALs gibts vom Hersteller der Controller, und in diesen 
Paketen ist dann auch das CMSIS mit drin.

von Simon H. (simi)


Lesenswert?

A. K. schrieb:
> Andersrum, die HALs gibts vom Hersteller der Controller, und in diesen
> Paketen ist dann auch das CMSIS mit drin.

Das war eben der Streitpunkt. Die Idee von CMSIS war wohl, dass eben 
diese Controllerhersteller (die meinte ich mit Prozihersteller, habe 
mich ein wenig salopp ausgedrückt :-) ihre proprietäre peripherie anhand 
der CMSIS-Regeln unter einen Hut bringen sollten. Inwiefern das geklappt 
hat oder je klappen wird, steht auf einem ganz anderen Blatt. Und wurde 
in einem anderen Thread diskutiert.

A. K. schrieb:
> Dafür enthält sie aber aber ein RTOS.;-)

Echt jetzt? Da frage ich mich aber dann noch mehr, inwieweit DAS denn 
Sinn macht... Die sollten doch lieber mal das (nicht triviale) Ziel der 
wirklichen herstellerunabhängigen HAL in den Griff kriegen, bevor sie 
auf ein "ARM-Cortex-RTOS" hinzielen....? Die für einen scheduler 
interessanten Teile wurden ja eh (glücklicherweise) auf dem Cortex 
festgenagelt! Also wird jedes RTOS, das auf Atmels läuft, auch auf SMT32 
laufen. Warum jetzt da noch was zusätzliches festnageln? Wie gesagt, 
lieber dafür sorgen, dass auch Timer 3 von Atmel durch den spezifischen 
HAL gleich angesteuert werden kann wie den Timer 3 von STM32!

von (prx) A. K. (prx)


Lesenswert?

Simon Huwyler schrieb:

> Echt jetzt? Da frage ich mich aber dann noch mehr, inwieweit DAS denn
> Sinn macht...

Ja, denn ein RTOS ist beim Cortex M unabhängig von der 
Herstellerperipherie implementierbar.

> Die sollten doch lieber mal das (nicht triviale) Ziel der
> wirklichen herstellerunabhängigen HAL in den Griff kriegen, bevor sie
> auf ein "ARM-Cortex-RTOS" hinzielen....?

Dass ARM sich sich diesen Schuh nicht anzieht kann ich verstehen. Das 
gibt bloss Stunk und Zankerei. Und jede Menge Spesen für Gremientagungen 
an den schönsten Stellen der Welt. ;-)

Drin ist indes eine Definition für eine formale Spezifikation der 
existierenden Peripherie der Bausteine. Damit die Hersteller von IDEs 
ihre Debugger damit füttern können und nicht selbst jedes Bit jedes 
Registers jedes einzelnen Bausteins selbst zu Fuss einpflegen müssen.

von Simon H. (simi)


Lesenswert?

A. K. schrieb:
>> Echt jetzt? Da frage ich mich aber dann noch mehr, inwieweit DAS denn
>> Sinn macht...
>
> Ja, denn ein RTOS ist beim Cortex M unabhängig von der
> Herstellerperipherie implementierbar.

Eben. Das ist für mich also eher ein Grund GEGEN ein 
"Cortex-Betriebssystem". Denn das Ziel ist schon erreicht. FreeRTOS wird 
auf Cortex laufen. Basta. Ich brauche eben KEIN "Cortex-Betriebssystem", 
um zumindest in dieser Hinsicht hardwareunabhängig zu bleiben.

von (prx) A. K. (prx)


Lesenswert?

Ist ja gut, trink deinen Tee und beruhig dich wieder... ;-)
Zwingt dich ja niemand, dieses RTOS auch zu verwenden.

von THaala (Gast)


Lesenswert?

Der Kopf von Chibios will auf jeden Fall in diese Richtung zielen und 
sich den Vorschlägen der CMSIS anpassen. Sicher nur Nebenher - denn es 
spricht nichts dagegen mehrgleisig zu fahren.

Allerdings sehe ich den Vorteil schon - man könnte ganze 
Funktionsgruppen lauffähig gestalten wenn man die Betriebssytsem - 
Aufrufe standardisiert.

Gruß,
Thilo

von Jojo S. (Gast)


Lesenswert?

der FreeRTOS Entwickler hat sein System auch schon weitergebaut, siehe 
http://www.freertos.org/FreeRTOS-Plus/index.shtml
Da ist dann schon mehr HW Support mit drin als im reinen RTOS Scheduler. 
Wie die verschiedenen Proz.Hersteller Varianten darin gehandhabt werden 
habe ich noch nicht gesehen.
Die CMSIS enthält ja nicht viele Funktionen, darauf aufbauend habe ich 
bei NXP eine Treiber-Lib gefunden die dann auch Basisfunktionen für die 
Peripherie bereitstellt. Gefällt mir auch ganz gut, aber soweit wird der 
CMSIS Standard sicher niemals gehen...

von Peter D. (peda)


Lesenswert?

Vorteil:
Keine Task muß auf die andere Rücksicht nehmen.

Nachteile:
Keine Task nimmt auf die anderen Rücksicht.
Alles kann sich bunt durcheinander unterbrechen und in beliebiger 
Reihenfolge ausgeführt werden.
D.h. Hardware und globale Variablen können nicht mehr direkt zugegriffen 
werden, sondern nur über spezielle Funktionen. Z.B. einfach so aufs LCD 
schreiben geht nicht mehr.
Werden Sachen mehrfach gelesen, muß man sich eine Arbeitskopie anlegen. 
Ansonsten kann ne andere Task die zwischendurch ändern.
Geführchtet beim RTOS sind Deadlocks (Tasks blockieren sich 
gegenseitig), da sie schwer zu debuggen sind. Man muß also beim 
Programmkonzept deutlich mehr aufpassen.
Daß mehr CPU-Zeit und RAM benötigt wird, ist auch klar (jede Task 
braucht ihren eigenen Stack).

Es kann durchaus sein, daß ein 8Bitter mit Mainloop und Interrupts die 
Echtzeitanforderungen spielend einhält. Ein 32Bitter mit RTOS aber schon 
am Anschlag arbeitet und vielleicht sogar noch händische Optimierungen 
benötigt.


Peter

von W.S. (Gast)


Lesenswert?

hello schrieb:
> Muss ich mich dann nicht mehr um die Hardware kümmern oder wie
> funktioniert es?

Bei all den RTOS'sen, die mir bislang begegnet sind, mußt du dich nach 
wie vor selber um die Hardware kümmern - und zusätzlich dafst du dich 
auch noch um die Befindlichkeiten des RTOS kümmern. Und obendrein auch 
noch obacht geben, daß deine diversen Tasks sich nicht gegenseitig in 
die Quere kommen.

Das, was es bislang so unter dem Namen RTOS gibt, ist bei genauerem 
Hinsehen bislang immer nur ein mehr oder weniger simpler Scheduler mit 
ein bissel Semaphorenbehandlung gewesen. Ich weigere mich schlichtweg, 
so etwas ein "Operating System" bzw. Betriebssystem zu nennen. Dafür 
sind all diese Möchtegerne einfach zu wenig. Man sollte sowas besser 
"Scheduler" nennen.

Solche Scheduler machen einen erheblichen zusätzlichen Aufwand und der 
Nutzen ist bestenfalls "diskutabel".

Wenn überhaupt, dann müßte ein Betriebssystem für einen uC sehr viel 
mehr an Nutzen beinhalten als das bloße Task-Verwalten. Es müßte 
tatsächlich auch die Peripherie verwalten und sinnvoll den Tasks 
zuteilen, müßte ein wohldefiniertes API besitzen, auf das man sich beim 
Schreiben der Tasks (=Applikationen) verlassen kann und so weiter 
beinhalten. Das ist viel an Anspruch - jaja, ich weiß. Aber ohne all 
dies ist ein "Echtzeit"-Betriebssystem herzlich überflüssig - jedenfalls 
für diejenigen, die blockierungsfrei programmieren können. Wer dafür zu 
doof ist, für den so ein RTOS jedoch nützlich.

So. genug gemeckert für heute..
W.S.

von Purzel H. (hacky)


Lesenswert?

Ein RTOS ist natuerlich kein Betriebssytem. Was fehlt denn an  einem 
RTOS zu einem Betriebssystem ?
- ein Benutzerinterface, Commandline Interpreter, zB eine BASH
- eine Art Filesystem, das Programme verwaltet
- ein Loader, der Programme Lader und Starten kann

Ein RTOS hat ueblicherweise genau eine Applikation, die laeuft beim 
Booten los. Diese Applikation besteht dann aus mehrere Tasks, die 
koennen auch dynamisch gestartet werden.

Der Vorteil eines RTOS gegenueber einer Zustandsmaschine mit Interrupts 
ist die bereits integrierte Intertask Kommunikation. Deren einfachste 
Form sind Semaphoren, die dann mit Klassen auf Queues, Mailboxen und 
Events aufgebohrt werden koennen.

von dirk (Gast)


Lesenswert?

BeRTOS unterstuetzt den sam3x inkl treibern und einigen services. Hab 
drauf nen webserver laufen, implementierung war ein kinderspiel. 
Freertos ist fur mich keine option mehr, bertos auch open source

von JojoS (Gast)


Lesenswert?

Was ist denn konkret besser am BeRTOS?

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.