3
32 AUTOMOBIL-ELEKTRONIK Oktober 2007 Aktuelle Premiumfahrzeuge enthalten bis zu 70 Steuergeräte, wodurch an bautechnische Grenzen gestoßen wird. Die Anzahl der Steuergeräte in Zukunft sollte daher eher abnehmen. Dagegen nimmt die Anzahl und Komplexität der Funktionen weiter zu, wesshalb ein Steuergerät sehr hete- rogene Aufgaben übernehmen muss. Die EINFACHE, SICHERE UND EFFIZIENTE INTEGRATION dieser Funktionen ist dabei die Herausforderung. D as Autosar-Konsortium hat sich dem Thema Steuergeräteintegrati- on angenommen. Die Kernidee besteht darin, jede einzelne Funktion in- klusive ihrer Schnittstellen formal zu be- schreiben. Diese Beschreibung in Form ei- ner Autosar-XML-Datei zusammen mit dem C-Code, der die Funktion implemen- tiert, wird als Software-Komponente be- zeichnet. Zur Beschreibung der Schnitt- stellen an den Grenzen jeder Komponen- te werden Ports spezifiziert. Um festzule- gen, welche Komponenten miteinander kommunizieren, werden die Ports ver- bunden. Um nach dieser Verschaltung ei- ne automatische Code-Integration der Komponenten zu ermöglichen, müssen die formale Beschreibung und auch der C-Code unabhängig von der konkreten Verwendung der Komponente sein. Egal auf welchem Steuergerät die Komponente später läuft und mit wel- chen anderen Komponenten sie kom- muniziert, die Beschreibung und auch der C-Code bleiben gleich. Somit lässt sich die Komponente einzeln testen und später wiederverwenden. Mit dem neuen Systementwurfswerkzeug SystemDesk kann der Anwender solche wiederver- wendbaren Komponenten grafisch spezi- fizieren und innerhalb eines Systems ver- schalten (Bild 1). In dem Programm Sys- temDesk ist ein Autosar-RTE-Generator integriert, der auf Erfahrungen mit Tar- getLink zur effizienten Seriencode-Gene- rierung basiert. Die Arbeitsweise eines RTE-Generators wird im Folgenden ge- nauer erläutert. Autosar Run-Time-Environment Um die Unabhängigkeit des C-Codes ei- ner Software-Komponente zu gewähr- leisten, hat Autosar eine C-API standar- disiert, die beim Zugriff auf die Elemente der Ports verwendet werden muss. Soll zum Beispiel aus dem C-Code heraus ein Wert value in das Datum right des Ports speed geschrieben werden, so lautet der Aufruf im C-Code Rte_IWri- te_speed_right(value). Aus den einzel- nen Komponenten kann ein Software- SYSTEME & SOFTWARE Autosar Run-Time-Environment effizient generieren

Autosar Run-Time-Environment effizient generieren · stellen an den Grenzen jeder Komponen-te werden Ports spezifiziert. Um festzule-gen, welche Komponenten miteinander kommunizieren,

Embed Size (px)

Citation preview

32 AUTOMOBIL-ELEKTRONIK � Oktober 2007

Aktuelle Premiumfahrzeuge enthalten bis zu 70 Steuergeräte, wodurch an bautechnische Grenzen gestoßen wird. Die Anzahl der Steuergeräte in Zukunft sollte daher eher abnehmen. Dagegen nimmt die Anzahl und Komplexität der Funktionen weiter zu, wesshalb ein Steuergerät sehr hete-rogene Aufgaben übernehmen muss. Die EINFACHE, SICHERE UND EFFIZIENTE INTEGRATION dieser Funktionen ist dabei die Herausforderung.

D as Autosar-Konsortium hat sich dem Thema Steuergeräteintegrati-on angenommen. Die Kernidee

