Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Embedded-Programmierung

Was sind Embedded-Systeme?

Eingebettete Systeme (Embedded Systems) sind Funktionseinheiten, die über einen eigenen Rechenkern verfügen, der in das System "eingebettet" ist. 

Embedded-Programmierung - Embedded-System (eingebettetes System)
Bild: Embedded-System (eingebettetes System)

Embedded-Systeme enthalten Eingänge, die Steuerungs- und Kommunikationsinformationen sowie Sensorsignale einlesen und an den Ausgängen die Informationen, Steuerungs- und Regelungssignale sowie Informationen zur Kommunikation ausgeben können. Die Verarbeitung der Eingangsinformationen und die Steuerung bzw. Generierung von Ausgangssignalen, die an den Ausgängen ausgegeben werden, übernimmt die Embedded-Software.

Unterschied zwischen klassischer und Embedded-Programmierung

Was ist nun der Unterschied zwischen einer klassischen und der Embedded-Programmierung? Die klassische Programmierung verwendet z.B. ANSI-C bzw. C++. Die generierte Software wird dann typischerweise in einem PC-basierenden System abgearbeitet. Hier steht viel Arbeitsspeicher (viele Gigabyte als RAM Speicher und Terabyte in Festplattenspeichern oder mehrere 100 Gigabyte SSD-Speicher) zu Verfügung.

Aus Sicht der Applikation werden Programm und Daten in einem gemeinsamen Arbeitsspeicher ausgeführt. Ferner glänzen die PCs durch sehr viel Rechenleistung in Form von sehr schnellen CPUs (Singlecore oder Multicore), die mit Taktraten von mehreren Gigabyte die Software-Verarbeitung durchführen. Damit lassen sich gut sehr große Software-Pakete bearbeiten/abarbeiten/ausführen.

Bei Embedded-Systemen stehen jedoch nur begrenzte Speichergrößen zu Verfügung - typischerweise für Programmspeicher weniger als 10 Megabyte und für Datenspeicher weniger als 1 Megabyte. Darüber hinaus sind Programm- und Datenspeicher getrennt.

In einigen Mikrocontrollern (insbesondere in Multicore-Mikrocontrollern) sind mehrere Core-lokale und globale Speicher implementiert. Auch bei der Rechenleistung werden meist nur Taktraten von bis zu 200 MHz in den Embedded-CPUs erreicht.

Vorteil von Embedded-Systemen

Der große Vorteil von Embedded-Systemen im Vergleich zu PC-basierenden Systemen liegt in der Realzeit-Fähigkeit (Echtzeit-Fähigkeit). Darunter versteht man die Möglichkeit, die Verzögerungs- bzw. Verarbeitungszeit eines Embedded-Systems genau zu bestimmen. D.h. wenn ein Eingangssignal (z.B. ein Signal eines Ausschalters) erkannt wird, kann eine maximale Reaktionszeit für die Generierung eines Motor-Aus-Signals an einem Embedded-Systemausgang genau bestimmt werden. Ferner lässt sich die Reaktionszeit auf ein Kommunikationstelegramm, z.B. Telegramm über USB, Ethernet, CAN, LIN, etc. bestimmen. Damit kann der Determinismus des Systems garantiert werden, d.h. bei gleichen Eingangsbedingungen verhält sich das System immer gleich, und das Systemverhalten ist vorhersagbar.

Embedded-Programmierung: Typische Anwendungen für Embedded-Systeme

  • Automobil-Applikationen (Automotive Applications): Kommunikations-/Steuermodule im Fahrzeug
  • Weiße Ware: Steuerungen von Wasch- oder Geschirrspülmaschinen und Kühlschränken
  • Unterhaltungselektronik (Braune Ware): digitale Radios, Fernseher, Set-Top-Boxen
  • Telekommunikations-Geräte: Mobiltelefone, Gateways (z.B. Fritz-Boxen)
  • Industrie- und Medizintechnik, Luft- und Raumfahrt, Militärtechnik


