Was unterscheidet eingebettete Software von anderer Software?
Normale Software besteht aus Programmen die für bestimmte Eingaben auf verschiedenen Rechnern die selben Ausgaben liefern. Solche Software ist nicht an bestimmte Hardware gebunden. Solche Programme setzen oft ein Betriebssystem voraus, welches die Details der Ein/Ausgabe erledigen.
Eingebettete Software besteht aus einem oder mehreren Programmen, die nur auf einer ganz bestimmten Hardware laufen, die fest mit der Elektronik eines bestimmten Produkts verbunden ist. Alle eingebetteten Software Systeme setzen voraus, dass ein Mikroprozessor vorhanden ist, der mit fest verdrahteten Ein/ und Ausgaben verbunden ist - zB. Tasten und Leuchtanzeigen.
Ein ganz einfaches Beispiel ist meine Klingelanlage. Sie besteht aus einem Knopfkästchen an der Haustür der ein kurzes Radiosignal sendet wen der Knopf gedrückt wird. Diese Signal ist mit einem digitalen Muster kodiert, um zu verhindern dass Nachbarn meine Klingel auslösen. Das ist reine Elektronik (?). Der Klingelkasten besteht aus einem Mikroprozessor, der mit einem Radioempfänger verbunden ist, der den Datenstrom vom Klingelknopf an den Mikroprozessor schickt. Die eingebettete Software analysiert den Datenstrom und löst ein Signal aus, wenn mein Knopf erkannt wird. (Nebenbei enthält die eingebettete Software noch Vorkehrungen um den Knopf mit meiner Klingel zu synchronisieren wenn die "Synchronisieren" Taste am Klingelkasten gedrückt ist). Das Klingelsignal aktiviert eine weitere Software im Mikrocontroller, die eine Melodie generiert, die letztendlich an einen Lautsprecher geleitet wird. Mein Klingelkasten hat Tasten um aus einem dutzend verschiedenen Melodien auszuwählen und um die Lautstärke zu verändern. Zusätzlich kann man beim Klingeln ein Leuchtsignal zuschalten.
Solch eine eingebettete Software läuft nur auf der ganz bestimmten Hardware die der Hersteller dafür vorgesehen hat. Solch eine eingebettete Software wird normalerweise direkt in ROM-Speicher, der direkt im Mikroprozessorchip integriert ist, gespeichert. Heute werden viele Geräte mit eingebetteter Software auf Mikrocontrollern gesteuert.
Obwohl eingebettete Software für ganz bestimmte Hardware konzipiert ist, werden oft Echtzeitbetriebssysteme eingesetzt, die häufig wiederkehrende Funktionen erledigen. Dies betrifft insbesondere Ein/Ausgabe-Funktionen die mit dem Interrupt-System zusammenarbeiten und für Anwendungsprogrammierer schwer zugänglich sind. Ein besonderes Beispiel ist die eingebettete Software in Android Smartphones die meines Verständnis nach auf einem Echtzeit-Linux basieren.