Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Echtzeit: Embedded-Programmierung und Betriebssysteme

Auf Basis der im Software-Design verfeinerten Software-Architektur implementieren (programmieren) Sie als Softwareentwickler (Software Developer) diese strukturiert, prozedural, objektbasiert oder objektorientiert mit der Programmiersprache C oder C++.

Dabei halten Sie die Architektur- und Designvorgaben genauso ein wie die Programmierrichtlinien (Codierrichtlinien, Coding Style Guide) und bestätigen dies durch Reviews oder statische Codeanalyse-Tools. MISRA C und MISRA C++ sind Regelwerke für die Programmierung von sicherheitskritischer Software aus dem Bereich Automotive. Diese Codierregeln gelten auch in anderen Bereichen, wie beispielsweise der Medizintechnik, als Referenz.

Codierung von Embedded- und Echtzeit-SW mit Embedded C (EC) und C++ (EC++)

Embedded C (EC) und Embedded C++ (EC++) sind keine eigenständigen Standards, sondern beschreiben lediglich den Einsatz der Programmiersprachen C und C++ für die Codierung von Embedded- und Echtzeit-Software.

Echtzeit (Realzeit, real-time, realtime RT) bedeutet Determinismus (Vorhersagbarkeit). Dabei differenzieren Sie zwischen harter Echtzeit (hard real-time) und weicher Echtzeit (soft real-time). Bei harter Echtzeit garantieren Sie die Einhaltung Ihrer Zeitvorgaben (u.a. Deadlines, Antwortzeiten) in 100% aller Fälle, anders als bei weicher Echtzeit. Was ist bei weicher Echtzeit? Sie entwickeln Echtzeitstrategien, um die Echtzeitanforderungen einzuhalten.

In der Embedded-Programmierung und Echtzeit-Programmierung wissen Sie als Software-Entwickler genau, was Sie wie programmieren: Wo liegt eine Variable und wie ist das Echtzeitverhalten der Software? Sie kennen dabei die Konsequenzen für Ihr Target mit Ihrer Toolkette (Compiler, Linker, Locator) auf Maschinencode-Ebene (Assembler-Code). Als Embedded- und Echtzeit-Softwareentwickler setzen Sie aus den Programmiersprachen C und C++ die Programmierkonstrukte ein, welche typische Qualitätsmerkmale unterstützen, wie z.B. geringen Ressourcenbedarf, hohe Performance, garantierte Reaktionszeiten, funktionale Sicherheit und Zuverlässigkeit, und vermeiden den Einsatz der Konstrukte, die dazu gegenläufig sind.

Hardwarenahe Programmierung

Bei der hardwarenahen Programmierung greifen Sie mit Embedded C (EC) und Embedded C++ (EC++) direkt auf die Peripherieregister der Hardware zu (Treiberprogrammierung). Dabei beherrschen Sie auch die Besonderheiten der Interrupt-Programmierung.

Realzeit-Betriebssysteme – Real-time Operating System RTOS

Die Laufzeitarchitektur programmieren Sie bei einfacher und sequenzieller Software in einer Endlos-Schleife (while(1) bzw. einer "Super Loop" oder "Main Loop"). Ist die Software komplexer und Sie stoßen an die Grenzen der Handhabbarkeit der Steuerung des Softwareablaufes durch eine Endlos-Schleife, dann empfiehlt sich der Einsatz eines Embedded-Betriebssystems (Real-time Operating System RTOS).

Hierfür unterteilen Sie die Software in einzelne Funktionen (sogenannte Tasks), identifizieren (quasi-) parallele Ausführungspfade, definieren Wiederholzeitpunkte, Timeout-Zeiten und Datenabhängigkeiten für Ihre Software-Funktionen (Tasks). Der Vorzug eines Betriebssystems ist, dass für alle Steuerungs-, Kommunikations- und Überwachungsfunktionen Betriebssystem-Services zur Verfügung stehen. Sie können z.B. bei der Definition jeder Task (eigenständige Software-Aufgabe) bestimmen, wann diese Task bearbeitet werden muss und ob die Bearbeitung auch rechtzeitig erfolgt (automatische Überwachung des Task-Timeouts). Das geeignete Betriebssystem (Operating System OS) wählen Sie als Software-Entwickler oder als Software-Architekt auf Basis der System-Anforderungen, Betriebssystem-Auswahlkriterien (z.B. Singlecore-RTOS oder Multicore-RTOS, mit oder ohne Memory Protection Service, etc.) und einer Betriebssystem-Liste (Betriebssystem-Übersicht) aus. Sie unterscheiden die Betriebssystem-Arten Embedded-Betriebssystem und Echtzeit-Betriebssystem.

