-
Die Erfindung betrifft ein Verfahren zum automatischen Generieren von Code, ein Computerprogramm und einen Computer, die jeweils programmiert sind, das Verfahren auszuführen, sowie ein maschinenlesbares Speichermedium, auf dem das Computerprogramm gespeichert ist.
-
Stand der Technik
-
Aus der
DE 10 2005 005 558 A1 ist ein Verfahren zum Eintragen mindestens eines zweiten Moduls als Empfänger bei mindestens einem ersten Modul in einem System bekannt, wobei bei dem mindestens einen ersten Modul eine statische Codegenerierung unter Änderung einer Konfiguration dieses mindestens einen ersten Moduls durchgeführt und somit das mindestens eine zweite Modul als Empfänger zum Empfang von Informationen zu Ereignissen, die von diesem mindestens einen ersten Modul realisiert werden, eingetragen wird.
-
Vorteile der Erfindung
-
Funktionssoftware für Fahrzeuge, die konform mit dem AUTOSAR-Standard entwickelt wird, besteht aus Softwarekomponenten. Die Softwarekomponenten werden auf Basis eines Virtual Function Bus unabhängig von den Steuergeräten erstellt und können über Schnittstellen miteinander kommunizieren.
-
Ferner übernehmen Basis-Software-Module die Grundfunktionen des Steuergeräts. Die genaue Implementierung der Basis-Software-Module ist vom Schaltplan des Steuergeräts und den darin enthaltenen aktiven Elektronikbausteinen abhängig.
-
Diese Basis-Software-Module müssen an die jeweiligen Randbedingungen angepasst werden, und können sich je nach Fahrzeugtyp und Steuergerätevariante unterscheiden. Diese Anpassung der Basis-Software-Module kann während der Konfiguration und Integration aller Softwareteile unter Berücksichtigung des Schaltplans des Steuergeräts geschehen.
-
Die Basis-Software-Module bieten daher vielfache Konfigurationsmöglichkeiten und können durch spezielle Code-Generatoren an die Bedürfnisse des konkreten Steuergeräts angepasst und optimiert werden. Die Information, wie die jeweilige Anpassung der Basis-Software-Module zu erfolgen hat, kann dabei in Konfigurationsdateien hinterlegt sein. Bei der Generierung des Codes der Basis-Software-Module können diese Konfigurationsdateien dann geladen werden, und der Code wird abhängig von den Konfigurationsdateien generiert.
-
AUTOSAR-konforme Basis-Software kann in drei Bereichen konfiguriert werden: Im Bereich der Kommunikation, im Bereich des Schedulings von Prozessen, und im Bereich des Konfiguration von Hardware-Registern eines eingesetzten Mikrocontrollers, der im Steuergerät eingesetzt wird. Diese Konfiguration der Hardware-Register ergibt sich aus dem Schaltplan des Steuergeräts.
-
Zur vollautomatischen Generierung von Programmcode müssen alle drei Bereiche automatisiert werden. Der Bereich der Kommunikation kann mit Hilfe der sogenannten FIBEX-Methode automatisiert werden. Der Bereich des Schedulings kann mit Hilfe von RTE und RSSO („Recommended Start and Shutdown order“) automatisiert werden.
-
Das Verfahren mit den Merkmalen des unabhängigen Anspruch 1 ermöglicht eine automatische Konfiguration der Register des Mikrocontrollers und hat damit den Vorteil, dass Code besonders einfach und zuverlässig für eine Vielzahl von Steuergeräten generiert werden kann.
-
Mit diesem Verfahren ist es dann möglich, dass Konfigurationsdateien automatisiert erstellt und validiert werden. Damit ist es mit wenig Aufwand möglich, spät auftretende Fehler bei der Integration der Software ins Steuergerät zu vermeiden.
-
Vorteilhafte Weiterbildungen sind Gegenstand der abhängigen Ansprüche.
-
Offenbarung der Erfindung
-
In einem ersten Aspekt betrifft die Erfindung ein Verfahren zum automatischen Generieren von Code, der auf einem Steuergerät ablauffähig ist. Dieses Steuergerät umfasst mindestens einen Elektronikbaustein. Dieser Elektronikbaustein kann ein Mikrocontroller sein. Dieser Elektronikbaustein weist mindestens einen Pin auf. Dieser Pin ist mit einer Signalleitung verbunden. Auf der Signalleitung liegt ein Eingangssignal an. Es wird nun ermittelt, welches Eingangssignal an diesem Pin anliegt. Der Code wird dann abhängig davon generiert, welches Eingangssignal ermittelt wurde.
-
Dies ist insbesondere im Kontext eingebetteter Software (z.B. Basis-Software-Modulen) zur Steuerung von Verbrennungsmotoren sinnvoll. Mit dem erfindungsgemäßen Verfahren ist es möglich, die Basis-Software-Module abhängig von der Ziel-Hardware (also dem Steuergerät), auf der die Software ablauffähig sein soll, automatisch zu konfigurieren. Durch die Automatisierung kann die Fehleranfälligkeit der Codegenerierung weiter gesenkt werden.
-
Der Elektronikbaustein kann Register umfassen. Diese können Ports repräsentieren. Durch Beschreiben der Register kann der Code, der ein Teil einer Firmware sein kann, die Funktionalität der Pins parametrieren und einstellen. Es kann daher vorgesehen sein, dass der Code in Abhängigkeit der ermittelten Eingangssignale so generiert wird, dass er die Register in Abhängigkeit der ermittelten Eingangssignale beschreibt, wenn er auf dem Steuergerät ausgeführt wird.
-
Hierbei kann vorgesehen sein, dass ein Signaltyp des ermittelten Eingangssignals ermittelt wird. Der Code wird dann auch abhängig von diesem ermittelten Signaltyp generiert. Auf diese Weise ist es insbesondere möglich, den Code so zu konfigurieren, dass das anliegende Eingangssignal von dem Steuergerät in der gewünschten Weise verarbeitet wird.
-
Beispielsweise ist es möglich, dass der Pin in einem sogenannten „Pin Mode“ mit direkter Eingabe und Ausgabe von Signalen betrieben wird. Es ist auch möglich, dass der Pin entsprechend eines Kommunikationsprotokolls betrieben wird, wie beispielsweise LIN, Flexray, CAN, oder ähnliche. Weitere Signaltypen, die einen entsprechenden Betriebsmodus des Pins erfordern, umfassen analoge Eingangssignale, Komparatoren, externe Oszillatoren, PWM-Signale, oder Signale, die nach dem UART, SPI oder I2C-Standard arbeiten. Weitere mögliche Betriebsmodi umfassen die sogenannten Modi „input capture“ oder „output compare“.
-
In einer Weiterbildung hiervon kann vorgesehen sein, dass Konfigurationsparameter abhängig von diesem ermittelten Signaltyp ermittelt werden. Diese Konfigurationsparameter können Konfigurationsparameter des Elektronikbausteins sein, mit denen der Elektronikbaustein konfiguriert werden kann. Diese Konfiguration kann bei Mikrocontrollern wie beschrieben durch das beschreiben von Registern erfolgen.
-
Es kann dann vorgesehen sein, dass der Code auch abhängig von diesen Konfigurationsparametern generiert wird. Hiermit kann auf besonders einfache Weise ausgenutzt werden, dass der Elektronikbaustein automatisch konfiguriert werden kann.
-
Ein Verfahren nach einem der genannten Aspekte kann besonders einfach implementiert werden, wenn das Eingangssignal mittels einer ersten Datenquelle ermittelt, insbesondere aus einer ersten Datei ausgelesen, wird. Diese Datei kann beispielsweise eine Textdatei sein, in der in einer sogenannten Netzliste der Aufbau des Steuergeräts, beschrieben ist. Das bedeutet, dass in der Netzliste beispielsweise ein Layout eines Schaltplans des Steuergeräts und sowie die dabei benutzen Elektronikbausteine beschrieben sind.
-
Dies reduziert die Notwendigkeit, bei der Integration der Steuergerätesoftware die Konfigurationsparameter anhand des Steuergeräteschaltplans manuell anzupassen. Die Sicherung der Qualität kann vielmehr automatisiert erfolgen, beispielsweise mit einem Scriptprogramm, Ein solches Scriptprogramm kann dazu benutzt werden, die komplexen Zusammenhänge der Konfigurationsparameter automatisiert vereinfacht darzustellen.
-
Zudem wurden sogenannte Fibex-Dateien entwickelt, die die Architektur eines Netzwerkkommunikationssystems, in das das Steuergerät eingebunden ist, beschreiben. Durch Berücksichtigung der Werte solcher Fibex-Dateien ist es weiter möglich, die Konfigurationsparameter auf gültige Werte einzuschränken und das Einstellen von unplausiblen Werten zu verhindern.
-
Es kann nun vorgesehen sein, dass in der ersten Datenquelle Bauteile des Steuergeräts und anliegende Eingangssignale als Tags eines Graphen codiert hinterlegt sind. Hierbei bietet sich beispielsweise eine zeilenweise Darstellung an, wobei je Zeile eine Tags oder Attribute eines Tags oder eines Knoten des Graphen definiert sind.
-
Wird beispielsweise ein anliegendes Eingangssignal durch einen ASIC-Baustein eingespeist, dann kann dieser ASIC-Baustein in der ersten Datenquelle als Bauteil aufgeführt sein. Eine solche Codierung von Information ist besonders effizient und einfach zu verarbeiten.
-
Vorteilhafterweise sind in dieser ersten Datenquelle Signaleingänge als Knoten des Graphen codiert hinterlegt. Durch Trassierung des Graphen ist es dann leicht möglich, automatisiert zu ermitteln, welche Eingangssignale an welchen Signaleingängen anliegen. Damit wird das Verfahren besonders effizient.
-
Vorteilhafterweise wird aus einer zweiten Datenquelle ermittelt, insbesondere aus einer zweiten Datei ausgelesen, welchen Signaltyp dieses Eingangssignal hat. Dies kann beispielsweise durch ein Datenblatt des ASIC, der das Eingangssignal einspeist, geschehen. Dieses Datenblatt enthält Spezifikationsmerkmale und spezifiziert die Signaltypen.
-
Kombiniert man diese Informationen aus dem Datenblatt mit den oben genannten Informationen aus der Netzliste-Datei ist es noch besser möglich, die Konfigurationsparameter auf gültige Werte einzuschränken und das Einstellen von unplausiblen Werten zu verhindern.
-
Alternativ oder zusätzlich kann vorteilhafterweise vorgesehen sein, dass die Konfigurationsparameter aus einer dritten Datenquelle ermittelt, insbesondere aus einer dritten Datei ausgelesen, wird. Bei dieser dritten Datei kann es sich beispielsweise um ein Datenblatt eines Mikrocontrollers auf dem Steuergerät handeln.
-
Das Verfahren kann in Software oder Hardware oder in eine Mischform aus Software und Hardware implementiert werden.
-
Nachfolgend werden Ausführungsformen der Erfindung unter Bezugnahme auf die beiliegende Zeichnung näher erläutert. 1 zeigt einen Ablaufplan einer Ausführungsform der Erfindung.
- 1 zeigt genauer beispielhaft einen Ablauf zum Generieren von Code, der auf einem definierten Steuergerät ablauffähig ist. Hierzu wird eine Datei eingelesen (100), die eine Netzliste des Steuergeräts beinhaltet. In dieser Datei ist codiert, welche ASICs, insbesondere welche Mikrocontroller, in dem definierten Steuergerät verbaut sind. Weiterhin ist in dieser Datei codiert, mit welchen Pins peripherer Geräte die Pins dieser Mikrocontroller durch Signalleitungen verbunden sind. Ebenso ist in dieser Datei codiert, welche Eingangssignale an welchen Pins des Steuergeräts anliegen. Bei dieser Operation wird die Verbindung der Peripheriegeräte zum Mikrocontroller eindeutig festgelegt.
-
Im Ausführungsbeispiel sind in der Netzliste die Verbindungen des SteuergeräteSchaltplans zeilenweise als Kanten eines Graphen (als Tags) gespeichert. Es werden all jene Tags extrahiert, die wenigstens einen Pin eines ASICs (z.B.: Mikrocontroller) des Steuergeräts mit einem weiteren Pin verbinden. Die folgenden Schritte 200, 300 und 400 werden Tag-für-Tag für jede dieser Tags durchgeführt.
-
Es wird für den vorliegenden Tag nun ermittelt (200), mit welchem Mikrocontroller-Pin das entsprechende Signal verbunden ist, welches Peripheriegerät mit dem entsprechenden Signal angeschlossen wird und welcher Pin für dieses Peripheriegerät mit dem entsprechenden Signal verbunden ist.
-
Nun wird eine zweite Datei eingelesen (300). Diese zweite Datei ist eine Spezifikationsdatei, in der die Eigenschaften der peripheren Geräte spezifiziert sind. Aus den Informationen, die in dieser zweiten Datei vorliegen, wird für den verbundenen Pin des Mikrocontrollers extrahiert, welche Charakteristika das jeweilige Eingangssignal hat und welche Funktionalität aktiviert werden muss.
-
Anschließend wird eine dritte Datei eingelesen (400). In der dritten Datei ist für die Pins hinterlegt, wie die Register der entsprechenden Mikrocontrollers zu konfigurieren sind, wenn ein Eingangssignal mit den in Schritt 300 extrahierten Charakteristika anliegt. Es versteht sich, dass diese Informationen für alle Pins in einer einzigen Datei zusammengefasst sein können, oder für jeden oder mehrere Pins in separaten Dateien.
-
Anschließend wird zu Schritt 200 zurückverzweigt, wenn noch weitere Tags zu analysieren sind. Sind alle Tags abgearbeitet, folgt Schritt 500.
-
Hier wird mit den so ermittelten Konfigurationsparametern eine automatische Codegenerierung durchgeführt (500). Hierzu wird abhängig von den gewählten Konfigurationsparametern c-Code generiert. Dieser c-Code wird dann für das Steuergerät ablauffähig kompiliert und zu einem ablauffähigen Programm gelinkt.
-
Dieses Programm wird dann auf das Steuergerät aufgebracht werden, beispielsweis in einen Flash-Speicher. Damit endet das Verfahren.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- DE 102005005558 A1 [0002]