AUTOSAR goes Multicore – mit Sicherheit
Transcrição
AUTOSAR goes Multicore – mit Sicherheit
SAFETY AUTOMOTIVE AUTOSAR goes Multicore – mit Sicherheit Zur Zeit dominieren zwei Themen die Software-Entwicklung für Fahrzeugsteuergeräte: zum einen das zunehmende Umstellen der Rechnerarchitekturen auf Multicore-Prozessoren und zum anderen die Sicherheitsbetrachtungen nach ISO 26262. Jedes dieser beiden Themen ist schon für sich alleine komplex genug – was ergibt sich da erst aus der Kombination? Von Helmut Brock und Joachim Kalmbach D er Hauptgrund für die Einführung von Multicore-Architekturen ist das Erhöhen der Rechnerleistung, ohne die Taktfrequenz anheben zu müssen. Dieses Ziel wird aber nur erreicht, wenn sich ein ausreichender Anteil der Anwendungs-Software parallelisieren lässt. Die klassische Referenz hierzu ist Amdahls Gesetz. Hieraus ergibt sich zum Beispiel für einen Dual-Core-Prozessor und eine Software mit einer Parallelisierbarkeit von 50 Prozent eine maximale Leistungssteigerung von nur 30 Prozent im Vergleich zu einer Single-Core-Architektur. Um eine bestmögliche Rechenleistung zu erreichen, 56 funktionale sicherheit Juli 2014 muss der Entwickler beim Verteilen der Software-Module darauf achten, die gemeinsame Ressourcennutzung über Kerngrenzen hinweg zu minimieren. Bei den Ressourcen handelt es sich um Hardware-Register und – in den meisten Fällen – um Datenbereiche. Die Herausforderung bei der kernübergreifenden Ressourcennutzung ist nicht die Zugriffskoordination, sondern das Vermeiden von Wartezuständen bei konkurrierendem Zugriff auf die gemeinsamen Ressourcen. In so einem Fall geht die unabhängige Datenverarbeitung verloren und der Nutzen der Parallelisierung vermindert sich. Funktionale Sicherheit nach ISO 26262 Das Berücksichtigen der Anforderungen an die funktionale Sicherheit nach ISO 26262 ist inzwischen fester Bestandteil des Entwicklungsprozesses im Automobilbau. Auf Basis der Gefahren- und Risikoanalyse werden die Anforderungen an die Funktionen eines Steuergeräts bezüglich ihrer Sicherheitsrelevanz bewertet und der passende Automotive Safety Integrity Level (ASIL) wird zugeordnet. Wie wirkt sich das auf eine Multicore-Software-Architektur aus, wenn sicherheitsrelevante Funktionen umzusetzen sind? Vor der Beantwortung dieser Frage ein paar Hinweise zum Lockstep-Konzept für Multicore-Prozessoren, das in vielen Safety-Projekten zum Einsatz kommt. Lockstep Mode Beim Lockstep Mode führen zwei Kerne identischen Code aus. Ein unabhängiger Komparator vergleicht die Ergebnisse und erzeugt bei Unterschieden einen Fehler-Trap. Das weitere Vorgehen hängt SAFETY AUTOMOTIVE Überwachen der Laufzeit von der Hardware und dem Sicherheitskonzept des Steuergeräts ab. Die Hardware muss so ausgelegt sein, dass sie nach dem Auftreten des Fehler-Trap einen sicheren Zustand erreicht. Weil beide Kerne identischen Code ausführen, sind außer der Fehlerbehandlung keine Erweiterungen der Software bezüglich Multicore notwendig. Anders formuliert: Auch wenn hier mehrere Kerne zum Einsatz kommen, handelt es sich nicht um eine Multicore-Architektur, die zur Leistungssteigerung beiträgt. AUTOSAR spezifiziert mit der Betriebssystemklasse SC2 eine Laufzeitüberwachung. Diese greift allerdings für sicherheitsrelevante Anwendungen zu kurz. Das AUTOSAR-Betriebssystem prüft zwar, dass keine Task übermäßige Laufzeit beansprucht oder Interrupts zu lange sperrt, aber die Konfiguration der korrekten und sicheren Task-Reihenfolge und des Task Triggering stellt für den Entwickler eine sehr hohe Komplexität dar, die schwer abzusichern ist. Von den Firmen TTTech und Vector Informatik gibt es eine alternative Lösung. Diese besteht aus einem nach ASIL-D entwickelten Program Flow Monitor, der die Ausführungszeiten und -reihenfolge der Tasks und der darin enthaltenen Funktionen überwacht. Für jeden Kern wird eine Instanz dieses Program Flow Monitor angelegt. Die Informationen über die Funktionsausführung erhält der Monitor durch die in der Software eingefügten Checkpoints (Bild 2). Nur wenn die sicherheitsrelevanten Programmteile korrekt abgearbeitet werden, werden diese Checkpoints in der richtigen Reihenfolge und mit dem richtigen Timing durchlaufen. Der zentrale Watchdog Manager sammelt die Statusmeldungen aller Monitore und triggert den Watchdog. Es ist nicht möglich, jeden Kern separat zu verwalten, weil die Tasks oft über Kerngrenzen hinweg voneinander abhängen. Zum anderen erlaubt die AUTOSAR-Spezifikation nur einen gemeinsamen Neustart aller Kerne. Deshalb muss der Watchdog Manager als zen trales Modul für das gesamte Steuergerät entwickelt werden. Die Monitore selber laufen dagegen auf jedem Kern unabhängig ab und sind in der Lage, Core 1 Runnable Runnable ISR Task Runnable SWC Runnable Runnable Runnable Task Task Runnable Runnable Runnable OS Application SWC ISR Task Runnable Runnable Task OS Application SWC Task Runnable Runnable Runnable ISR Task Runnable SWC SWC Task Task Runnable SWC Task Die Multicore-Architektur lässt sich zur Erhöhung der Rechnerleistung oder bei sicherheitsrelevanten Systemen auch zur parallelen Realisierung von diversitären Algorithmen wie ASIL-Dekompositionen verwenden. Der Entwickler ordnet die Software-Module gemäß Parallelisierbarkeit und abhängig vom Sicherheitskonzept den in AUTOSAR definierten OS Applications zu. Diese lassen sich den in der ISO 26262 definierten Partitionen gleichsetzen. Dabei handelt es sich um Bereiche innerhalb eines Steuergerätes, die störungsfrei voneinander ablaufen müssen – Freedom from Interference. In MulticoreSteuergeräten werden die OS Applications den unterschiedlichen Rechnerkernen zugewiesen (Bild 1). Für den Entwickler spielt es keine Rolle, ob das Ziel der Aufteilung die Parallelisierbarkeit oder die Dekomposition ist: Er muss einen störungsfreien Ablauf zwischen den OS Applications herstellen. Das erfordert im Wesentlichen das Überwachen von Laufzeiten und Vermeiden einer fehlerhaften Änderung von sicherheitsrelevanten Speicherinhalten. Runnable Multicore-Architektur mit verteilter Software OS Application Core 2 Bild 1: Der Entwickler fasst die Tasks in OS Applications zusammen und verteilt sie auf die Kerne. (alle Bilder: Vector Informatik) Functional Safety Normen und Zertifizierung – funktionale Sicherheit wird immer wichtiger! Unsere Tools und unser Know-how sorgen für den Überblick: > Testdienstleistungen > Consulting & Training > Softwaretest-Tools Wir sind Ihr Partner: www.hitex.com/safety SAFETY AUTOMOTIVE Application 1 Application 2 SWC a SWC b Application 3 Application 4 SWC d SWC e SWC c Check point Check point Check point LIBS DIAG Program Flow Monitor V2G CAN LIN OS Multi Core FR ETH AVB XCP EXT MCAL Core 1 Watchdog Manager Satellite ECU State Manager Satellite Core Test Complex Driver SYS I/O Complex Driver ECU State Manager MEM Watchdog Manager COM AMD Program Flow Monitor LIBS RTE Core 2 Bild 2: Das Flow Monitoring stellt zusammen mit den Checkpoints in der Applikation die korrekte Ablaufreihenfolge sicher. ihren Status über Kerngrenzen hinweg dem Watchdog Manager mitzuteilen. Speicherschutz und sichere Kommunikation im Steuergerät Eine perfekte Störungsfreiheit ist nur dann erreichbar, wenn die Hardware über eine Memory Protection Unit (MPU) verfügt. Sie sorgt dafür, dass die Anwendungsteile nur auf vordefinierte Speicherbereiche zugreifen können (Bild 3). Diese Speicherbereiche sind für jeden Kern getrennt definiert, müssen sich aber die Hardware-Resourcen (RAM usw.) mit den anderen Kernen teilen. Das Betriebssystem hat hierbei eine zentrale Rolle: Bei jedem Task-Wechsel muss es die MPU umprogrammieren, damit ein Wechsel der Speicherpartition erfolgt. Dieser für den Kontextwechsel zuständige Teil des Betriebssystems ist eine Core 1 MPU RAM Application A - Task 1 Task 1 - Stack - Application Data Application B - Task 2 Task 2 - Stack - Application Data Core 1 Application C - Task 3 Task 3 - Stack - Application Data sicherheitsrelevante Komponente und muss in jedem Fall der höchsten erforderlichen Sicherheitsstufe entsprechen. Der Schutz vor fehlerhaftem Datenüberschreiben ist das eine. Das andere ist die Notwendigkeit eines korrekten Datenaustausches zwischen den Tasks und über verschiedene Prozessorkerne hinweg. Im AUTOSAR-Architekturmodell erfolgt ein solcher Datenaustausch zwischen zwei Tasks über den Virtual Function Bus (VFB). In der Implementierung wird der VFB durch das Runtime Environment (RTE) dargestellt. Für ein sicherheitsrelevantes Steuergerät mit Multicore-Architektur werden folgende zusätzliche Anforderungen an die RTE gestellt: Sie muss die Kommunikation über Speicherpartitionen hinweg ermöglichen und dabei unterscheiden, ob ein Kommunikationsweg über Kerngrenzen hinweg (Inter-Core) oder zwischen zwei auf demselben Kern ablaufenden Tasks (Intra-Core) verläuft. Eine Datenübertragung über Kerngrenzen hinweg erfordert zusätzliche Koordinationsmechanismen. Das Betriebssystem stellt der RTE hierfür eine InterOS-Application Communicator (IOC) genannte Funktion bereit. Diese erlaubt den Datenaustausch zwischen Tasks und Interrupt-Service-Routinen auf verschiedenen Kernen. Nutzung von Standardlösungen Bild 3: Die Memory Protection Unit sorgt dafür, dass die Anwendungsteile nur auf vordefinierte Speicherbereiche zugreifen können. 58 funktionale sicherheit Juli 2014 Das Gewährleisten von funktionaler Sicherheit nach ISO 26262 auf Multicore- Steuergeräten scheint also keine ganz einfache Aufgabe zu sein. Das Rad muss allerdings nicht neu erfunden, sondern korrekt verwendet werden. Steuergeräteentwickler erhalten von Vector Informatik und TTTech Betriebssysteme, RTE und Program Flow Monitoring für Multicore-Architekturen bis ASIL D. Generell sind Multicore-Systeme deutlich komplexer als Single-CoreLösungen. Das muss jedoch nicht für die Konfiguration der Basis-Software gelten: Nach dem Verteilen der Software auf die Prozessorkerne ist der weitere Konfigurationsaufwand für ein Multicore-System bei optimaler WerkzeugUnterstützung nicht schwerer als für eine Single-Core-Architektur. Der Entwickler fasst Tasks, Interrupt-ServiceRoutinen und ähnliches in Containern, den OS Applications, zusammen. Diese OS Applications weist er anschließend den Prozessorkernen zu. Im Konfigurationswerkzeug DaVinci Configurator Pro von Vector Informatik sind das nur wenige Klicks. Der integrierte RTE-Generator kümmert sich selbsttätig darum, die richtigen Kommunikationsmethoden, Intra- oder Inter-Core, zwischen den Software-Modulen einzurichten. Es gibt also bereits viel Unterstützung für Multicore-Steuergeräte wie Basis-Software und Konfigurationswerkzeuge. Für die Erstellung der SoftwareArchitektur und Verteilung der Software-Anteile auf die Prozessorkerne ist eine gute Werkzeugunterstützung weit schwieriger zu realisieren. Sie ist auch zumeist auf die Bewertung von Varianten beschränkt. Hier sind auf absehbare Zeit weiterhin das Experten-Knowhow und die Erfahrung des Steuergeräteentwicklers gefragt. eck Dr.-Ing. Helmut Brock ist seit 1999 bei Vector Informatik und dort als Produktmanager Betriebssysteme tätig. [email protected] Dipl.-Ing. (FH) Joachim Kalmbach ist seit 2006 bei Vector Informatik und dort als Produktmanager im Bereich Embedded Software tätig. Seine Themenschwerpunkte sind AUTOSAR und Multicore. [email protected]