Beispiele für Betriebssysteme

Embedded-Linux, RT Linux, Linux Kernel, FreeRTOS und CMSIS-RTOS als ARM-Betriebssystem.

Was ist das beste Betriebssystem?

Das beste Betriebssystem gibt es generell nicht, höchstens für Ihre Applikation. Nicht jedes Betriebssystem ist automatisch echtzeitfähig. Sie können sich auch dafür entscheiden, ein eigenes Betriebssystem oder Mini-Betriebssystem zu konzipieren und zu programmieren.

Einsatz des Betriebssystems

Beim Einsatz des Betriebssystems stellen Sie sich als Software-Entwickler erfolgreich den Herausforderungen, wenn Sie die Grundlagen, Bestandteile, Definitionen, Aufgaben, Funktionsweisen und den Applikationseinsatz der folgenden Betriebssystem-Mechanismen kennen:

Prozess-Management, Task-Management, Thread-Management, Scheduling-Verfahren (kooperatives Scheduling, präemptiv/ preemptive, zeitbasiert, zeitgetriggert, Prioritäten-basierend, Time-Slice, Round-Robin, Earliest-Deadline-First EDF), Synchronisation (Event, Signal), Ressourcen-Management (binäre Semaphore, zählende Semaphore, Mutex, critical Section), Interrupt-Management, Zeitmanagement, interne Kommunikation (Message Queue, Mailbox, Shared Memory, Pipe, Socket, Message-based), Speichermanagement und I/O-Management (Input/Output-Management).

Echtzeit - Embedded-Programmierung - Betriebssystem: Task-Zustände und deren Transitionen

Bild: Task-Zustände und deren Transitionen im Betriebssystem

Multicore in Hardware- und Mikrocontroller-Architekturen

In modernen Hardware-Architekturen und Mikrocontroller-Architekturen (microcontroller architectures) gewinnt das Thema Multicore und Multiprozessor (homogen und heterogen) immer mehr an Bedeutung. Für die meisten Embedded- und Echtzeit-Software-Entwickler stellt dies eine komplett neue Herausforderung dar. Sie als Software-Entwickler wissen, was Sie bei der Programmierung in C und in C++ zusammen mit einem oder mehreren Betriebssystemen auf einer Multicore-Plattform bzw. Multiprozessor-Plattform unbedingt beachten müssen.

Mit modernen Debug- und Trace-Methoden optimieren Sie zielgerichtet in kürzester Zeit Ihre Software.

Einen schnellen Einstieg in die Welt der Realzeit-Betriebssysteme RTOS und der Embedded-Software-Programmierung in EC und EC++ finden Sie bei MicroConsult.


Echtzeit: Embedded-Programmierung und Betriebssysteme - unsere Trainings & Coachings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich zu Schulungen/ Seminaren/ Trainings/ Workshops und individuellen Coachings von MircoConsult zu den Themen Embedded-Programmierung und Embedded-Betriebssysteme.

Embedded C: Effektiver Einsatz von Programmiermethoden und -tools für Embedded-Anwendungen

Im Mittelpunkt dieses Trainings steht die hardwarenahe C-Programmierung von 8-, 16- oder 32-Bit Mikrocontroller-Architekturen. Fallstricke und Stolpersteine der Programmiersprache C lernen Sie kennen und vermeiden. Sie lernen die Programmierung einer Hardware-Abstraktionsschicht gemäß eines Software-Architekturmodells kennen und erhalten einen Überblick über den gesamten Lifecycle eines Produktes.
Zum Training - Embedded C: Effektiver Einsatz von Programmiermethoden und -tools

Embedded C++: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ und UML

