Die meisten Halbleiterhersteller bieten eigene Entwicklungstools an, um eine effiziente Produktentwicklung für ihre Komponenten zu unterstützen. Ob diese hierfür alles Notwendige mitbringen, lässt sich nur beantworten, wenn mehr betrachtet wird als nur die reinen Tools. Vielmehr braucht es eine ganzheitliche Entwicklungsumgebung aus Hardware- und Software-Tools, eingebetteten Laufzeittreibern, Bibliotheken, Dokumentation und mehr.
Anhand der ModusToolbox-Software von Infineon soll hier aufgezeigt werden, was die Effizienz der Entwicklungsarbeit des Embedded-Ingenieurs tatsächlich erhöht.
Die ModusToolbox-Software ist eine erweiterbare Entwicklungsumgebung, die eine breite Palette an Infineon Mikrocontrollern und Entwicklungskits unterstützt. Sie beinhaltet eine Sammlung verschiedener Entwicklungswerkzeuge, Bibliotheken und eingebetteter Laufzeit-Assets für die flexible Entwicklung von Embedded-Software.
Mit den Desktop-Anwendungen lassen sich neue Embedded-Projekte erstellen, Software-Komponenten verwalten sowie Geräteperipherie und Middleware konfigurieren. Hinzu kommen die typischen Entwicklungswerkzeuge für Kompilierung, Programmierung und Debugging. Sie nutzen zahlreiche GitHub-gehostete Repositories von Infineon und Partnern, die Code-Beispiele, Board-Support-Pakete, Middleware und Anwendungsunterstützung enthalten. Zusammen mit der Dokumentation, den Schulungsinhalten und einer Support-Community ergibt sich ein kompletter Workflow für Embedded-Entwickler.
Was Sie schon immer über Quantencomputer wissen wollten
Als im Juni 2021 der erste Quantencomputer in Deutschland von IBM eingeweiht wurde, war das Interesse groß. Aber was verbirgt sich hinter der Technologie? Was kann sie eines Tages leisten, woran wird geforscht und wo lauern Gefahren? Das und mehr erfahren Sie hier.
Embedded-Software-Entwicklung
Grundlage für eine effiziente Embedded-Software-Entwicklung ist eine flexible Entwicklungsumgebung, die es dem Embedded-Entwickler ermöglicht, seinen individuellen Arbeitsablauf zu definieren. Zusammen mit einem der unterstützten PSoC-Mikrocontroller-Entwicklungskits bietet die ModusToolbox diese Art von Flexibilität und zwar von der Auswahl der unterstützten IDE oder Kommandozeilen-Build-Unterstützung bis hin zu den verschiedenen Optionen für Treiber-APIs und Middleware-Integration.
Der ideale Workflow für die Entwicklung
Wer sich auf die Suche nach dem idealen Arbeitsablauf für die Entwicklung eingebetteter Systeme macht, braucht nicht lange zu suchen. Der erste Ingenieur, den man fragt, wird schwören, dass der Ablauf, nach dem er persönlich vorgeht, der richtige ist. Da also jedes Entwicklungsteam bzw. jeder Embedded-Entwickler seinen ganz eigenen Workflow hat, sollte die Entwicklungsumgebung ein hohes Maß an Flexibilität gewährleisten. Dies ist auch eine zentrale Säule der ModusToolbox-Software.
Herzstück des Entwicklungsprozesses
Das Herzstück des Entwicklungsprozesses ist die integrierte Entwicklungsumgebung (IDE). Sie nutzt der Embedded-Entwickler täglich bei der Codierung und Fehlersuche in der Embedded-Firmware. Im Idealfall sollte sie eine vertraute Umgebung für jeden Entwickler darstellen. ModusToolbox enthält für Nutzer, die innerhalb des Eclipse-Frameworks und mit dem Arm-GCC-Compiler entwickeln möchten, eine Eclipse-basierte IDE. Als alternativer Editor steht Microsoft VS Code zur Verfügung, der genau dieselbe Arm GCC Toolchain und dieselben Build-Befehle verwendet. Durch die VS-Code-Erweiterungen bietet er die vollen Programmier- und Debugging-Fähigkeiten.
Zudem können ModusToolbox-Projekte auch auf alle führenden IDEs und Toolchains mit nativer Unterstützung für IAR Embedded Workbench und Arm Mikrocontroller Developers Kit (µVision) genutzt werden.
Doch eine flexible und effiziente Entwicklungsumgebung muss über die visuellen Code-Editoren und grafisches Debugging hinausgehen. Deshalb ist der Kern der ModusToolbox-Software ein Makefile-basiertes Build-System und eine Kommandozeilen-Shell zur Automatisierung von Build-Systemen sowie zur Erleichterung eines kontinuierlichen Integrations-Workflows. Dieses skriptfähige Build-System ist entscheidend für eine wirklich flexible Entwicklungsumgebung, die sich genau auf die Anforderungen des Entwicklers zuschneiden lässt Dabei kann er sich sicher sein, dass die kompilierte Ausgabe mit der mitgelieferten Eclipse-IDE bzw. dem VS-Code konsistent sein wird, weil sie exakt dieselben Build-System-Befehle und Compiler-Optionen verwendet.
Eine solche Unterstützung für skriptfähige Build-Befehle und eine kontinuierliche Integration führen quasi automatisch zu Arbeitsabläufen für die kollaborative Entwicklung. Versionskontrolle, Git-Repositories, Make-Rezepte – sie sind entscheidend für die Art und Weise, wie die eingebetteten Laufzeit-Assets innerhalb von ModusToolbox verteilt und verwaltet werden. Gleichzeitig sind es die zentralen Komponenten für die gemeinsame Entwicklung innerhalb eines Teams.
Weitet man diese Fähigkeiten von ModusToolbox auf den Code der Benutzeranwendung aus, können Entwickler effizient im Team zusammenarbeiten und die korrekte Versionierungder bereitgestellten Treiber, Middleware, Bibliotheken und BSPs konsistent in den kontinuierlichen Integrations-Buildflows sicherstellen.
HAL- und Low-Level-Treiber eröffnen mehr Möglichkeiten
Für Embedded-Ingenieure stellt jede Entscheidung ein Abwägen von Kompromissen und Optimierungen dar. Von der Auswahl der Geräte- und Produktmerkmale über die ideale Balance zwischen ihrer Leistung und Fähigkeiten einerseits und Kosten und Stromverbrauch andererseits bis hin zu den spezifischen APIs, die zur Entwicklung einer Anwendung verwendet werden.
Oft sind die Möglichkeiten zur Optimierung der APIs durch die vom Halbleiterhersteller bereitgestellten Treiber begrenzt. Nicht so bei der ModusToolbox-Software. Denn sie stellt sowohl Low-Level-Peripherie-Treiber als auch eine Hardware-Abstraktionsschicht (Hardware Abstraction Layer, HAL) bereit. Die Hardware-Abstraktionsschicht bietet einheitliche APIs, die über verschiedene Gerätefamilien konsistent sind. Dadurch ist der Anwendungscode, der mit diesen Funktionen entwickelt wurde, in hohem Maße wiederverwendbar und in der Regel einfacher programmierbar, weil einige der zugrunde liegenden Hardwarespezifikationen zugunsten typischer Use-Case-Funktionen verborgen bleiben. Zudem ermöglicht er eine schnelle Integration von Middleware-Bibliotheken und Kommunikations-Stacks.
Allerdings müssen Kompromisse eingegangen werden, wenn ausschließlich auf einer abstrakten Ebene gearbeitet wird. Denn jede Art von Abstraktion führt zu einem gewissen Grad an Ineffizienz, und je weiter man sich von der zugrunde liegenden Hardware entfernt, desto mehr entfernt man sich auch von der detaillierten Steuerung des jeweiligen Peripheriegeräts. Im Gegensatz dazu geben Low-Level-Treiber die volle Kontrolle über das Peripheriegerät. Sie bieten außerdem Funktionen, die speziell für die Merkmale und Fähigkeiten des entsprechenden Geräts entwickelt wurden.
Da ModusToolbox HAL- und Low-Level-Treiber anbietet, kann ein Embedded-Entwickler beide innerhalb einer Anwendung nutzen. Dadurch ist es einerseits möglich, die nötige Balance zwischen Portabilität und Code-Wiederverwendung mit HAL-APIs zu erreichen, andererseits aber auch einen Code so zu entwickeln, der eng an die Fähigkeiten der Hardware gekoppelt ist. Unter diesem Aspekt können Code und speicherplatzsparende Software entwickelt werden, die genau auf die jeweilige spezifische Anwendung optimal abgestimmt ist.
Middleware und Bibliotheken
Eine weitere Herausforderung für Embedded-Entwickler besteht in der Integration von Bibliotheken und Middleware. Die meisten Halbleiterhersteller bieten Zugang zu einem Industriestandard-Ökosystem von Middleware, die speziell von diesem Hersteller, manchmal auch in Zusammenarbeit mit Partnern, entwickelt und bereitgestellt wird. In einigen Fällen ist das Angebot allerdings sehr rudimentär. Andere bieten Referenzbeispiele innerhalb der Entwicklungsumgebung an. Diese können als Ausgangspunkt fungieren und zeigen, dass die Middleware auf der jeweiligen Hardware funktionieren kann. Auch die ModusToolbox verfügt über Code-Beispiele innerhalb des ModusToolbox Project Creators für Beispielprojekte von Infineon und Partnern.
Dem Embedded-Entwickler bleibt oft noch die Aufgabe, diese Middleware in seine spezifische Anwendung zu integrieren. Das ermöglicht ModusToolbox mit einem Bibliotheksmanager, der in der Lage ist, die notwendigen Quelldateien von Git-Hub-Repositories zu sammeln, alle Abhängigkeiten von verwandter Middleware aufzulösen und die notwendigen Make-Rezepte zu aktualisieren, um die ausgewählten Quellen einzubinden. Die mit jedem Middleware-Quellordner gelieferte Dokumentation beschreibt detailliert alle Makefile-Änderungen, die nötig sind, um die Middleware in der Anwendung zu nutzen. (neu)
Autor
Ralf Kern ist Line Manager bei Rutronik.
Autor
Clark Jarvis ist Senior Staff Technical Marketer bei Infineon.