Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Mikrocontroller: Multicore, Singlecore, Peripherie

Mikrocontroller-Architekturen für Realzeit-Steuerungen und -Regelungen

Viele Steuerungs- und Regelungsaufgaben werden heute mit Hilfe von Mikrocontrollern (engl. microcontroller) gelöst. Hierbei handelt es sich um hochintegrierte Mikroprozessor-Architekturen, die zusammen mit Speichermodulen wie Flash, SRAM oder DRAM und verschiedenen Peripherie-Einheiten auf einem einzigen Chip integriert werden.

Flash ist elektrisch löschbar und programmierbar und wird für die Speicherung von Programm und konstanten Daten benötigt. SRAM (statisches RAM) oder DRAM (dynamisches RAM) wird als Baustein-interner Speicher für Variablen und Stack benötigt. DRAM hat allerdings den Nachteil, dass der Inhalt zyklisch über eine Refresh-Logik aufgefrischt werden muss; das kostet Zeit. Verschiedene Peripherie-Einheiten werden zum Beispiel für die Kommunikation mit anderen elektronischen Steuereinheiten (ECUs), das Einlesen von Sensorsignalen oder für die Erzeugung von Ausgangssignalen über einfache und komplexe Timer-Einheiten (z.B. zur Steuerung und Regelung von Motoren) benötigt.

Mikrocontroller - Multicore, Singlecore, Peripherie

Bild 1: Mikrocontroller-Architekturen:Singlecore-Mikrocontroller und Multicore-Mikrocontroller

Die Mikrocontroller-Software wird an die speziellen Eigenschaften dieser Module angepasst. Für die Embedded-Software-Entwicklung werden dazu eingebettete Entwicklungswerkzeuge (embedded tools) und Mikrocontroller-Boards (z.B. Starter Kits) eingesetzt.

Embedded-Programmiersprachen Embedded C (EC) und Embedded C++ (EC++)

Der ANSI-C-Standard legt für die Programmiersprache C Schlüsselwörter und deren Nutzung fest. Für Embedded-Systeme darf der Toolhersteller spezielle Erweiterungen ergänzen, damit zum Beispiel genau definiert werden kann, welche Peripherie-Steuerregister wie angesprochen werden sollen. Diese Programmiersprache mit den Erweiterungen gegenüber ANSI-C wird als Embedded C (eingebettetes C) bezeichnet.

Für die objektorientierte Softwareentwicklung wird eine Embedded-Variante von C++ als Embedded C++ (EC++) verwendet. Bei der hardwarenahen Programmierung können mit Hilfe von Sprach-Erweiterungen Architektur- und Zeitaspekte berücksichtigt werden; so lassen sich Anforderungen (requirements) an das Echtzeit-Verhalten (real-time behavior) umsetzen.

Echtzeit (real-time) als Basis für die zeitgenaue Bearbeitung von Software

Die Definition der Echtzeit (real-time definition) in einem Steuerungs- und Regelungssystem bestimmt das Verhalten so, dass Zeitpunkte und Zeitlimits genau eingehalten werden. Hier wird in weiche und harte Echtzeit (soft real-time, hard real-time) unterschieden. Weiche Echtzeit garantiert in den meisten Fällen die Einhaltung der Zeitvorgaben, wohingegen harte Echtzeit nahezu in 100% der Fälle die Zeitlimits garantieren muss.

In Mikrocontrollern werden hierzu die Peripherie-Ereignisse (Events) mit der Zentraleinheit (CPU, auch microcontroller unit – MCU) über einen Interrupt-Controller bzw. über einen DMA-Controller (direct memory access controller) synchronisiert.

Die einzelnen Phasen der Embedded-Projektentwicklung

Eine Basis für ein erfolgreiches Projekt sind zunächst die Kenntnisse, wie und in welchem Umfang die Projekt-Anforderungen (project requirements) zu ermitteln sind, damit bei der Auswahl des geeigneten Mikrocontrollers und der Entwicklung der Software alle projektrelevanten Aspekte berücksichtigt sind. Bei der Software-Erstellung darf nichts vergessen werden, weder funktionale noch nicht-funktionale Anforderungen.