In kompakter Form erhalten Sie einen Überblick über den gesamten Entwicklungsprozess - Softwareanalyse, Design, Implementierung und Test. Der Schwerpunkt liegt dabei auf dem Design von Softwaresystemen mit Hilfe der UML und der Implementierung in der Programmiersprache C++. Ein weiterer wichtiger Punkt sind die Erfüllung besonderer Anforderungen an die Software-Qualität von Embedded-Systemen, zum Beispiel in Hinblick auf Laufzeit und Codeeffizienz, sowie das Vermeiden bzw. frühzeitige Erkennen von Programmierfehlern mit Hilfe von Programmierrichtlinien, wie sie z.B. Beispiel der MISRA-C++ Standard bietet.
Zum Training - Embedded C++: Objektorientierte Programmierung für Mikrocontroller

Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++

Sie können fortgeschrittene C++ Konstrukte in Embedded- und Echtzeit-Applikationen einsetzen und dazu die Effizienz (Ressourcenverbrauch und Performance) einschätzen.
Zum Training - Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung

Embedded-Multicore-Mikrocontroller in der Praxis

In diesem praxisorientierten Training lernen Sie die wesentlichen Mechanismen von Multicore-Mikrocontrollern und deren Leistungsfähigkeit kennen. Neue Herausforderungen im Umgang mit Multicore meistern Sie effizient dank der Erfahrung, die Sie anhand zahlreicher Übungsbeispiele erwerben.
Zum Training - Embedded-Multicore-Mikrocontroller in der Praxis

OpenMP: Plattformunabhängige Multicore-Programmierung mit C oder C++

Sie können plattformunabhängige und portierbare Multithread- und Multicore-Applikationen erstellen, ohne sich explizit um Thread-Programmierung kümmern zu müssen. Darüber hinaus wissen Sie, wie bestehender Anwendungscode, der für sequenzielle Ausführung entwickelt wurde, ohne prinzipielle Strukturänderung parallelisiert werden kann.
Zum Training - OPENMP Multicore-Programmierung mit C oder C++

Multithread-Programmierung und Multicore-Programmierung

Dieses Training zeigt, wie die Eigenschaften von Multithreading-Systemen eingesetzt werden können bzw. welche Probleme gelöst werden müssen, um die Prozessorleistung - insbesondere bei modernen Multicore-Systemen - bestmöglich nutzen zu können.
Zum Training - Multithread-Programmierung und Multicore-Programmierung

Objektorientierte Softwareentwicklung: Spezielle Programmierprinzipien

Softwareentwicklung als Handwerkskunst - 'Software Craftsmenship' - Der Weg zum 'Clean Code'
Zum Training - Objektorientierte Softwareentwicklung: Spezielle Programmierprinzipien

Design Patterns (nicht nur) für Embedded-Systeme

Sie erfahren, unter welchen Bedingungen klassische Entwurfsmuster auch in ressourcenlimitierten embedded Systemen gewinnbringend eingesetzt werden können. Muster, die für diesen Zweck besonders geeignet sind, werden anhand von hardwarenahen oder anderen für embedded Systeme typischen Anwendungen erläutert. Besonderer Wert wird dabei auf die Beurteilung der Speicherplatz- und Laufzeitkosten gelegt.
Zum Training - Design Patterns (nicht nur) für Embedded-Systeme

RTOS-Grundlagen und Anwendung: RTOS-Mechanismen und deren Anwendung in Laufzeitarchitekturen von Embedded- und Echtzeitsoftware

Sie kennen die Mechanismen moderner Echtzeitbetriebssysteme und können damit neue Software-Laufzeitarchitekturen entwickeln und bestehende warten - unabhängig von dem konkreten Echtzeitbetriebssystem-Produkt. Sie können Software-Laufzeitarchitekturen dokumentieren und kommunizieren.
Zum Training - RTOS-Grundlagen und Anwendung

RTOS-Mechanismen-Anwendung

Sie sind in der Lage, mit modernen Echtzeitbetriebssystemen (Real-Time Operating Systems, RTOS) neue Software-Laufzeitarchitekturen zu entwickeln und bestehende zu warten - unabhängig von dem konkreten Echtzeitbetriebssystem-Produkt.
Zum Training - RTOS-Mechanismen

