Gast
#1083187
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?
|
Anzeige
|
Unterschiede Programmierung von uC mit/ohne RTOS
Gast
#1083187
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.
Gast
#1083342
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. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|