DE10256990A1 - Programmcodegenerator und Programm - Google Patents

Programmcodegenerator und Programm

Info

Publication number
DE10256990A1
DE10256990A1 DE10256990A DE10256990A DE10256990A1 DE 10256990 A1 DE10256990 A1 DE 10256990A1 DE 10256990 A DE10256990 A DE 10256990A DE 10256990 A DE10256990 A DE 10256990A DE 10256990 A1 DE10256990 A1 DE 10256990A1
Authority
DE
Germany
Prior art keywords
variable
program code
vehicle
specific
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10256990A
Other languages
English (en)
Inventor
Yoshiyuki Maki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Publication of DE10256990A1 publication Critical patent/DE10256990A1/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Abstract

Variableninformationen, die angeben, obe eine Variable eine fahrzeugspezifische Variable ist, die für die Fahrzeugregelung spezifisch ist, werden in der Form eines Variablennamens zum Modell hinzugefügt. In einem Codeerzeugungswerkzeug (1) extrahiert eine Extraktionseinrichtung (10) den Variablennamen aus einer Zwischendatei zum Erhalten der Variableninformationen, und ein Codeerzeugungsblock (20) erzeugt einen fahrzeugspezifischen Programmcode, der der fahrzeugspezifischen Variable entspricht, unter Verwendung einer Variablenerzeugungsregel (32), die in einem Regelspeicher (30) gespeichert ist.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zur automatischen Erzeugung eines Steuerprogramms, das eine Fahrzeugregelung durchführt und in einer elektronischen Steuereinheit eingebettet ist.
  • In den vergangenen Jahren wurden Programmcodegeneratoren entwickelt. Die Programmcodegeneratoren modellieren Spezifikationen von Programmen, die in Computersystemen installiert sind, und erzeugen automatisch ein entsprechendes Programm beruhend auf einer abstrakten Sprache, die ein entsprechendes Modell beschreibt.
  • Beispiele einer derartigen abstrakten Sprache beinhalten einfache Blockschaltbilder (wie Datenablaufdiagramme), Zustandsübergangsdiagramme (wie Zustandsdiagramme) und seit kurzem die Unified Modeling Language (UML).
  • Diese Programmcodegeneratoren erzeugen automatisch einen Programmcode aus der abstrakten Sprache, die menschlichen Gedankenvorgängen ähnelt. Somit können diese Programmcodegeneratoren zur schnellen Implementierung von Spezifikationsänderungen verwendet werden und helfen somit bei der Verkürzung von Programmentwicklungszeiten.
  • Allerdings wurden Programmcodegeneratoren, wie die vorstehend beschriebenen, zum Zweck der Entwicklung von Programmen entwickelt, die auf Workstations und Universalcomputern arbeiten, und sind nicht direkt zur Entwicklung eines Steuerprogramms anwendbar, das in einer elektronischen Steuereinheit eines Fahrzeugs eingebettet ist.
  • Dies wird nachstehend näher beschrieben.
  • Im allgemeinen definieren die vorstehend angeführten Programmcodegeneratoren Variablen als globale Variablen oder automatische Variablen und Behandeln sie auf die gleiche Weise.
  • Beispielsweise sind alle Variablen in einem Speicherbereich gespeichert, der seinen Inhalt nicht behalten kann, wenn der Strom abgeschaltet wird. Das heißt, bei Universalcomputern und Workstations wird von diesen Variablen angenommen, dass sie auf einem Festplattenlaufwerk gesichert werden.
  • Allerdings werden in Fahrzeugregelungssystemen bestimmte Variablen, die für einen Fahrzeugregelungsvorgang spezifisch sind und gespeichert oder gesichert werden müssen, auf eine spezielle Art und Weise gehandhabt, die sich von der Handhabung ordinärer Variablen unterscheidet.
  • Insbesondere werden bestimmte Werte, wie Lernwerte, in einem speziellen Speicherbereich gespeichert, der von einem Speicherbereich zur Speicherung der üblichen Variablen verschieden ist und seinen Inhalt selbst dann beibehalten kann, wenn ein Zündschlüssel des Fahrzeugs abgezogen wird. Dies beruht auf der Tatsache, dass das Fahrzeug beruhend auf zuvor erhaltenen Lernwerten geeignet geregelt werden muss, die während eines vorhergehenden Betriebs des Fahrzeugs erhalten oder gelernt werden, wenn der Zündschlüssel gedreht wird. Ferner müssen Fehlerinformationen, die per Gesetz gespeichert werden müssen, auch in dem speziellen Speicherbereich gespeichert werden, der vom Speicherbereich zur Speicherung der üblichen Variablen verschieden ist.
  • Das heißt, die speziellen Variablen, die für den Fahrzeugregelungsbetrieb spezifisch sind, erfordern ein fahrzeugspezifisches Programm.
  • Somit muss ein Entwickler während der Entwicklung des Fahrzeugregelungsprogramms über die Verwendung des zuvor angeführten Programmcodegenerators den erzeugten Programmcode manuell modifizieren.
  • Die Erfindung adressiert den vorstehend angeführten Nachteil. Somit ist es eine Aufgabe der Erfindung, einen Programmcode zur Durchführung einer Fahrzeugregelung unter Verwendung eines Programmcodeerzeugungsverfahrens zu erzeugen, das eine abstrakte Sprache wie vorstehend beschrieben verwendet.
  • Zum Lösen der erfindungsgemäßen Aufgabe ist ein Programmcodegenerator bereitgestellt, der zur Erzeugung eines Steuerprogramms verwendet wird, das in einer elektronischen Steuereinheit zur Durchführung einer Fahrzeugregelung eingebettet ist. Der Programmcodegenerator erzeugt einen Programmcode, der einem Verarbeitungsprogramm entspricht, das zumindest einen Teil des Steuerprogramms bildet, beruhend auf zumindest einer Programmcodeerzeugungsregel, wenn abstrakte Sprache, die Spezifikationen des Verarbeitungsprogramms beschreibt, in den Programmcodegenerator eingegeben wird. Der Programmcode enthält eine Vielzahl von Programmcodesegmenten. Der Programmcodegenerator enthält eine Variableninformationserhalteinrichtung zum Erhalten von Variableninformationen und eine Codeerzeugungseinrichtung zur Erzeugung zumindest eines der Vielzahl von Programmcodesegmenten. Die Variableninformationen geben an, ob eine in der abstrakten Sprache enthaltene Variable eine fahrzeugspezifische Variable ist, die für die Fahrzeugregelung spezifisch ist. Die Codeerzeugungseinrichtung erzeugt ein fahrzeugspezifisches Programmcodesegment als eines der Programmcodesegmente beruhend auf den Variableninformationen, die durch die Variableninformationserhalteinrichtung erhalten werden, über die Verwendung einer entsprechenden der zumindest einen Erzeugungsregel, die der fahrzeugspezifischen Variable entspricht, wenn die in der abstrakten Sprache enthaltene Variable die fahrzeugspezifische Variable ist.
  • Zum Lösen der erfindungsgemäßen Aufgabe ist auch ein Computerprogramm zur Erzeugung eines Programmcodes vorgesehen, der einem Verarbeitungsprogramm entspricht, das zumindest einen Teil eines in einer elektronischen Steuereinheit zur Durchführung einer Fahrzeugregelung eingebetteten Steuerprogramms bildet, beruhend auf zumindest einer Programmcodeerzeugungsregel, wenn abstrakte Sprache, die Spezifikationen des Verarbeitungsprogramms beschreibt, eingegeben wird. Der Programmcode beinhaltet eine Vielzahl von Programmcodesegmenten. Über die Verwendung des Computerprogramms werden zuerst Variableninformationen erhalten. Die Variableninformationen geben an, ob eine in der abstrakten Sprache enthaltene Variable eine fahrzeugspezifische Variable ist, die für die Fahrzeugregelung spezifisch ist. Dann wird ein fahrzeugspezifisches Programmcodesegment als eines der Vielzahl von Programmcodesegmenten erzeugt, wenn die in der abstrakten Sprache enthaltene Variable die fahrzeugspezifische Variable ist. Das fahrzeugspezifische Codesegment wird beruhend auf den Variableninformationen über die Verwendung einer entsprechenden der zumindest einen Erzeugungsregel erzeugt, die der fahrzeugspezifischen Variable entspricht.
  • Die Erfindung wird zusammen mit zusätzlichen Aufgaben, Merkmalen und Vorteilen am besten anhand der folgenden Beschreibung, der beigefügten Patentansprüche und der Zeichnung verstanden. Es zeigen:
  • Fig. 1 eine schematische Darstellung des Ablaufs einer Programmerzeugung zusammen mit einem Codeerzeugungswerkzeug gemäß einem Ausführungsbeispiel der Erfindung,
  • Fig. 2 eine schematische Darstellung eines Datenflussdiagramms (DFD) eines Beispiels eines Fahrzeugregelungsmodells gemäß dem Ausführungsbeispiel,
  • Fig. 3 ein Ablaufdiagramm eines Codeerzeugungsvorgangs zur Verarbeitung von Variablen gemäß dem Ausführungsbeispiel,
  • Fig. 4 eine schematische Darstellung eines Beispiels eines Teils eines erzeugten Programmcodes gemäß dem Ausführungsbeispiel,
  • Fig. 5A ein Ablaufdiagramm eines von einer elektronischen Steuereinheit (ECU) durchlaufenen Prozesses gemäß dem Ausführungsbeispiel,
  • Fig. 5B ein Ablaufdiagramm einer Überprüfungsroutine, die in dem in Fig. 5A gezeigten Prozess durchgeführt wird,
  • Fig. 6 eine schematische Darstellung von in Speicherbereichen gespeicherten Variablen gemäß dem Ausführungsbeispiel,
  • Fig. 7A eine schematische Darstellung von Schreib- und Leseprozessen gemäß dem vorliegenden Ausführungsbeispiel, die bei einer üblichen Variable durchgeführt werden,
  • Fig. 7B eine schematische Darstellung von Schreib- und Leseprozessen gemäß dem vorliegenden Ausführungsbeispiel, die bei einer Sicherungsvariable unter Verwendung eines entsprechenden Makros durchgeführt werden, und
  • Fig. 8 ein Ablaufdiagramm einer Modifikation der Programmerzeugung.
  • Nachstehend wird ein Ausführungsbeispiel der Erfindung unter Bezugnahme auf die beiliegende Zeichnung beschrieben.
  • Fig. 1 zeigt schematisch den Ablauf einer Programmerzeugung zusammen mit einem Codeerzeugungswerkzeug (das als Programmcodegenerator dient) 1 gemäß dem vorliegenden Ausführungsbeispiel. Bei diesem Ausführungsbeispiel wird am Ende ein Fahrzeugregelungsprogramm erzeugt. Das Codeerzeugungswerkzeug 1 erzeugt einen Programmcode aus einer entsprechenden Modellbeschreibung (die nachstehend als "Modell" bezeichnet wird), die die Programmspezifikationen angibt. Dieser Programmcode ist Quellcode, der durch einen Kompilierer/Binder 40 in einen Objektcode konvertiert wird. Der Objektcode wird dann in ein Flash-ROM einer elektronischen Steuereinheit (ECU) 50 geschrieben bzw. dort gespeichert.
  • Das Codeerzeugungswerkzeug 1 ist ein allgemeines Computersystem und beinhaltet somit eine CPU, ein ROM, ein RAM, eine I/O-Schnittstelle, eine Busleitung zur Verbindung dieser Elemente, eine Festplatteneinrichtung, Eingabeeinrichtungen (wie eine Tastatur, eine Zeigeeinrichtung), eine Ausgabeeinrichtung (wie eine Anzeigeeinrichtung) und eine Kommunikationseinrichtung zur Kommunikation mit externen Einrichtungen.
  • Die Hardwarekonfiguration des Codeerzeugungswerkzeugs 1 ist somit dem Fachmann auf diesem Gebiet bekannt. Infolgedessen ist die Funktion des Codeerzeugungswerkzeugs 1 lediglich als einfaches Blockschaltbild in Fig. 1 gezeigt.
  • Gemäß Fig. 1 weist das Codeerzeugungswerkzeug 1 eine Extraktionseinrichtung 10, einen Codeerzeugungsblock 20 und einen Regelspeicher 30 auf.
  • Die Extraktionseinrichtung 10 liest das Modell (die abstrakte Sprache) und gibt eine Zwischendatei aus. Zu diesem Zeitpunkt wird jeder entsprechende Variablenname aus diesem Modell extrahiert und in der Zwischendatei plaziert.
  • Der Codeerzeugungsblock 20 erzeugt den Programmcode beruhend auf der aus der Extraktionseinrichtung 10 ausgegebenen Zwischendatei.
  • Der Regelspeicher 30 speichert die im Codeerzeugungsblock 20 verwendeten Codeerzeugungsregeln 31. Die Codeerzeugungsregeln 31 beinhalten eine Variablenerzeugungsregel 32, das heißt, eine Regel zur Erzeugung eines Programms, das einer Variable entspricht.
  • Als nächstes wird das Modell näher beschrieben.
  • Das Modell ist in abstrakter Sprache geschrieben. Ein Beispiel dieses Modells ist ein Datenflussdiagramm (DFD), wie das in Fig. 2 gezeigte.
  • Das DFD zeigt die Bewegung von Variablen zwischen Regelungsoperationen. Gemäß Fig. 2 sind eine Leerlauf- Geschwindigkeitsregelung 31, eine Lernwertregelung 32 und eine Drosselregelung 63 als Blöcke gezeigt. Die Darstellung veranschaulicht folgendes. Das heißt, eine Variable RAM1 wird in den Leerlauf-Geschwindigkeitsregelungsblock 61 eingegeben, der dann eine Variable RAM2 ausgibt. Des weiteren wird die Variable RAM2 sowohl in den Lernwertregelungsblock 62 als auch den Drosselregelungsblock 63 eingegeben. Der Lernwertregelungsblock 62 gibt eine Variable RAM3_BU aus. Der Drosselregelungsblock 63 gibt eine Variable RAM4 aus.
  • Die Variable RAM3_BU, die aus dem Lernwertregelungsblock 62 ausgegeben wird, ist eine fahrzeugspezifische Variable (die nachstehend als "Sicherungsvariable" bezeichnet wird), die für den Fahrzeugregelungsvorgang spezifisch ist und aufbewahrt oder gesichert werden muss, selbst wenn der Zündschlüssel abgezogen wird. Zur Unterscheidung dieser Variable von anderen Variablen RAM1, RAM2 und RAM4 wird der Zusatz "_BU" dem Variablennamen hinzugefügt. Das heißt, bei dem vorliegenden Ausführungsbeispiel sind Variableninformationen (das heißt, Informationen über die Variable), die angeben, ob die entsprechende Variable eine fahrzeugspezifische Variable ist, dem Modell in der Form eines Variablennamens hinzugefügt.
  • Es wird angemerkt, dass die Spezifikationen für den Leerlauf-Geschwindigkeitsregelungsblock 61, den Lernwertregelungsblock 62 und den Drosselregelungsblock 63 wie vorstehend beschrieben separat vorgesehen sind.
  • Die Extraktionseinrichtung 10, die den als Variableninformationen dienenden Variablennamen aus dem Modell (das heißt, der Eingabe) extrahiert, und den Variablennamen in der Zwischendatei plaziert, entspricht einer Variableninformationserhalteinrichtung der vorliegenden Erfindung. Der Codeerzeugungsblock 20, der den Programmcode unter Verwendung eines jeweiligen in der Zwischendatei enthaltenen entsprechenden Variablennamens beruhend auf der Variablenerzeugungsregel 32 erzeugt, entspricht einer Codeerzeugungseinrichtung der vorliegenden Erfindung.
  • Ein Codeerzeugungsprozess, der beruhend auf den im Modell beschriebenen Variablen durchgeführt wird, wird nachstehend unter Bezugnahme auf Fig. 3 beschrieben.
  • Fig. 3 zeigt ein Ablaufdiagramm des im Codeerzeugungsblock 20 durchgeführten Codeerzeugungsprozesses. Dieser Prozess wird bei jeder im Modell beschriebenen Variable angewendet.
  • Im ersten Schritt S100 wird bestimmt, ob die Variable eine benannte Variable ist, die einen bestimmten Namen hat. Obwohl gemäß dem in Fig. 2 gezeigten DFD die Namen aller zwischen den Regelungsblöcken weitergeleiteten Variablen benannte Variablen sind, ist anzumerken, dass einige Variablen, wie innerhalb einer bestimmten Funktion verwendete lokale Variablen, keinen bestimmten Namen haben. Wird bestimmt, dass die Variable eine benannte Variable ist, wie RAM1, wird in Schritt S100 JA zurückgegeben. Dann geht die Steuerung zu Schritt S120 über. Wird andererseits bestimmt, dass die Variable keine benannte Variable ist (S100: NEIN), wird die Variable als automatische Variable bestimmt oder definiert, und ein entsprechendes Programmcodesegment des Programmcodes wird unter Verwendung dieser automatischen Variable in Schritt S110 erzeugt. Dann wird der aktuelle Codeerzeugungsprozess beendet.
  • Im Schritt S120 wird bestimmt, ob die Variable eine Sicherungsvariable ist. Dies wird durch die Bestimmung durchgeführt, ob der Anhang "_BU" dem Variablennamen hinzugefügt ist. Wird bestimmt, dass die Variable keine Sicherungsvariable ist (S120: NEIN), das heißt, wird bestimmt, dass der Variablenname nicht mit "_BU" endet, geht die Steuerung zu Schritt S130 über. Wird andererseits bestimmt, dass die Variable eine Sicherungsvariable ist (S120: JA), das heißt, wird bestimmt, dass der Variablenname mit "_BU" endet, geht die Steuerung zu Schritt S150 über.
  • In Schritt S130 wird die Variable als globale Variable bestimmt oder definiert, und ein entsprechendes Programmcodesegment wird unter Verwendung dieser globalen Variable erzeugt. Dann wird ein Variableninitialisierungsprogrammcodesegment zum Initialisieren der entsprechenden Variable in Schritt S140 erzeugt. Nach der Beendigung des Schritts S140 endet der aktuelle Codeerzeugungsprozess.
  • In Schritt S150 wird die Variable als globale Variable des bestimmten Datentyps bestimmt oder definiert, und ein entsprechendes Programmcodesegment wird unter Verwendung dieser globalen Variable vom bestimmten Datentyp erzeugt.
  • Der bestimmte Datentyp ist ein neu definierter Datentyp, an den Überprüfungsdaten angefügt werden können.
  • Im folgenden Schritt S160 wird ein Programmcodesegment, das die Variable definiert, in eine bestimmte Sektion des Programmcodes aufgenommen. Auf diese Weise werden die Sicherungsvariablen alle in einem bestimmten Speicherbereich gespeichert, was nachstehend beschrieben wird.
  • Im folgenden Schritt S170 wird kein Variableninitialisierungsprogrammcodesegment für die Sicherungsvariable erzeugt. Wie es vorstehend beschrieben ist, wird ein Variableninitialisierungsprogrammcodesegment für die üblichen Variablen erzeugt, die äls globale Variablen bestimmt werden (S140). Da der Inhalt der Sicherungsvariable aufbewahrt werden muss, sollte kein Variableninitialisierungsprogrammcodesegment zur Initialisierung der Sicherungsvariable erzeugt werden.
  • Im folgenden Schritt S180 wird ein Programmcodesegment zur Verwendung eines Makros zum Lesen und Schreiben der Sicherungsvariable erzeugt. Das heißt, ein Programmcodesegment wird derart erzeugt, dass der Leseprozess der Sicherungsvariable und der Schreibprozess der Sicherungsvariable eine zuvor vorbereitete Bibliothek (oder Bibliotheken) aufruft. Nach Abschluss des Schritts S180 endet der gegenwärtige Codeerzeugungsprozess.
  • Die Schritte S120 und S150 bis S180 des vorstehend beschriebenen Codeerzeugungsprozesses entsprechen einer Codeerzeugungseinrichtung der vorliegenden Erfindung.
  • Als nächstes wird der durch den vorstehend beschriebenen Codeerzeugungsprozess erzeugte Programmcode speziell mit einer weiteren Beschreibung des Codeerzeugungsprozesses beschrieben.
  • Fig. 4 zeigt einen Teil des aus dem Modell des DFD gemäß Fig. 2 erzeugten Programmcodes.
  • Da die im DFD beschriebenen Variablen RAM1, RAM2, RAM3_BU und RAM4 benannte Variablen sind, wird in Schritt S100 in Fig. 3 JA zurückgegeben. Des weiteren wird auch für die Variable RAM3_BU in Schritt S120 JA zurückgegeben. Andererseits wird für die anderen Variablen RAM1, RAM2 und RAM4 in Schritt S120 NEIN zurückgegeben.
  • Somit wird die Variable RAM3_BU als globale Variable vom spezifischen bzw. bestimmten Datentyp bestimmt, und das entsprechende Programmcodesegment wird unter Verwendung dieser globalen Variable vom bestimmten Datentyp erzeugt (S150 in Fig. 3), was durch "a" in Fig. 4 angegeben wird. Hier wird dies durch einen neuen Datentyp "chdat" gemäß diesem Ausführungsbeispiel definiert. Die definitive Beschreibung dieser Variable RAM3_BU wird dann in einer beispielsweise durch SEKTION bezeichneten Codesektion ausgesetzt, was durch "b" in Fig. 4 angegeben ist.
  • Das entsprechende Programmcodesegment für den Leseprozess der Variable RAM3_BU wird derart erzeugt, dass das entsprechende Programmcodesegment ein "Lese-Makro" aufruft, (S180 in Fig. 3), was durch "f" in Fig. 4 angegeben ist. Das entsprechende Programmcodesegment für den Schreibprozess der Variable RAM3_BU wird derart erzeugt, dass das entsprechende Programmcodesegment ein "Schreib- Makro" aufruft (180 in Fig. 3), was durch "g" in Fig. 4 angegeben ist.
  • Andererseits wird ein Programmcodesegment für jede Variable RAM1, RAM2 und RAM4 unter Verwendung jeweils dieser Variablen RAM1, RAM2 und RAM4 als übliche globale Variablen erzeugt (S130 in Fig. 3), was durch "c" in Fig. 4 angegeben ist. Ein Variableninitialisierungsprogrammcodesegment wird für diese Variablen RAM1, RAM2 und RAM4 erzeugt, (S140 in Fig. 3), wie es durch "d" in Fig. 4 angegeben ist. Für die Variable RAM3_BU wird kein Variableninitialisierungsprogrammcodesegment erzeugt (S170 in Fig. 3).
  • Ist die entsprechende Variable keine benannte Variable (S100 in Fig. 3: NEIN), wird die Variable als automatische Variable bestimmt, und ein entsprechendes Programmcodesegment wird unter Verwendung dieser automatischen Variable erzeugt (Silo in Fig. 3). Gemäß Fig. 4 wird eine automatische Variable "Temp_ram" in einer Funktion "Function" definiert, was durch "e" angegeben ist.
  • Dann wird der so erzeugte Programmcode durch den Kompilierer/Binder 40 wie in Fig. 1 gezeigt in einen Objektcode konvertiert und in die ECU 50 eingebettet oder darin installiert.
  • Die Funktionen der ECU 50, die durch den so erzeugten Programmcode ermöglicht werden, werden beschrieben.
  • Wie es in Fig. 5A gezeigt ist, sind die durch diesen Programmcode ermöglichten ECU-Operationen grob in zwei Typen unterteilt, einen Datendefinitionsprozess, usw. (S200) und einen Steuerprozess (S210) der nach Schritt S200 wiederholt wird. Unter Bezugnahme auf Fig. 4 entsprechen die Abschnitte b, c und d denen des Datendefinitionsprozesses und die Abschnitte der Funktion, die dem Datendefinitionsprozess folgen, entsprechen dem Steuerprozess.
  • Wie es in Fig. 6 gezeigt ist, werden die Variablen RAM1, RAM2 und RAM3, die durch "c" in Fig. 4 angegeben sind, im Datendefinitionsprozess in einem Speicherbereich 51 zur Speicherung üblicher Variablen in einem RAM der ECU 50 gespeichert. Da demgegenüber die Sicherungsvariable RAM3_BU in die Codesektion verschoben ist, was durch "b" in Fig. 4 angegeben ist (das heißt, zwischen SECTION und SECTION in Fig. 4 plaziert ist), speichert der Kompilierer/Binder 40 die Sicherungsvariable RAM3_BU in einem Speicherbereich 52 zur Speicherung von Sicherungsvariablen im RAM der ECU 50. Alternativ dazu kann der Speicherbereich 52 zur Speicherung der Sicherungsvariablen unter Verwendung eines EEPROM gebildet sein.
  • Mit der vorstehenden Anordnung kann der Inhalt der Variable RAM3_BU selbst dann bewahrt werden, wenn der Zündschlüssel abgezogen wird, während der Steuerprozess (S210) gemäß Fig. 5A läuft. Das bei der Variable RAM3_BU durchgeführte Lesen und Schreiben wird beschleunigt und eine Echtzeitsteuerung bzw. Echtzeitregelung kann erzielt werden.
  • Da des weiteren die Variable RAM3_BU durch den bestimmten Datentyp "chdat" deklariert ist, wird die Variable RAM3_BU derart gespeichert, dass Überprüfungsdaten zur Variable RAM3_BU hinzugefügt werden, wie es in Fig. 6 gezeigt ist.
  • Somit ist es möglich, die Gültigkeit der Sicherungsvariable RAM3_BU zu überprüfen, während der Steuerprozess (S210 in Fig. 5) läuft, indem eine existierende Überprüfungsroutine durchlaufen wird, wie es in Schritt S300 in Fig. 5B gezeigt ist.
  • Da ferner kein Variableninitialisierungsprogrammcodesegment für die Variable RAM3_BU erzeugt wird, kann der Inhalt der Variable RAM3_BU geeignet gespeichert oder bewahrt werden.
  • Außerdem werden Lese- und Schreibprozesse für die Variable RAM3_BU durch das Aufrufen des entsprechenden "Lese-Makros" oder des entsprechenden "Schreib-Makros" bewirkt, wie es durch "f" und "g" in Fig. 4 angegeben ist.
  • Wie es in Fig. 7A gezeigt ist, wird ein Programmcodesegment für eine übliche Variable, wie RAM1, derart erzeugt, dass der Leseprozess oder der Schreibprozess direkt bei der üblichen Variable durchgeführt wird. Dagegen wird ein Programmcodesegment für die Sicherungsvariable RAM3_BU derart erzeugt, dass der Leseprozess oder der Schreibprozess indirekt bei der Sicherungsvariablen RAM3_BU über das entsprechende Makro durchgeführt wird, wie es in Fig. 7B gezeigt ist.
  • Daher ermöglicht die Bereitstellung der geeigneten Makros eine Überprüfung der Gültigkeit der Variable, beispielsweise im Leseprozess der Variable.
  • Des weiteren werden die von den benannten Variablen RAM1, RAM2, RAM3_BU, RAM4 verschiedenen Variablen als automatische Variablen definiert, wie es durch "e" in Fig. 4 angegeben ist, so dass der verwendete Speicherumfang reduziert werden kann.
  • Wie es vorstehend bei dem vorliegenden Ausführungsbeispiel beschrieben ist, werden Variableninformationen, die angeben, ob die Variable eine Sicherungsvariable ist, zum Modell in der Form eines Variablennamens hinzugefügt. Im Codeerzeugungswerkzeug 1 extrahiert die Extraktionseinrichtung 10 einen Variablennamen und plaziert ihn in einer Zwischendatei. Auf diese Weise werden die Variableninformationen erhalten, und der Codeerzeugungsblock 20 erzeugt ein entsprechendes fahrzeugspezifisches Programmcodesegment für die Sicherungsvariable, die die fahrzeugspezifische Variable ist, unter Verwendung der im Regelspeicher 30 gespeicherten Variablenerzeugungsregel 32.
  • Auf diese Weise kann der Programmcode für die Fahrzeugregelung unter Verwendung des Programmcodeerzeugungsverfahrens erzeugt werden, das das in der abstrakten Sprache geschriebene Modell verwendet.
  • Da ferner die Variableninformationen in der Form eines vorbestimmten Variablennamens zur abstrakten Sprache hinzugefügt sind, muss der Entwickler lediglich die Variablennamen bei der Erzeugung des Modells kennen. Der Entwickler kann vorteilhafter Weise auch beruhend auf dem Modell bestimmen, ob die beschriebene Variable eine Sicherungsvariable ist. Da diese Variableninformationen in der Form eines Variablennamens hinzugefügt sind, kann die Bewegung von Variablen im Modell leicht beobachtet werden, und es kann auch einfach bestimmt werden, ob eine Variable eine Sicherungsvariable ist oder nicht.
  • Diese Erfindung ist nicht auf das vorstehende Ausführungsbeispiel beschränkt und kann auf vielerlei Arten ausgeführt werden, ohne vom Schutzbereich der Erfindung abzuweichen.
  • Beispielsweise werden im vorstehenden Ausführungsbeispiel die Variableninformationen in der Form des Variablennamens vom vorbestimmten Typ zum Modell hinzugefügt.
  • Es ist alternativ möglich, diese Variableninformationen in der Form eines Variablenattributs eines vorbestimmten Typs hinzuzufügen. Auf diese Weise sind Variablennamen keine Einschränkungen auferlegt, und es kann ein weiter Bereich von Variablen definiert werden.
  • Die Variableninformationen können auch integral als separate Informationen in der Form einer Datei oder Datenbank verwaltet werden, die separat von der abstrakten Sprache ausgebildet ist. Auf diese Weise kann der Entwickler eine Liste verwendeter Variablen leicht einsehen und verstehen.
  • Ferner wird bei dem vorstehenden Ausführungsbeispiel der Programmcode derart erzeugt, dass keine Initialisierung der Sicherungsvariable RAM3_BU durchgeführt wird.
  • Alternativ dazu kann gemäß Fig. 8 ein Variableninitialisierungsprogrammcodesegment zum Bewirken der folgenden Prozesse erzeugt werden. Das heißt, nach dem Datendefinitionsprozess, usw. (S200) wird eine Sicherungsvariable überprüft (S202). Ist die überprüfte Sicherungsvariable nicht gültig (S204: NEIN), wird die Sicherungsvariable initialisiert (S206). Das heißt, der Programmcode kann erzeugt werden, um die Prozesse (S202, S204, S206, die durch "B" in Fig. 8 angegeben sind, zusätzlich zu den durch "A" in Fig. 5A angegebenen Prozessen (S200, S210) zu erzielen.
  • Der Grund dafür ist folgender. Das heißt, der Inhalt der Sicherungsvariable könnte aus einigen Gründen fehlerhaft geworden sein. In diesem Fall muss der falsche Inhalt durch einen geeigneten Anfangswert (Vorgabewert) ersetzt oder ausgetauscht werden, der zur Fahrzeugregelung vorgesehen ist. Auf diese Weise ist eine geeignete Initialisierung der Sicherungsvariable möglich.
  • Selbst im vorstehenden Fall ist es möglich, die Sicherungsvariable unter Verwendung der in Fig. 5B gezeigten Überprüfungsroutine während der Ausführung des Steuerprozesses (S210) in Fig. 8 wiederholt zu überprüfen.
  • Weitere Vorteile und Modifikationen sind für den Fachmann leicht ersichtlich. Die Erfindung ist daher nicht durch die bestimmten Details, die dargestellte Vorrichtung oder die gezeigten und beschriebenen Ausführungsbeispiele beschränkt.
  • Variableninformationen, die angeben, ob eine Variable eine fahrzeugspezifische Variable ist, die für die Fahrzeugregelung spezifisch ist, werden in der Form eines Variablennamens zum Modell hinzugefügt. In einem Codeerzeugungswerkzeug (1) extrahiert eine Extraktionseinrichtung (20) den Variablennamen aus einer Zwischendatei zum Erhalten der Variableninformationen, und ein Codeerzeugungsblock (20) erzeugt einen fahrzeugspezifischen Programmcode, der der fahrzeugspezifischen Variable entspricht, unter Verwendung einer Variablenerzeugungsregel (32), die in einem Regelspeicher (30) gespeichert ist.

Claims (14)

1. Programmcodegenerator, der zur Erzeugung eines Steuerprogramms verwendet wird, das in einer elektronischen Steuereinheit zur Durchführung einer Fahrzeugregelung eingebettet ist, wobei der Programmcodegenerator einen Programmcode, der einem Verarbeitungsprogramm entspricht, das zumindest einen Teil des Steuerprogramms bildet, beruhend auf zumindest einer Programmcodeerzeugungsregel erzeugt, wenn abstrakte Sprache, die Spezifikationen des Verarbeitungsprogramms beschreibt, in den Programmcodegenerator eingegeben wird, wobei der Programmcode eine Vielzahl von Programmcodesegmenten enthält,
gekennzeichnet durch
eine Variableninformationserhalteinrichtung (10) zum Erhalten von Variableninformationen, die angeben, ob eine in der abstrakten Sprache enthaltene Variable eine fahrzeugspezifische Variable ist, die für die Fahrzeugregelung spezifisch ist, und
eine Codeerzeugungseinrichtung (20) zur Erzeugung zumindest eines der Vielzahl von Programmcodesegmenten, wobei die Codeerzeugungseinrichtung (20) ein fahrzeugspezifisches Programmcodesegment als eines der Programmcodesegmente beruhend auf den Variableninformationen, die durch die Variableninformationserhalteinrichtung erhalten werden, über die Verwendung einer entsprechenden der zumindest einen Erzeugungsregel erzeugt, die der fahrzeugspezifischen Variable entspricht, wenn die in der abstrakten Sprache enthaltene Variable die fahrzeugspezifische Variable ist.
2. Programmcodegenerator nach Anspruch 1, dadurch gekennzeichnet, dass die fahrzeugspezifische Variable eine Variable ist, deren Inhalt selbst dann bewahrt werden muss, wenn das Steuerprogramm nicht ausgeführt wird.
3. Programmcodegenerator nach Anspruch 1 oder 2, dadurch
gekennzeichnet, dass
die fahrzeugspezifische Variable eine einer Vielzahl von in der abstrakten Sprache enthaltenen fahrzeugspezifischen Variablen ist, und
die Codeerzeugungseinrichtung (20) ein Programmcodesegment als eines der Programmcodesegmente zum Bereitstellen jedes Speicherbereichs, der einer entsprechenden fahrzeugspezifischen Variable zur Speicherung der entsprechenden fahrzeugspezifischen Variable zugewiesen ist, in einem gemeinsamen bestimmten Speicherbereich erzeugt.
4. Programmcodegenerator nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die Codeerzeugungseinrichtung (20) ein Programmcodesegment als eines der Programmcodesegmente zur Bereitstellung jedes Speicherbereichs erzeugt, der der entsprechenden fahrzeugspezifischen Variable zur Speicherung der entsprechenden fahrzeugspezifischen Variable zugewiesen ist, wobei jeder Speicherbereich zusammen mit einem entsprechenden Überprüfungsdatenbereich vorgesehen ist, der Überprüfungsdaten der entsprechenden fahrzeugspezifischen Variable speichert, wobei die Überprüfungsdaten eine Bewertung der Gültigkeit der entsprechenden fahrzeugspezifischen Variable ermöglichen.
5. Programmcodegenerator nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Codeerzeugungseinrichtung (20) ein Programmcodesegment als eines der Programmcodesegmente zur Überprüfung der Gültigkeit der entsprechenden fahrzeugspezifischen Variable erzeugt.
6. Programmcodegenerator nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass die Codeerzeugungseinrichtung (20) ein Programmcodesegment als eines der Programmcodesegmente zum Zurückhalten einer Initialisierung der entsprechenden fahrzeugspezifischen Variable erzeugt.
7. Programmcodegenerator nach Anspruch 6, dadurch gekennzeichnet, dass die Codeerzeugungseinrichtung (20) ein Programmcodesegment als eines der Programmcodesegmente zum Ersetzen des Inhalts der entsprechenden fahrzeugspezifischen Variable durch einen Vorgabewert erzeugt, wenn die entsprechende fahrzeugspezifische Variable ungültig ist.
8. Programmcodegenerator nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass die Codeerzeugungseinrichtung (20) ein Programmcodesegment als eines der Programmcodesegmente zum Aufrufen einer zuvor ausgebildeten Bibliothek für einen Leseprozess der entsprechenden fahrzeugspezifischen Variable und/oder einen Schreibprozess der entsprechenden fahrzeugspezifischen Variable erzeugt.
9. Programmcodegenerator nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass die Variableninformationen zu der abstrakten Sprache hinzugefügt sind.
10. Programmcodegenerator nach Anspruch 9, dadurch gekennzeichnet, dass die Variableninformationen zu der abstrakten Sprache in einer Form eines Variablennamens eines vorbestimmten Typs hinzugefügt sind.
11. Programmcodegenerator nach Anspruch 9, dadurch gekennzeichnet, dass die Variableninformationen zu der abstrakten Sprache in einer Form eines Variablenattributs eines vorbestimmten Typs hinzugefügt sind.
12. Programmcodegenerator nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass die Variableninformationen separat von der abstrakten Sprache vorgesehene Informationen sind.
13. Programmcodegenerator nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet, dass die Codeerzeugungseinrichtung (20) ein Programmcodesegment als eines der Programmcodesegmente zur Definition der in der abstrakten Sprache enthaltenen Variablen als automatische Variable erzeugt, wenn die in der abstrakten Sprache enthaltene Variable von der fahrzeugspezifischen Variablen verschieden ist.
14. Computerprogramm zur Erzeugung eines Programmcodes, der einem Verarbeitungsprogramm entspricht, das zumindest einen Teil eines in einer elektronischen Steuereinheit zur Durchführung einer Fahrzeugregelung eingebetteten Steuerprogramms bildet, beruhend auf zumindest einer Programmcodeerzeugungsregel, wenn abstrakte Sprache, die Spezifikationen des Verarbeitungsprogramms beschreibt, eingegeben wird, wobei der Programmcode eine Vielzahl von Programmcodesegmenten enthält, wobei das Computerprogramm durch Befehle charakterisiert ist, um
Variableninformationen zu erhalten, die angeben, ob eine in der abstrakten Sprache enthaltene Variable eine fahrzeugspezifische Variable ist, die für die Fahrzeugregelung spezifisch ist, und
ein fahrzeugspezifisches Programmcodesegment als eines der Vielzahl von Programmcodesegmenten zu erzeugen, wenn die in der abstrakten Sprache enthaltene Variable die fahrzeugspezifische Variable ist, wobei das fahrzeugspezifische Codesegment beruhend auf den Variableninformationen über die Verwendung einer entsprechenden der zumindest einen Erzeugungsregel erzeugt wird, die der fahrzeugspezifischen Variable entspricht.
DE10256990A 2001-12-06 2002-12-05 Programmcodegenerator und Programm Granted DE10256990A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001372830A JP2003173256A (ja) 2001-12-06 2001-12-06 プログラムコード生成装置及びプログラム

Publications (1)

Publication Number Publication Date
DE10256990A1 true DE10256990A1 (de) 2003-07-24

Family

ID=19181652

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10256990A Granted DE10256990A1 (de) 2001-12-06 2002-12-05 Programmcodegenerator und Programm

Country Status (3)

Country Link
US (1) US7269820B2 (de)
JP (1) JP2003173256A (de)
DE (1) DE10256990A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219968B2 (en) * 2003-07-17 2012-07-10 Raytheon Company Designing computer programs
JP2005222221A (ja) * 2004-02-04 2005-08-18 Hitachi Ltd 組込コントローラ開発ツール、組込コントローラ、及び組込コントローラ開発プロセス
US20070028219A1 (en) * 2004-10-15 2007-02-01 Miller William L Method and system for anomaly detection
US8161454B2 (en) 2007-01-22 2012-04-17 Ford Motor Company Software architecture for developing in-vehicle software applications
US20090019525A1 (en) * 2007-07-13 2009-01-15 Dachuan Yu Domain-specific language abstractions for secure server-side scripting
GB2459689B (en) * 2008-05-01 2012-12-26 Jaguar Cars A method for providing information to a user of a motor vehicle
JP5011221B2 (ja) * 2008-06-30 2012-08-29 株式会社日立製作所 コントローラ開発ツールとそれを利用して開発したモータドライブシステムを有する機器
JP5779077B2 (ja) * 2011-11-22 2015-09-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラムの生成を支援する装置及び方法
WO2015141150A1 (ja) * 2014-03-19 2015-09-24 日本電気株式会社 ソースコード生成装置、ソースコード生成方法、及び、記録媒体
US9417853B1 (en) * 2014-10-27 2016-08-16 Dspace Digital Signal Processing And Control Engineering Gmbh Method for generating a code for an electronic control unit
CN104331285A (zh) * 2014-10-30 2015-02-04 北京思特奇信息技术股份有限公司 一种代码自动生成方法及系统
JP6378128B2 (ja) 2015-04-28 2018-08-22 ルネサスエレクトロニクス株式会社 性能検証装置、システム、方法、およびコンピュータに当該方法を実行させるためのプログラム
CN105549390A (zh) * 2015-12-18 2016-05-04 长沙中联消防机械有限公司 一种程序组合控制方法、装置及消防车
CN114385175A (zh) * 2020-10-20 2022-04-22 武汉斗鱼鱼乐网络科技有限公司 一种代码生成方法、装置、电子设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2724242B2 (ja) 1990-08-17 1998-03-09 株式会社東芝 マクロブロック図処理機能付きプログラム自動生成装置
JPH05204621A (ja) 1992-01-27 1993-08-13 Matsushita Electric Ind Co Ltd ソフトウェア自動生成装置とソフトウェア自動生成方法
JPH09231065A (ja) 1996-02-21 1997-09-05 Matsushita Electric Ind Co Ltd プログラム変更可能な電子制御装置
JP2000020291A (ja) 1998-07-06 2000-01-21 Toyota Motor Corp 車両用プログラム開発支援方法および装置
JP3460593B2 (ja) * 1998-09-17 2003-10-27 株式会社デンソー 車両用制御装置
JP2000112736A (ja) 1998-10-01 2000-04-21 Seiko Epson Corp プログラム作成装置
US6718533B1 (en) * 1999-02-26 2004-04-06 Real-Time Innovations, Inc. Method for building a real-time control system with mode and logical rate
JP3835508B2 (ja) 1999-03-15 2006-10-18 オムロン株式会社 シーケンス制御装置、同装置における保持エリアの保全方法、並びに、同方法を実行するためのコンピュータプログラムを格納した記録媒体
KR100302384B1 (ko) * 1999-07-01 2001-09-22 김오영 자동차 전기장치의 디지털 통합 제어장치 및 방법
JP2002091762A (ja) * 2000-09-14 2002-03-29 Denso Corp プログラム生成装置
JP2002132533A (ja) * 2000-10-27 2002-05-10 Denso Corp 自己診断機能を備えた車両用制御装置及び記録媒体

Also Published As

Publication number Publication date
US7269820B2 (en) 2007-09-11
US20030110468A1 (en) 2003-06-12
JP2003173256A (ja) 2003-06-20

Similar Documents

Publication Publication Date Title
DE10256990A1 (de) Programmcodegenerator und Programm
DE3408674A1 (de) Steuerungsverfahren
DE69532307T2 (de) Ausdrucks-Propagierung für hierarchisches Netzlisten
DE602005002062T2 (de) Optimierung der Sperrgranularität mittels Bereichssperren
EP2425331A1 (de) Verfahren zur erzeugung mindestens einer anwendungsbeschreibung
DE10333087A1 (de) Verfahren zum automatischen Zerlegen von dynamischen Systemmodellen in Teilmodelle
DE102018116911A1 (de) Verfahren zur Erzeugung von Quellcode
DE102015016413A1 (de) Leiterprogrammabrufvorrichtung, die dazu fähig ist, Leiterschaltungen basierend auf vorgegebenen Signaloperationsbedingungen abzurufen
DE102005042129A1 (de) Verfahren und Vorrichtung zum automatisierten Bewerten der Qualität eines Software-Quellcodes
DE19960048A1 (de) Zeitgesteuerte Startbedingungen für Aktivitäten in Workflow-Management-Systemen
DE102005018074A1 (de) Testsequenzer und Verfahren für die Verwaltung und Ausführung von Sequenzelementen
DE4327660C2 (de) Vorrichtung zum Herstellen einer und Herstellungsverfahren für eine integrierte Halbleiterschaltungsvorrichtung und elektronische Schaltungsvorrichtung
DE4104568A1 (de) Verfahren und vorrichtung zur programmverarbeitung
EP3364257A1 (de) Verfahren zum betrieb eines engineering-systems für ein industrielles prozessautomatisierungssystem und steuerungsprogramm
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
DE10252797A1 (de) Verfahren und System zum Erstellen von Dokumentenvorlagen mit Ressourcenverwaltung
WO2009010338A1 (de) Verfahren zur rechnergestützten obfuskierung eines softwareprogramms und computerprogrammprodukt
DE10118801A1 (de) System-Entwicklungsverfahren, Entwicklungsverfahren für Funktionseinheiten, Entwicklungsunterstützungssystem und Speichermedium zum Speichern entsprechender Programme
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
EP1387260A1 (de) Verfahren und Vorrichtung zur Erzeugung von Software
EP0662226B1 (de) Verfahren zur bearbeitung eines anwenderprogramms auf einem parallelrechnersystem
DE112016007465T5 (de) Programmentwicklungsunterstützungsvorrichtung und Verfahren zur Verwaltung von Programmkomponenten
DE10233971A1 (de) Verfahren und Vorrichtung zur Erzeugung von Software
DE10118800A1 (de) System-Entwicklungsverfahren, Entwicklungsunterstützungssystem und Speichermedium zum Speichern entsprechender Programme
DE10055679A1 (de) Verfahren, Computersystem und Computerprogramm-Produkte zur modellbasierten Generierung von Testszenarien

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 9/44 AFI20051017BHDE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R018 Grant decision by examination section/examining division
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110701