Blick ins Kerngehäuse

Der Cortex-M3 im Vergleich zu ARM7 – neue Funktionen für Safety, Security und Programmanalyse

27. Mai 2010, 15:38 Uhr | Von Dr. Kurt Böhringer
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Analysemöglichkeiten verbessern Software-Qualität

Wie schon in einem früheren Artikel  erwähnt, bietet der Cortex-M3 gegenüber dem ARM7 eine einfache, bis zu einem Pin reduzierbare Schnittstelle (Serial Wire Viewer), die Beobachtungen der Applikation in Echtzeit von außen zulässt. Dies beschränkt sich nicht nur auf einen stark gefilterten Trace, es können auch statistische Beobachtungen des PC, der ausgeführten Befehle oder Daten sein, die ein hochwertiger Debugger zu einer aussagekräftigen Performance-Analyse nutzen kann. Die gefilterten Trace-Daten werden mithilfe der ITM-Logik (Instrumentation Trace Macrocell) erzeugt.

Die ITM ist sehr komplex und bietet sehr viele Möglichkeiten, die den Rahmen dieses Artikels sprengen würden. Die Programmierung dieser Logik wird von den Debug-Tools durchgeführt. Deshalb hat ein Anwender hierauf – außer der Auswahl eines geeigneten Tools – keinen Einfluss, er sieht nur die Analysemöglichkeiten, die die Bedien- Software des Tools anbietet. In diesem Beitrag kommen nur einige nützliche Anwendungsfälle am Beispiel des Tantino-Cortex von Hitex in Verbindung mit einem STM32-Mikrocontroller zur Sprache. Ein typischer Anwendungsfall zur Sicherung der Software-Qualität oder auch zur Fehleranalyse ist die Aufzeichnung zwecks Überwachung eines Kommunikationsprotokolls. Fast jedes Kommnunikationsperipheral hat Receive- und Transmit-Register auf definierten Adressen.

Bild 2
Bild 2: Überwachung einer Variablen mittels Serial Wire Viewer.
© Elektronik

Zur Aufzeichnung und Ausgabe über den Serial Wire Viewer werden diese Adressen als Trace- Filter in den Trace-Dialog eingetragen und können nun im Trace-Fenster angezeigt werden. Das Ergebnis ist eine Liste der empfangenen und gesendeten Daten, auf Wunsch mit Zeitstempeln, damit auch Timeout-Zustände untersucht werden können. Auch der Export der so aufgezeichneten Daten in eine Datei ist möglich, um automatisierte Soll-Ist-Vergleiche durchzuführen. Ein anderer Anwendungsfall ist die Überwachung von Variablen, z.B. solche, die kritische Applikationszustände anzeigen, bestimmte Werte nicht über- oder unterschreiten dürfen oder evtl. auch mit einem A/D-Wandler gemessene Analogwerte. Auch hier wird die Adresse als Trace-Filter definiert. Insbesondere bei Analogwerten ist hier die grafische Anzeige sehr übersichtlich (Bild 2).

Gezielte Optimierungen durch CPU-Zeit-Messungen

Bild 3
Bild 3: Statistische Messung der CPU-Last, die vier ausgewählte Funktionen verursachen. Es ist ersichtlich, dass die Funktionen search_sort() und bubble_sort() zusammen bereits 59 % der CPU-Zeit benötigen.
© Elektronik

Gerade bei Anwendungen mit großem Echtzeit-Einfluss ist die Sicherheit der Performance-Reserve sehr wichtig. Hier können detaillierte Zeitmessungen der Interrupt-Service-Routinen helfen. In fast allen Fällen reicht aber auch eine statistische Messung aus. Dies geschieht mit der „Execute Profile“- Methode. Hier werden zyklisch Werte über den Serial Wire Viewer ausgegeben und analysiert. Das Ergebnis ist eine Auswertung, die zeigt, welche der zu untersuchenden Funktionen (oder Code-Bereiche) wie viel CPU-Zeit erforden (Bild 3).

Neben der Performance- Sicherheit kann diese Analyse auch zur gezielten Optimierung der Funktionen eingesetzt werden, die viel CPU-Zeit benötigen. Analysemethoden, bei denen der Code instrumentiert werden muss, waren bisher umstritten, hauptsächlich deshalb, weil der hiermit analysierte Code dann meistens nicht dem Auslieferungszustand entsprochen hat, da bei Auslieferung diese Instrumentierung wieder entfernt wurde.

Der Serial Wire Viewer bietet vielfältige Analysemethoden auch über Code-Instrumentierung. Da hier der Code, der für die Instrumentierung nötig ist, sehr klein gehalten werden kann und auch keine zusätzliche Ressource (wie z.B serielle Schnittstelle) benötigt wird, besteht keine Notwendigkeit, diese Instrumentierung bei Auslieferung wieder zu entfernen. Damit entfällt der o.g. Grund für die Zweifel an dieser Methode.

Bild 4
Bild 4: Auch Ausgaben mittels Code-Instrumentierung helfen bei der Analyse von Applikationen. Hier die Aufzeichnung der Ausgabe über vier Kanäle.
© Elektronik

Die Instrumentierung im Auslieferzustand hat auch den Vorteil, dass das System auch im Feld analysiert werden kann – es muss nur das geeignete Debug-Tool angeschlossen werden. Eine solche Analysemöglichkeit bietet die „Semihosting“-Funktion des Serial Wire Viewers, für die der STM32 sogar mehrere Kanäle bietet. Bild 4 zeigt eine solche Aufzeichnung.

Derivat-Vielfalt des Cortex-M3 steigt

Der Cortex-M3 stößt im Markt auf große Akzeptanz. Immer mehr Projekte werden zurzeit auf diesen neuen Controller umgestellt, und die ersten Systeme mit dem neuen Core sind nun schon in der Serienreife. Die Derivat- Vielfalt nimmt zu, und es werden auch immer mehr neue Peripheriegeräte unterstützt, womit die Controller für neue Applikationen einsetzbar werden. Damit steigen auch die Anforderungen an die Entwicklungs-Tools und die Software- Qualität. Beide erfordern bessere und komfortablere Analysemöglichkeiten. Hersteller professioneller Tools, wie z.B Hitex, beobachten den Markt und die Anforderungen, um die vielfältigen Möglichkeiten, die die ITM und der Serial Wire Viewer bieten, so umzusetzen, dass sie die Anforderungen für die kritischen Entwicklungsschritte lösen helfen. Man kann auf die nächste Zeit gespannt sein.


  1. Der Cortex-M3 im Vergleich zu ARM7 – neue Funktionen für Safety, Security und Programmanalyse
  2. Software-Sicherheitsfunktionen
  3. Analysemöglichkeiten verbessern Software-Qualität

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu ARM Germany GmbH

Weitere Artikel zu Mikrocontroller