Viel Geld und Zeit lässt sich durch die klare Definition der Software-Architektur (software architecture) sparen. Werden beispielsweise Software-Module mit klar definierten Schnittstellen versehen, können sie leichter getestet werden.

Eine erfolgreiche Software-Entwicklungsstrategie führt zur Entwicklung wiederverwendbarer Software-Module. Hierzu werden neben den Kenntnissen des Mikrocontroller-Aufbaus noch sehr gute Programmierkenntnisse in Embedded C (EC) und Embedded C++ (EC++) benötigt. Die Nutzung von Strukturen und Zeigern ist dabei ein zentrales Thema. Die Peripherie-Register und die Projektdaten können so geeigneten Strukturen abgebildet werden. Im Programmcode wird mithilfe von Funktionen auf die Elemente der Strukturen zugegriffen. Als Parameterschnittstelle werden dabei Zeiger auf den Typ der Struktur benötigt.

Die unterschiedlichen Zugriffszeiten der verfügbaren Speicherbereiche hängen mit der Art der Anbindung an die programmausführende CPU ab. Deshalb müssen Funktionen und Datenstrukturen entsprechend der gewählten Mikrocontroller-Architektur und der vorgegebenen Echtzeit-Anforderungen der Applikation an der richtigen Stelle im Adressraum platziert werden (lokatieren).     

System-Anforderungen bestimmen die Mikrocontroller-Auswahl: Singlecore oder Multicore

Die Auswahl des Mikrocontrollers (microcontroller selection, type of MCU - microcontroller unit) hängt maßgeblich von den Systemanforderungen ab. Diese bestimmen, welcher Programmumfang bearbeitet werden soll, welche Kommunikationsmethoden über serielle Schnittstellen benötigt werden, welcher Typ von Sensorsignalen eingelesen und ausgewertet werden soll und wie viele Motoren bzw. Aktuatoren welchen Typs angesteuert werden sollen.

Die erforderliche Rechenpower (gemessen in MIPS: million instructions per second), die Größe des benötigten Speichers auf dem Baustein (on-chip memory) und die Anzahl der zu verwendenden Port-Pins bestimmt den Mikrocontroller, der für diese Applikation am besten passt. Zur Wahl stehen Singlecore-Mikrocontroller (enthalten einen Rechenkern bzw. eine CPU) oder Multicore-Mikrocontroller mit mehreren Rechenkernen.

Für die Bestimmung des richtigen Typs sind zunächst alle relevanten Systemanforderungen zu definieren, die die Steuerung bzw. Regelung erfüllen soll bzw. muss. Hierzu gehören die Anforderungen für die Kommunikation, die Anzahl und Art der Eingangssignale (z.B. analoge oder digitale Sensorsignale) und die zu generierenden Ausgangssignale (z.B. pulsweitenmodulierte Signale - PWM - zur Ansteuerung von Aktuatoren/Motoren).

Aus diesen Informationen lassen sich die Anforderungen an den einzusetzenden Mikrocontroller definieren. Hierzu gehören z.B. die Anzahl der Eingänge und Ausgänge (I/O-Ports), die benötigten Kommunikationsmodule (CAN, SPI, FlexRay, Ethernet, etc.), die bereitzustellende Rechenleistung der CPU (central processing unit) und die benötigten Speichergrößen an Flash und RAM.

Die richtige Auswahl des Mikrocontroller-Typs bestimmt die Kosten und schließlich den Erfolg eines Projektes. Zusätzlich und passend zum Mikrocontroller werden die benötigten Entwicklungswerkzeuge (development tools), wie Compiler, Linker/Locator und Testwerkzeuge, wie zum Beispiel Debugger und Test-Tools für die White- und Black-Box Tests, gewählt.

Mikrocontroller - Multicore, Singlecore, Peripherie 

Bild 2: Mikrocontroller-Architekturen:AURIX Multicore-Mikrocontroller

