DE102004028819B4 - Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen - Google Patents

Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen Download PDF

Info

Publication number
DE102004028819B4
DE102004028819B4 DE200410028819 DE102004028819A DE102004028819B4 DE 102004028819 B4 DE102004028819 B4 DE 102004028819B4 DE 200410028819 DE200410028819 DE 200410028819 DE 102004028819 A DE102004028819 A DE 102004028819A DE 102004028819 B4 DE102004028819 B4 DE 102004028819B4
Authority
DE
Germany
Prior art keywords
function
computer
computer system
computer program
runtime
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.)
Expired - Fee Related
Application number
DE200410028819
Other languages
English (en)
Other versions
DE102004028819A1 (de
Inventor
Reiner Lederle
Frank Queisser
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.)
Vitesco Technologies GmbH
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Priority to DE200410028819 priority Critical patent/DE102004028819B4/de
Priority to ITMI20051071 priority patent/ITMI20051071A1/it
Priority to FR0505964A priority patent/FR2871592A1/fr
Publication of DE102004028819A1 publication Critical patent/DE102004028819A1/de
Application granted granted Critical
Publication of DE102004028819B4 publication Critical patent/DE102004028819B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time

Abstract

Verfahren zur Laufzeitmessung einer vorgegebenen Funktion eines ersten Computerprogramms (2), das von einem ersten Computersystem (1) ausgeführt wird,
a) wobei ein zweites Computerprogramm (Offline-Komponente, 9) auf einem zweiten Computersystem (8) dem auf dem ersten Computersystem (1) ausgeführten ersten Computerprogramm (2) vorgibt, welche Funktion die vorgegebene Funktion ist;
b) wobei die folgenden Schritte mit einer Anzahl von Wiederholungen wiederholt auf dem ersten Computersystem (1) durchgeführt werden:
b1) wenn das erste Computerprogramm (2) eine erste Funktion aufruft, ruft das erste Computerprogramm (2) zu Beginn und zum Ende der Abarbeitung der ersten Funktion eine zweite Funktion (Laufzeithandler, 3) auf;
b2) der Laufzeithandler (3) prüft, ob die erste Funktion die vorgegebene Funktion ist und ruft, sofern diese Bedingung erfüllt ist, eine dritte Funktion (Zeitstempel-Funktion, 4) auf;
b3) die Zeitstempel-Funktion (4) stellt mindestens eine Zeitinformation zur Verfügung; und
b4) der Laufzeithandler (3) übergibt die mindestens eine von der Zeitstempel-Funktion...

