Kann mir jemand die wesentlichen Unterschiede zwischen einer uC-Anwendungsprogrammierung mit und ohne RTOS erklären? Aus welchem Grund macht man das eine bzw. andere?
Nur ein paar Stichworte: RTOS: Der zeitliche Ablauf einer Teilaufgabe des Gesamtprogramms entspricht dem lesbaren Ablauf im Programmcode. Mainloop: Die Aktivitäten werden statt dessen als State-Machine in Einzelteile verhackstückt und über den Quellcode verstreut. RTOS: Definierte Reaktionszeiten auf Ereignisse lassen sich in einem preemptive RTOS leicht abbilden. Insbesondere auch komplexe Reaktionen, die sich nicht so gut in Interrupt-Handler pressen lassen. Andererseits wächst der Overhead von Interrupt-Handlern. Mainloop: Reaktionszeit von Interrupts ist definiert, jedoch nicht die Reaktionszeit von dadurch ausgelösten Events in der Mainloop. RTOS: Deutlich grösserer RAM-Aufwand. Definition der Stack-Grösse der Tasks macht etwas Arbeit. RTOS: Wenn preemptive, dann gelten die Tasks gegenseitig gleichermassen als Interrupt-Handler wie als Hauptprogramm, was die beliebte Problematik rund um "volatile" und atomare Zugriffe angeht. Denkweise und Programmiertechnik daran anpassen. Saubere Programmierung mit konsequenter Modularisierung empfohlen.
Einfache Anwendungen macht man mit einer Mainloop, wo man Ereignisse, die durch Interrupts vorverarbeitet und signalisiert wurden, in Zustandsmaschinen abarbeitet. Ab einer gewissen Komplexitaet sollte man wechseln. Dh mehrere zustandsabhaengige Zustandsmaschinen pro Resource lassen die Software langsam unueberscihtlich werden. Dann ist Zeit fuer ein RTOS.
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.