Cortex-M3 im Vergleich zum ARM7 – Safety, Security und Programmanalyse

3. Februar 2009, 9:38 Uhr | Dr. Kurt Böhringer
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Cortex-M3 im Vergleich zum ARM7 – Safety, Security und Programmanalyse

Sollte ein Fehlverhalten der Software festgestellt werden, kann der „break“-Eingang des „Advanced Timer1“ genutzt werden, um Motorsteuerungen per Hardware sofort zu stoppen, bevor ein Schaden entsteht. Es ist das gleiche Signal, das bei der o.g. Umschaltung von externem auf internes Taktsignal Clock genutzt wird, das die PWM-Ausgänge des „Advanced Timer1“ in einen inaktiven Zustand versetzt. Andere GPIO-Aus- und -Eingänge können ebenfalls vor versehentlicher Umschaltung geschützt werden, indem die GPIO-Konfiguration verriegelt wird. Diese Verriegelung kann bitweise definiert werden.

Um externe Analogwerte zu überwachen, sind bei den Analog/Digital-Wandlern Analog-Watchdogs angebracht. Diese können bei Überschreiten oder Unterschreiten eines wählbaren Spannungsfensters einen Interrupt auslösen, mit dem die Software sehr schnell auf diese Veränderung reagieren kann. Eine übersichtliche Beschreibung der Programmierung dieser Peripherieeinheiten ist in [4] zu finden.

Schutz vor Piraterie

Leider reicht es nicht mehr aus, einen Flash-Speicher nur vor versehentlichem Überschreiben zu schützen. Dies ist beim internen Flash des STM32 mit Setzen der Write Protection möglich. Hierfür gibt es die „Option Bytes“, die in 4K-Blöcken den kompletten Flash-Inhalt schützen können. Diese Write Protection lässt sich per Software wieder abschalten.

Manchmal ist auch Schutz vor Software-Diebstahl, Plagiaten und Ähnlichem nötig. Um ein System vor so einem ungewollten Auslesen zu schützen, kann der Flash-Speicher auch vor Lesezugriffen im Debug-Modus geschützt werden. Auch hierfür gibt es ein Option-Byte. Ist hier der Lesezugriff geschützt, wird damit auch das Lesen durch einen Debugger, über ein Programm, das im RAM läuft, und über DMA verhindert.

Es gibt die Möglichkeit, das Option-Byte so zu verändern, dass der Lesezugriff wieder erlaubt ist, aber dabei wird gleichzeitig der komplette Flash-Inhalt gelöscht. Es gibt also keine Möglichkeit, den Inhalt des Flash-Speichers auszulesen, zu Debuggen oder auf eine andere Art und Weise zu erlangen und ggf. die teuer entwickelte Software zu stehlen.

Ein zusätzlicher „Tamper Pin“ kann helfen, ein ganzes System vor unerlaubtem Zugriff zu schützen. Auch diese Funktion ist im Bereich „VDD Backup Master Voltage“ untergebracht, der auch im Stop- und Standby-Modus versorgt wird und aktiv ist. Dieser Pin kann konfiguriert werden, dass er high oder low ist. Ein Wechsel des Pegels wird – auch im Stop- oder Standby-Modus – erkannt und kann einen Interrupt auslösen und die Backup-Register löschen. Wird der Pin an eine Erkennung eines unerlaubten Zugriffes auf das System angeschlossen, so kann die Software geeignete Abwehroder Schutzmaßnahmen einleiten und ggf. aufgezeichnete, zu schützende Daten, die in den von der Batterie versorgten Backup-Registern gespeichert sind, löschen. Ein willkommener Abwehrmechanismus für unerlaubten Zugriff von unautorisierten Personen.

Analysemöglichkeiten verbessern Software-Qualität

Wie schon in einem früheren Artikel [1] 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.

Dieses Einspringen des HSI bei Ausfall des externen Taktsignals kann mit dem STM32-PerformanceStick, einem preisgünstigen Evaluierungs-Tool für den STM32 (hitex.com/stm32-stick>www.hitex.com/stm32-stick), schnell und einfach gezeigt werden. Auf dem Stick ist außer dem STM32-Controller auch ein ARM7-Mikrocontroller untergebracht, damit Performance-Vergleiche und Stromaufnahmemessungen möglich sind [1, 2, 3].

Mit Hilfe dieses ARM7-Controllers kann, gesteuert durch die mitgelieferte Dashboard-Software, der externe Takt des STM32 abgeschaltet werden (Bild 1). Durch Deaktivieren der Checkbox „External Clock“ wird diese abgeschaltet und der interne Oszillator versorgt den Mikrocontroller. Da die externe Clock mit PLL auf bis zu 72 MHz getaktet war und nun auf die interne Clock mit 8 MHz umgeschaltet wird, blinkt die LED am STM32-PeformanceStick deutlich langsamer.

Wird die Checkbox wieder aktiviert, wird wieder auf Versorgung durch die externe Clock umgeschaltet und die LED blinkt wieder schnell.

8260401_af_04.jpg
Bild 1. Mit der Dashboard-Software des STM32-PerformanceSticks kann das Umschalten auf den internen Oszillator bei Ausfall des externen leicht gezeigt werden.

  1. Cortex-M3 im Vergleich zum ARM7 – Safety, Security und Programmanalyse
  2. Literatur
  3. Cortex-M3 im Vergleich zum ARM7 – Safety, Security und Programmanalyse
  4. Software-Sicherheitsfunktionen

Jetzt kostenfreie Newsletter bestellen!