Hi,
ich hab immer mehr davon gehört, dass es Betriebssysteme für µC gibt.
Daraufhin habe ich mich einwenig in FemtoOs eingearbeitet. Allerdings
fehlt mir immer noch eine Antwort auf die Sinnfrage.
Wozu brauche ich auf einem Mikrocontroller eine Betriebssystem und wo
steckt für mich der Mehrgewinn ?
Frisst das Betriebssystem nicht automatisch den Gewinn durch
performanceeinbußen und erhöhten Speicherbedarf wieder auf?
Ich hoffe auf eine angeregte Diskussion
Hans-Martin
@hakuspakus
und in welchem Zusammenhang steht deine Äußerung mit Betriebssystem und
uC?
Sollte das jetzt eine "lustige" Antwort auf die Einleitung "ich hab
immer mehr davon gehört" sein?
Oder zweifelst du den Nutzen eines Betriebssystems für uC grundsätzlich
an?
Oder meinst du, daß alle die sich mit uC und Betriebssystemen bekloppt
sind?
Sabbeln nur deswegen, um Worte abzusondern, ist nicht immer
sinnvoll.....
Ein µC-Betriebssystem ist dann sinnvoll, wenn man ein universell
einsetzbares Gerät haben will, das man an verschiedenste Aufgaben durch
kleine Programme anpassen kann, siehe z.B. Palm und andere Handhelds.
Man braucht dann im Bedarfsfall nicht gleich die ganze Software neu
schreiben, sondern bastelt nur ein kleines einfacheres Unterprogramm,
dem dann die komplizierteren Funktionen (z.B. Grafikfunktionen auf einem
Farb-Display, oder Ein-Ausgabe von Daten in einem Dateisystem) vom
Betriebssystem zur Verfügung gestellt werden.
Wenn bloss eine einzige einfache Anwendung, z.B Temperaturregelung, auf
dem µC laufen soll, ist ein Betriebssystem natürlich Overkill.
Ein Betriebssystem ist auch dann Sinnvoll, wenn man Software von
mehreren unterschiedlichen Herstellern einsetzen möchte.
Beispiel:
- Siemens Bedienpanel
- WinCE auf einem Microcontroller (z.B. MIPS Chip)
- VNC-Server kann darauf auch installiert/aktiviert werden
- Softing OPC Server kann da auch drauf.
- Datei-Explorer
- USB-Stick
- Fast so wie Windows, nur halt von allem etwas weniger.
Wenn Du aber nur wegen dem Grafikdisplay und irgend welche Knöpfe auf
dem Bildschirm / Touchscreen ein Betriebssystem haben willst, dann ist
es eher zu überlegen ob man nicht lieber eine Library von z.B. Segger
einbindet, die das kann.
Schließlich hat ein Betriebssystem gleich mal ordentliche Anforderungen
bzgl. RAM/Flash Bedarf.
Diese speziellen Librarys kommen hingegen mit einigen wenigen KB..MB
vollkommen klar.
Ein Programm muss man sowiso selbst programmieren. Ob man selbst etwas
mehr in die Grafik stecken muss oder ob man die Problemen bei der
Betriebssystem-Anpassung meistern muss, ich glaube das schenkt sich
nicht viel.
Vor allem hat man, wenn man es selbst macht, alles selbst in der Hand.
Beim Betriebssystem ist man immer abhängig vom System, das einem zu
einer bestimmten Betriebsweise zwingt, wehe man möchte es gerne anders
haben...
Ein kleines OS macht dann Sinn wenn der µC viele verschiedene Dinge tun
soll. Hier gab es mal ein Projekt 'RGB Controller' mit einem ATMega128,
da wurde das sehr schön demonstriert. Hört sich erstmal nach einer
einfachen Aufgabe an, aber wenn das Ganze stetig erweitert wird kann
auch ein 'Mini' Projekt schnell unübersichtlich werden und die
Fehleranzahl und Fehlersuche wachsen dann überproportional schnell. In
dem Controller war die RGB LED Ansteuerung als Kern, dazu LCD
Ansteuerung, verschiedene Programme, Sensoren abfragen und in die
Lichtsteuerung einbringen uvm.
Mit einem Timer und zyklischer Abarbeitung kann man natürlich auch eine
Menge erledigen, aber mit Interprozesskommunikation über globale
Variablen fängt dann das Chaos an.
Nur muss man für ein OS den µC meist eine Nummer grösser wählen um die
'verschwendeten' Resourcen auszugleichen, aber wenn es nicht um grosse
Serien geht und z.B. Wartbarkeit des Codes wichtig ist lohnt sich das
oft. Aber auf einem ATTiny würde ich das nicht machen...
so spontan würd ich sagen, der größte Vorteil steckt in der
Nebenläufigkeit. Ein Betriebssystem kann die Ressourcen auf mehrere
Prozesse verteilen, was viel Programmierarbeit sparen kann.
Stell dir vor, du hast zwei Regelprozesse, die in Schleifen durchlaufen.
Eine Schleife dauert 99msec, die andere 100msec. Das in ein Programm
zusammenzufieseln macht keinen Spass.
Durch die Nebenläufigkeit ergeben sich weitere Forderungen wie z.B.
interprozesskommunikation, Treiber, Ressourcenverwaltung...
Eine eigene Frage?
Dieser Thread ist über 16 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.