Und warum es unser Leben einfacher macht
Die Cortex Microcontroller Software Interface Standard (CMSIS)-Technologie soll Software-Ingenieuren dabei helfen, Programmcodes für jeden Cortex-M-basierten Mikrocontroller auf die schnellste und zuverlässigste Weise zu erstellen. Sobald alle Treiber, Bibliotheken und Middleware sorgfältig von ARM und Siliziumherstellern erstellt und von ARM verifiziert wurden, kann garantiert werden, dass der Startup-Code und der Konfigurationscode für die MCU-Peripherie korrekt generiert werden.
Da die Peripheriegeräte der Mikrocontroller-Einheit (MCU) immer komplexer wurden und der Konfigurationsprozess immer mehr Zeit in Anspruch nahm, war der Konfigurationsprozess der Peripherie-Steuerregister des Mikrocontrollers eine echte Quelle für potenzielle Probleme. In der Ära der 8-Bit-Mikrocontroller konnte dieser Prozess in der Regel von Softwareentwicklern in wenigen Minuten oder zumindest Stunden erledigt werden. Dabei konnten jedoch leicht kleine oder versteckte Fehler gemacht werden, die beim Debuggen des endgültigen Codes zu ernsthaften Problemen führen konnten. Darüber hinaus hatte jeder MCU-Hersteller seinen eigenen Beschreibungsstil für den Peripheriekonfigurationsprozess, und es war eine echte Herausforderung, den MCU-Hersteller zu wechseln. Diese Situation führte zu einem nicht enden wollenden Konflikt zwischen den wirtschaftlichen Faktoren der Markteinführung und den Aspekten der Entwicklerfähigkeiten.
Einige Jahre später wurden 32-Bit-Mikrocontroller mit reichhaltiger Peripherie eingeführt, und die Konfiguration der Peripherie-Steuerregister der MCU war ein Problem für Softwareentwickler. Im Jahr 2008 führte die Firma Keil daher die neue revolutionäre Technologie Cortex Microcontroller Software Interface Standard (CMSIS) ein. CMSIS bietet eine sehr einfache Konfigurationsschnittstelle zwischen Mikrocontrollerkern und Peripherieeinheiten. Diese Technologie ermöglicht es, sowohl den Peripheriekonfigurationsprozess als auch die Markteinführungszeit für den kommerziellen Erfolg zu beschleunigen. Sie vermeidet auch Konfigurationsfehler. Darüber hinaus kann diese universelle Technologie in allen ARM Cortex-M und Cortex-A Mikrocontrollern verwendet werden.
CMSIs im Detail
CMSIS hat eine modulare Struktur und jedes Modul kann unabhängig verwendet oder aktualisiert werden. Einige der Module sind gerätespezifisch, daher wird für jede ARM Cortex-Mikrocontrollerfamilie eine Sammlung von CMSIS-Modulen erstellt, das Device Family Pack (DFP).

CMSIS-RTOS
CMSIS-RTOS bietet eine deterministische Echtzeit-Software-Ausführungskontrolle für einfache Embedded-Anwendungen. Jedes ARM-Softwareprodukt enthält es, angefangen vom kostenlosen Keil Microcontroller Development Kit (MDK Lite) bis hin zu den meisten ARM Design Studio Produkten als Teil des MDK. CMSIS-RTOS ist in der Tat eine Anwendungsprogrammierschnittstelle (API), die konsistente Software-Schichten mit Middleware- und Bibliothekskomponenten ermöglicht.
CMSIS-Treiber
CMSIS-Driver bietet eine Software-API, die periphere Treiberschnittstellen für Middleware-Stacks und Benutzeranwendungen beschreibt. Die CMSIS-Driver API beschreibt die API-Schnittstelle durch Header-Dateien und Dokumentation. Die CMSIS-Driver API deckt einen grossen Bereich der unterstützten Peripheriegeräte für die meisten Anwendungsfälle ab.

Abb. 2 zeigt eine typische Struktur der Beziehungen zwischen Softwarekomponenten und Hardwareeinheiten
CMSIS-CORE
CMSIS-CORE - möglicherweise der wichtigste Teil - verwaltet den Systemstart, den Zugriff auf den Prozessorkern und die Peripheriedefinitionen für den Einsatz in jeder eingebetteten Anwendung. ARM bietet generische CMSIS-CORE-Systemdateien, sogenannte Templates, an. Basierend auf dieser Vorlage erstellt und bietet jeder MCU-Hersteller sein eigenes Device Family Pack (DFP) an. Softwareentwicklern steht es frei, generische oder spezifische Ressourcen zu verwenden.
CMSIS-Pack
CMSIS-Pack ist eine XML-basierte Datei, die den Inhalt eines Softwarepakets beschreibt, das Quellcodes, Header-Dateien, Softwarebibliotheken, Quellcodevorlagen und Geräteparameter zusammen mit Startcode und Programmieralgorithmen enthält. Es enthält Beispielprojekte für Mikrocontroller und Entwicklungsboards. Die komplette Dateisammlung wird in einem *.pack-Archiv (ZIP-Format) ausgeliefert. Nach der Installation des Software-Packs stehen alle enthaltenen Software-Komponenten den Entwicklungswerkzeugen zur Verfügung.
CMSIS-DSP
CMSIS-DSP ermöglicht die Entwicklung eines digitalen Echtzeit-Signalverarbeitungssystems (DSP), das nicht so trivial ist wie die DSP-Algorithmen. Die CMSIS-DSP-Bibliothek ist eine umfangreiche Sammlung von DSP-Funktionen, die für die verschiedenen Cortex-M-Prozessorkerne optimiert sind. CMSIS-DSP ist in der Industrie weit verbreitet und ermöglicht auch eine optimierte C-Code-Generierung aus MATLAB®.
CMSIS-SVD
CMSIS-SVD ist im CMSIS-Pack enthalten. Es unterstützt Mikrocontroller-Detailansichten der Geräteperipherie, die den aktuellen Registerstatus im SVD-Format (System View Description) anzeigen.
CMSIS-DAP
CMSIS-DAP ist ein integriertes Tool, das eine standardisierte Schnittstelle zum Cortex Debug Access Port (DAP) verwendet und auch von mehreren Starter- und Entwicklungskits genutzt wird. Daher benötigen Ingenieure keine speziellen Debug-Einheiten wie ULINK, J-Link oder ähnliche für die grundlegende Board-Evaluierung.
CMSIS-Pakete enthalten viele andere moderne und spezifische Bibliotheken und Middleware wie CMSIS-NN (neuronale Netze und maschinelle Lernfunktionen speziell für IoT-Anwendungen) und CMSIS-Zone (unterstützt MCUs mit mehreren Cores, gesicherte und ungesicherte Programmierung) für die meisten modernen Cortex-M-Cores.
