Eingebettete Software - Embedded software

Embedded Software ist Computer - Software , geschrieben Steuerung von Maschinen oder Geräten, die nicht typischerweise gedacht als Computer, allgemein bekannt als eingebettete Systeme . Es ist normalerweise auf die spezielle Hardware spezialisiert, auf der es ausgeführt wird, und unterliegt Zeit- und Speicherbeschränkungen. Dieser Begriff wird manchmal synonym mit Firmware verwendet .

Eine Nahaufnahme des SMSC LAN91C110 (SMSC 91x)-Chips, eines eingebetteten Ethernet- Chips

Ein präzises und stabiles Merkmal ist, dass keine oder nicht alle Funktionen von eingebetteter Software über eine menschliche Schnittstelle, sondern über Maschinenschnittstellen initiiert/gesteuert werden.

Hersteller bauen beispielsweise eingebettete Software in die Elektronik von Autos , Telefonen, Modems, Robotern , Haushaltsgeräten, Spielzeug, Sicherheitssystemen, Herzschrittmachern , Fernsehern und Set-Top-Boxen sowie Digitaluhren ein . Diese Software kann sehr einfach sein, wie zum Beispiel Beleuchtungssteuerungen, die auf einem 8-Bit- Mikrocontroller mit einigen Kilobyte Speicher mit dem geeigneten Grad an Verarbeitungskomplexität laufen , der mit einem wahrscheinlich ungefähr korrekten Berechnungs-Framework (einer auf randomisierten Algorithmen basierenden Methodik ) bestimmt wird. Embedded Software kann jedoch in Anwendungen wie Routern , optischen Netzwerkelementen, Flugzeugen , Raketen und Prozesssteuerungssystemen sehr anspruchsvoll werden.

Betriebssysteme

Im Gegensatz zu Standardcomputern, die im Allgemeinen ein Betriebssystem wie macOS , Windows oder Linux verwenden , kann eingebettete Software kein Betriebssystem verwenden. Wenn sie eines verwenden, kann aus einer Vielzahl von Betriebssystemen ausgewählt werden, typischerweise ein Echtzeit-Betriebssystem . Code für eingebettete Software wird normalerweise in C oder C++ geschrieben , aber verschiedene höhere Programmiersprachen , wie Java , Python und JavaScript , werden jetzt auch häufig für Mikrocontroller und eingebettete Systeme verwendet. Auch Assemblersprachen werden häufig verwendet, insbesondere beim Booten und beim Interrupt- Handling. Ada wird in einigen Militär- und Luftfahrtprojekten verwendet.

Unterschiede zur Anwendungssoftware

Embedded System Text Benutzeroberfläche MicroVGA mit

Die meisten Verbraucher sind mit Anwendungssoftware vertraut , die Funktionen auf einem Computer bereitstellt. Embedded Software ist jedoch oft weniger sichtbar, aber nicht weniger kompliziert. Im Gegensatz zu Anwendungssoftware hat eingebettete Software feste Hardwareanforderungen und -funktionen, und das Hinzufügen von Hardware oder Software von Drittanbietern wird streng kontrolliert.

Eingebettete Software muss zum Zeitpunkt der Herstellung alle benötigten Gerätetreiber enthalten , und die Gerätetreiber werden für die verschiedenen Hardwaregeräte geschrieben. Diese Gerätetreiber, BSP ( Board support package ) genannt, bilden die Softwareschicht, die hardwarespezifische Treiber und andere Routinen enthält, die es einem bestimmten Betriebssystem (traditionell ein Echtzeitbetriebssystem oder RTOS) ermöglichen, in einer bestimmten Hardwareumgebung zu funktionieren (ein Computer oder eine CPU-Karte), die in das RTOS selbst integriert ist. Die Software hängt stark von der CPU und den ausgewählten Chips ab. Die meisten Embedded-Software-Ingenieure verfügen zumindest über ausreichende Kenntnisse im Lesen von Schaltplänen und Lesen von Datenblättern für Komponenten, um die Verwendung von Registern und Kommunikationssystemen zu bestimmen. Die Konvertierung zwischen Dezimal , Hexadezimal und Binär ist ebenso sinnvoll wie die Bit-Manipulation .

Webanwendungen werden häufig zum Verwalten von Hardware verwendet, obwohl XML-Dateien und andere Ausgaben zur Anzeige an einen Computer weitergegeben werden können. Üblicherweise werden Dateisysteme mit Ordnern verwendet, SQL-Datenbanken fehlen jedoch häufig.

Die Softwareentwicklung erfordert die Verwendung eines Cross-Compilers , der auf einem Computer läuft, aber ausführbaren Code für das Zielgerät erzeugt. Das Debuggen erfordert die Verwendung eines In-Circuit-Emulators und Debugging-Hardware wie JTAG- oder SWD- Debugger. Softwareentwickler haben oft Zugriff auf den vollständigen Kernel (OS)-Quellcode.

Die Größe des Speichers und des Arbeitsspeichers kann erheblich variieren. Einige Systeme laufen mit 16 KB Flash und 4 KB RAM mit einer CPU, die mit 8 MHz arbeitet, andere Systeme können es mit modernen Computern aufnehmen. Dieser Platzbedarf führt dazu, dass mehr Arbeit in C oder eingebettetem C++ statt in C++ erledigt wird . Interpretierte Sprachen wie BASIC (während Parallax Propeller kompiliertes BASIC verwenden kann) und Java (Java ME Embedded 8.3 ist verfügbar für zB ARM Cortex-M4 , Cortex-M7 Mikrocontroller und älteres ARM11, das in Raspberry Pi und Intel Galileo Gen. 2 verwendet wird) sind nicht verfügbar häufig verwendet; während eine Implementierung der interpretierten Python- 3-Sprache – MicroPython  – jedoch ausdrücklich für die Verwendung von Mikrocontrollern verfügbar ist, zB 32-Bit- ARM- basierte (wie BBC micro:bit ) und 16-Bit- PIC-Mikrocontroller .

Kommunikationsprotokolle

Die Kommunikation zwischen Prozessoren und zwischen einem Prozessor und anderen Komponenten ist von wesentlicher Bedeutung. Neben der direkten Speicheradressierung umfassen gängige Protokolle auf Hardwareebene I²C , SPI , serielle Ports , 1-Wires , Ethernets und USB .

Kommunikationsprotokolle für den Einsatz in eingebetteten Systemen sind als Closed Source von Unternehmen wie InterNiche Technologies und CMX Systems erhältlich . Open-Source- Protokolle stammen von uIP , lwip und anderen.

Siehe auch

Anmerkungen

Verweise

  • Edward A. Lee, "Embedded Software", Advances in Computers (M. Zelkowitz, Herausgeber) 56 , Academic Press, London, 2002.