OSEK-Grundlagen

Sie können Applikationen basierend auf einer OSEK-Implementierung erstellen und warten.
Zum Training - OSEK-Grundlagen

WDF-KMDF und WDM Kernel Mode Treiberentwicklung unter Windows

Sie erlernen die grundlegende objektorientierte Struktur des WDF Kernel Mode Driver Framework (KMDF). Sie erhalten Hintergrundwissen über die zugrunde liegende WDM-Treiberarchitektur und die Kernel Mode Komponenten moderner Microsoft Windows Betriebssysteme.
Zum Training - WDF-KMDF und WDM Kernel Mode Treiberentwicklung

Linux-Grundlagen

Sie verstehen die Linux/Unix zugrunde liegende Philosophie, kennen die Struktur des Systems, beherrschen den Einsatz seiner zahlreichen Werkzeuge und können diese mit den Mechanismen der Shell (Kommandointerpreter) kombinieren, um komplexere Aufgaben durch Modularisierung in Teilaufgaben zu lösen.
Zum Training - Linux-Grundlagen

Linux Systemprogrammierung

Sie kennen die Programmierschnittstelle (API) des Betriebssystems Linux/Unix gemäß dem POSIX-Standard und der Single UNIX Specification. Sie beherrschen die Anwendung der Systemaufrufe, kennen die Implementation des Dateisystems und verstehen das Prozessmodell.
Zum Training - Linux Systemprogrammierung

Embedded-Echtzeit-Linux: Vom Bootloader bis zum Realtime-System (Linux-RTOS)

Sie haben die Aufgabe, ein Embedded Linux-Target aufzubauen? Wie fange ich damit an? Was benötige ich dazu? Wie komme ich zu einem echtzeitfähigen System? Der Aufbau und die Funktionsweise eines Embedded Linux Systems mit harten Echtzeiteigenschaften stehen im Mittelpunkt dieses Trainings.
Zum Training - Embedded-Echtzeit-Linux: Vom Bootloader bis zum Realtime-System (Linux-RTOS)

Embedded-Linux-Architektur: Kernel-Treiberentwicklung

Wie entwickle ich einen Kernel-Treiber? Auf was muss ich bei Embedded und Echtzeit-Systemen achten? Essentiell für die Entwicklung eines performanten Treibers ist ein grundlegendes Verständnis der Kernel-Architektur. Genau hier setzt das Training an. 
Zum Training - Embedded-Linux-Architektur: Kernel-Treiberentwicklung

Linux Multithread-/Multicore-Programmierung

Dieses Training zeigt, wie die Prozessorleistung von Linux-Systemen - insbesondere bei modernen Multicore-Architekturen - bestmöglich genutzt werden kann. Er richtet sich an Softwareentwickler, die neue Applikationen entwickeln oder existierende Anwendungen optimieren müssen, und eignet sich insbesondere auch für die Anwendung unter Embedded-Linux.
Zum Training - Linux Multithread-/Multicore-Programmierung

Embedded-Linux-Softwareentwicklung

In diesem Training wird die Entwicklung von Software für Embedded-Linux behandelt. Dabei werden alle Aspekte der systemnahen Entwicklung behandelt und auch gleich mit den entsprechenden Entwicklungswerkzeugen geübt.
Zum Training - Embedded-Linux-Softwareentwicklung

Embedded-Linux für Tester, Support und Service

Ist ein Embedded-Linux-Projekt fertig entwickelt, dann geht es los mit dem Testen, Support und Service. Dieses Training vermittelt denenigen, die ein Linux-System nicht entwickelt haben, dieses aber betreuen sollen, einen systematischen Einstieg in das fertige System.
Zum Training - Embedded-Linux für Tester, Support und Service

Softwarerecht: Haftungsrisiken beim Einsatz von Embedded-Software und Open-Source-Software

Sie kennen die typischen rechtlichen Haftungsrisiken im Zusammenhang mit Embedded Software sowie die rechtlichen Strukturen, die im Zusammenhang mit dem Einsatz von Open Source Software im eigenen Unternehmen oder gegenüber Kunden wichtig sind.
Zum Training - Softwarerecht: Haftungsrisiken beim Einsatz von Embedded-Software und Open-Source-Software