Neue Projekt-Herausforderungen mit Multicore für SW-Architektur und SW-Design

Mit dem Einsatz von Multicore-Mikrocontrollern ergeben sich viele neue Herausforderungen an die Software-Architektur und das Software-Design. Dies liegt darin begründet, dass durch mehrere Kerne gleichzeitig auf gemeinsame Ressourcen wie z.B. Datenspeicher (SRAM) zugegriffen werden kann. Es muss also in der Software-Architektur klar definiert werden, welcher Kern in globalen Speichern welche Partitionen privat nur für sich und welche Kerne gemeinsam (z.B. für die Parameterübergabe) verwendet werden sollen.

Zum Verhindern von inkonsistenten Datenzugriffen muss der System-Designer eine Multicore-fähige Speicherarchitektur und Lese- und Schreib-Zugriffrechte in einer Memory Protection Unit (MPU) für einzelne Tasks in den verschiedenen Cores definieren.

Mikrocontroller - Multicore, Singlecore, Peripherie 

Bild 3: Mikrocontroller-Architekturen:Verwendung gemeinsamer Speicher in Multicore-Mikrocontrollern

Der geeignete Einstieg: Mikrocontroller Seminare, Trainings, Workshops und Tutorials

Zu einzelnen Themen gibt es zwar Tutorials von Baustein- und Tool-Herstellern, sie beleuchten allerdings nur ausgewählte Aspekte. MicroConsult stellt in seinen Trainings die Zusammenhänge dar, die Ihnen dabei helfen, im Projekt den Überblick zu gewinnen und auch zu behalten.

Für eine erfolgreiche Embedded-System-Entwicklung und Software-Entwicklung ist es empfehlenswert, sich durch kompetente Schulungs-, Trainings- und Coaching-Partner bewährte Programmiertechniken und Programmierkenntnisse in Workshops und Seminaren anzueignen.


Mikrocontroller: Multicore, Singlecore, Peripherie - Trainings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich hier zu Schulungen/ Seminaren/ Trainings/ Workshops und individuellen Coachings von MircoConsult zum Thema Mikrocontroller: Multicore, Singlecore, Peripherie.

Mikrocontroller: Multicore, Singlecore, Peripherie - Coaching

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.
Coaching: Mikrocontroller


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

 

Unsere Inhalte vermitteln wir Ihnen sowohl in Präsenz- als auch Live-Online-Trainings.


Mikrocontroller: Multicore, Singlecore, Peripherie - Fachwissen

Wertvolles Fachwissen zum Thema Mikrocontroller: Multicore, Singlecore, Peripherie steht hier für Sie zum kostenfreien Download bereit.

 
Fachwissen zu weiteren Themen unseren Portfolios finden Sie hier.


Mikrocontroller: Multicore, Singlecore, Peripherie - 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.

Marcus Gößler

Dipl.-Ing. (TU) Marcus Gößler schloss das Studium der Elektrotechnik an der Technischen Universität Graz ab. Seine berufliche Laufbahn begann als Field Application Engineer für analoge und digitale Produkte im Bereich Luft-und Raumfahrt. Weitere Applikationsfelder umfassten Audio/Video, portable Systeme und Infotainment im Automobil. Er leitete Applikationsorganisationen in Zentral- und Osteuropa und zeichnete Verantwortung für große Halbleiterhersteller im Vertriebskanal und Marketing. Bei MicroConsult ist er heute als Trainer und Coach im Bereich Embedded Systems tätig, mit Schwerpunkten in sicherheitsrelevanten Anwendungen und Multicore-Bausteinen.

Remo Markgraf

Dipl.-Ing. Remo Markgraf ist Senior Management Consultant bei der MicroConsult GmbH. Neben Begeisterung für Innovation und Leidenschaft für Embedded-Systeme verfügt er über langjährige Projekt- und internationale Führungserfahrung in Softwareentwicklung, Systems Engineering, Projekt-, Produkt-, Innovations- und Business Development Management sowie dem technischen Vertrieb.

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.