besteht darin, jede einzelne Funktion in-klusive ihrer Schnittstellen formal zu be-schreiben. Diese Beschreibung in Form ei-ner Autosar-XML-Datei zusammen mit dem C-Code, der die Funktion implemen-tiert, wird als Software-Komponente be-zeichnet. Zur Beschreibung der Schnitt-stellen an den Grenzen jeder Komponen-te werden Ports spezifiziert. Um festzule-gen, welche Komponenten miteinander kommunizieren, werden die Ports ver-bunden. Um nach dieser Verschaltung ei-ne automatische Code-Integration der Komponenten zu ermöglichen, müssen

die formale Beschreibung und auch der C-Code unabhängig von der konkreten Verwendung der Komponente sein.

Egal auf welchem Steuergerät die Komponente später läuft und mit wel-chen anderen Komponenten sie kom-muniziert, die Beschreibung und auch der C-Code bleiben gleich. Somit lässt sich die Komponente einzeln testen und später wiederverwenden. Mit dem neuen Systementwurfswerkzeug SystemDesk kann der Anwender solche wiederver-wendbaren Komponenten grafisch spezi-fizieren und innerhalb eines Systems ver-schalten (Bild 1). In dem Programm Sys-temDesk ist ein Autosar-RTE-Generator integriert, der auf Erfahrungen mit Tar-

getLink zur effizienten Seriencode-Gene-rierung basiert. Die Arbeitsweise eines RTE-Generators wird im Folgenden ge-nauer erläutert.

Autosar Run-Time-Environment Um die Unabhängigkeit des C-Codes ei-ner Software-Komponente zu gewähr-leisten, hat Autosar eine C-API standar-disiert, die beim Zugriff auf die Elemente der Ports verwendet werden muss. Soll zum Beispiel aus dem C-Code heraus ein Wert value in das Datum right des Ports speed geschrieben werden, so lautet der Aufruf im C-Code Rte_IWri-te_speed_right(value). Aus den einzel-nen Komponenten kann ein Software-

SYSTEME & SOFTWARE

Autosar Run-Time-Environment effizient generieren

Architekt das Gesamtsystem erstellen, in-dem er die Komponenten miteinander verschaltet und auf die Steuergeräte ver-teilt. Aus dieser Verschaltung und Vertei-lung wird abgeleitet, wie die bereits ge-nannte C-API (z. B. Rte_IWri-te_speed_right) für das konkrete System implementiert werden muss. Dieser Schritt wird als RTE-Generierung be-zeichnet. Ein RTE-Generator analysiert die Eigenschaften aller beteiligten Kom-ponenten inklusive deren Verschaltung und Verteilung und generiert C-Code. Dieser übernimmt die Kommunikation der Komponenten untereinander und das Scheduling der Funktionen. Bild 2 zeigt die Schichtenarchitektur eines Steuergerätes nach dem Autosar-Stan-dard. Die RTE realisiert die Kommunika-

tion und das Scheduling der Komponen-ten unter Verwendung der Basis-Soft-ware, insbesondere des Betriebssystems Autosar-OS und des Kommunikations-Stacks Autosar-COM.

Effiziente Code-Generierung Neben der Generierung von korrektem Code ist die Generierung von effizientem Code eine der Kernaufgaben des RTE-Generators. Im Folgenden ist dargestellt, welche Techniken der SystemDesk RTE-Generator einsetzt, um einen speicher- und laufzeiteffizienten Code zu generieren: � Der SystemDesk RTE-Generator gene-riert zur Implementierung der C-API Prä-prozessor-Makros anstatt C-Funktionen. Dadurch ist gewährleistet, dass die Kom-munikation zwischen den Komponenten

Bild 1: Darstellung einer Software-Architektur in SystemDesk.