Ganz spezielle Embedded-Systeme sind die Embedded-PCs, die z.B. in Maschinensteuerungen eingesetzt werden. Die Embedded-Software wird in diesem Fall mit speziellen Embedded-Betriebssystemen (z.B. Embedded-Linux, Windows Embedded etc.) zum Ablauf gebracht.

Embedded-Programmierung - Embedded Systems Software

Die Software, die für eingebettete Systeme entwickelt wird (Embedded Systems Software), muss Erweiterungen zum ANSI-C Standard enthalten, damit bei der Programmierung schon die Hardware-Nähe und damit die Performance (benötigte Zeit für die Ausführung) bestimmt werden kann. Zu diesen ANSI-C-Erweiterungen zählen insbesondere die Typ-Kennzeichner (Qualifier) zur Zuweisung einer Variablen oder eines Programms (Funktion) zu einem speziellen Speicherbereich (so genannte Address Space Qualifier). Je nach verwendetem Address Qualifier generiert der Compiler unterschiedliche Sections, die durch den Linker/Locator in spezielle Adressräume lokatiert werden können. Ebenso kann über diese Typ-Kennzeichner (Qualifier für Programme - Function Qualifier) zwischen einer normalen und einer Interrupt-Funktion unterschieden werden. Damit generiert der Embedded-Compiler dann unterschiedlichen Operations-Code für den Funktionsaufruf und Rücksprung durch CALL- und RET-Befehle (Rückkehrbefehl - Return Instruction).

Embedded-Software wird auch als Firmware bezeichnet (spezielle Gerätesteuer-Software). Typischerweise wird die Embedded-Software (Embedded Program Code) in einem Flash-Speicher programmiert. Der Vorteil dieser Speicher ist die Möglichkeit von Software-Updates (Firmware-Update).

Echtzeit-Applikationen

Die Embedded-Systeme, in denen Embedded-Software verarbeitet wird, sind eine ideale Plattform für Realzeit-Applikationen (Real-time Applications). Sie vereinen die wichtigen Erfolgskriterien für elektrische Steuerungen mit geringer Stromaufnahme und kleinem Platzbedarf (Footprint) zu geringen Kosten. Zahlreiche Mikrocontroller-Architekturfamilien mit verschiedenen Rechenleistungsklassen und unterschiedlichen Gehäusen (Packages) und unterschiedlich vielen Pins (Pin Counts) stehen hierfür zur Verfügung.

Basis für eine erfolgreiche Embedded-Programmierung sind umfangreiche Kenntnisse – angefangen bei der Mikrocontroller-Architektur über Anforderungsmanagement (Requirements Engineering) und Architektur-Design bis hin zu den Embedded-Programmierwerkzeugen (Compiler, Linker/Locator, Debugging- und Testwerkzeuge). Den richtigen Zugang zu all diesen notwendigen Kenntnissen und Fähigkeiten bietet der Besuch eines Seminars für die Embedded-Programmierung.

MicroConsult unterstützt Sie mit Training & Coaching rund um die Embedded-Programmierung, z.B. zu folgenden Themen:

 

Embedded-Programmierung: Workshops

Darüber hinaus besteht die Möglichkeit, das Themenfeld Embedded-Programmierung auch in maßgeschneiderten Workshops zu behandeln. Sie werden auf die speziellen Bedürfnisse von Aufgaben, Projekten, Teams und Rollen zugeschnitten.

Senden Sie uns Ihre Fragen, Wünsche und Anforderungen! Zum Kontaktformular


Autor:
Dipl.-Ing. Ingo Pohle ist Mitgründer und Geschäftsführer der MicroConsult GmbH. Er ist ein international anerkannter Spezialist für Embedded-Lösungen mit reichem Erfahrungsschatz rund um den Einsatz von Embedded-Mikrocontrollern, Bussystemen und RTOS.