Mit der heute oft geforderten Funktionsfülle von IoT-Endgeräten sind viele Single-Core-Controller überfordert. Zeit für den Einsatz von Multicore-Mikrocontrollern. Wir zeigen, wie der Einstieg gelingt.
Flexibel konfigurierbar: Der STM32H7-Mikrocontroller soll Anwendern das Entwickeln von Endgeräten für das Internet of Things vereinfachen.
(Bild: STMicroelectronics)
Entwickler von Edge-Geräten für das Internet der Dinge (Internet of Things, IoT) müssen immer mehr Funktionen in ihre Produkte integrieren. Die Palette reicht von Kommunikations- und Abtastsensoren bis hin zur Ausführung von Inferenzberechnungen für maschinelles Lernen (ML). Gleichzeitig soll der Stromverbrauch der Geräte so gering wie möglich sein. Dies erfordert einen flexiblen architektonischen Ansatz für ein Kernelement ihres Designs – den Mikrocontroller. Da MCUs mit nur einem Prozessorkern mit der geforderten Funktionsvielfalt überfordert sind, kommen vermehrt Multicore-MCUs zum Einsatz. Diese vereinen mehrere, oft unterschiedliche Kerne auf einem Chip.
Einführung in Multicore-Mikrocontroller
Das wiederum fordert Entwickler heraus: Sie müssen die Unterschiede zwischen symmetrischen und asymmetrischen Mehrkernprozessoren verstehen, müssen Funktionen geschickt verteilen und die MCUs effizient programmieren. Dieser Artikel stellt das Konzept von Multicore-Mikrocontrollern auf Basis der STM32H7-Dual-Core-Baureihe von Halbleiterhersteller STMicroelectronics vor und erklärt, wie sich eine Balance zwischen Rechenleistung und Energieaufnahme finden lässt.
Bildergalerie
Der Artikel bespricht auch mehrere Anwendungsfälle, in denen Entwickler die Mehrkernverarbeitung nutzen und die Arbeitslast auf mehrere Kerne aufteilen können. Bei Multicore-Mikrocontroller gibt es überwiegend zwei Arten von Konfigurationen: die symmetrische und die asymmetrische Verarbeitung. Symmetrische Konfigurationen enthalten zwei oder mehr exakt gleiche Verarbeitungskerne. In MCUs kommen häufig Prozessoren von IP-Anbieter ARM zum Einsatz, etwa Cortex-M4. Asymmetrische Konfigurationen setzen auf unterschiedliche Kerne, zum Beispiel einen Cortex-M7-Prozessor und einen Cortex-M4-Prozessor oder einen Cortex-M4- und einen Cortex-M0+. Letztlich entscheidet der geplante Einsatzzweck über die Kombination.
Grundsätzlich sind Multicore-Mikrocontrollern für IoT-Entwickler interessant, da sie ihre Anwendung in mehrere Ausführungsdomänen separieren können. Getrennte Ausführungsdomänen ermöglichen eine präzise Steuerung der Leistung, der Funktionen und des Energiebedarfs der Gesamtanwendung. Beispielsweise kann ein Kern verwendet werden, um mit einem Benutzer über ein hochauflösendes Display und ein Touchpanel zu interagieren, während der zweite Kern dazu dient, Echtzeitanforderungen des Systems zu verwalten, zum Beispiel die Steuerung eines Motors, von Relais und Abtastsensoren.
Die meisten Entwickler teilen ihre Anwendungen in die Blöcke Funktionsumfang und Echtzeit (feature rich/real-time) oder Echtzeit und Sicherheit (real time/security) auf. Es gibt natürlich noch andere Möglichkeiten, die Aufgaben zu verteilen, doch haben sich diese beiden Paradigmen etabliert.
Im ersten Paradigma verwaltet oft ein Kern die funktionsreichen Anwendungskomponenten, etwa die Anzeige, Inferenzberechnungen, Audiowiedergabe und Speicherzugriffe. Der zweite Kern behandelt dann Echtzeitfunktionen wie Motorsteuerung, Sensorik und Kommunikationsstapel (Bild 2).
Das zweite Paradigma trennt die Anwendung in Echtzeit und Sicherheitsfunktionen. Im ersten Kern kann die Anwendung Dinge wie die Anzeige, den Speicherzugriff und die Echtzeit-Audiowiedergabe handhaben. Der zweite Kern agiert ausschließlich als Sicherheitsprozessor. Als solcher übernimmt er das Speichern kritischer Daten wie Geräte- und Netzwerkschlüssel, die Verschlüsselung, den sicheren Bootloader und alle sonstigen Funktionen, die in die Kategorie sichere Software fallen (Bild 3).
Auswählen einer passenden Entwicklungsplatine
Obwohl Multicore-Mikrocontroller immer beliebter werden, zählen sie noch nicht zum Mainstream. Entwickler müssen zunächst entscheiden, welche MCU am besten für ihr Projekt geeignet ist. Dabei helfen Entwicklungsplatinen, die praktisch alle Chiphersteller für ihre Controller anbieten. Diese sollten LCD-Display zur Untersuchung funktionsreicher Anwendungen besitzen, Ein- und Ausgänge zum Anschluss von Erweiterungen haben, günstig sein und von einem breiten Ökosystem unterstützt werden, zu dem Beispielcode, Gemeinschaftsforen und Zugang zu sachkundigen Applikationsingenieuren (FAE) zählen.
Bild 4: Das STM32H745I-DISCO-Board integriert eine breite Palette von On-Board-Sensoren und Speicherfunktionen, die es Entwicklern ermöglichen, die Dual-Core-Mikrocontroller mit 480 MHz und 240 MHz zu testen.
(Bild: STMicroelectronics)
Sehen wir uns einige Beispiele von STMicroelectronics an, beginnend mit dem STM32H745I-DISCO (Bild 4). Dieses Board basiert auf der Dual-Core-MCU STM32 H745ZIT6 mit einem Cortex-M7-Kern, der mit 480 MHz läuft, und einem Cortex-M4-Prozessor, der mit 240 MHz taktet. Dieser Teil enthält eine Gleitkommaeinheit mit doppelter Genauigkeit und einen L1-Cache mit 16 KByte Daten und 16 KByte Befehlscache. Das Evaluierungsboard ist besonders interessant, denn es hat einen SAI-Audio-Codec, ein mikromechanisches MEMS-Mikrofon, integrierten Quad-SPI-Flash, 4 GByte eMMC-Speicher, einen Steckplatz für eine Tochterplatine sowie Anschlüsse für Ethernet und Audio.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Bild 5: Die Baugruppe STM32H757I-EVAL bietet Entwicklern viel Erweiterungsplatz, einfachen Zugang zu Peripheriegeräten und einen LCD-Bildschirm für den Einstieg in Multicore-Anwendungen.
(Bild: STMicroelectronics)
Für Entwickler, die nach einer Entwicklungsplatine mit zusätzlichen Fähigkeiten und weit mehr Erweiterungs-E/A suchen, könnte STM32H757I-EVAL besser geeignet sein (Bild 5). Das STM32H757I-EVAL verfügt über zusätzliche Funktionen, etwa 8 M x 32-Bit-SRAM, 1-GBit-Zwei-Quadranten-SPI-NOR-Flash, eingebettete Trace-Makrozelle (ETM) zur Befehlsverfolgung, Potentiometer, LED und diverse Taster und Knöpfe (Manipulation, Joystick, Aufwachen). Diese zusätzlichen Fähigkeiten, insbesondere die E/A-Erweiterung, können für Entwickler, die den Einstieg in die Entwicklung suchen, äußerst nützlich sein.
So starten Sie die erste Multicore-Anwendung
Unabhängig vom ausgewählten Board benötigen Entwickler zwei Hauptwerkzeuge. Einerseits STM32CubeIDE, eine freie integrierte Entwicklungsumgebung (IDE), mit der Entwickler ihren Anwendungscode kompilieren und auf das Entwicklungsboard laden können. STM32CubeIDE bietet auch die notwendigen Ressourcen, um eine Anwendung schrittweise auszuführen und zu debuggen. Es ist für die wichtigsten Betriebssysteme einschließlich Windows, Linux und MacOS verfügbar.
Bild 6: Der STM32Cube_FW_H7 bietet mehrere Beispiele, die den Einstieg in die Multicore-Verarbeitung mit OpenAMP demonstrieren und zeigen, wie ein Betriebssystem mit Mehrkernprozessoren konfiguriert werden kann.
(Bild: Beningo Embedded Group)
Andererseits das Firmware-Paket STM32H7. Dazu gehören Beispiele für die STM32H7-Entwicklungsboards für Multicore-Verarbeitung, Verwendung von FreeRTOS, Peripherie-Treiber und FatFS (Dateisystem). Sinnvoll ist es, sich das Firmware-Anwendungspaket herunterzuladen und sich mit den Beispielen vertraut zu machen, die von der gewählten Entwicklungsplatine unterstützt werden. Insbesondere gibt es zwei Ordner, auf die Entwickler achten sollten. Der erste ist der Anwendungsordner mit Beispielen, die zeigen, wie OpenAMP verwendet wird (Bild 6). Diese Beispiele zeigen, wie man Daten zwischen den Mikrocontroller-Kernen überträgt, wobei ein Kern Daten an den anderen Kern sendet, der sie dann wieder an den ersten Kern zurück überträgt. Beide Beispiele führen dies auf unterschiedliche Weise durch: einmal ohne Betriebssystem, einmal mit FreeRTOS.
Kerne mit oder ohne RTOS konfigurieren
Der zweite Satz von Beispielen zeigt, wie beide Kerne mit und ohne RTOS konfiguriert werden können (Bild 6). Einmal wird Free RTOS auf jedem Kern ausgeführt, während im anderen RTOS nur auf einem Kern läuft. Andere Beispiele im Firmware-Paket zeigen weiterreichende Funktionen. Das Laden eines Beispielprojekts führt dazu, dass ein Entwickler ein Projektlayout sieht, das dem in Bild 7 gezeigten ähnelt.
Bild 7: Ein Beispiel für ein OpenAMP-Ping-Pong-Projekt demonstriert Entwicklern, wie ein Kommunikationskanal zwischen den beiden CPU-Kernen erstellt wird.
(Bild: Beningo Embedded Group)
Wie veranschaulicht, ist das Projekt für jeden Kern in Anwendungscodes unterteilt. Wenn der Anwendungscode auf mehrere Kerne aufgeteilt ist, kann die Build-Konfiguration so eingerichtet werden, dass ein Entwickler jeweils nur mit einem Kern zur gleichen Zeit arbeitet. Die mit dem Paket mitgelieferte Datei readme.txt enthält eine detaillierte Beschreibung der Funktionsweise. Dies hilft, den Quellcode zu untersuchen, um zu verstehen, wie die Inter-Prozessor-Kommunikation (IPC) tatsächlich erfolgt.
Tipps und Tricks für die Arbeit mit Multicore-Mikrocontrollern
Der Einstieg in die Entwicklung eigener Projekte mit Multicore-Mikrocontrollern ist nicht schwierig. Entwickler müssen allerdings einige zusätzliche Überlegungen zu ihrem geplanten Design anstellen. Dabei können folgende Tipps helfen:
Es ist möglich, Domänen auf einem einzigen Prozessor zu mischen. Dies kann aber die Leistung beeinträchtigen, wenn nicht sorgfältig vorgegangen wird. Überlegen Sie daher bereits im Vorfeld, welche Applikationsteile auf welchem Kern laufen sollen.
Nehmen Sie sich die Zeit, um die in das OpenAMP-Framework eingebauten Funktionen zu untersuchen und zu evaluieren, wie die geplante Anwendung diese Funktionen nutzen kann.
Laden Sie die Anwendungsbeispiele für die STM32H7-Prozessoren herunter und führen Sie die Multicore-Anwendungsbeispiele für das ausgewählte Entwicklungsboard aus. Das H747 enthält zwei: eine für FreeRTOS und eine für OpenAMP.
Wenn Sie eine Anwendung debuggen, vergessen Sie nicht, dass jetzt zwei Cores laufen! Stellen Sie sicher, dass Sie den richtigen Thread innerhalb der Debug-Umgebung auswählen, um seinen Aufrufverlauf zu untersuchen.
Nutzen Sie interne Hardwareressourcen, z. B. eine Hardwaresemaphore, um die Anwendungsausführung auf den Cores zu synchronisieren.
Mit Multicore-MCUs können Entwickler von IoT-Edge-Geräten Funktionalität, Leistung und Stromverbrauch besser auf die Anforderungen der Anwendung abstimmen. Die Bausteine ermöglichen es Schaltungsdesignern, ihre Anwendung in Funktionsbereiche wie Feature Rich/Echtzeit- oder Echtzeit/Sicherheitsverarbeitung aufzutrennen. Entwickler können beispielsweise einen Kern deaktivieren und so Energie sparen, wenn eine Verarbeitungsdomäne nicht mehr benötigt wird. Oder sie schalten ihn gezielt ein, um die Anwendungsleistung zu verbessern. So können die Geräte flexibel auf geänderte Rahmenbedingungen reagieren.
* Rolf Horn ist Applications Engineer bei Digi-Key Electronics