Coachings - Echtzeit: Embedded-Programmierung und Betriebssysteme

Die Coaching-Angebote vom MicroConsult bieten den großen Vorteil, dass unsere Experten ihr Wissen und ihre Erfahrungen direkt in Ihren Lösungsprozess einbringen und damit unmittelbar zum Projekterfolg beitragen. Gemeinsam werden beispielsweise Einsatzmöglichkeiten und Nutzen neuer Software-Engineering- oder Führungsmethoden analysiert, konkrete Maßnahmen zur Einführung entwickelt und dann umgesetzt.

Coachings - Echtzeit: Embedded- und Echtzeit-Betriebssysteme

Coachings - Echtzeit: Embedded-Programmierung


Training & Coaching zu den Themen unseren Portfolios finden Sie hier.


Echtzeit: Embedded-Programmierung und Betriebssysteme - Fachwissen

Wertvolles Fachwissen zum Thema Echtzeit - Embedded-Programmierung und Embedded-Betriebssysteme steht für Sie zum kostenfreien Download bereit, darunter die folgenden Veröffentlichungen und Vorträge:

  • Von C nach Embedded-C: Das Ziel bestimmt den Weg
  • Betriebssystem: mit oder ohne? - Vergleich und Auswahl von Software-Laufzeitarchitekturen
  • MyOS: Kochbuch für ein Mini-Betriebssystem - C-Implementierung eines eigenen Kernels auf dem Cortex-Mx
  • Objektbasiert oder objektorientiert? - Moderne Low-level-Treiberprogrammierung mit C/C++
  • Implementierung von Zustandsautomaten in C++
  • Prinzipien für Embedded-Softwarearchitekturen
  • Die SOLID-Prinzipien: 5 Grundsätze für bessere Software
  • Programmierung einer Betriebssystem-Abstraktionsschicht - Konzepte und Umsetzung mit C++
  • Quo Vadis, Multicore? Irrwege & Zukunftstrend
  • Ein Multicore-Referendum - Die Qual der Wahl
  • SW Design Challenges for Real-Time Multicore Microcontroller Systems
  • Aktuelle Trends bei Multicore-Mikrocontroller-Architekturen
  • Still Single? - Step by Step to Multicore!
  • Initialisierung und Erstellung von Low-level-Treibern
  • Software-Paradigmen: Was programmiere ich da eigentlich?
  • Software-Engineering mit UML & C: Praxisgerechter Einsatz für kleine Embedded-Systeme
  • Gesunde Software

 

Fachwissen: Echtzeit - Embedded-Programmierung und Embedded-Betriebssysteme

Wissenswertes zur Entwicklung & Programmierung von Embedded-Software

 
Fachwissen zu den weiteren Themen unseren Portfolios finden Sie hier.

 


Echtzeit: Embedded-Programmierung und Betriebssysteme - unsere Experten

Thomas Batt


Dipl.-Ing. (FH) Thomas Batt ist gebürtiger Freiburger. Nach seiner Ausbildung als Radio- und Fernsehtechniker studierte er Nachrichtentechnik in Offenburg. Seit 1994 arbeitet er kontinuierlich in verschiedenen Branchen im Bereich Embedded-/Realtime-Systementwicklung. 1999 wechselte Thomas Batt zur MicroConsult GmbH. Dort verantwortet er heute als zertifizierter Trainer und Coach die Themenbereiche Systems/ Software Engineering für Embedded-/Realtime-Systeme sowie Entwicklungsprozess-Beratung.

Frank Listing

Dipl.-Ing. Frank Listing ist seit 2002 Trainer und Projektcoach bei der MicroConsult GmbH mit dem Schwerpunkt Microsoft-Plattformen, objektorientierte Programmierung und Testen von Embedded-Systemen und u.a. fachlich für das Thema .NET verantwortlich. Sein Wissen gibt er immer wieder auch in Publikationen und Fachvorträgen weiter.

Ingo Pohle

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.

Merkzettel


Sie haben derzeit keine Trainings auf dem Merkzettel.