Hallo, neugierig gemacht durch häufige Beiträge, hier im Forum, über RTOS auf Mikrocontrollern würde ich mich auch gern einmal mit dem Thema beschäftigen. Bisher habe ich jedoch keinerlei Ahnung vom Thema RTOS. Den Sinn des RTOS habe ich schon begriffen. Was mir fehlt ist die Vorstellung, wie ich das Ganze realisiere. Wie muss ich zum Beispiel programmieren wenn das Programm unter einem RTOS läuft - im Gegensatz zum "nackten" C. Oder, wie binde ich das RTOS in die Programmierung ein, sprich muss ich das schon in der IDE mit einbinden? Also wirkliche Anfängerfragen. Gibt es zu dem Thema vielleicht ein gute Tutorial? Super wäre es natürlich auf Deutsch, wobei Englisch auch kein Problem ist. Nachtrag: Die von mir verwendeten µC, meist AVR oder STM32, kann ich leidlich programmieren in C unter den IDEs der Hersteller und selten auch mal Arduino.
Jürgen schrieb: > Oder, wie binde ich das RTOS in die Programmierung ein, sprich muss ich > das schon in der IDE mit einbinden? Das hängt ganz stark davon ab, was für ein RTOS zum Einsatz kommt. Es gibt RTOS-Ansätze, die aus etwas Library-Code bestehen, der zur eigentlichen Anwendung dazugelinkt wird, es gibt RTOS-Varianten, die wie z.B. Linux o.ä. Betriebssysteme arbeiten, d.h. die die einzelnen Anwendungen erst nach ihrem eigenen Start aus einem Dateisystem laden ... letzteres findet man üblicherweise nur auf "größeren" Systemen. Beim 8-Bit-AVR wird der librarybasierte Ansatz die einzige Möglichkeit sein.
:
Bearbeitet durch User
Guck mal hier: https://www.micrium.com/ Obwohl kommerziell, sehr gute Dokumentation und für nicht-kommerziellen Gebrauch frei. Es gibt auch Bücher von der Firma und Kurse. Wer professionell damit zu tun hat, weiß die Unterstützung zu schätzen. Die unterliegenden RTOS Prinzipien werden dort in sehr detaillierter Weise behandelt. Auch komplette Beispielsprojekte für STM32 gibts dort. Werbung hin oder her, man sollte sich es trotzdem anschauen. Zum lernen der Grundlagen bist Du dort richtig. Wir verwenden es in der Firma schon seit 10 Jahren mit besten Erfolg mit ARM7TDI/Cortex mit uC von NXP/ST. Wenn Du es kommerziell gebrauchen willst, wirds natürlich sehr teuer. Dann gibt es alle möglichen freien RTOSes. Mußt halt suchen und ausprobieren. Aber zum Lernen schau Dir wegen der detaillierten Grundlagen doch die Dokus von Micrium an. Du kannst Dir dort die ganzen Unterlagen und Bibliotheken herunter laden. Die haben für jede vernünftige uC eine Version. Wahrscheinlich wird sich das in ein Monster Thread und voller Widersprüche entwickeln. Billig und frei ist meistens geil. Ich habe Dich gewarnt:-)
Ein gutes RTOS für µC ist z.B. mbed-os. Das ist für Cortex-M und mit einem STM32 Nucleo oder Discovery Board kann man gut einsteigen, Startpunkt wäre hier: https://os.mbed.com/docs/mbed-os/v5.11/quick-start/offline-with-mbed-cli.html CLI ist Command line interface, da reichen aber ein paar Kommandos um ein Beispiel herunterzuladen, kompilieren und zu flashen. Es gibt auch einen Export um eine Projektdatei für eine IDE zu erzeugen, SW4STM32 oder gnuarmeclipse funktionieren bei STM ganz gut. VSCode geht auch, da ist anfangs nur etwas mehr manuelles setup nötig. Bei einem RTOS wie mbed-os startet man 'ganz normal' im main() und kann dann weitere Threads erzeugen und starten. Dazu kommen Funktionen für die Kommunikation zwischen den Threads. Wenn man in mehreren Threads auf die HW zugreift ist es wichtig das RTOS und Treiber zusammenarbeiten, das ist beim mbed-os gegeben. Auch die C/C++ Runtime muss threadsafe sein, Programme auf Cortex-M mit RTOS werden da gleich ca. 20 kB grösser weil die kleinere Newlib da nicht verwendet werden soll. Mit RTOS hat man mehr Overhead, auch weil jeder Thread seinen eigenen Stack bekommt der RAM frisst. Macht also vor allem Sinn auf grösseren µC, abe r die gibt es heute ja auch reichlich und günstig. Ein weiteres Beispiel zum Start: https://github.com/ARMmbed/mbed-os-example-thread-statistics/blob/master/main.cpp FreeRTOS ist auch gut, da gibt es ein Buch zu und die Grundlagen da lassen sich auch auf andere RTOS übertragen.
In der OpenSource Community weitverbreitet findet sich das FreeRTOS: https://www.freertos.org/. Dieses ist für alle gängige Controller verfügbar, und im Internet lassen sich haufenweise Tutorials dazu finden. Dann gäbe es da noch, eher neu und in Rust implementiert, das TockOS: https://www.tockos.org/ Zweiteres habe ich selbst noch nie ausprobiert, finde aber die Idee interessant, und werde mich demnächst mal dahinter klemmen. Rufus Τ. F. schrieb: > Das hängt ganz stark davon ab, was für ein RTOS zum Einsatz kommt. Das ist der entscheidende Punkt! Ersteres ist eine Library, zweiteres fast schon ein kompletter Kernel.
:
Bearbeitet durch User
Wenn man beim STM in CubeMx die Konfiguration zusammenklickt, dann kann man FreeRTOS "dazubuchen" und kriegt dann in dem Projekt die Dateien reingepackt und die Calls für Initialisierung und Start in die main. Wäre vlt. ein guter Anfang zum "Schnuppern".
Such dir erstmal eine Hardware aus: https://www.freertos.org/RTOS_ports.html Im schlimmsten Fall Windows :) Und dann arbeitest Du das hier ab: https://www.freertos.org/wp-content/uploads/2018/07/161204_Mastering_the_FreeRTOS_Real_Time_Kernel-A_Hands-On_Tutorial_Guide.pdf Es ist fast alles über API's (C Funktionen) geregelt. Ich würde erstmal mit einem Task anfangen (der Sinn des ganzen) und dann schwieriger werden. 2 Tasks, Queues … etc.
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.