Sicher mit System: Der Turbo auf dem Weg zur Sicherheitszertifizierung.

Sicher mit System: Der Turbo auf dem Weg zur Sicherheitszertifizierung.Fujitsu Semiconductor Europe

Wer im Krankenhaus am sprichwörtlichen Tropf hängt, erhält seine Infusion heute oft per Infusionspumpe. Eine elektronisch gesteuerte Klemme am Infusionsschlauch ermöglicht eine viel exaktere Dosierung der Infusionslösung pro Zeiteinheit als die herkömmliche Variante mit Schwerkraftinfusion, bei der tatsächlich das Mittel aus der Flasche tropft. Doch wehe, das Gerät versagt: Es darf weder ausfallen noch die falsche Dosis verabreichen. Falls es die exakte Dosierung nicht mehr sicherstellen kann, muss das Gerät selbst reagieren, zum Beispiel die Verabreichung einstellen und die Anwesenden deutlich warnen. Um auch kuriose und seltene Fehlersituationen auszuschließen oder wenigstens zu erkennen, sind die Anforderungen an die Elektronik enorm: Der Entwickler muss zwei verschiedene Architekturen und MCU-Hersteller wählen, um die Wahrscheinlichkeit eines gleichzeitigen Ausfalls in beiden MCUs zu reduzieren. Als einen dieser Mikrocontroller bietet sich ein MF3 von Fujitsu an: Der hilft per Hard- und Software, funktionale Sicherheit nach den einschlägigen Normen einzuhalten und einen Fehler in seinen Komponenten selbst aufzuspüren.

Streng genommen sind IEC61508 oder IEC60730 zwar keine Voraussetzung für eine Zertifizierung nach dem Medizinproduktegesetz – sie entsprechen aber dem Stand der Technik und sind deutlich konkreter als ihre Medizin-Pendants, wodurch es leichter wird, sich an die Vorgaben zu halten. Wer das tut, wird die benannten Stellen auch leichter davon überzeugen, dass er die Sicherheit seines Produkts ausreichend beherrscht. Mehr zu diesen Zusammenhängen können Sie im anschließenden Beitrag lesen.

Fehler früh erkennen

Je höher der Schaden ist, wenn ein System ausfällt, um so mehr Mühe müssen sich die Entwickler geben, solche Unfälle zu vermeiden. Das gilt in der Medizintechnik ganz besonders, weil Fehlfunktionen direkt die Patienten betreffen. Die einschlägigen Gesetze und Normen aus dem Medizinumfeld sind allerdings recht allgemein gehalten – hier hilft ein Blick über den Tellerrand zu anderen Industrie- oder gar Automotive-Normen. Mit ihren Mikrocontrollern und Software-Bibliotheken hilft Fujitsu den Entwicklern, Normen zu erfüllen und Fehler so rechtzeitig zu erkennen, dass sie keinen Schaden anrichten.

In der Medizin hängen Menschenleben oft unmittelbar von Geräten ab, der Grad der Gefährdung ist aber sehr unterschiedlich. Die Sicherheitsanforderungen werden daher je nach Gefährdungsgrad in Klassen eingeteilt. Dabei sind immer sicherheitsrelevante Systeme gemeint, die neben elektronischen Bauteilen meist auch mechanische und elektrische Komponenten enthalten.

Sichere Systeme

Die Komplexität programmierbarer Steuerungen führt zu immer mehr möglichen Fehlern. Deshalb hat man vor gut zehn Jahren begonnen, die Entwicklung elektronischer, sicherheitsrelevanter Systeme in verschiedenen Normen zu definieren. Vor allem das Produkthaftungsgesetz motiviert Hersteller dazu, diese Normen auch einzuhalten. Kommt es zu einem Prozess, kann der Hersteller bei Anwendung der Normen nachweisen, dass er Risiken bewertet und ein nach geltenden Standards sicheres Gerät entwickelt und produziert hat. Besonders wichtig ist es, die Richtlinien schon früh zu berücksichtigen, am besten während der Konzeptphase.

Einer der bekanntesten internationalen Standards in diesem Bereich ist die IEC61508, die viele nationale Normungsinstitute inhaltsgleich übernommen haben, etwa in der deutschen DIN EN 61508. Deren Titel lautet „Funktionale Sicherheit sicher­heits­be­zogener elektrischer/elektronischer/programmierbarer elektronischer Systeme“. In den acht Teilen definiert die Norm Anforderungen an Systeme, deren Ausfall eine Gefahr für die Umwelt und die Gesundheit bedeutet. Neben der Elektronik behandelt sie auch das Design der Software. Außerdem beschreiben die Autoren vier Sicher­heits­an­forderungs­stufen (Safety Integriy Level, SIL), je nach Gefährdungsbeurteilung. SIL4 stellt die höchste Stufe dar. Hersteller können ihre Geräte bis zum Level 2 selbst beurteilen, für SIL3 und SIL4 muss das durch einen unabhängigen Dritten erfolgen.

