Funktionale Sicherheit: Zertifizierte Mikrokontroller-Selbsttest-Software
Eine Selbsttest-Software ist ein grundlegender Baustein bei der Entwicklung von Anwendungen im Bereich Funktionaler Sicherheit. In komplexen Komponenten wie der CPU eines Mikrokontrollers ist es aber schwierig, die geforderte Diagnoseabdeckung nachweislich zu erfüllen.
Anbieter zum Thema

Hierzu sind detaillierte Kenntnisse der zugrundeliegenden Hardware erforderlich. Die Validierung der geforderten Testabdeckung kann mithilfe gezielter Fehlersimulation erreicht werden. Dieser Beitrag beschäftigt sich mit der Entwicklung einer Selbsttest-Software für die CPU der Renesas RX631/63N Mikrokontroller-Familie. Die Entwicklung der hier vorgestellten CPU Selbsttest-Software wurde nach IEC 61508 durchgeführt und durch einen TÜV Rheinland Zertifizierungsprozess begleitet.
An eine CPU Selbsttest-Software wird eine Reihe von Anforderungen gestellt. Sie soll mit einem ausreichenden Diagnosedeckungsgrad zufällige Hardware-Fehler der CPU während der Laufzeit entdecken. In einem sicherheitsrelevanten System liegt die notwendige Detektions-Zeit unterhalb der „Process Safety Time“. Diese ist anwendungsabhängig und kann in zeitkritischen Systemen bis hinab zu wenigen Millisekunden betragen. Außerdem sollte die Selbsttest-Software nur einen begrenzten Teil des zur Verfügung stehenden Programmspeichers belegen und eine möglichst kurze Interrupt-Maskierungszeit aufweisen.
Beim Entwurf der Selbsttest-Software muss eine Balance zwischen diesen teils gegenläufigen Anforderungen erreicht werden. Der Entwicklungsprozess hat darüber hinaus den Anforderungen der IEC 61508 zu genügen, soll die Selbsttest-Software in sicherheitsgerichteten Anwendungen mit entsprechendem SIL/SC eingesetzt werden. Die Zertifizierung der Selbsttest-Software durch ein unabhängiges Institut wie dem TÜV Rheinland hilft, die entsprechenden hohen Qualitätsanforderungen zu erfüllen.
Grundlagen der CPU-Selbsttest-Software
Die Selbsttest-Software ist modular aufgebaut. Der gesamte Test besteht aus 40 Testmodulen. Jedes Testmodul kann einzeln oder auch in Gruppen aufgerufen werden, je nach dem maximal von der Anwendung zur Verfügung gestellten Zeitfenster für einen Teiltest. Der gesamte Test muss innerhalb der Process Safety Time ausführbar sein.
Ziel der Selbsttest-Software ist die Stimulierung und Detektion von zufälligen Hardware-Fehlern der CPU. Eine Optimierung des Diagnosedeckungsgrades muss sowohl beim Stimulus als auch bei der Detektion erfolgen. Um einen gut kontrollierbaren Stimulus zu erreichen, erfolgt die Programmierung der Testmodule in Assembler. Das User-Interface jedes Testmoduls ist allerdings in C realisiert. Die Resultate der verschiedenen sog. „elementaren“ Tests eines Testmoduls werden in einem Signaturwert verknüpft. Jedes Testmodul liefert nach Ausführung einen Ist-Signaturwert, anhand dessen bei Abweichung vom Soll-Signaturwert der Test als fehlerhaft erkannt werden kann. Die Art der Signaturbildung beeinflusst die Effizienz des Detektionsprozesses.
Bei der beschriebenen CPU-Selbsttest-Software wird eine 32-bit Signatur benutzt, die die elementaren Testergebnisse mit Hilfe einer Kombination von Exklusiv-Oder- und Bit-Rotations-Funktion verknüpft. Jedes Testmodul liefert das Ergebnis „Pass“ oder „Fail“ und speichert zusätzlich die ermittelte Signatur in einem vordefinierten Speicherbereich. Diese Signaturen können dann z.B. von einem externen „Safety-Prozessor“ ausgewertet werden ohne sich auf die Auswertung durch die getestete CPU selber verlassen zu müssen.
Es ist wichtig anzumerken, dass eine CPU Selbsttest-Software immer durch die Anwendung eines Watchdog-Timers flankiert werden muss, da es Fehler in der CPU mit fatalen Folgen für die Ablaufsteuerung gibt. Solche Fehler werden in der Regel durch einen Watchdog-Timer erkannt.
Fehlersimulation
Grundlage zur Fehlersimulation ist die sogenannte „Netzliste“ des Mikrokontrollers, die die gesamte Logik in ASCII-Format darstellt. Mit Hilfe dieser Netzliste kann mit entsprechenden Software-Tools das Verhalten des Mikrokontrollers bei Einstreuen von Fehlern simuliert werden.
Es wurde das sog. Stuck-At Fehlermodell benutzt, das weitverbreitet und etabliert ist und gut die verschiedenen physikalischen Fehler in einer Logikschaltung modelliert. Dabei wird der Wert eines Ein- oder Ausgangs eines logischen Gatters der Netzliste auf „1“ oder „0“ geklemmt und damit die Auswirkungen eines Kurzschlusses zur Versorgungsspannung oder GND untersucht (s.h. Bild 1 in der Bildergalerie).
Die Ausführung der Selbsttest-Software mit eingestreutem Fehler wird dann simuliert und Stimulation und Detektion des Fehlers kontrolliert. Dabei wird auch der Einsatz eines Watchdog-Timers berücksichtigt. Insgesamt mussten etwa 200000 mögliche Stuck-At Fehler in der CPU simuliert werden, was nur durch massive Parallelprozessierung in vernünftiger Zeit durchgeführt werden kann.
Bei der Fehlersimulation konnten Untermodule der CPU separat untersucht werden, die verschiedene Funktionen wie Register, Rechenlogik oder logische Operationen realisieren. Dies erleichterte die gezielte Verbesserung der Selbsttest-Software in den entsprechenden Bereichen.
(ID:44289965)