Programmieren mit System CMSIS vereinheitlich Peripherie-Programmierung

Jeder Mikrocontroller hat ein individuelles Sortiment von Peripherie. Damit auf diese Peripherie einheitlich zugegriffen werden kann, hat ARM den Schnittstellen-Standard CMSIS für Cortex-M-Controller geschaffen, der von allen wichtigen Halbleiter- und Tool-Herstellern unterstützt wird. CMSIS erleichtert und vereinheitlicht die Programmierung verschiedener Derivate und Prozessor-Generationen.

Mikrocontroller auf Basis des Cortex-M von ARM erlangen in der Industrie immer größere Verbreitung und werden dadurch zu einem De-facto-Industrie-Standard. Mit dem Cortex-M0 sind noch kostengünstigere Geräte möglich. Und der Cortex-M4 integriert DSP-Befehle sowie Hardware-Floating-Point-Support, wodurch die Rechenleistung deutlich erhöht wird. Alle Cortex-M-Prozessoren bieten durch einen geringeren Stromverbrauch eine hohe Energie-Effizienz. Die Prozessoren der Cortex-M-Serie sind softwarekompatibel, und zusammen mit dem "Cortex Microcontroller Software Interface Standard" (CMSIS) wird die Portierung von Software weiter vereinfacht.

Das Mikrocontroller-Segment ist einer der am stärksten fragmentierten Märkte in der Elektronik-Industrie. Die vielen Mikrocontroller-Architekturen haben oft eine lange Geschichte; die meisten 8- und 16-bit-Architekturen wurden vor mehr als 20 Jahren entwickelt. Im Laufe der Jahre wurden diese Architekturen mehrere Male umgestaltet, so dass die heutigen Anforderungen noch erfüllt werden können.

Da keine Peripherie- und Schnittstellen-Standards vorhanden sind, müssen Programmierer immer wieder Lösungen für die gleichen grundlegenden Probleme neu erfinden und vorhandene Software-Algorithmen an neue Hardware anpassen. In solchen Umgebungen kann die objektorientierte Programmierung nur selten verwendet werden. Generische Software-Komponenten, die in der PC-Welt gebräuchlich sind, sind nicht verfügbar, und das Fehlen von Programmier-Standards limitiert die Software-Wiederverwendung. Stattdessen müssen Halbleiterhersteller umfangreiche Software-Frameworks für neue Mikrocontroller, die auf spezifische Anwendungen zugeschnitten sind, kostenfrei zur Verfügung stellen. Dies verlangsamt die Einführung neuer Bausteine und erhöht die Entwicklungskosten signifikant.

Einheitlicher Zugriff auf Peripherie

Der Cortex Microcontroller Software Interface Standard (CMSIS) widmet sich den Herausforderungen, bei denen verschiedene Software-Komponenten auf den physikalischen Prozessor angewendet werden. Der CMSIS ist heute für den Cortex-M0 und den Cortex-M3 verfügbar und wird derzeit für den Cortex-M4 erweitert. Es ist auch geplant, künftige Cortex-M-Prozessorkerne zu berücksichtigen. Er wird in enger Zusammenarbeit mit verschiedenen Halbleiter-Lieferanten entworfen.

Für die breite Akzeptanz in der Branche sind Software-Hersteller wie IAR, Keil, Micrium, Segger und Tasking ebenfalls beteiligt. Diese Zusammenarbeit hat dazu geführt, dass eine einfach zu bedienende und leicht zu erlernende Programmier-Schnittstelle entstand. CMSIS bietet ein gemeinsames Konzept für die Anbindung von Peripheriekomponenten, RTOS und Middleware-Komponenten. Der CMSIS ist kompatibel mit verschiedenen Compiler-Implementierungen einschließlich GCC und bietet die in Bild 1 dargestellten Software-Schichten.

Der CMSIS-Peripherielayer enthält Namensdefinitionen, Adressdefinitionen und Hilfsfunktionen für den Zugriff auf die Register des Prozessorkerns und die Peripherie. Er führt eine konsequente Zugriffsweise auf Peripherie, Exception/Interrupt-Vektoren ein und stellt eine Standard-Funktion für den Systemstart zur Verfügung. CMSIS definiert auch eine geräteunabhängige Schnittstelle für einen Echtzeit-Kernel und Daten-Trace-Kanäle für RTOS-Kernel-fähige Debugger sowie einfaches Debugging im "printf"-Stil.

Der CMSIS ist keine weitere komplexe Software-Schicht, die Halbleiteranbieter zwingt, dieselben Funktionen immer wieder neu zu implementieren. CMSIS definiert allgemeingültige Methoden zur Programmierung der Peripherie. Die einzelnen Peripherie-Komponenten wie z.B. I/O-Port, Timer, PWM, A/D, D/A etc. können sich in Leistung und Funktionsumfang unterscheiden. Der CMSIS verhindert nicht den direkten Hardware-Zugriff, da die Peripherie-Register immer noch direkt angesprochen werden können. Der CMSIS erfordert keine immensen Ressourcen und benötigt weniger als 1 Kbyte Code-ROM und nur 4 byte Daten-Speicher.

Der CMSIS bietet viele Vorteile wie ein einheitliches Software-Framework und einen bewährten Software-Layer. Dies ermöglicht das einfache Verteilen von Template-Code und Programm-Beispielen an die Compiler-Hersteller. Der Cortex-M3-Prozessor zusammen mit seinen Kern-Peripherien ist über die verschiedenen Halbleiter-Lieferanten hinweg konsistent, und ARM bietet eine allgemeingültige Dokumentation zu diesen Komponenten. Zusammen mit dem CMSIS ermöglicht dies, generische Einführungsliteratur zu veröffentlichen, die nicht hersteller- oder hardwarespezifisch ist. Im Laufe der Zeit ist eine Verringerung der Lernkurve für die Applikationsentwickler zu erwarten, die bisher Erfahrungen mit Cortex-M-Bausteinen anderer Hersteller haben und nun einen neuen Cortex-M einsetzen.