Spezielle Normen für Kfz und Medizin

Die IEC61508 dient als Grundnorm, weitere Standards passen sie anwendungsspezifisch an. So stellt beispielsweise die IEC26262 eine Implementierung für den Automobilbereich dar und die IEC​60601 für medizinische elektronische Geräte und Systeme.

Wie man Hausgeräte im weiteren Sinne, also auch Waschmaschinen, Heizungssteuerungen oder Warmwasser-Boiler, sicher entwirft, damit sie bei Fehlfunktion keinen Schaden anrichten, steht in der IEC60730. Die Norm betrachtet mechanische, elektrische und elektronische Aspekte sowie die elektromagnetische Verträglichkeit der Geräte. Anhang H betrachtet Mikro­con­troller und ist daher für Embedded-Entwickler eine wichtige Referenz, selbst wenn sie keine weiße Ware entwerfen. Die Medizintechnik-Norm IEC60601 bezieht sich sogar ausdrücklich auf die IEC60730. Ähnlich der SIL in IEC61508, legt die IEC60730 drei Klassen elektronischer Steuerungen fest: An Klasse A (etwa Schalter, Thermostate) werden die geringsten und an Klasse C (etwa Heizungssteuerung) die höchsten Anforderungen gestellt. Haushaltsgeräte wie Geschirrspülmaschinen oder Kühlschränke gehören zur Klasse B.

Selbsttest-Bibliothek

Eine Sicherheits-Zertifizierung bewertet immer das Gesamtsystem, nicht die separaten Komponenten. Einzelne Maßnahmen der funktionalen Sicherheit erstrecken sich daher meist auf mehrere Bausteine, der Entwickler muss auf Systemebene denken. Trotzdem helfen vorbereitete Sicherheitsmodule, die sich auf einzelne Komponenten – etwa einen Mikrocontroller – beziehen. Der Entwickler kann diesen Baustein in das Gesamtkonzept einbetten.

Für seine 8- und 32-Bit-Mikrocontroller, unter anderem für die ARM Cortex-M3-basierten FM3-Familien, bietet Fujitsu eine Selbsttest-Bibliothek (Self Test Library, STL) nach IEC60730, Klasse B an. Diese Software soll Fehler und Störungen des Mikro­con­trollers erkennen. Wie der Name andeutet, läuft das Testprogramm selbst auf dem gleichen Controller, den es testet. Die Fehlerbehandlung kann jedoch nicht Bestandteil der Bibliothek sein. Das System muss das Ergebnis der Überprüfung auswerten und im Fehlerfall angemessen reagieren.

Tabelle 1: Die Norm IEC60730 listet in Anhang H die zu testenden Komponenten eines Mikrocontrollers.

Tabelle 1: Die Norm IEC60730 listet in Anhang H die zu testenden Komponenten eines Mikrocontrollers.Fujitsu Semiconductor Europe

Anhang H des Standards listet Hardware-Fehlermodelle für die wesentlichen Teile eines Mikrocontrollers, etwa Speicher, CPU oder Taktgeber (Tabelle 1). Das Testprogramm muss die Liste abarbeiten und die einzelnen Komponenten prüfen. Üblicherweise wird das Testprogramm auf handliche, eigenständige Funktionen aufgeteilt, die der Entwickler dann an verschiedenen Stellen der Applikation einsetzt. Dabei gibt es zwei Gruppen von Funktionen: Solche, die beim Systemstart ablaufen und solche, die periodisch immer wieder aufgerufen werden, etwa innerhalb einer Interrupt Service Routine. Der erste Fall heißt POST (Power On Self Test), im zweiten Fall spricht man von BIST (Build In Self Test).

Der Sicherheitsgrad steigt, je mehr Tests das System im laufenden Betrieb wiederholt und nicht nur beim Einschalten ausführt. Allerdings braucht die BIST-Implementierung für einige Komponenten mehr Aufwand und mehr Rechenzeit: Eine BIST-Funktion muss nach dem Test den Ausgangszustand wieder herstellen, Register und Speicherbereiche müssen den gleichen Inhalt aufweisen wie davor. Eine POST-Implementierung kann dagegen destruktiv arbeiten. Die Norm macht für Klasse-B-Applikationen keine konkreten Vorgaben, für die meisten Komponenten reicht POST.

Passend zur Norm strukturiert

Bild 1: Aufbau der FM3-Selbsttest-Bibliothek, entsprechend der IEC60730 Klasse B.

Bild 1: Aufbau der FM3-Selbsttest-Bibliothek, entsprechend der IEC60730 Klasse B.Fujitsu Semiconductor Europe