Description

  • Die Erfindung betrifft ein Verfahren und eine Anordnung zur Ermittlung und Übertragung von Programmlaufzeiten, beispielsweise einer vorgegebenen Funktion eines Computerprogramms, das von einem Computersystem ausgeführt wird. Die Erfindung wird insbesondere eingesetzt in eingebetteten Systemen, beispielsweise Motorsteuerungsgeräten, in denen nur begrenzter Speicher für die Speicherung von Messdaten zur Verfügung steht.
  • Laufzeitmessungen von Funktionen werden eingesetzt, um Computerprogramme dahingehend zu optimieren, dass die Ressourcen eines Computersystems optimal genutzt werden. Die Laufzeit einer Funktion ist diejenige Zeit, die ein Prozessor zum Abarbeiten der Funktion benötigt. Die Laufzeit gibt beispielsweise Aufschluss darüber, welcher Anteil der Prozessorkapazität durch das Abarbeiten einer bestimmten Funktion belegt wird.
  • Insbesondere ist diese Optimierung der Ressourcennutzung erforderlich bei der Entwicklung von Computerprogrammen für den Betrieb sogenannter Echtzeitsysteme. Bei Echtzeitsystemen sind Programme zur Verarbeitung anfallender Daten ständig betriebsbereit, derart, dass die Verarbeitungsergebnisse innerhalb einer vorgegebenen Zeitspanne verfügbar sind. Die Daten können je nach Anwendungsfall nach einer zeitlich zufälligen Verteilung oder zu vorher bestimmten Zeitpunkten anfallen (siehe z. B. DIN 44300).
  • Bei Echtzeitsystemen handelt es sich häufig um sogenannte "eingebettete Systeme", welche komplexe Steuerungs- und Datenverarbeitungsaufgaben in technischen Systemen übernehmen.
  • Eingebette Systeme werden meist durch eine Integration spezieller Hardware mit Prozessoren und Software realisiert. Derartige Systeme werden beispielsweise für die Steuerung von Motoren in der Automobiltechnik eingesetzt. Mehrere eingebettete Systeme können miteinander verbunden sein und eine Einheit bilden, wobei für die Verbindung beispielsweise ein sogenannter CAN-Bus (Controller Area Network) verwendet werden kann.
  • Auf einem Computersystem oder Prozessor können dabei mehrere unabhängige Programme ablaufen, welche sich die Rechenzeit eines Prozessors teilen. Häufig sind die Programme in abgrenzbare Einzelfunktionen unterteilt (Funktionen). Oft werden zur Erfüllung einer bestimmten Aufgabe mehrere Funktionen hintereinander ausgeführt. Zum Abarbeiten einer solchen Aufgabe können die zur Abarbeitung benötigten Funktionen in einem so genannten Task gebündelt werden. Diese Tasks enthalten somit Funktionen und rufen diese auf. Im Folgenden werden, wie in der Praxis üblich, die Begriffe "Funktion" und "Task" (oder auch Interrupt, Exception, Unterprogramm, Routine, Aggregat, Objekt, Codeblock, Textblock) weitgehend synonym verwendet. In Echtzeitsystemen sind Computerprogramme häufig so ausgestaltet, dass die Tasks in regelmäßigen Zeitabständen (z. B. alle 10 Millisekunden) wiederholt aufgerufen werden. Die Periode der Wiederholungen wird oft als "Zeitscheibe" bezeichnet.
  • Mehrere Tasks können entweder unabhängig oder voneinander abhängig parallel laufen. Da sich i. d. R. mehrere Tasks die Rechenzeit eines Prozessors teilen, werden Tasks häufig in mehrere Teilabschnitte zerlegt, die sequenziell oder verschachtelt abgearbeitet werden. Dabei kann bestimmten Tasks eine höhere Priorität als anderen Tasks zugewiesenen werden, so dass bei Ausführung eines höher priorisierten Tasks die Ausführung eines Tasks mit niedrigerer Priorität unterbrochen wird. Zusätzlich kann die Abarbeitung des Computerprogramms auch durch besondere externe oder interne Ereignisse (z. B. durch die Änderung eines Spannungssignals am Eingang einer Schnittstelle oder durch ein ungültiges Ergebnis bei der Abarbeitung einer Aufgabe) unterbrochen werden. Derartige außerordentliche Unterbrechungen werden als Interrupts bezeichnet.
  • Infolge dieser komplexen Sequenzierung und Verschachtelung mehrerer Tasks bei gleichzeitiger Notwendigkeit der Abarbeitung von Aufgaben innerhalb fest vorgegebener Zeitspannen kommt der Optimierung der Ressourcennutzung in Echtzeitsystemen eine besondere Bedeutung zu. Für diese Optimierung wiederum ist es erforderlich, die Laufzeiten der wichtigsten oder sogar aller Funktionen zu ermitteln.
  • Zur Durchführung von Laufzeitmessungen einer vorgegebenen Funktion von Computerprogrammen werden in der Praxis häufig sogenannte "Zeitstempel-Funktionen" eingesetzt. Bei diesen Verfahren wird der ursprüngliche Programmcode des Computerprogramms so modifiziert, dass vor und nach der Ausführung der vorgegebenen Funktion (wobei es sich sinngemäß auch um beliebige Textblöcke bzw. Codeblöcke im Programmcode handeln kann, welche keine in sich geschlossenen Funktionen darstellen, s. o.) im Programmcode zusätzliche Befehlselemente eingefügt werden. Diese zusätzlichen Befehlselemente enthalten jeweils einen Aufruf einer Zeitstempel-Funktion. Diese Zeitstempel-Funktion speichert bei jedem Aufruf eine Zeitinformation in einen Datenspeicher, sowie weitere Daten, wie zum Beispiel eine Identifikationsnummer der vorgegebenen Funktion oder den Ereignistyp (z. B. ob es sich um den Start oder das Ende des Abarbeitens der vorgegebenen Funktion handelt).
  • Der so mit zusätzlichen Befehlselementen zur Laufzeitmessung einer vorgegebenen Funktion versehene Programmcode des Computerprogramms wird dann in einen maschinenlesbaren Code übersetzt. Einen derartig modifizierten Code bezeichnet man als "instrumentiert", wobei man zwischen "teilinstrumentierten" Computerprogrammen unterscheidet, bei denen lediglich bei Ausführung einer einzigen oder mehrerer Funktionen des Programmcodes die Zeitstempel-Funktion aufgerufen wird, und "vollständig instrumentierten" Computerprogrammen, bei denen bei jedem Funktionsaufruf auch ein Aufruf der Zeitstempel-Funktion erfolgt.
  • Derzeitige Zeitstempelverfahren haben einige für die Optimierung komplexer Programme zur Steuerung von Echtzeitsystemen entscheidende Nachteile. Ein wesentlicher Nachteil besteht darin, dass die Unterbrechung der Abarbeitung der vorgegebenen Funktion durch andere Funktionen oder Interrupts nicht berücksichtigt wird. Durch das beschriebene Verfahren zur Laufzeitmessung erhält man daher größere Messwerte (Bruttolaufzeiten) als die tatsächliche Nettolaufzeit der Funktionen. Daher wird die gemessene Laufzeit in der Praxis häufig mit einem Korrekturfaktor, welcher kleiner ist als 1 (z. B. 0,8 für eine Belastung durch Unterbrechungen von 20%) multipliziert. Dieser Korrekturfaktor lässt sich jedoch nicht eindeutig bestimmen und ist häufig lediglich ein stark systemabhängiger Erfahrungswert. Die Reproduzierbarkeit derartiger Messungen ist dementsprechend gering, und die Streuung der Messwerte bei wiederholter Messung entsprechend hoch.
  • In vielen Fällen wird bei Anwendung von Zeitstempelverfahren daher das Computerprogramm und/oder sogar das gesamte Computersystem so modifiziert, dass die Zahl der Unterbrechungen des Ablaufs der zu messenden Funktion minimiert wird. Dies kann beispielsweise durch Ausschalten von Interrupts geschehen. Durch diese Modifikation der Hardware und Software ist das System jedoch zumeist so stark verändert, dass die gemessene Laufzeit der Funktion nicht der Laufzeit im realen Betrieb des Gesamtsystems entspricht. Weiterhin kann eine solche Messung nicht im realen System erfolgen (z. B. im Auto).
  • Weiterhin berücksichtigt ein solches Vorgehen nicht die Umgebungsbedingungen des Systems. Die Laufzeit bestimmter Funktionen in Echtzeitsystemen hängt jedoch u. U. stark von be stimmten Systemparametern, wie zum Beispiel analogen oder digitalen externen Signalen an einer Schnittstelle des Systems, ab. Diese Unzulänglichkeit verringert die Reproduzierbarkeit der Messung zusätzlich.
  • Zudem ist das beschriebene Verfahren außerordentlich zeitaufwändig und benötigt hohe Rechnerkapazitäten und einen großen Speicher. Typische Programme für Echtzeitsysteme zur Steuerung komplexer Prozessabläufe können mehrere tausend Funktionen enthalten.
  • Die in eingebetteten Systemen zur Verfügung stehenden Datenspeicher sind jedoch in der Regel nicht ausreichend, um Zeitinformationen für alle Funktionen speichern zu können. Beispielsweise handelt es sich bei den Datenspeichern in eingebetteten Systemen ohne Speichererweiterung um Puffer mit einer Speicherkapazität von ca. 35 kByte, was ca. 4400 Zeitinformationen entspricht. Dieser Speicher wird jedoch auch für die Ausführung des Computerprogramms verwendet, so dass der für die Speicherung der Zeitinformationen zur Verfügung stehende Speicherplatz zusätzlich reduziert ist. In typischen Motorsteuerungssystemen werden jedoch einige tausend Funktionen verwendet, die stark verschachtelt ausgeführt werden, z. B. jeweils in Sequenzen, deren Länge im Bereich weniger Mikrosekunden liegt. Bereits nach einer Zeitscheibe von 10 Millisekunden entsteht auf diese Weise für eine Steuerungssoftware also eine Datenmenge von ca. 10.000 Zeitinformationen, wobei die zusätzlichen Unterbrechungen durch Interrupts (z. B. 30 Unterbrechungen in einer Millisekunde in typischen Motorsteuerungssystemen) noch nicht berücksichtigt sind. Die Datenspeicher in typischen Echtzeitsystemen können also lediglich Informationen einer einzelnen oder einiger weniger Funktionen aufnehmen, und dies auch lediglich für eine Zeitdauer von einer oder wenigen Zeitscheiben.
  • Prinzipiell müsste also nach dem oben beschriebenen Verfahren für jede einzelne Funktion zunächst der Programmcode instru mentiert werden, dann in einen maschinenlesbaren Code übersetzt werden (mit einem Zeitaufwand von jeweils ca. 10 Minuten), dann auf dem Echtzeitsystem ausgeführt werden und dann müssten die gespeicherten Zeitinformationen gesichtet und ausgewertet werden. Ein derartiges Verfahren kann für ein einzelnes Echtzeitsystem mit mehreren tausend Funktionen mehrere Wochen in Anspruch nehmen.
  • Weiter ist ein Verfahren zur Bestimmung der Rechenleistung eines Computersystems bekannt ( US 6, 079, 032 A ), bei dem eine Laufzeitmessung in vorgebbaren, auswählbaren Programmbereichen durchgeführt wird.
  • Aufgabe der vorliegenden Erfindung ist es, die Möglichkeiten von Laufzeitmessungen von Funktionen zu verbessern, insbesondere für Computerprogramme, die auf eingebetteten Systemen mit kleinem Arbeitsspeicher ausgeführt werden.
  • Diese Aufgabe wird durch die Erfindungen mit den Merkmalen der unabhängigen Ansprüche gelöst. Vorteilhafte Weiterbildungen der Erfindungen sind in den Unteransprüchen gekennzeichnet.
  • Es wird ein Verfahren zur Laufzeitmessung einer vorgegebenen Funktion eines von einem ersten Computersystem ausgeführten ersten Computerprogramms vorgeschlagen. Dabei gibt ein zweites Computerprogramm (Offline-Komponente), welches auf einem zweiten Computersystem ausgeführt wird, dem ersten Computerprogramm vor, welche Funktion die vorgegebene Funktion ist. Daraufhin werden auf dem ersten Computersystem die folgenden Schritte mit einer Anzahl von Wiederholungen wiederholt durchgeführt: Wenn das erste Computerprogramm eine erste Funktion aufruft, so ruft es zu Beginn und zum Ende der Abarbeitung dieser ersten Funktion eine zweite Funktion (Laufzeithandler) auf. Der Laufzeithandler prüft, ob die erste Funktion die vorgegebene Funktion ist und ruft, sofern diese Bedingung erfüllt ist, eine dritte Funktion (Zeitstempel- Funktion) auf. Die Zeitstempel-Funktion stellt mindestens eine Zeitinformation zur Verfügung. Der Laufzeithandler übergibt diese mindestens eine Zeitinformation unmittelbar, d. h. nach jedem Aufruf, an das zweite Computersystem oder an ein weiteres Computersystem.
  • Bei dem ersten Computerprogramm kann es sich beispielsweise um ein – wie oben beschrieben – vollständig instrumentiertes Programm in maschinenlesbarer Form handeln. Im Gegensatz zum oben beschriebenen Verfahren wird jedoch nicht notwendigerweise bei Aufruf jeder Funktion auch eine Zeitstempel-Funktion aufgerufen, sondern es wird zunächst der Laufzeithandler aufgerufen. Dieser überprüft beispielsweise anhand einer Identifikationsnummer der aufgerufenen Funktion, ob es sich bei der aufgerufenen Funktion um die Funktion handelt, deren Laufzeit gemessen werden soll. Nur wenn dies der Fall ist, wird die Zeitstempel-Funktion aufgerufen. Es können alternativ auch mehrere Funktionen gleichzeitig vorgegeben werden. Der Laufzeithandler überprüft dann jeweils, ob es sich bei der aufgerufenen Funktion um eine der vorgegebenen Funktionen handelt und ruft, wenn dies der Fall ist, die Zeitstempel-Funktion auf.
  • Das Zurverfügungstellen der Zeitinformation durch die Zeitstempelfunktion kann beispielsweise durch Abspeichern in einen Datenspeicher (beispielsweise durch ein Zwischenspeichern in einem Datenpuffer des ersten Computersystems) oder durch Übergabe eines Zahlenwertes an den aufrufenden Laufzeithandler erfolgen. Der Laufzeithandler wiederum übergibt diese Daten unmittelbar an das zweite Computersystem, wo sie beispielsweise in einem Datenspeicher gespeichert werden können. Zusätzlich kann auch ein erneutes Zwischenspeichern der Daten durch den Laufzeithandler, beispielsweise in einem Datenpuffer, auf dem ersten Computersystem erfolgen.
  • Die Gestaltung der Zeitinformation kann von der Art des ersten Computersystems abhängen. So kann beispielsweise die Zeitanzeige einer in das Computersystem integrierten Uhr (Systemzeit) als Zeitinformation genutzt werden. Es kann aber auch beispielsweise das augenblickliche Stadium eines periodischen physikalischen Vorgangs (z. B. die Winkelstellung der Kurbelwelle in einem Motorsystem) als Zeitinformation abgespeichert werden.
  • Das Verfahren hat den Vorteil, dass die Datenmenge erheblich reduziert wird. Nur die Daten der tatsächlich zu messenden Funktion werden erfasst und an das zweite Computersystem übergeben. Typischerweise werden diese Daten kurzfristig in einem Arbeitsspeicher des ersten Computersystems zwischengespeichert. Da es sich dabei jedoch in der Regel lediglich um eine einzige oder einige wenige Zeitstempel-Informationen handelt, genügt insbesondere auch ein in eingebetteten Systemen typischerweise vorhandener kleiner Datenpuffer, also ein flüchtiger Speicher für wenige Byte. Eine zusätzliche Erweiterung des Arbeitsspeichers der eingebetteten Systeme ist nicht erforderlich, wodurch auch kostengünstige eingebettete Systeme eingesetzt werden können. Die Zwischenspeicherung im Arbeitsspeicher des eingebetteten Systems erfolgt – wenn überhaupt – nur kurz, da die Informationen unmittelbar vom Laufzeithandler an das zweite Computersystem übergeben werden. Auf diese Weise werden wertvolle Ressourcen des eingebetteten Systems eingespart.
  • Es können auch mehrere Informationen in einem sogenannten "Multiplex-Verfahren" vom Laufzeithandler unmittelbar nach dem Zurverfügungstellen durch die Zeitstempel-Funktion (beispielsweise über einen bereits vorhandenen Kommunikationskanal) an das zweite Computersystem übermittelt werden. So können beispielsweise die Zeitstempel von acht Funktionen gemessen und unmittelbar nach der Messung jeweils gemeinsam mit den Informationen, zu welchen Funktionen diese Zeitstempel gehören, über einen Kommunikationskanal (z. B. einen CAN-Bus, ein K-Line, ein Dual Ported RAM o. ä.) an das zweite Computersystem übertragen werden. Dies kann beispielsweise derart erfolgen, dass bestimmte Online-Variablen erzeugt werden, in die der Laufzeithandler die jeweils aktuellen Zeitinformationen abspeichert. Die Offline-Komponente analysiert diese Online-Variablen beispielsweise in regelmäßigen Abständen, speichert diese und gibt sie anschließend wieder für die nächste Messung für den Laufzeithandler frei.
  • Dieses Messverfahren, bei denen die erzeugten Zeitstempel unmittelbar nach ihrer Messung an das zweite Computersystem übergeben werden, hat weiterhin den Vorteil, dass auch beispielsweise während des ungestörten Betriebes eines Motors (z. B. während der Fahrt) Laufzeiten von Funktionen gemessen und angezeigt werden können. Da jeweils nur geringe Datenmengen vom eingebetteten Systemen an das zweite Computersystem übergeben werden, bedeutet die Übergabe der Daten nur eine unwesentliche zeitliche Unterbrechung des Betriebs des ersten Computersystems, also zum Beispiel des eingebetteten Systems.
  • Eingebettete Systeme (Echtzeitsysteme) verfügen häufig über einen sogenannten Sicherheitsrechner, welcher bei einer längeren Unterbrechung (z. B. infolge einer Übergabe einer größeren Datenmenge an das zweite Computersystem) einen Fehler detektiert und das eingebettete System abschaltet. Bei dem beschriebenen Verfahren, bei dem jeweils nur kleine Datenmengen an das zweite Computersystem übergeben werden, ist dies jedoch nicht der Fall. Der Sicherheitsrechner spricht auf die geringfügige Unterbrechung infolge der Übertragung der kleinen Datenmengen nicht an, und der Betrieb des ersten Computersystems wird durch die Übergabe der Daten nicht unterbrochen. Eine Durchführung des Verfahrens während des normalen Betriebs des ersten Computersystems (beispielsweise während der Fahrt eines Kraftfahrzeugs) ist also möglich. So können z. B. Informationen über die Laufzeiten bestimmter Funktionen auch während der Fahrt ausgewertet werden.
  • Weiterhin kann die Laufzeitmessung, da diese nun nicht mehr durch Speicherressourcen begrenzt ist, prinzipiell über einen unendlich langen Zeithorizont erfolgen. Es können beispielsweise kontinuierlich Laufzeiten bestimmter Funktionen gemessen werden und z. B. als Funktion bestimmter Motorparameter, beispielsweise der Drehzahl, insbesondere online grafisch dargestellt und ausgewertet werden. Weiterhin können diese (insbesondere online zur Verfügung stehenden) Informationen über die Laufzeiten als Trigger für weitere Messungen genutzt werden oder auch für Diagnosezwecke (wahlweise auf dem ersten Computersystem und/oder auch auf dem zweiten Computersystem und/oder auf weiteren Computersystemen) eingesetzt werden. So können beispielsweise auf einem Motorsteuerungssystem sicherheitsrelevante Funktionen überwacht werden. Dies macht sich insbesondere im Betrieb eines Testfahrzeugs vorteilhaft bemerkbar. Auch der Einsatz in Serienfahrzeugen ist möglich.
  • Ein weiterer Vorteil besteht darin, dass, wenn nach Beendigung der Laufzeitmessung die Laufzeit einer weiteren Funktion gemessen werden soll, die Instrumentierung des Computerprogramms nicht mehr geändert werden muss. Der Laufzeithandler liest die Information darüber, welche Funktion die vorgegebene Funktion ist (z. B. eine Identifikationsnummer) aus einem Datenspeicher. Alternativ kann auch der Laufzeithandler im Programmcode so abgeändert werden, dass in die Abfrage-Bedingung die neue Funktion bzw. die Identifikationsnummer der neuen Funktion eingetragen wird, was einen erheblich geringeren Programmieraufwand als eine Änderung der Instrumentierung darstellt.
  • Die wiederholte Durchführung des Verfahrens mit einer vorgegebenen Anzahl von Wiederholungen bewirkt eine erhebliche Verbesserung der Genauigkeit und Reproduzierbarkeit der Laufzeitmessung. Die Laufzeit wird (z. B. 20 mal) wiederholt gemessen, so dass ein Mittelwert gebildet und statistische Informationen über die Streuung der Messwerte gewonnen werden können.
  • Weiterhin ist das beschriebene Verfahren sehr universell einsetzbar. Bei den Zeitstempel-Funktionen handelt es sich häufig um kommerzielle Softwareprodukte. Will der Entwickler, z. B. aus Kostengründen oder aufgrund der Verfügbarkeit eines moderneren oder leistungsfähigeren Produktes, auf eine neue Zeitstempel-Funktion wechseln, so musste bislang die gesamte Instrumentierung des Computerprogramms an die neue Zeitstempel-Funktion angepasst werden. Beispielsweise kann eine neue Zeitstempel-Funktion die Übergabe anderer Parameter erforderlich machen. Die Verwendung des Laufzeithandlers hingegen vereinfacht dieses Verfahren erheblich. Bei Implementierung einer neuen Zeitstempel-Funktion muss nun lediglich der Programmcode des Laufzeithandlers adaptiert werden. Der Programmieraufwand wird dadurch stark reduziert.
  • Die auf dem zweiten Computersystem ausgeführte Offline-Komponente gibt dem auf dem ersten Computersystem ausgeführten ersten Computerprogramm vor, welche Funktion die vorgegebene Funktion ist. Somit kann insbesondere auf die Möglichkeiten zur Eingabe von Informationen durch einen Benutzer auf einem zweiten Computersystem zurückgegriffen werden. Dies ist insbesondere bei eingebetteten Systemen von Vorteil, welche zumeist nicht über Mittel zur grafischen Darstellung von Informationen (z. B. einen Bildschirm) oder über Mittel zur Dateneingabe (z. B. eine Tastatur) verfügen. Der Austausch von Daten zwischen beiden Computersystemen kann beispielsweise über ein Bus-System erfolgen (z. B. über ein im Automobilsektor übliches Applikationssystem).
  • Das erste Computerprogramm auf dem ersten Computersystem und die Offline-Komponente auf dem zweiten Computersystem können vollständig unabhängig voneinander ablaufen. Der Benutzer am zweiten Computersystem kann Funktionen auswählen, deren Laufzeit gemessen werden soll, ohne den Ablauf des ersten Computerprogramms am ersten Computersystem unterbrechen oder stören zu müssen. Die Datenübertragung zwischen beiden Computersystemen kann beispielsweise dadurch erfolgen, dass in die jeweiligen Computerprogramme in regelmäßigen Abständen Abfragen eingebaut werden, bei denen überprüft wird, ob an der Schnittstelle zum jeweiligen anderen Computersystem neue Signale (d. h. Informationen) anliegen.
  • Das zweite Computersystem übermittelt dem ersten Computersystem die Information darüber, welche Funktion bzw. welche Funktionen in die Abfragebedingung aufgenommen werden sollen. Für diese Funktionen wird dann die Laufzeit gemessen. Z. B. kann, wenn allen Funktionen eines Programms bereits bei der Instrumentierung Nummern zugewiesen worden sind, die Information in Form einer Identifikationsnummer der ausgewählten Funktion übermittelt werden.
  • Die Verwendung der Offline-Komponente auf dem zweiten Computersystem ist insbesondere von Vorteil, wenn die Laufzeit vieler oder sogar aller Funktionen eines Computerprogramms sukzessive gemessen werden soll. Das Verfahren erlaubt die Vorgabe einer Liste von Funktionen, deren Laufzeit nacheinander oder in einer vorgegebenen Reihenfolge gemessen wird und reduziert dadurch beispielsweise den Zeitaufwand für die Messung aller Funktionen eines typischen eingebetteten Systems von mehreren Wochen auf wenige Minuten.
  • Bei einer vorteilhaften Weiterbildung des Verfahrens überprüft der Laufzeithandler zusätzlich, ob mindestens ein Signal eine vorgegebene Bedingung erfüllt. Bei diesem Signal kann es sich beispielsweise um ein elektrisches Signal an einer Schnittstelle des Computersystems handeln.
  • Diese Weiterbildung ist insbesondere in echtzeitgesteuerten eingebetteten Systemen von Vorteil, die zur Steuerung komplexer Prozessabläufe verwendet werden. In derartigen Systemen kann die Laufzeit der Funktionen oder Tasks des Computerprogramms stark von bestimmten Systemparametern, wie z. B. analogen oder digitalen externen Signalen an einer Schnittstelle des Computersystems abhängen. Bei den externen Signalen kann es sich z. B. um die von einem oder mehreren Sensoren an das Computersystem übermittelten Informationen handeln. Diese Informationen beschreiben den Betriebszustand oder die Umgebungsbedingungen des Gesamtsystems. Mit Hilfe der beschriebenen Weiterbildung der Erfindung können eine oder mehrere spe zielle Umgebungsbedingung gewählt werden, bei denen die Laufzeit einer Funktion gemessen werden soll. Die Reproduzierbarkeit des Verfahrens steigt dadurch erheblich, und es können auch komplexere Zusammenhänge zwischen den Umgebungsbedingungen und der Funktionsweise des Computerprogramms untersucht werden.
  • Dies ist beispielsweise bei der Programmierung von Motorsteuerungsgeräten in der Automobiltechnik, sog. ECUs (Engine Control Units), von entscheidendem Vorteil, da diese Informationen von einer Vielzahl von Sensoren (z. B. Sauerstoffsensoren, Drucksensoren) verarbeiten müssen.
  • Bei einer weiteren Ausgestaltung des Verfahrens wird zusätzlich bei jeder Unterbrechung der Ausführung der vorgegebenen Funktion zu Beginn und Ende der Unterbrechung die Zeitstempel-Funktion aufgerufen. Wiederum werden vom Laufzeithandler unmittelbar die von der Zeitstempel-Funktion zur Verfügung gestellten Informationen an das zweite Computersystem übergeben.
  • Diese Weiterbildung des Verfahrens berücksichtigt, dass, wie oben beschrieben, die Ausführung von Funktionen oder Tasks durch das Computerprogramm häufig durch höher priorisierte Tasks oder Funktionen oder durch Interrupts unterbrochen werden kann.
  • Durch die beschriebene Weiterbildung des Verfahrens, welche auch Zeitinformationen bei Unterbrechung der Ausführung der vorgegebenen Funktion liefert, lässt sich die Nettolaufzeit einer Funktion messen, ohne dass Interrupts ausgeschaltet, das System auf andere Weise modifiziert oder Korrekturfaktoren verwendet werden müssen. Die Nettolaufzeit berechnet sich aus der Differenz der Start- und Stoppzeit der Ausführung der Funktion, abzüglich der Zeitspannen, während derer die Ausführung der Funktion unterbrochen war. Die Genauigkeit und Reproduzierbarkeit der Messung lässt sich dadurch erheblich steigern. Dies ist insbesondere bei der Programmierung von Echtzeitsystemen von Vorteil, bei denen die Ausführung eines Computerprogramms durch eine hohe Zahl von Interrupts unterbrochen wird, wie z. B. bei Motorsteuerungen in der Automobiltechnik (mit 30–40 Interrupts je Millisekunde).
  • Außer der Information, an welcher Funktion bzw. an welchen Funktionen die Laufzeitmessung durchgeführt werden sollen, kann die Offline-Komponente auch weitere Informationen an das erste Computersystem übergeben. Beispielsweise kann die Offline-Komponente dem auf dem ersten Computersystem ausgeführten ersten Computerprogramm zusätzlich die Anzahl von Wiederholungen vorgeben.
  • Ferner gehört zum Umfang der Erfindung ein Computerprogramm bzw. mehrere Computerprogramme, die bei Ablauf auf einem Computer oder Computer-Netzwerk das erfindungsgemäße Verfahren in einer seiner Ausgestaltungen ausführen.
  • Insbesondere kann das Computerprogramm mit den Programmcode-Mitteln auf einem computerlesbaren Datenträger gespeichert sein.
  • Außerdem gehört zum Umfang der Erfindung ein Datenträger, auf dem eine Datenstruktur gespeichert ist, die nach einem Laden in einen Arbeits- und/oder Hauptspeicher eines Computers oder Computer-Netzwerkes das erfindungsgemäße Verfahren in einer seiner Ausgestaltungen ausführen kann.
  • Ferner wird die Aufgabe durch eine Anordnung gelöst, welche geeignete Mittel aufweist zur Ausführung des oben beschriebenen Verfahrens.
  • Im Folgenden wird die Erfindung anhand von Ausführungsbeispielen näher erläutert, die in den Figuren schematisch dargestellt sind. Die Erfindung ist jedoch nicht auf die Beispiele beschränkt. Gleiche Bezugsziffern in den einzelnen Fi guren bezeichnen dabei gleiche oder funktionsgleiche bzw. hinsichtlich ihrer Funktionen einander entsprechende Elemente. Im Einzelnen zeigt:
  • 1: eine Anordnung zur Laufzeitmessung einer Funktion auf einem echtzeitgesteuerten Computersystem zur Motorsteuerung;
  • 2: einen Ablaufplan eines Verfahrens zur Laufzeitmessung von Funktionen eines Motorsteuerungsprogramms;
  • 3: einen Ablaufplan eines Laufzeithandlers.
  • In 1 ist ein Beispiel einer bevorzugten Anordnung dargestellt, mit der die Laufzeit von einer oder mehreren Funktionen eines auf einem Motorsteuerungssystem 1 ausgeführten Motorsteuerungsprogramms 2 gemessen werden kann. Bei dem Motorsteuerungssystem 1 handelt es sich in diesem Beispiel um ein typisches echtzeitgesteuertes System. Das Motorsteuerungsprogramm 2 weist als Komponenten einen Laufzeithandler 3 und eine Zeitstempel-Funktion 4 auf.
  • Das Motorsteuerungssystem 1 weist weiterhin einen kleinen Datenpuffer 5 mit einer Speicherkapazität von 35 kByte zur Zwischenspeicherung der während einer Laufzeitmessung von der Zeitstempel-Funktion 4 generierten Informationen auf, wobei es sich beispielsweise um Zeitinformationen, um Identifikationsnummern der Funktionen oder um Informationen darüber, ob die gespeicherten Zeitinformationen sich auf den Start oder das Ende der Abarbeitung einer Funktion beziehen, handeln kann. Wie oben beschrieben, kann jedoch von diesen 35 kByte nur ein kleiner Teil von wenigen Byte für die Speicherung der Laufzeitinformationen genutzt werden, da dieser kleine Datenpuffer 5 gleichzeitig für die Ausführung des Motorsteuerungsprogramms 2 genutzt wird.
  • Das Motorsteuerungssystem 1 ist über eine Schnittstelle 6 mit einem Motorsystem oder einer Motorsimulations-Einrichtung verbunden, welche hier nicht dargestellt ist. Über diese Schnittstelle 6 können externe Signale empfangen werden, welche beispielsweise Informationen über den Betriebszustand des Motorsystems (z. B. Drehzahl, Betriebszustand der Lambdaregelung, Betriebszustand der Einspritzung) enthalten können. Bei diesen Informationen kann es sich beispielsweise um Sensorsignale (z. B. ein elektrisches Signal eines Sauerstoffsensors) handeln.
  • Das Motorsteuerungssystem 1 weist außerdem einen Sicherheitsrechner 7 auf. Der Sicherheitsrechner 7 ist so ausgestaltet, dass er die auf dem Motorsteuerungssystem 1 ausgeführten Rechnungen und Aktionen und die Einhaltung bestimmter zeitlicher Vorgaben bei der Ausführung überprüft. Zwar ist dieser Sicherheitsrechner für die Ausführung des oben beschriebenen Verfahrens nicht erforderlich. Seine besonderen Eigenschaften und insbesondere die Tatsache, dass der Sicherheitsrechner bei der Übertragung größere Datenmengen eine Fehlermeldung generieren würde, müssen jedoch bei der Entwicklung von Computerprogrammen für derartige Systeme berücksichtigt werden.
  • Das Motorsteuerungssystem 1 ist außerdem verbunden mit einem Personal Computer 8, auf dem ein zweites Computerprogramm (Offline-Komponente) 9 ausgeführt wird. Eine Tastatur 10 als Eingabemittel und ein Bildschirm 11 als bildliches Darstellungsmittel sind mit dem Personal Computer 8 verbunden. Der Personal Computer 8 weist einen flüchtigen Speicher 12 und einen Festplattenspeicher 13 auf. Die Verbindung des Motorsteuerungssystems 1 mit dem Personal Computer 8 erfolgt in diesem Beispiel über einen CAN-Bus 14.
  • In 2 ist ein Ablaufplan einer bevorzugten Ausgestaltung des Verfahrens dargestellt, wobei eine Anordnung gemäß 1 oder eine in ihrer Funktion ähnliche Anordnung verwendet wird. Die Interaktion zwischen der Offline-Komponente 9 auf dem Personal Computer 8 und dem Motorsteuerungsprogramm 2 auf dem Motorsteuerungssystem 1 ist in diesem Ablaufplan dadurch verdeutlicht, dass die Verfahrensschritte der Offline-Komponente 9 unterbrochen umrandet auf der rechten Seite dargestellt sind, und die Verfahrensschritte des Motorsteuerungsprogramms 2 durchgezogen umrandet auf der linken Seite. Strichlierte Pfeile sollen den Austausch von Daten zwischen der Offline-Komponente 9 und dem Motorsteuerungsprogramm 2 symbolisieren.
  • Zur Erleichterung der Kommunikation zwischen dem Motorsteuerungsprogramm 2 und der Offline-Komponente 9 wird in diesem Beispiel das kommerziell verfügbare Applikationssystem INCA verwendet. Alternativ ließen sich auch andere Applikationssysteme, wie beispielsweise SAM2000, einsetzen. Dieses Applikationssystem wird auf dem Personal Computer 8 ausgeführt. Der Programmcode des Motorsteuerungsprogramms 2 wird auf dem Personal Computer 8 in eine maschinenlesbare Form übersetzt (compiliert), durch einen Linker und/oder Locator zu einer lauffähigen Gesamtsoftware zusammengefasst (gelinkt) und dann mit einem kommerziell verfügbaren Reprogrammiertool in das Motorsteuerungssystem 1 geladen. Die Kommunikation zwischen Personal Computer 8 und Motorsteuerungssystem 1 erfolgt im weiteren über das Applikationssystem INCA.
  • In 3 ist ein Ablaufplan eines bevorzugten Laufzeithandlers 3 dargestellt. Da zum Verständnis des in 2 dargestellten Verfahrens ein Verständnis der Funktionsweise des Laufzeithandlers 3 erforderlich ist, werden im Folgenden die 2 und 3 gemeinsam beschrieben.
  • In Schritt 202 in 2 erfolgt eine Initialisierung der Offline-Komponente 9 auf dem Personal Computer 8. Unabhängig davon wird in Schritt 204 das Motorsteuerungsprogramm 2 gestartet. Wie oben bereits beschrieben, erfolgt der Start der Offline-Komponente 9 und der Start des Motorsteuerungsprogramms 2 völlig unabhängig voneinander und kann zu verschiedenen Zeitpunkten erfolgen. So kann beispielsweise auch das Motorsteuerungsprogramm 2 im Dauerbetrieb betrieben werden.
  • In Schritt 206 erfolgt mittels der Offline-Komponente 9 eine Eingabe der Messbedingungen für die Laufzeitmessungen. Der Benutzer kann mit Hilfe der Eingabemittel auf dem Personal Computer 8 auswählen oder vorgeben, welche Funktion bzw. Funktionen des auf dem Motorsteuerungssystem 1 ausgeführten Motorsteuerungsprogramms 2 einer Laufzeitmessung unterzogen werden sollen. Er kann weiterhin für jede Funktion eine Anzahl von Wiederholungen (Zyklenzahl W) vorgeben, z. B. 20 Wiederholungen, mit der die Laufzeitmessung dieser Funktion bzw. Funktionen wiederholt durchgeführt werden soll.
  • Zusätzlich kann der Benutzer vorgeben, unter welchen Umgebungsbedingungen und in welchem Betriebszustand die Laufzeitmessung jeder Funktion erfolgen soll, also beispielsweise bei welcher Motordrehzahl, ob die Lambdaregelung oder die Einspritzung aktiv sein soll oder Ähnliches. Die Messbedingungen lassen sich also genau definiert vorgeben, so dass die Reproduzierbarkeit der Laufzeitmessungen stark erhöht wird. Die Eingabe weiterer Informationen durch den Benutzer ist denk bar, z. B. in Form von zusätzlichen Angaben, die später die Auswertung der Ergebnisse erleichtern.
  • In Schritt 208 erfolgt ein Start der Laufzeitmessung und eine Übergabe der Identifikationsnummer der ersten Funktion, deren Laufzeit gemessen werden soll an das Motorsteuerungsprogramm 2. Weiterhin wird die Zyklenzahl W übergeben, welche die Anzahl der Wiederholungen der Laufzeitmessung für die vorgegebene Funktion bestimmt. Diese Informationen werden über den CAN-Bus 14 an das Motorsteuerungssystem 1 übergeben, wo sie beispielsweise im Datenpuffer 5 zwischengespeichert werden und so dem Laufzeithandler 3 unmittelbar zur Verfügung stehen.
  • In diesem Ausführungsbeispiel handelt es sich bei dem Motorsteuerungsprogramm 2 um einen vollständig oder teilweise instrumentierten Programmcode, d. h. der Programmcode ist, wie oben beschrieben, mit Zusatzinformationen versehen. Bei der Instrumentierung wurden auch Identifikationsnummern an die Funktionen des Programmcodes vergeben, welche in einer Datenbank (hier nicht dargestellt) abgespeichert sein können. Die Offline-Komponente 9 speichert eine Identifikationsnummer einer vom Benutzer vorgegebenen Funktion in einen flüchtigen Datenspeicher 12. Weiterhin können auch die vom Benutzer in Schritt 206 vorgegebenen Betriebsbedingungen, unter denen die Laufzeit der jeweiligen Funktion zu messen ist, in den flüchtigen Datenspeicher 12 abgespeichert werden, sowie die Zyklenzahl W für jede zu messende Funktion. Über den CAN-Bus 14 werden die im Datenspeicher 12 gespeicherten Informationen in Schritt 208 dem Motorsteuerungsprogramm 2, insbesondere dem Laufzeithandler 3, zur Verfügung gestellt.
  • Die Ausführung des Motorsteuerungsprogramms 2 auf dem Motorsteuerungssystem 1 und die Messung der Laufzeiten der Funktionen ist in Schritt 210 dargestellt und umfasst eine Anzahl von Einzelschritten (Schritte 212 bis 228). In Schritt 212 ruft das Motorsteuerungsprogramm 2 eine Funktion auf.
  • Noch bevor die Funktion abgearbeitet wird, wird in Schritt 214 der Laufzeithandler 3 aufgerufen.
  • Die vom Laufzeithandler 3 durchgeführten Verfahrensschritte sind in 3 dargestellt. Nach Aufruf des Laufzeithandlers 3 (Schritt 310) wird zunächst in Schritt 312 abgefragt, ob es sich bei der aufgerufenen Funktion um die in Schritt 208 oder in Schritt 234 (siehe unten) von der Offline-Komponente 9 vorgegebene Funktion handelt (sinngemäß kann es sich dabei auch um eine von mehreren vorgegebenen Funktionen, z. B. eine Funktion aus einer vorgegebenen Liste von Funktionen, handeln). Ist dies nicht der Fall, so ist die Abarbeitung des Laufzeithandlers 3 beendet (Schritt 314).
  • Handelt es sich hingegen um die vorgegebene Funktion, so wird in Schritt 316 der Anlass abgefragt, aus dem der Laufzeithandler 3 aufgerufen wurde: Wurde der Laufzeithandler 3 aufgrund einer Unterbrechung, aufgrund eines Starts einer Funktion oder aufgrund eines Endes der Abarbeitung einer Funktion aufgerufen?
  • In diesem Fall handelt es sich gemäß Schritt 214 um einen Aufruf des Laufzeithandlers 3 infolge eines Starts einer Funktion. Also fragt der Laufzeithandler 3 als nächstes in Schritt 318 ab, ob die vorgegebenen Messbedingungen (Umgebungsbedingungen) erfüllt sind, also z. B. ob der Motor mit einer vorgegebenen Drehzahl arbeitet.
  • Sind diese Messbedingungen nicht erfüllt, so ist die Abarbeitung des Laufzeithandlers 3 beendet (Schritt 314). Sind die Messbedingungen hingegen erfüllt, so wird dann in Schritt 320 die Zeitstempel-Funktion 4 aufgerufen. Diese generiert eine Zeitinformation (Zeitstempel), welche in Schritt 322, gemeinsam mit der Identifikationsnummer der aufgerufenen Funktion und einer Information, dass es sich in Schritt 212 um den Start der Abarbeitung der Funktion handelte, an den Personal Computer 8 übergeben (symbolisch dargestellt durch strich lierten Pfeil). Dort werden diese Informationen durch die Offline-Komponente 9 in Schritt 221 im Festplattenspeicher 13 abgespeichert.
  • Dann erfolgt in Schritt 324 eine Abfrage, ob der Laufzeithandler 3 infolge eines Starts oder Endes der Abarbeitung der Funktion aufgerufen wurde. Da es sich in Schritt 214 um einen Aufruf des Laufzeithandlers 3 bei Beginn der Abarbeitung der Funktion handelte, wird die Abarbeitung des Laufzeithandlers 3 in diesem Fall nach Schritt 324 beendet (Schritt 314).
  • Als nächstes wird der Verfahrensschritt 216 in 2 ausgeführt, d. h. die aufgerufene Funktion wird abgearbeitet. Die Funktion wiederum kann verschiedene Unterfunktionen aufrufen (z. B. wenn es sich bei der Funktion um einen Task handelt, also eine Hauptfunktion, welche mehrere Funktionen umfasst). Das Programm kann so ausgestaltet sein, dass die Laufzeiten dieser Unterfunktionen ebenfalls ermittelt werden. Es erfolgt vor und nach jedem Aufruf einer Unterfunktion ein Aufruf des Laufzeithandlers 3. Im Abfrageschritt 312 in 3 erfolgt dann sinngemäß eine Abfrage, ob es sich bei der aufgerufenen Unterfunktion um eine der Unterfunktionen handelt, deren Laufzeit gemessen werden soll.
  • Wird die Abarbeitung der Funktion (bzw. einer der Unterfunktionen) unterbrochen, z. B. durch höher priorisierte Funktionen oder Interrupts, so müssen ebenfalls Zeitstempel generiert werden. Wird eine Unterbrechung erkannt (Schritt 218), so wird eine aus den Verfahrensschritten 220 bis 224 bestehende Unterbrechungsroutine durchgeführt. Dabei wird zunächst in Schritt 220 wieder der Laufzeithandler 3 aufgerufen. Parallel können beispielsweise die Unterbrechungsebenen beispielsweise mit Hilfe eines Stacks für die Identifikationsnummern der jeweils unterbrochenen erfasst werden. Auf diese Weise lassen sich auch mehrere "geschachtelte" Unterbrechungen verfolgen.
  • Zunächst wird dann in Schritt 312 in 3 wiederum abgefragt, ob es sich bei der unterbrochenen Funktion um die (bzw. eine) vorgegebene Funktion handelt. Ist dies nicht der Fall, so wird der Laufzeithandler 3 an dieser Stelle beendet (Schritt 314). Handelt es sich dagegen um die vorgegebene Funktion, so wird in Schritt 316 wieder der Grund des Aufrufs des Laufzeithandlers 3 abgefragt. Diesmal handelt es sich um einen Aufruf des Laufzeithandlers 3 infolge einer Unterbrechung. Daher wird nun nach der Abfrage in Schritt 316 der Schritt 326 ausgeführt. Analog zum Schritt 320 wird in Schritt 326 wiederum die Zeitstempel-Funktion 4 aufgerufen, welche eine Zeitinformation generiert. Die Zeitinformation wird, gemeinsam mit der Information, dass es sich um den Beginn einer Unterbrechung handelt, in Schritt 322 an den Personal Computer 8 übergeben (symbolisch dargestellt durch strichlierten Pfeil). Dort werden diese Informationen durch die Offline-Komponente 9 im Schritt 221 im Festplattenspeicher 13 abgespeichert. Die Information, dass es sich um eine Unterbrechung handelt, kann z. B. in Form der Identifikationsnummer der unterbrechenden Funktion bzw. des Interrupts abgespeichert werden. Der Datenpuffer 5 auf dem Motorsteuerungssystem 1 kann, sofern er überhaupt benutzt wurde, wieder gelöscht bzw. überschrieben werden. Nach Ausführung von Schritt 322 ist die Abarbeitung des Laufzeithandlers 3 beendet (Schritt 314).
  • In Schritt 222 in 2 wird dann die Unterbrechung (wobei es sich sinngemäß auch um eine Unterbrechung durch mehrere Funktionen oder Interrupts handeln kann) abgearbeitet. Nach Beendigung der Unterbrechung wird in Schritt 224 wiederum der Laufzeithandler 3 aufgerufen. Wie oben beschrieben, wird dann erneut nach den Schritten 312 (d. h. falls es sich in Schritt 216 bei der unterbrochenen Funktion um die vorgegebene Funktion handelt) und 316 in 3 Schritt 326 ausgeführt. In Schritt 322 wird die in Schritt 326 generierte Zeitinformation an den Personal Computer 8 übergeben sowie eine Informati on, die kenntlich macht, dass es sich um das Ende einer Unterbrechung handelt. Diese Informationen werden wiederum in Schritt 221 im Festplattenspeicher 13 abgespeichert.
  • Nach Beendigung des Laufzeithandlers 3 ist die Unterbrechungsroutine beendet, und es erfolgt in Schritt 226 in 2 eine Rückkehr zur Abarbeitung der Funktion, d. h. Verfahrensschritt 216 wird weiter abgearbeitet. Weitere Unterbrechungen führen zu erneuter Abarbeitung der Unterbrechungsroutine 220 bis 224.
  • Nach Beendigung der Abarbeitung der Funktion in Schritt 216 wird in Schritt 228 erneut der Laufzeithandler 3 aufgerufen. Nach der Abfrage in Schritt 312, ob es sich um die vorgegebene Funktion handelt wird in Schritt 316 wieder der Aufrufsgrund des Laufzeithandlers 3 abgefragt. Diesmal handelt es sich um einen Aufruf infolge einer Beendigung der Abarbeitung einer Funktion. Daher wird dann unmittelbar nach Schritt 316 unter Umgehung der Abfrage der Umgebungsbedingungen (Schritt 318) Schritt 320 ausgeführt. In Schritt 320 wird eine Zeitinformation generiert, gemeinsam mit einer Information, dass es sich um das Ende der Abarbeitung der Funktion handelt. Diese Informationen werden in Schritt 322 an den Personal Computer 8 übergeben, wo sie wiederum in Schritt 221 durch die Offline-Komponente 9 im Festplattenspeicher 13 abgespeichert werden.
  • Weiterhin wird in Schritt 324 abgefragt, ob der Laufzeithandler 3 aufgrund eines Beginns oder eines Endes der Abarbeitung der Funktion aufgerufen wurde. Da es sich nun um einen Aufruf nach Beendigung der Abarbeitung der Funktion handelt, wird Schritt 328 ausgeführt.
  • In Schritt 328 wird die Zyklenzähler-Variable Z um eins erhöht. Dann erfolgt in Schritt 330 eine Abfrage, ob die Zyklenzähler-Variable Z bereits größer ist als die in Schritt 208 bzw. Schritt 234 (siehe unten) von der Offline-Komponente 9 an das Motorsteuerungsprogramm 2 übergebene Zyklenzahl W. Wenn dies der Fall ist, so ist die Laufzeitmessung der vorgegebenen Funktion mit der vorgegebenen Anzahl von Wiederholungen wiederholt durchgeführt, und die Messung wird beendet.
  • Die Beendigung der Laufzeitmessung erfolgt dadurch, dass der Laufzeithandler 3 in Schritt 332 der Offline-Komponente 9 eine Information übermittelt, dass die Laufzeit der vorgegebenen Funktion (bzw. Funktionen) mit der vorgegebenen Anzahl von Wiederholungen gemessen wurde. Entsprechend kann dann eine Auswertung der Daten erfolgen und eine neue Funktion bzw. eine neue Liste von Funktionen vorgegebenen werden. Nach Schritt 332 wird der Laufzeithandler dann beendet.
  • Im Schritt 230 findet optional und unabhängig vom Ablauf des Motorsteuerungsprogramms 2 eine Zwischenverarbeitung der im Festplattenspeicher 13 gespeicherten Daten durch die Offline-Komponente 9 statt. Dabei kann es sich um eine Vorverarbeitung der Daten (z. B. ein Ordnen, Berechnen der Nettolaufzeit, Katalogisieren oder Versehen mit Zusatzinformationen, die Angaben über die Messbedingungen der Laufzeitmessung enthalten) handeln, oder bereits um eine vollständige Auswertung der Daten der Laufzeitmessung.
  • In einer darauffolgenden Abfrage 232 überprüft dann die Offline-Komponente 9, ob bereits alle vom Benutzer vorgegebenen Funktionen einer Laufzeitmessung unterzogen worden sind. Dies kann beispielsweise dadurch erfolgen, dass die Liste der Identifikationsnummern der vom Benutzer für die Laufzeitmessung ausgewählten Funktionen verglichen wird mit den im Festplattenspeicher 13 abgespeicherten Identifikationsnummern der bereits einer Laufzeitmessung unterzogenen Funktionen. Auch weitere Abbruchkriterien können in Schritt 232 überprüft werden.
  • Falls noch nicht alle vom Benutzer ausgewählten Funktionen einer Laufzeitmessung unterzogen wurden, übergibt die Offli ne-Komponente 9 im Schritt 234 die Identifikationsnummer einer noch nicht gemessenen Funktion an das Motorsteuerungsprogramm 2. Alternativ zum dargestellten Ausführungsbeispiel könnte die Offline-Komponente 9 auch Schritt 208 erneut ausführen.
  • Wenn die Laufzeiten aller ausgewählten Funktionen unter den vorgegebenen Messbedingungen gemessenen worden sind, wird die Offline-Komponente in Schritt 236 beendet. Falls bereits eine vollständige oder teilweise Verarbeitung der Messdaten in Schritt 230 erfolgt ist, so werden die Ergebnisse dieser Verarbeitung in einen weiteren Datenspeicher abgespeichert oder dem Benutzer auf andere Weise zur Verfügung gestellt, beispielsweise durch grafische Darstellung auf dem Bildschirm 11 oder durch einen Ausdruck auf Papier. Eine weitere Auswertung und Aufbereitung der Ergebnisse kann mit kommerziell verfügbaren Computerprogrammen, wie z. B. Tabellenverarbeitungsprogrammen oder Computerprogrammen zur statistischen Analyse, erfolgen (Schritt 238). Ein wesentlicher Bestandteil der Auswertung der Ergebnisse ist die Berechnung der Länge von Zeitintervallen durch Bildung von Differenzen zwischen den Zeitpunkten zusammengehöriger Stopp- und Startsignale. Wurde die Ausführung einer Funktion unterbrochen, so sind die Längen der Teilintervalle, während derer die Funktion ausgeführt wurde, zu addieren. Weiterhin kann das Computerprogramm zur Auswertung statistische Aussagen über Mittelwert und Streuung der gemessenen Laufzeiten treffen und die Ergebnisse grafisch aufbereiten.

