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 1

Software-Sicherheitsfunktionen

Ähnlich wie der ARM7 hat auch der Cortex-M3 verschiedene Ausführungsmodi mit verschiedenen Privilegien. Beim Cortex-M3 wurde besonders auf Einfachheit Wert gelegt, ohne den Schutz von Systemprogrammteilen vor Anwenderprogrammteilen zu verlieren. Der Cortex-M3 hat zwei Ausführungsmodi, den „Handler Mode“ und den „Thread Mode“. Der Handler- Modus wird nach Reset und nach Exceptions aktiviert. Er läuft im privilegierten Modus, der alle Befehle erlaubt. Ansonsten läuft der Thread-Modus.

Wenn nach Reset keine andere Vorkehrung getroffen wird, läuft der Thread-Modus auch im privilegierten Modus und beide nutzen den gleichen Stack. Dies ist die einfachste Betriebsart, die allerdings auch keinen zusätzlichen Schutz bietet. Im Handler-Modus nach Reset kann die CPU aber auch so konfiguriert werden, dass der Thread-Modus einen eigenen Stack besitzt. Hierzu wird das Schatten-Stackregister genutzt, das beim Umschalten zwischen den Modi gewechselt wird. Mit eigenem Stack kann der Thread-Modus dann in den nicht-privilegierten Modus geschaltet werden.

Dieser Modus hat nicht das Recht, die privilegierten Befehle zu nutzen, die auf die xPSRRegister und deren Alias zugreifen. Der Handler-Modus kann jederzeit in den Thread-Modus umschalten, umgekehrt geht das nicht, es sei denn, Exceptions werden genutzt. Üblicherweise nutzen dies Echtzeit-Betriebssysteme, die mit diesen Privilegien verhindern, dass Anwendungen das ganze System stören können.

Watchdogs und weitere Sicherheitsfunktionen der Peripherie

Zusätzlich zu diesem Privilegienschutz gibt es noch Hardware-Einrichtungen, die helfen, fehlgelaufene Applikationen zu erkennen oder vor deren Auswirkungen zu schützen. Die ersten beiden sind zwei Watchdogs, ein „Windowed Watchdog“ und der „Independent Watchdog“, die beide parallel genutzt werden können. Der Windowed Watchdog ist an das interne Taktsystem angehängt (PCLK1) und hat die Besonderheit, dass er nicht nur innerhalb einer maximalen Zeit bedient werden muss, sondern in einem definierten Fenster, bestehend aus minimaler und maximaler Refreshzeit. Wird der Watchdog zu früh oder zu spät bedient, kann ein Watchdog-Re set ausgelöst werden. Das Fenster kann von 910 µs bis 58,25 ms reichen. Der Independent Watchdog wird nicht vom System-, sondern vom internen 32-kHz-Takt (LSI) bedient. Er ist im Bereich „VDD Backup Master Voltage“ untergebracht, der auch im Stop- und im Standby-Modus versorgt wird. Wird er nicht bedient, bis er auf 0 gezählt hat, wird ein Watchdog-Reset ausgelöst. Die maximale Refreshzeit kann bis zu 26 Sekunden programmiert werden.

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.

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.


  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