Die Struktur der Fujitsu STL (Bild 1) deckt sich mit der Anforderungsliste der Norm. Für jede zu testende MCU-Komponente steht ein Software-Modul zur Verfügung. Da es sich um zeitkritische und hardwarenahe Aufgaben handelt, sind die Testroutinen teils in Assembler programmiert. Das Diagramm in Bild 2 erklärt exemplarisch den Ablauf des CPU-Registertests. Der wird beim Hochfahren des Systems durchgeführt (POST). Die IEC60730 schreibt vor, dass man die CPU-Register auf Stuck-At-Fehler testet, also dem Hängenbleiben auf logisch 0 oder 1. Die Routine beschreibt und liest die Register mit Checkerboard-Mustern: Bei Fehlern stimmt der gelesene Wert nicht mit dem geschriebenen überein.

Bild 2: Ablauf­diagramm des CPU-Registertests.

Bild 2: Ablauf­diagramm des CPU-Registertests.Fujitsu Semiconductor Europe

Der Selbsttest kostet wertvolle Rechenzeit. Zur Entlastung der CPU hat Fujitsu bei der FM3-Familie Hardware-Peripherien für funktionale Sicherheit integriert. Die gerade beschriebene Bibliothek greift direkt auf diese Funktionen zurück: Beim Test von Speicherbereichen berechnet sie Prüfsummen mithilfe des CRC-Hardware-Moduls (Cyclic Redundancy Check). Ganz ohne CPU-Hilfe ermittel das Hardware-Modul CCITT-CRC16- oder IEEE-802.3-CRC32-konforme Prüfsummen. Es erhält seine Daten per DMA über einen eigenen interner Datenbus, um die CPU bei Speicherzugriffen nicht zu behindern.

Zur Taktüberwachung verfügt der FM3 über eine unabhängige Taktquelle auf Basis eines RC-Oszillators, sowie über einen Clock Supervisor. Gemeinsam sorgen beide Komponenten dafür, dass der Chip Frequenzabweichungen oder das Ausfallen des Haupttaktes erkennt. Auch nach dem Ausfall der Haupttaktquelle kann die MCU weiterarbeiten, um einen sicheren Zustand zu erreichen. Das Blockdiagramm des FM3 MB9B500 in Bild 3 betont die Sicherheitsfunktionen dieses Bausteins:

Bild 3: Blockdiagramm der FM3 MB9B500-Serie. Die speziellen Sicherheitsfunktionen sind durch rote Rahmen hervorgehoben.

Bild 3: Blockdiagramm der FM3 MB9B500-Serie. Die speziellen Sicherheitsfunktionen sind durch rote Rahmen hervorgehoben.Fujitsu Semiconductor Europe

  • CRC, Cyclic Redundancy Check: Prüfsummenberechnung
  • LVD, Low Voltage Detection: Zweistufige Erkennung von Spannungseinbrüchen, generiert Interrupts und Resets
  • Watchdog: Erkennt eine abgestürzte und außer Kontrolle geratene CPU
  • Power on Reset: Hält oder setzt den Mikrocontroller in einen definierten (Reset)-Zustand beim Verlassen des erlaubten Versorgungsspannungsbereichs
  • ECC, Error Correction Code: Erkennung und automatische Behebung von Fehlern im Flash-Speicher
  • MPU, Memory Protection Unit: Regelt Speicherzugriffsrechte und verhindert unautorisierte Zugriffe
  • Notaus-Pin: Eingangssignal zur schnellen und automatischen Abschaltung der Treiberstufe von Motorsteuerungen oder anderen externen Schaltungen
  • Lesbarer externer Status-Pin: Erlaubt Boundary-Scan-Tests zur Erkennung von externen Kurzschlüssen an Pins.
  • CSV, Clock Supervisor: Überwacht mit Hilfe einer unabhängigen Taktquelle den Haupttakt
  • Onchip RC-Oszillator: Präziser Taktgenerator, kann bei Ausfall des Quarzes als Not-Taktquelle dienen.

Gemeinsam für mehr Sicherheit

Kein Bauteillieferant kann dem Systemhersteller die Verantwortung für eine normgerechte Implementierung und Zertifizierung der Sicherheitsfunktionen abnehmen. Mit dem Angebot von Software-Bibliotheken und passender Hardwareunterstützung wird die Entwicklung jedoch maßgeblich entlastet und die Zertifizierung beschleunigt. Fujitsu arbeitet derzeit an einer Vorzertifizierung dieser Bibliothek. Damit können Kunden die Zertifizierung ihres Gesamtsystems künftig weiter beschleunigen. Derzeit in Arbeit sind weitere Software-Module, um neben der IEC60730 auch IEC61508-konforme Applikationen zu unterstützen.