Claims (8)

  1. Verfahren zur Laufzeitmessung einer vorgegebenen Funktion eines ersten Computerprogramms (2), das von einem ersten Computersystem (1) ausgeführt wird, a) wobei ein zweites Computerprogramm (Offline-Komponente, 9) auf einem zweiten Computersystem (8) dem auf dem ersten Computersystem (1) ausgeführten ersten Computerprogramm (2) vorgibt, welche Funktion die vorgegebene Funktion ist; b) wobei die folgenden Schritte mit einer Anzahl von Wiederholungen wiederholt auf dem ersten Computersystem (1) durchgeführt werden: b1) wenn das erste Computerprogramm (2) eine erste Funktion aufruft, ruft das erste Computerprogramm (2) zu Beginn und zum Ende der Abarbeitung der ersten Funktion eine zweite Funktion (Laufzeithandler, 3) auf; b2) der Laufzeithandler (3) prüft, ob die erste Funktion die vorgegebene Funktion ist und ruft, sofern diese Bedingung erfüllt ist, eine dritte Funktion (Zeitstempel-Funktion, 4) auf; b3) die Zeitstempel-Funktion (4) stellt mindestens eine Zeitinformation zur Verfügung; und b4) der Laufzeithandler (3) übergibt die mindestens eine von der Zeitstempel-Funktion (4) zur Verfügung gestellte Zeitinformation nach jedem Aufruf an das zweite Computersystem (8) oder an ein weiteres Computersystem.
  2. Verfahren nach dem vorhergehenden Anspruch, wobei der Laufzeithandler (3) zusätzlich überprüft, ob mindestens ein Signal eine vorgegebene Bedingung erfüllt.
  3. Verfahren nach einem der vorhergehenden Ansprüche, – wobei zusätzlich bei jeder Unterbrechung der Ausführung der vorgegebenen Funktion zu Beginn und Ende der Unterbrechung die Zeitstempel-Funktion (4) aufgerufen wird; und – wobei der Laufzeithandler die mindestens eine von der Zeitstempel-Funktion (4) zur Verfügung gestellte Information in einem Datenspeicher auf dem zweiten Computersystem (8) speichert.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Offline-Komponente (9) dem auf dem ersten Computersystem (1) ausgeführten ersten Computerprogramm (2) zusätzlich die Anzahl von Wiederholungen vorgibt.
  5. Computerprogramm, dadurch gekennzeichnet, dass es bei Ablauf auf einem Computer oder Computer-Netzwerk das Verfahren nach einem der vorhergehenden Verfahrensansprüche ausführt.
  6. Computerprogramm gemäß dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass die Programmcode-Mittel auf einem computerlesbaren Datenträger gespeichert sind.
  7. Datenträger, auf dem ein Computerprogramm gespeichert ist, das nach einem Laden in einen Arbeits- und/oder Hauptspeicher eines Computers oder Computer-Netzwerkes das Verfahren nach einem der vorhergehenden Verfahrensansprüche ausführt.
  8. Anordnung zur Laufzeitmessung einer vorgegebenen Funktion eines ersten Computerprogramms (2), das von einem ersten Computersystem (1) ausgeführt wird, wobei die Anordnung folgendes aufweist: a) Mittel zum Ausführen des ersten Computerprogramms (2); b) Mittel zum Aufrufen und Abarbeiten einer ersten Funktion während der Abarbeitung des ersten Computerprogramms (2); c) Mittel zum Aufrufen und Abarbeiten einer zweiten Funktion (Laufzeithandler, 3) zu Beginn und zum Ende der Abarbeitung der ersten Funktion, – wobei die Mittel zum Abarbeiten des Laufzeithandlers (3) folgendes aufweisen: c1) Mittel zum Überprüfen, ob die erste Funktion die vorgegebene Funktion ist; c2) Mittel zum Aufrufen und Abarbeiten einer dritten Funktion (Zeitstempel-Funktion, 4), abhängig von den Überprüfungsmitteln, – wobei die Mittel zum Abarbeiten der Zeitstempel-Funktion (4) Mittel zum Zurverfügungstellen mindestens einer Zeitinformation aufweisen; und c3) Mittel zum Übergeben der mindestens einen von der Zeitstempel-Funktion (4) zur Verfügung gestellten Zeitinformation an ein zweites Computersystem (8) nach jedem Aufruf des Laufzeithandlers (3).
