Linux

Linux ist eines der am häufigsten eingesetzten Betriebssysteme für eingebettete Systeme. Zum Einsatz kommt Linux meist dann, wenn komplexe Kommunikationsprotokolle verwendet werden, oder ein umfangreiches Benutzerinterface mit Display und Touch-Bedienung realisiert werden soll.

Zusätzlich gibt es für Linux eine riesige Menge an Software für alle erdenkliche Bereiche. Die meisten dieser Softwarepakete lassen sich problemlos für den gewählten Prozessor übersetzen und sind damit auch auf kleinen eingebetteten Systemen lauffähig.

Linux fügt sich hervorragend in Computernetzwerke ein. Dies gilt auch für eingebettete Systeme. Vor allem das weit verbreitete Ethernet mit dem TCP/IP-Stack wird von sehr vielen eingebetteten Systemen verwendet.

Häufig wird mit einem eingebetteten System auch Hardware verwendet, die anwendungsspezifisch ist. Um die Hardware verwenden zu können benötigt man Treiber. Diese sind Teil des Kernels und haben eine bedeutende Rolle. In machen können vorhandene Treiber durch leichte Anpassung verwendet werden. Ist dies nicht möglich, muss ein neuer Treiber programmiert werden. Im Linux-Kernel sind bereits eine Vielzahl von Treiber integriert, so dass nur selten ein Treiber neu programmiert werden muss.

Soll das Gesamtsystem echtzeitfähig sein, so müssen alle Treiber dafür angepasst sein. Ein schlecht programmierter Treiber kann das gesamte Systemverhalten stören, selbst, wenn der Treiber auf den ersten Blick nichts mit den echtzeitfähigen Komponenten zu tun hat.

Eine der Stärken von Linux liegt in der Portabilität begründet. Der Kernel ist modular ausgebaut und lässt sich eine Vielzahl von Systemen optimal anpassen. Linux funktioniert auf x86-Prozessoren genauso wie auf Controllern vom ARM. Die Konfiguration demzufolge eine wichtige und zentrale Angelegenheit. Speziell dafür gibt es Build-Systeme, die alle konfigurierten Komponenten kompilieren und zu einem Gesamtsystem zusammenbauen. Der Prozess ist somit immer wieder reproduzierbar.

Mein KNOW-HOW im Überblick

  • Umfangreiche Kenntnisse im Linux-Kernel und -Umfeld
  • Treiberprogrammierung und -anpassung
  • Linux im Netzwerk
  • Linux im Echtzeit-Betrieb
  • Build- und Test-Systeme
  • Continuous Integration