eines Steuergerätes effizient umgesetzt wird. Pro Datum legt der Generator eine globale Variable an. Die Zugriffe der Komponenten (z. B. Rte_IWri-te_speed_right) werden durch C-Präpro-zessor-Makros implementiert (z. B. #defi-ne Rte_IWrite_speed_right(value) Rte_signal_1=value). � Für den Zugriff von C-Funktionen auf Daten in den Komponentenports schreibt Autosar vor, dass jede Funktion während ihrer Ausführung eine eigene Kopie der Daten erhält. Der RTE-Genera-tor von SystemDesk analysiert vor der Code-Generierung das Modell und nur in dem Fall, dass mehrere Funktionen tat-sächlich gleichzeitig ausgeführt werden können (unter Berücksichtigung des Task-Scheduling, der Task-Unterbrech-barkeit und der Task-Prioritäten), wer-den lokale Kopien angelegt. � Ist der Zugriff auf eine Variable nicht atomar, zum Beispiel bei 32-Bit-Daten-typen auf einem 16-Bit-Prozessor, gene-riert der RTE-Generator von SystemDesk automatisch Schutzmechanismen zur Gewährleistung der Datenkonsistenz. Auch in diesem Fall werden zunächst die Task-Eigenschaften untersucht, um fest-zustellen, ob ein Schutz notwendig ist. � Eine weitere Technik zur Reduzierung der Laufzeit ist das Downsampling. Funk-tionen mit unterschiedlichen Zykluszei-ten können zusammen in einer Task aus-geführt werden. Der SystemDesk RTE-Generator sorgt automatisch dafür, dass entsprechende Zähler generiert werden, und so zum Beispiel eine Funktion nur bei jedem 10. Aufruf einer Task aufgeru-fen wird.

SYSTEME & SOFTWARE

34 AUTOMOBIL-ELEKTRONIK � Oktober 2007

SYSTEME & SOFTWARE

infoDIRECT www.all-electronics.de

Link zu dSPACE: 611AEL0507

� Die Autosar-Mechanismen erlauben nicht nur den Austausch von Daten zwi-schen Komponenten, sondern auch das Aufrufen von Funktionen in anderen Komponenten. Auch dazu wird im auf-rufenden C-Code die standardisierte C-API verwendet (z. B. Rte_Call_Outer-Temp_Get_Temperature(&value)). Um beim Aufrufen einen aufwendigen Task-Wechsel in eine andere Komponente zu vermeiden, generiert der SystemDesk RTE-Generator in diesem Fall erneut ein C-Präprozessor-Makro, das diesen Call-Befehl direkt auf einen Aufruf der C-Funktion der Zielkomponente abbildet.

Integrationsprozess Unter Integration eines Steuergerätes wird der gesamte Arbeitsablauf verstan-den, um ausgehend von der Software-Architektur, also der Menge aller Kom-ponenten und deren Verschaltung, zum ausführbaren Steuergeräte-Code (HEX-Datei) zu gelangen. Als erster Schritt wird zunächst überprüft, ob die Software-Ar-chitektur in sich konsistent ist. System-Desk stellt dazu einen Validierungs-mechanismus zur Verfügung, der Inkon-sistenzen im Modell aufdeckt. Bei Proble-men kann der Anwender direkt von der Fehlermeldung zu der betreffenden Stel-le im Modell navigieren, um dort den Fehler zu analysieren. Die Validierung lässt sich vom Anwender erweitern, so dass beispielsweise geprüft werden kann, ob firmeninterne Modellierungsrichtlini-en eingehalten wurden.

Ist das Modell konsistent, wird die Ba-sis-Software konfiguriert. Der RTE-Code verwendet das Betriebssystem und den Kommunikations-Stack, um die Kom-munikation und das Scheduling der Soft-

ware-Komponenten zu realisieren. Die Konfiguration des Betriebssystems hängt somit stark von den Anforderungen des RTE-Codes ab. Damit der Anwender das Betriebssystem und die RTE schnell kon-sistent konfigurieren kann, legt der Sys-temDesk RTE-Generator auf Wunsch ei-nen Großteil der benötigten Betriebssys-temelemente automatisch an. Zur Reali-sierung von Schutzmechanismen wer-den zum Beispiel automatisch Betriebs-systemressourcen angelegt. Die Zuord-nung der C-Funktionen der Komponen-ten auf die Betriebssystem-Tasks über-nimmt in SystemDesk hingegen der An-wender mit einem Editor. Neben dem Be-triebssystem ist der Kommunikations-Stack die zweite wichtige Komponente für den RTE-Generator.

SystemDesk ermöglicht die automati-sche Konfiguration des Autosar-COM-Moduls aus der Systembeschreibung he-raus. Diese Vorgehensweise sorgt dafür, dass für alle beteiligten Steuergeräte konsistente Konfigurationen erstellt werden. Sind RTE, Betriebssystem und Kommunikations-Stack konfiguriert, wird die eigentliche RTE generiert. Als Ergebnis erhält man nun den RTE-C-Code und die Konfiguration von Be-triebssystem und Kommunikations-Stack. Diese Konfigurationen können genutzt werden, um mittels entspre-chender Generatoren von Drittherstel-lern den Code für das Betriebssystem und den Kommunikations-Stack zu er-zeugen. Anschließend muss der RTE-Code, der C-Code aller Komponenten und der C-Code aller Basis-Software-Komponenten zu einer ausführbaren HEX-Datei übersetzt und gebunden werden.

Sicherheit und Zuverlässigkeit Das von Autosar eingeführte Konzept der RTE-Generierung ermöglicht die Entwicklung von getesteten, wiederver-wendbaren und kontextunabhängigen Komponenten. Da die Kommunikation der Komponenten untereinander auto-matisch von der RTE generiert wird, ist die unbeabsichtigte, gegenseitige Beein-flussung reduziert und somit die Zuver-lässigkeit der Software erhöht. Dennoch ist kein vollständiger Schutz der Kom-ponenten gegeneinander gewährleistet, da der Autosar-RTE-Standard noch kei-ne Mechanismen zum Speicherschutz für Komponenten kennt. Diese Mecha-nismen werden derzeit im Autosar-Konsortium diskutiert, so dass sich die Zuverlässigkeit von Software durch die Einführung von Speicherschutzmecha-nismen auf Komponentenebene in ab-sehbarer Zukunft weiter erhöhen wird.

Fazit Mit Autosar-RTE-Generatoren ist ein großer Schritt in Richtung erhöhte Zu-verlässigkeit und Sicherheit der Steuer-geräte-Software getan. Funktionen können in Form von Software-Kom-ponenten unabhängig von ihrer Ver-wendung entwickelt und getestet wer-den. Ein RTE-Generator realisiert die Umsetzung der Kommunikation und des Schedulings für ein konkretes Sys-tem. Diverse Optimierungstechniken sorgen dafür, dass der generierte C-Code in den meisten Fällen in Bezug auf Performance und Speicherbedarf mit handgeschriebenem C-Code ver-gleichbar ist. Neben dem reinen RTE-Generator ist es wichtig, ein Werkzeug zur Verfügung zu haben, das dem An-wender Inkonsistenzen im Modell klar aufzeigt und eine einfache und konsis-tente Konfiguration der Basis-Software ermöglicht. Das Systementwurfswerk-zeug SystemDesk mit dem RTE-Genera-tor bietet solch eine integrierte Umge-bung. Sie ermöglicht dem Anwender ei-ne schnelle, einfache Planung und Inte-gration eines Autosar-Modells ein-schließlich der Generierung von effi-zientem RTE-Code.(tk)

Bild 2: Autosar-Software-Architektur mit Autosar-Software-Komponenten, Run-Time-Environ-ment (RTE) und Basis-Software.

Dr. rer.-nat. Dirk Stichling ist bei der dSPACE GmbH im Produkt-management für den Bereich der System- und Funktionsentwurfs-werkzeuge zuständig.