DE200410028819 2004-06-15 2004-06-15 Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen Expired - Fee Related DE102004028819B4 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE200410028819 DE102004028819B4 (de) 2004-06-15 2004-06-15 Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen
ITMI20051071 ITMI20051071A1 (it) 2004-06-15 2005-06-10 "procedimento per determinare e trasmettere tempi di funzionamento in sistemi incorporati"
FR0505964A FR2871592A1 (fr) 2004-06-15 2005-06-13 Procede de recherche et de transmission des temps d'execution de programmes dans des systemes embarques

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200410028819 DE102004028819B4 (de) 2004-06-15 2004-06-15 Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen

Publications (2)

Publication Number Publication Date
DE102004028819A1 DE102004028819A1 (de) 2006-01-12
DE102004028819B4 true DE102004028819B4 (de) 2006-10-19

Family

ID=35453656

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200410028819 Expired - Fee Related DE102004028819B4 (de) 2004-06-15 2004-06-15 Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen

Country Status (3)

Country Link
DE (1) DE102004028819B4 (de)
FR (1) FR2871592A1 (de)
IT (1) ITMI20051071A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101440748B (zh) * 2007-04-30 2010-06-09 哈尔滨工程大学 柴油机多功能机旁控制方法
FR3060149A1 (fr) * 2016-12-12 2018-06-15 Continental Automotive France Procede de diagnostic d'un ordonnancement de taches

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677580A (en) * 1984-09-24 1987-06-30 Gte Communication Systems Corporation Real time usage indicator for a processor system
US6154857A (en) * 1997-04-08 2000-11-28 Advanced Micro Devices, Inc. Microprocessor-based device incorporating a cache for capturing software performance profiling data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems

Also Published As

Publication number Publication date
FR2871592A1 (fr) 2005-12-16
DE102004028819A1 (de) 2006-01-12
ITMI20051071A1 (it) 2005-12-16

Similar Documents

Publication Publication Date Title
DE102005001946B4 (de) System zur Steuerung des Verhaltens eines Fahrzeugs
DE102006028992B4 (de) Elektronische Steuervorrichtung
DE102006028695B4 (de) Elektronisches Steuersystem mit Fehlfunktionsüberwachung
DE69931864T2 (de) Diagnoseapparat für Kraftfahrzeugsteuerung
DE10243589A1 (de) Fahrzeugelektroniksteuereinrichtung
DE2912577C3 (de) Verfahren zur Reinigung von Garnen und zur Bewertung von Garnfehlern
EP3080668B1 (de) Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts
EP1145088A1 (de) Qualitatsüberwachung bei einer fertigung
DE102017213510A1 (de) Verfahren und Vorrichtung zum Erzeugen eines maschinellen Lernsystems, und virtuelle Sensorvorrichtung
DE102013000857A1 (de) Kompakte Funktionsablaufprotokollierung
DE102004028819B4 (de) Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen
DE3544079A1 (de) Rechner mit interrupt-programm
DE102008022302A1 (de) Elektronische Rechenvorrichtung zur Bestimmung einer Ausführzeit einer Aufgabe und Programm
EP1870787B1 (de) Verfahren zur Überwachung eines zyklischen Steuerungsprogramms
EP1676202A2 (de) Verfahren und anordnung zur laufzeitmessung von funktionen
EP1733284A2 (de) Ablaufsteuerung von funktionen auf miteinander wechselwirkenden geräten
DE102006006843A1 (de) Verfahren zum Antworten auf einen Steuermodulausfall
DE102011052512A1 (de) Verfahren zur Verarbeitung von Daten in einem Beeinflussungsgerät
DE102016206490A1 (de) Elektronische steuereinheit
DE102020110689A1 (de) Maschinendiagnosesystem und Maschinendiagnoseverfahren
DE102006008634A1 (de) Mikrocontrollersystem mit Peripherieeinheiten
DE2820097B2 (de) Verfahren zur Bestimmung der Häufigkeit von Garnfehlern
EP3331740B1 (de) Verfahren zum betreiben einer steuervorrichtung und diagnosesystem
DE102010031323A1 (de) Verfahren und Vorrichtung zum Betreiben einer Brennkraftmaschine
EP2480938A1 (de) Verfahren zur bearbeitung von informationen und aktivitäten in einem steuer- und/oder regelungstechnischen system mit hilfe eines multi-core prozessors

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: CONTINENTAL AUTOMOTIVE GMBH, 30165 HANNOVER, DE

R084 Declaration of willingness to licence
R081 Change of applicant/patentee

Owner name: VITESCO TECHNOLOGIES GMBH, DE

Free format text: FORMER OWNER: CONTINENTAL AUTOMOTIVE GMBH, 30165 HANNOVER, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R081 Change of applicant/patentee

Owner name: VITESCO TECHNOLOGIES GMBH, DE

Free format text: FORMER OWNER: VITESCO TECHNOLOGIES GMBH, 30165 HANNOVER, DE