Arm: Remodularisierung von CMSIS 6 zwecks schnellerer Weiterentwicklung

Das erste der vier von Arm Limited zum Thema CMSIS 6 veranstaltete Webinar liegt hinter uns. Hier ein Überblick der Ankündigungen, die über kurz oder lang für so ziemlich Jeden, der ARM-Mikrocontroller einsetzt, an Relevanz gewinnen werden.

Worum geht es hier?

Der Arm-Vortragende begann seine Ausführungen mit einer kurzen Vorstellung dessen, wozu CMSIS vorgesehen ist. Im Prinzip handelt es sich dabei um eine „Hardware-Abstraktionsschicht“, die Nutzern von ARM-Mikrocontrollern verschiedener Anbieter eine mehr oder weniger einheitliche Programmierschnittstelle zur Interaktion mit den diversen Hardware-Ressourcen zur Verfügung stellen möchte.

Bildquelle: Arm.

Im Rahmen des Vortrags wurde außerdem betont, dass es sich dabei um keine wirklich neue Technologie handelt – per se steht das Produkt bereits seit 2008 zur Verfügung; die Arbeiten an der „aktuellsten“ Version nahmen dann fast sieben Jahre in Anspruch.

Bildquelle: Arm.

Modularisierung und Nutzwertsteigerung

Der mit CMSIS 5 begonnene Trend zur Entwicklung unter Nutzung von GitHub wurde mit CMSIS 6 fortgesetzt: Einige Module wurden aus der „Haupt-Distribution“ herausgebrochen, und stehen fortan in Form alleinstehender Pakete zur Verfügung.
Diese für Entwickler mit mehr Arbeit bei der Konfiguration des Projektskeletts einhergehende Änderung ist insofern erfreulich, als die Entwicklung der einzelnen Pakete nun „voneinander unabhängig“ erfolgen soll – die neu ausmodularisierten Komponenten sollen unabhängig vom Haupt-CMSIS Aktualisierungen und Nutzwertsteigerungen erhalten.
Außerdem gibt es viele Komponenten, die als „signifikant aktualisiert“ markiert wurden – die Abbildung fasst diese zusammen.

Bildquelle: Arm.

Nach dieser Auflistung folgte eine Besprechung der an den verschiedenen Komponenten durchgeführten Änderungen. Das erste Opfer war dabei CMSIS Core.

Bildquelle: Arm.

Der Fokus des Vortragenden lag dabei auf dem „Mandat“, die diversen Pack-Anbieter zur Erzeugung von in C gehaltenem Startup-Code zu animieren bzw. zu nötigen.
Sinn dieser Vorgehensweise ist, dass Nutzer den Startup-Code fortan „einfacher“ verändern können, weil sich dazu nicht mehr auf Arm-Assembler-Ebene auskennen müssen.
Abstraktionsschicht Nummero zwei hört auf den Namen CMSIS-RTOS2: Ziel ist hier die zur Verfügungstellung einer HAL, die Nutzern von Arm-Mikrocontrollern den „fliegenden Wechsel“ zwischen verschiedenen Echtzeitbetriebssystemen ermöglichen soll.

Bildquelle: ARM

Interessant ist hier die Unterstützung für SMP – im Rahmen des Vortrags sprach man explizit davon, dass diese neue Schnittstelle derzeit noch von keinem der im Markt befindlichen RTOS unterstützt wird.
Die Unterstützung für Process Isolation ist derweil bereits verfügbar, und steht in Keil RTX 5 zur Verfügung.

Bildquelle: Arm.

Auch in der Komponente CMSIS-Driver gibt es Erweiterungen: Neu ist hier eine „grundlegende“ API für die Kontrolle der GPIO-Pins.

Bildquelle: Arm.

Im Rahmen des Vortrags betonte Arm mehrfach, dass die hier implementierte GPIO-API auf einzelne Operationen optimiert ist. Wohl im Interesse der Portabilität zwischen verschiedenen Controller-Architekturen gibt es derzeit keine Möglichkeit, um mehrere GPIO-Pins in „einem Aufwasch“ zu modifizieren oder auszuleben.
Zu guter Letzt wurden die NN-und DSP-Komponenten – wie in der Abbildung gezeigt – in eine „neue“ Modul-Gruppe ausgelagert. Der Sinn dieser Änderung wurde weiter oben bereits erwähnt.

Bildquelle: Arm.

Fragen der Kollekte.

Der Flurfunk spielt im Bereich der Elektronik seit jeher eine wichtige Rolle. Interessant waren im Rahmen dieses Webinars vor allem zwei Fragen: Erstens die Frage, wie sich Arm die Integration mit Rust vorstellt.

Bildquelle: Arm.

Die Antwort auf diese Frage erfolgte durch den Keil-Head Honcho persönlich. Spezifischerweise hat sich Arm bisher überhaupt nicht mit Rust auseinandergesetzt. Die Community hat in der Vergangenheit allerdings bereits einige CMSIS-Module „erbeutet“ und in Rust-Projekten zur Anwendung gebracht. Allgemein wurde allerdings betont, dass CMSIS in Version 6 Unterstützung für LLVM mitbringt – dies soll (logischerweise) die Rust-Unterstützung erleichtern.
Frage Nummero zwei betraf die Thematik, wann CMSIS in Version 6 in der von STMicroelectronics zur Verfügung gestellten Cube-IDE zur Verfügung stehen soll. Die Antwort darauf war, dass Arm hierüber keine Informationen hat – wer mehr Daten dazu haben möchte, möge sich bitte an seinen STMicroelectronics-Feldingenieur wenden.

Mehr Informationen.

Im Rahmen des Webinars führte der Presentator auch – grundlegend – den Prozess vor, der zur Komplett-Aktualisierung einer vorliegenden Lösung erforderlich ist. In der Ressourcen-Liste findet sich außerdem ein „vollständiger“ Guide zur Migration.

Bildquelle: Arm.

Zu guter letzt sei angemerkt, dass einige der neuen Komponenten in naher Zukunft „en Detail“ vorgestellt werden. Hierfür sind insgesamt drei weitere Webinare vorgesehen, die ebenfalls in der Abbildung aufscheinen.

Bildquelle: Arm.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More