DE102009012142B4 - Verfahren zur Sicherung sicherheitskritischer Variablen - Google Patents

Verfahren zur Sicherung sicherheitskritischer Variablen Download PDF

Info

Publication number
DE102009012142B4
DE102009012142B4 DE102009012142.0A DE102009012142A DE102009012142B4 DE 102009012142 B4 DE102009012142 B4 DE 102009012142B4 DE 102009012142 A DE102009012142 A DE 102009012142A DE 102009012142 B4 DE102009012142 B4 DE 102009012142B4
Authority
DE
Germany
Prior art keywords
memory
addresses
lockable
procedure according
write
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.)
Active
Application number
DE102009012142.0A
Other languages
English (en)
Other versions
DE102009012142A1 (de
Inventor
Mark H. Costin
Mingguang Yu
James T. Kurnik
Trenton W. Haines
Paul A. Bauerle
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.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
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
Priority claimed from US12/259,587 external-priority patent/US8117412B2/en
Application filed by GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of DE102009012142A1 publication Critical patent/DE102009012142A1/de
Application granted granted Critical
Publication of DE102009012142B4 publication Critical patent/DE102009012142B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/20Address safety or protection circuits, i.e. arrangements for preventing unauthorized or accidental access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells

Abstract

Verfahren, das umfasst:Speichern von Daten für einen ersten Satz von Adressen in einem Universalspeicher;Speichern von Daten für einen zweiten Satz von Adressen in einem verriegelbaren Speicher;wahlweises Verriegeln des zweiten Satzes von Adressen durch Verhindern von Schreibvorgängen in den verriegelbaren Speicher; undEntriegeln des verriegelbaren Speichers vor Anfordern eines Schreibvorgangs an eine des zweiten Satzes von Adressen,wobei für Daten, die in dem verriegelbaren Speicher gespeichert werden, Fehlerkorrekturcodes berechnet werden, die in dem Universalspeicher gespeichert werden, und wobei die Fehlerkorrekturcodes fertiggestellt werden, nachdem die Daten in dem verriegelbaren Speicher gespeichert wurden und der verriegelbare Speicher wieder verriegelt wurde.

Description

  • GEBIET
  • Die vorliegende Offenbarung bezieht sich auf ein Verfahren zur Sicherung sicherheitskritischer Variablen und insbesondere auf ein Verfahren zur Sicherung sicherheitskritischer Variablen im Speicher eines Fahrzeugs.
  • HINTERGRUND
  • Die hier gegebene Hintergrundbeschreibung dient zur allgemeinen Darstellung des Kontexts der Offenbarung.
  • In 1A ist ein Funktionsblockschaltplan eines Prozessorsystems gemäß dem Stand der Technik dargestellt. Ein Prozessor 100 führt Anweisungen aus und liest und speichert Daten. Die Daten können in einem Speicher 104 gespeichert werden. In verschiedenen Implementierungen kann der Prozessor 100 Anweisungen aus dem Speicher 104 oder aus einem anderen Speicher (nicht gezeigt), der einen Flash-Speicher oder einen Nur-Lese-Speicher enthalten kann, ausführen.
  • Wenn der Prozessor 100 sicherheitskritische Variablen in den Speicher 104 schreibt, verwendet der Prozessor 100 ein Doppelspeichermodul 108. Sicherheitskritische Variablen können z. B. die Drosselklappenstellung enthalten. Falls der gespeicherte Wert der gewünschten Drosselklappenstellung fehlerhaft erhöht wird, kann eine Erhöhung des Drehmoments auftreten, die der Fahrer nicht erwartete. Somit speichert das Doppelspeichermodul 108 zwei Kopien der sicherheitskritischen Variablen von dem Prozessor 100 in dem Speicher 104. Diese Kopien können verglichen werden, um versehentliche Änderungen an einer oder der anderen der Kopien zu detektieren.
  • Ein Direktspeicherzugriffsmodul (DMA-Modul) 112 kommuniziert mit dem Speicher 104. In verschiedenen Implementierungen kann sich das DMA-Modul 112 an dem Bus zwischen dem Doppelspeichermodul 108 und dem Speicher 104 befinden. Das DMA-Modul 112 überträgt im Auftrag von Peripheriegeräten 116 Daten zu und von dem Speicher 104. Das DMA-Modul 112 ermöglicht Speicherübertragungen, ohne den Prozessor 100 zu belasten.
  • In 1B ist ein Funktionsblockschaltplan des Speichers 104 gezeigt. Das Doppelspeichermodul 108 kann Kopien der sicherheitskritischen Variablen in zwei Speicherblöcken speichern. Zum Beispiel kann eine erste Variable bei 120-1 und bei 120-2 gespeichert werden. Die Doppelspeicherung kann ebenfalls für die Variable 2, für die Variable 3 usw. ausgeführt werden.
  • Wenn der Prozessor 100 einen Lesevorgang einer der sicherheitskritischen Variablen anfordert, vergleicht das Doppelspeichermodul 108 die zwei aus dem Speicher 104 gelesenen Werte. Eine Differenz zwischen den zwei Werten signalisiert eine Fehlerbedingung. Zum Beispiel kann eine Diskrepanz zwischen den Werten einer gewünschten Drosselklappenstellung veranlassen, dass der Prozessor 100 die niedrigere der zwei Drosselklappenstellungen wählt.
  • Die Druckschrift DE 10 2004 051 950 A1 beschreibt ein System mit einem Universalspeicher, der Daten für einen ersten Satz von Adressen enthält, und einem verriegelbaren Speicher, der Daten für einen zweiten Satz von Adressen enthält. Ferner umfasst das System eine Speichermanagementeinheit, die wahlweise Daten in den Universalspeicher oder in den verriegelbaren Speicher schreibt und die den verriegelbaren Speicher wahlweise durch Verhindern von Schreibvorgängen in den verriegelbaren Speicher verriegelt. Außerdem ist ein Prozessor vorgesehen, der die Speichermanagementeinheit vor Anfordern eines Schreibvorgangs an eine des zweiten Satzes von Adressen anweist, den verriegelbaren Speicher zu entriegeln.
  • Die Druckschrift DE 10 2005 045 399 A1 beschreibt ein Datenverarbeitungssystem mit einer getaktet arbeitenden Ausführungseinheit, einem Taktgenerator zum Liefern eines Taktsignals für die Ausführungseinheit und einer Überwachungseinheit zum Überwachen des ordnungsgemäßen Arbeitens der Ausführungseinheit.
  • Die Druckschrift DE 10 2005 034 572 A1 beschreibt ein Verfahren, bei dem eine Überprüfung der Datenintegrität bei der Speicherung von Daten in einem Speicher vorgenommen wird. Dazu wird vor der Übertragung der Daten in den Speicher ein Prüfwert aus den Daten errechnet, der zusammen mit den Daten abgespeichert wird und zudem mindestens zweimal abgelegt wird.
  • Die Druckschrift US 4 473 878 A beschreibt ein weiteres System mit einem Universalspeicher und einem verriegelbaren Speicher.
  • ZUSAMMENFASSUNG
  • Ein erfindungsgemäßes Verfahren umfasst das Speichern von Daten für einen ersten Satz von Adressen in einem Universalspeicher, das Speichern von Daten für einen zweiten Satz von Adressen in einem verriegelbaren Speicher, das wahlweise Verriegeln des zweiten Satzes von Adressen durch Verhindern von Schreibvorgängen in den verriegelbaren Speicher, und das Entriegeln des verriegelbaren Speichers vor Anfordern eines Schreibvorgangs an eine des zweiten Satzes von Adressen. Für Daten, die in dem verriegelbaren Speicher gespeichert werden, werden Fehlerkorrekturcodes berechnet, die in dem Universalspeicher gespeichert werden. Die Fehlerkorrekturcodes werden fertiggestellt, nachdem die Daten in dem verriegelbaren Speicher gespeichert wurden und der verriegelbare Speicher wieder verriegelt wurde.
  • Figurenliste
  • Die vorliegende Offenbarung wird umfassender aus der ausführlichen Beschreibung und aus den beigefügten Zeichnungen verständlich, in denen:
    • 1A ein Funktionsblockschaltplan eines Prozessorsystems gemäß dem Stand der Technik ist;
    • 1B ein Funktionsblockschaltplan des Speichers aus 1A gemäß dem Stand der Technik ist;
    • 2A ein Funktionsblockschaltplan eines beispielhaften Prozessorsystems gemäß den Prinzipien der vorliegenden Offenbarung ist;
    • 2B eine beispielhafte Anordnung des verriegelbaren Speichers aus 2A gemäß den Prinzipien der vorliegenden Offenbarung ist;
    • 3A-3B Funktionsblockschaltpläne weiterer beispielhafter Prozessorsysteme gemäß den Prinzipien der Offenbarung sind; und
    • 4 ein Ablaufplan ist, der einen beispielhaften Betrieb des Prozessorsystems aus 2A gemäß den Prinzipien der vorliegenden Offenbarung zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung ist dem Wesen nach lediglich beispielhaft. Der Klarheit halber sind in den Zeichnungen zum Identifizieren ähnlicher Elemente dieselben Bezugszeichen verwendet. Wie der Ausdruck wenigstens eines von A, B und C hier verwendet wird, soll er ein logisches (A oder B oder C) unter Verwendung eines nichtausschließenden Oder bedeuten. Es ist festzustellen, dass Schritte innerhalb eines Verfahrens in anderer Reihenfolge ausgeführt werden können, ohne die Prinzipien der vorliegenden Offenbarung zu ändern.
  • Wie der Begriff Modul hier verwendet wird, bezieht er sich auf eine anwendungsspezifische integrierte Schaltung (ASIC), auf eine elektronische Schaltung, auf einen Prozessor (gemeinsam genutzt, dediziert oder Gruppe) und auf Speicher, die eines oder mehrere Software- oder Firmwareprogramme ausführen, auf eine Kombinationslogikschaltung und/oder auf andere geeignete Komponenten, die die beschriebene Funktionalität bereitstellen.
  • In 2A ist ein Funktionsblockschaltplan eines beispielhaften Prozessorsystems gemäß den Prinzipien der vorliegenden Offenbarung dargestellt. Ein Prozessor 200 speichert Daten innerhalb eines verriegelbaren Speichers 202 und eines Universalspeichers 204 eines Speichermoduls 206. Auf den verriegelbaren Speicher und auf den Universalspeicher 202 und 204 wird durch eine Speichermanagementeinheit (MMU) 208 zugegriffen. Bis ein besonderes Ereignis wie etwa ein durch die MMU 208 empfangener Entriegelungsbefehl auftritt, kann der Zugriff auf Adressen innerhalb des verriegelbaren Speichers 202 verhindert werden.
  • In verschiedenen Implementierungen können der verriegelbare Speicher und der Universalspeicher 202 und 204 als ein einzelner gemeinsamer Speicher implementiert sein. Die MMU 208 kann einen Abschnitt (wie etwa einen Bereich von Adressen) des gemeinsamen Speichers definieren, um als der verriegelbare Speicher 202 zu dienen. Daraufhin kann der Rest des gemeinsamen Speichers als der Universalspeicher 204 dienen.
  • Ein Direktspeicherzugriffsmodul (DMA-Modul) 212 kommuniziert mit dem verriegelbaren Speicher und mit dem Universalspeicher 202 und 204. Das DMA-Modul 212 ermöglicht die Datenübertragung zu und von Peripheriegeräten 214, ohne den Betrieb des Prozessors 200 zu erfordern. Da das DMA-Modul 212 direkt mit dem verriegelbaren Speicher und mit dem Universalspeicher 202 und 204 in Wechselwirkung steht, kann der verriegelbare Speicher 202 nicht vor Schreibvorgängen durch das DMA-Modul 212 geschützt werden.
  • Um diese Anfälligkeit abzuschwächen, kann durch den Prozessor 200 ein DMA-Diagnosemodul 220 betätigt werden. Das DMA-Diagnosemodul 220 überprüft den richtigen Betrieb des DMA-Moduls 212. Zum Beispiel kann das DMA-Diagnosemodul 220 das DMA-Modul 212 anweisen, Daten an einen spezifischen Ort in dem verriegelbaren Speicher 202 und/oder in dem Universalspeicher 204 zu schreiben. Dieser spezifische Ort kann daraufhin durch den Prozessor 200 gelesen werden, um zu überprüfen, dass das DMA-Modul 212 an die richtige Adresse schreibt. Der Betrieb des DMA-Diagnosemoduls 220 kann z. B. beim Hochfahren, in periodischen Intervallen oder in irgendeiner anderen durch den Prozessor 200 spezifizierten Zeit initiiert werden.
  • Die durch den Prozessor 200 in den verriegelbaren Speicher und in den Universalspeicher 202 und 204 geschriebenen Daten können durch ein Fehlerkorrekturcodemodul (ECC-Modul) 230 geschützt werden. Das ECC-Modul 230 kann zu von dem Prozessor 200 empfangenen Daten einen ECC-Code wie etwa eine Prüfsumme oder ein Paritätsbit hinzufügen. Außerdem kann das ECC-Modul 230 Daten von dem Prozessor 200 unter Verwendung eines ECC-Prozesses wie etwa einer Reed-Solomon-Codierung codieren. Wenn Daten zurückgelesen werden, kann das ECC-Modul 230 prüfen, dass keine Fehler eingeführt worden sind, und möglicherweise einige oder alle der detektierten Fehler korrigieren.
  • Das ECC-Modul 230 kann alle durch den Prozessor 200 geschriebenen Werte oder ausgewählte Werte wie etwa sicherheitskritische Variablen bearbeiten. Durch das ECC-Modul 230 bestimmte Prüfsummen oder andere Werte werden in den Universalspeicher 204 geschrieben. Dadurch, dass sie in den Universalspeicher geschrieben werden, kann der verriegelbare Speicher 202 wieder verriegelt werden, während die Prüfsumme noch berechnet wird. Dies minimiert die Zeitdauer, die der verriegelbare Speicher 202 entriegelt bleibt.
  • Variable wie etwa sicherheitskritische Variable können ebenfalls durch ein transponierendes Doppelspeichermodul 240 geschützt werden. Das transponierende Doppelspeichermodul 240 kann zwei Kopien jeder Variablen in den verriegelbaren Speicher 202 und/oder in den Universalspeicher 204 schreiben. Nur beispielhaft kann das transponierende Doppelspeichermodul 240 eine Kopie der Variablen in den verriegelbaren Speicher 202 und die andere Kopie in den Universalspeicher 204 schreiben.
  • Das Schreiben in den verriegelbaren Speicher 202 kann zunächst erfordern, dass ein Entriegelungsbefehl an die MMU 208 gesendet wird. Um zu verhindern, dass andere Routinen auf den verriegelbaren Speicher 202 zugreifen, während er entriegelt ist, können Unterbrechungen gesperrt werden, während der verriegelbare Speicher 202 entriegelt ist.
  • Das transponierende Doppelspeichermodul 240 kann eine Kopie einer Variablen an den Beginn eines Speicherblocks schreiben und kann eine weitere Kopie dieser selben Variablen an das Ende eines anderen Speicherblocks schreiben. Nur beispielhaft können die Kopien der Variablen völlig gleich sein oder Varianten voneinander sein. Nur beispielhaft können die zwei Kopien die Einer- oder Zweierkomplemente voneinander sein. Diese Kopien können als Doppelwerte oder Doppel voneinander bezeichnet werden.
  • In 2B ist eine beispielhafte Anordnung des verriegelbaren Speichers 202 gezeigt. Der für die erste Variable geschriebene Datenwert kann an den Ort 250-1 geschrieben werden, während das Doppel dieses Werts an den Ort 250-2 geschrieben werden kann. Zum Beispiel kann das Doppel das Einerkomplement oder das Zweierkomplement sein. Die Variable 2 kann an den Ort 250-3, benachbart zu der Variable 1, geschrieben werden, während das Doppel der Variablen 2 an den Ort 250-4, benachbart zu dem Doppel der Variablen 1, geschrieben werden kann.
  • Während eines Lesevorgangs überprüft das transponierende Doppelspeichermodul 240, dass der gespeicherte Wert und sein gespeichertes Doppel äquivalent sind. Wenn sie es nicht sind, kann der Prozessor 200 eine Abhilfemaßnahme ergreifen. Eine Abhilfemaßnahme kann ebenfalls ergriffen werden, wenn das ECC-Modul 230 einen Fehler identifiziert, selbst wenn dieser Fehler durch das ECC-Modul 230 korrigiert worden ist.
  • Die Abhilfemaßnahme kann z. B. die Verwendung eines Standardwerts für die Variable, die verfälscht worden zu sein scheint, enthalten. Außerdem kann die Abhilfemaßnahme das Einstellen eines Motorcodes oder Fehlercodes und das Leuchtenlassen einer Störungsanzeigelampe wie etwa einer Prüfe-Motor-Lampe enthalten. Außerdem kann die Abhilfemaßnahme den Versuch zur Neuberechnung der Variablen enthalten.
  • Einschränkendere Abhilfemaßnahmen können das Herunterfahren des Motors oder das Sperren der Drosselsteuerung, was ermöglichen kann, dass ein Drosselklappenwert in eine Standardstellung wie etwa in eine Höchstdrehzahlstellung im Leerlauf zurückkehrt, enthalten. Außerdem kann die Abhilfemaßnahme das Einstellen der Drosselklappe auf eine vorgegebene Leerlaufstellung enthalten, die kleiner als die Höchstdrehzahl im Leerlauf ist. Außerdem kann die Abhilfemaßnahme das Einstellen eines Maximalgrenzwerts für das Öffnen der Drosselklappe enthalten. Außerdem kann die Abhilfemaßnahme das Begrenzen der durch den Motor erzeugten Beschleunigung und/oder Leistung wie etwa durch Begrenzen der Drehmomentanforderungen auf einen Maximalwert enthalten. Falls ein Fehler bestehen bleibt oder wiederkehrt, kann der Prozessor 100 von einer weniger starken zu einer stärkeren Abhilfemaßnahme erhöhen.
  • In 3A-3B sind Funktionsblockschaltpläne weiterer beispielhafter Prozessorsysteme gemäß den Prinzipien der Offenbarung dargestellt, wobei das in 3A gezeigte Prozessorsystem kein Ausführungsbeispiel der Erfindung darstellt. In 3A ist die MMU 208 abwesend, sodass der verriegelbare Speicher innerhalb eines Speichermoduls 300 nicht definiert worden ist. Sicherheitskritische Variablen werden innerhalb eines Universalspeichers 302 weiter durch das ECC-Modul 230 und durch das transponierende Doppelspeichermodul 240 geschützt. Außerdem wird der Betrieb des DMA-Moduls 212 durch Nutzung des DMA-Diagnosemoduls 220 überprüft.
  • In 3B befindet sich eine Speichermanagementeinheit (MMU) 304 zwischen dem verriegelbaren Speicher und dem Universalspeicher 202 und 204 und dem DMA-Modul 212. Die MMU 304 kann dann den verriegelbaren Speicher 202 vor fehlerhaften Schreibvorgängen durch das DMA-Modul 212 schützen. In verschiedenen Implementierungen können versuchte Schreibvorgänge in den verriegelbaren Speicher 202 von dem DMA-Modul 212 durch die MMU 304 vollständig gesperrt werden. Alternativ können Schreibvorgänge in den verriegelbaren Speicher 202 zugelassen werden, wenn der verriegelbare Speicher 202 entriegelt ist.
  • Alternativ kann die MMU 304 einen Entriegelungsbefehl von dem DMA-Modul 212 erfordern, bevor sie Schreibvorgänge in den verriegelbaren Speicher 202 zulässt. In verschiedenen Implementierungen kann eine reservierte Adresse als ein Signal zu der MMU 304, dass ein zulässiger Schreibvorgang in den verriegelbaren Speicher 202 erwünscht ist, verwendet werden. Zum Beispiel kann eines der Peripheriegeräte 214, das eine zulässige Notwendigkeit zum Schreiben in den verriegelbaren Speicher 202 besitzt, zunächst einen Scheinzugriff auf die reservierte Adresse ausführen. Die MMU 304 kann daraufhin den nachfolgenden Schreibvorgang in den verriegelbaren Speicher 202 zulassen.
  • In 4 zeigt ein Ablaufplan den beispielhaften Betrieb eines Prozessorsystems wie etwa des in 2A gezeigten. Die Steuerung beginnt in Schritt 402, in dem ein verriegelbarer Bereich des Speichers verriegelt wird. In verschiedenen Implementierungen kann der verriegelbare Bereich des Speichers standardmäßig verriegelt sein. Die Steuerung wird in Schritt 404 fortgesetzt, in dem DMA-Diagnosen ausgeführt werden.
  • Die DMA-Diagnosen können einmal pro Schlüsselzyklus ausgeführt werden. Zum Beispiel kann eine DMA-Diagnose dadurch ausgeführt werden, dass eine DMA-Übertragung eines bekannten Werts an einen vorgegebenen Ort des Speichers angewiesen wird. Der vorgegebene Ort kann sich innerhalb des verriegelbaren Bereichs oder eines Universalbereichs des Speichers befinden. Alternativ können Übertragungen sowohl in den verriegelbaren Abschnitt als auch in den Universalabschnitt initiiert werden.
  • Daraufhin kann der vorgegebene Ort gelesen und mit dem bekannten Wert verglichen werden, um die Integrität des DMA-Prozesses zu überprüfen. Eine Störung während der DMA-Übertragung oder ein Fehler beim Vergleich des gelesenen Werts mit dem bekannten Wert kann dazu führen, dass ein Fehlercode wie etwa ein Code P0606 eingestellt wird. Nachdem der Fehlercode eingestellt worden ist, kann eine weitere Abhilfemaßnahme ausgeführt werden.
  • Die Steuerung wird in Schritt 406 fortgesetzt, in dem die Steuerung bestimmt, ob ohne die richtige Berechtigung ein Schreibvorgang auf den verriegelbaren Bereich angefordert worden ist. Wenn das der Fall ist, geht die Steuerung zu Schritt 408 über; andernfalls geht die Steuerung zu Schritt 410 über. Die richtige Berechtigung kann dadurch bestimmt werden, ob der Schreibvorgang durch eine Standardschreibroutine oder durch eine verriegelbare Schreibroutine initiiert wurde. Die Standardschreibroutine hätte nicht die Berechtigung zum Ändern des verriegelbaren Speichers.
  • In Schritt 408 kann die Zieladresse des Schreibvorgangs zu Diagnosezwecken aufgezeichnet werden. Da der Schreibvorgang nicht berechtigt war, werden keine Daten an die Zieladresse geschrieben. Die Steuerung wird in Schritt 412 fortgesetzt, in dem ein Zähler inkrementiert wird. Beim Motorstart kann der Zähler auf null zurückgesetzt werden. Daraufhin wird die Steuerung in Schritt 414 fortgesetzt, in dem die Steuerung bestimmt, ob der Zähler größer als ein Schwellenwert ist. Wenn das der Fall ist, wird die Steuerung an Schritt 416 übertragen; andernfalls kehrt die Steuerung zu Schritt 406 zurück.
  • In Schritt 416 wird ein Fehlercode eingestellt. Zum Beispiel kann ein Code P0604 eingestellt werden. Wenn ein Fehlercode eingestellt wird, kann eine Störungsanzeigelampe leuchtengelassen werden. Außerdem können andere Abhilfemaßnahmen ausgeführt werden. In verschiedenen Implementierungen kann die ausgeführte Abhilfemaßnahme auf dem Wert des Zählers beruhen. Während der Wert des Zählers zunimmt, kann die Stärke der Abhilfemaßnahme zunehmen.
  • In Schritt 410 bestimmt die Steuerung, ob ein berechtigter Schreibvorgang in einem verriegelbaren Bereich erwünscht ist. Wenn das der Fall ist, wird die Steuerung an Schritt 418 übertragen; andernfalls wird die Steuerung an Schritt 420 übertragen. In Schritt 418 liest die Steuerung die Variable aus dem verriegelbaren Bereich des Speichers. Die Steuerung wird in Schritt 422 fortgesetzt, in dem die Steuerung die verriegelte Variable mit einer Doppelspeichervariablen und/oder mit einer Prüfsumme überprüft. In verschiedenen Implementierungen können entweder Doppelspeichervariablen oder Prüfsummen weggelassen sein. Eine einzelne Prüfsumme kann sowohl die verriegelte Variable als auch die Doppelspeichervariable erfassen. Alternativ können die verriegelte Variable und die Doppelspeichervariable durch verschiedene Prüfsummen erfasst werden.
  • Die Doppelspeichervariable kann sich in dem verriegelbaren Bereich des Speichers oder dem Universalspeicher befinden. Die Prüfsumme befindet sich im Universalspeicher. Die Prüfsumme kann einen Abschnitt des verriegelbaren Speichers erfassen, der die verriegelte Variable und andere verriegelte Variablen enthält. Es kann ein Prüfsummenwert berechnet und mit der gespeicherten Prüfsumme verglichen werden.
  • Eine Diskrepanz zwischen der berechneten Prüfsumme und der gespeicherten Prüfsumme kann angeben, dass die verriegelte Variable, die Prüfsumme oder die andere durch die Prüfsumme erfasste Variable verfälscht worden ist. Außerdem kann die Prüfsummenberechnung fehlerhaft sein. Falls die verriegelte Variable unvereinbar mit der Doppelspeichervariable ist oder der Prüfsummenvergleich fehlschlägt, schlägt der Schreibvorgang fehl und wird die Steuerung an Schritt 424 übertragen. Alternativ (nicht gezeigt) kann der Schreibvorgang weiter ausgeführt werden, wonach die Steuerung an den Schritt 424 übertragen wird.
  • Falls die verriegelte Variable mit der Doppelspeichervariable vereinbar und die Prüfsumme richtig ist, wird die Steuerung an Schritt 426 übertragen. In Schritt 426 kann der in die verriegelte Variable zu schreibende Wert ratenbegrenzt und/oder größenbegrenzt werden. Zum Beispiel kann jeder Änderung des Werts der verriegelten Variablen eine Obergrenze auferlegt werden. Außerdem kann ein Maximalwert der verriegelten Variablen definiert werden.
  • Die Steuerung wird in Schritt 428 fortgesetzt, in dem die Steuerung Unterbrechungen sperrt und den verriegelbaren Bereich des Speichers entriegelt. Während der verriegelbare Speicher entriegelt ist, wodurch der verriegelbare Speicher für andere Funktionen freiliegt, werden die Unterbrechungen gesperrt, sodass Unterbrechungen nicht bedient werden können. Die Steuerung wird in Schritt 430 fortgesetzt, in dem der Schreibwert, der in Schritt 426 begrenzt worden sein kann, in der verriegelten Variablen gespeichert wird.
  • Falls die Doppelspeichervariable im verriegelbaren Speicher gespeichert wird, kann die Doppelspeichervariable ebenfalls aktualisiert werden. In verschiedenen Implementierungen kann die Doppelspeichervariable das Einerkomplement der verriegelten Variablen sein. Die Steuerung wird in Schritt 432 fortgesetzt, in dem die Steuerung den verriegelbaren Speicher verriegelt und Unterbrechungen wieder freigibt.
  • Die Steuerung wird in Schritt 434 fortgesetzt, in dem die Steuerung die Prüfsumme aktualisiert. In verschiedenen Implementierungen kann die Prüfsumme durch Inkrementieren der früheren Prüfsumme auf der Grundlage des gespeicherten Schreibwerts aktualisiert werden. Alternativ kann die Prüfsumme aus allen Variablen innerhalb des Abschnitts des Speichers, den die Prüfsumme erfasst, neu berechnet werden. Daraufhin kehrt die Steuerung zu Schritt 406 zurück.
  • In Schritt 420 bestimmt die Steuerung, ob ein zugelassener Lesevorgang von einem verriegelbaren Speicherbereich angefordert wird. Wenn das der Fall ist, wird die Steuerung an Schritt 450 übertragen, andernfalls wird die Steuerung an Schritt 452 übertragen. In verschiedenen Implementierungen kann ein Lesevorgang aus dem verriegelten Speicher über dieselbe Routine wie ein Lesevorgang in irgendeinen anderen Bereich des Speichers initiiert werden. Ferner kann zugelassen werden, dass irgendein Prozess Werte aus dem verriegelbaren Bereich des Speichers liest.
  • In Schritt 450 wird die durch die Leseanforderung identifizierte verriegelte Variable gelesen. Die Steuerung wird in Schritt 454 fortgesetzt, in dem die Steuerung überprüft, dass die verriegelte Variable mit der gespeicherten Doppelvariablen und/oder mit der Prüfsumme vereinbar ist. Wenn das der Fall ist, wird die Steuerung an Schritt 456 übertragen; andernfalls wird die Steuerung an Schritt 458 übertragen. In Schritt 456 gibt die Steuerung den Wert von der verriegelten Variablen zurück und wird in Schritt 452 fortgesetzt.
  • In Schritt 458 gibt die Steuerung einen Standardwert zurück. Dieser Standardwert kann im verriegelbaren Speicher oder im Universalspeicher gespeichert werden. Alternativ kann der Standardwert durch die Funktion geliefert werden, die den Lesevorgang aus dem verriegelbaren Bereich anfordert. Auf diese Weise spezifiziert die Funktion den Wert, den sie verwenden wird, wenn der Schreibvorgang fehlschlägt.
  • Daraufhin wird die Steuerung in Schritt 424 fortgesetzt. Falls der Lese- oder Schreibausfall in Schritt 424 das Ergebnis eines Prüfsummenfehlers ist, wird die Steuerung an Schritt 470 übertragen; andernfalls wird die Steuerung an Schritt 472 übertragen. In Schritt 470 berechnet die Steuerung eine Prüfsumme neu und wird in Schritt 474 fortgesetzt. In Schritt 474 vergleicht die Steuerung die neu berechnete Prüfsumme mit der gespeicherten Prüfsumme. Falls sie gleich sind, wird die Steuerung an Schritt 472 übertragen; andernfalls wird die Steuerung an Schritt 476 übertragen. Falls die neue Prüfsumme gleich der gespeicherten Prüfsumme ist, wurde die in Schritt 422 oder 454 berechnete Prüfsumme offensichtlich falsch berechnet.
  • In Schritt 476 stimmen sowohl die neu berechnete Prüfsumme als auch die berechnete Prüfsumme aus Schritt 422 oder 454 nicht mit der gespeicherten Prüfsumme überein. Somit kann die gespeicherte Prüfsumme ersetzt werden. In verschiedenen Implementierungen kann die Prüfsumme ersetzt werden, wenn die neu berechnete Prüfsumme an die berechnete Prüfsumme angepasst ist. Falls diese Prüfsummen nicht gleich sind, kann eine Abhilfemaßnahme ausgeführt werden. Daraufhin wird die Steuerung in Schritt 472 fortgesetzt.
  • In Schritt 472 erhöht die Steuerung den Wert eines Rückwärtszählzeitgebers. Der Rückwärtszählzeitgeber kann periodisch abnehmen. Somit kann der Rückwärtszählzeitgeber null erreichen, falls der Rückwärtszählzeitgeber für eine Zeitdauer nicht erhöht worden ist. Falls der Rückwärtszählzeitgeber häufiger erhöht wird, steigt der Wert in dem Rückwärtszählzeitgeber dagegen an. Die Steuerung wird in Schritt 478 fortgesetzt, in dem die Steuerung bestimmt, ob der Wert des Rückwärtszählzeitgebers größer als ein Schwellenwert ist. Wenn das der Fall ist, wird die Steuerung an Schritt 480 übertragen; andernfalls kehrt die Steuerung zu Schritt 406 zurück. In Schritt 480 führt die Steuerung eine Abhilfemaßnahme aus. In verschiedenen Implementierungen kann die Abhilfemaßnahme das Abschalten des Motors sein, wonach die Steuerung endet.
  • In Schritt 452 bestimmt die Steuerung, ob eine Prüfung des verriegelbaren Bereichs durchgeführt werden sollte. Wenn das der Fall ist, wird die Steuerung an Schritt 482 übertragen; andernfalls kehrt die Steuerung zu Schritt 406 zurück. Nur beispielhaft kann die Prüfung in periodischen Intervallen ausgeführt werden. In Schritt 482 versucht die Steuerung, in einen Bereich im verriegelbaren Speicher zu schreiben. In Schritt 484 wird die Steuerung fortgesetzt, wobei die Steuerung bestimmt, ob der versuchte Schreibvorgang als unberechtigt detektiert wurde. Wenn das der Fall ist, kehrt die Steuerung zu Schritt 406 zurück; andernfalls wird die Steuerung an Schritt 486 übertragen. In Schritt 486 kann ein Fehlercode eingestellt werden. Außerdem kann eine andere Abhilfemaßnahme ausgeführt werden. Daraufhin kehrt die Steuerung zu Schritt 406 zurück.
  • Bezugszeichenliste
  • 402
    Verriegle verriegelbaren Speicher
    404
    Führe DMA-Diagnose aus
    406
    Versuchter Schreibvorgang in verriegelbaren Bereich detektiert?
    410
    Schreibvorgang in verriegelbaren Bereich?
    418, 450
    Lies verriegelte Variable
    422, 454
    Überprüfe verriegelte Variable mit Doppelspeichervariable und/oder Prüfsumme
    426
    Ratenbegrenze und/oder größenbegrenze wahlweise Schreibwert
    428
    Sperre Unterbrechungen und entriegle verriegelbaren Speicher
    430
    Speichere Schreibwert in verriegelter Variablen und Doppelspeichervariablen
    432
    Verriegle verriegelbaren Speicher und gib Unterbrechungen frei
    434
    Aktualisiere Prüfsumme
    408
    Zeichne Zieladresse auf
    412
    Inkrementierte Zähler
    414
    Zähler > Schwellenwert?
    416
    Stelle Fehlercode ein
    420
    Lesevorgang aus verriegelbarem Bereich?
    456
    Gib Wert der verriegelten Variablen zurück
    458
    Gib Standardwert zurück
    424
    Prüfsummenfehler?
    470
    Berechne Prüfsumme neu
    474
    Neue Prüfsumme = Gespeicherte Prüfsumme?
    476
    Ersetze Prüfsumme
    452
    Prüfung durchführen?
    482
    Versuche Schreibvorgang in verriegelbaren Speicher
    484
    Schreibvorgang detektiert?
    486
    Stelle Fehlercode ein
    472
    Erhöhe Rückwärtszählzeitgeber
    478
    Rückwärtszählzeitgeber > Schwellenwert?
    480
    Schalte Motor ab

Claims (10)

  1. Verfahren, das umfasst: Speichern von Daten für einen ersten Satz von Adressen in einem Universalspeicher; Speichern von Daten für einen zweiten Satz von Adressen in einem verriegelbaren Speicher; wahlweises Verriegeln des zweiten Satzes von Adressen durch Verhindern von Schreibvorgängen in den verriegelbaren Speicher; und Entriegeln des verriegelbaren Speichers vor Anfordern eines Schreibvorgangs an eine des zweiten Satzes von Adressen, wobei für Daten, die in dem verriegelbaren Speicher gespeichert werden, Fehlerkorrekturcodes berechnet werden, die in dem Universalspeicher gespeichert werden, und wobei die Fehlerkorrekturcodes fertiggestellt werden, nachdem die Daten in dem verriegelbaren Speicher gespeichert wurden und der verriegelbare Speicher wieder verriegelt wurde.
  2. Verfahren nach Anspruch 1, das ferner das wahlweise Ausführen einer Abhilfemaßnahme umfasst, wenn ein versuchter Schreibvorgang in dem verriegelbaren Speicher detektiert wird, während der zweite Satz von Adressen verriegelt ist.
  3. Verfahren nach Anspruch 2, bei dem die Abhilfemaßnahme das Initiieren einer Motorabschaltung und/oder das Begrenzen eines Drehmoments des Motors und/oder das Begrenzen einer Beschleunigung eines Fahrzeugs und/oder das Begrenzen einer Drosselklappenstellung des Motors und/oder das Einstellen eines Fehlercodes enthält.
  4. Verfahren nach Anspruch 2, das ferner umfasst: Anfordern eines Probeschreibvorgangs an den zweiten Satz von Adressen, während der zweite Satz von Adressen verriegelt ist; und Ausführen einer Abhilfemaßnahme, wenn der Probeschreibvorgang nicht detektiert wird.
  5. Verfahren nach Anspruch 1, das ferner umfasst: wahlweises Codieren zu schreibender Daten; Schreiben der codierten Daten; Lesen der codierten Daten; und Prüfen der codierten Daten, die gelesen wurden, auf Fehler.
  6. Verfahren nach Anspruch 1, das ferner umfasst: Speichern einer ersten Version eines Werts an einem ersten Ende eines ersten Speicherbereichs des zweiten Satzes von Adressen; und Speichern einer zweiten Version des Werts an einem ersten Ende eines zweiten Speicherbereichs des zweiten Satzes von Adressen.
  7. Verfahren nach Anspruch 6, bei dem die erste und die zweite Version Kopien voneinander sind oder Einerkomplemente voneinander sind oder Zweierkomplemente voneinander sind.
  8. Verfahren nach Anspruch 6, bei dem der erste und der zweite Speicherbereich benachbart sind und die ersten Enden des ersten und des zweiten Speicherbereichs an distalen Enden liegen.
  9. Verfahren nach Anspruch 1, das ferner umfasst: Direktzugriffe auf den ersten und auf den zweiten Satz von Adressen über einen Direktspeicherzugriff (DMA); Anweisen einer Übertragung eines vorgegebenen Werts an eine ausgewählte Adresse des ersten oder des zweiten Satzes von Adressen; Lesen des ausgewählten Werts; und Vergleichen des gelesenen Werts mit dem vorgegebenen Wert.
  10. Verfahren nach Anspruch 1, das ferner umfasst: Sperren von Unterbrechungen, während der zweite Satz von Adressen entriegelt ist; und Verriegeln des zweiten Satzes von Adressen nach Anfordern des Schreibvorgangs.
DE102009012142.0A 2008-03-12 2009-03-06 Verfahren zur Sicherung sicherheitskritischer Variablen Active DE102009012142B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US3590108P 2008-03-12 2008-03-12
US61/035,901 2008-03-12
US12/259,587 US8117412B2 (en) 2008-03-12 2008-10-28 Securing safety-critical variables
US12/259,587 2008-10-28

Publications (2)

Publication Number Publication Date
DE102009012142A1 DE102009012142A1 (de) 2009-10-08
DE102009012142B4 true DE102009012142B4 (de) 2020-02-13

Family

ID=41051656

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009012142.0A Active DE102009012142B4 (de) 2008-03-12 2009-03-06 Verfahren zur Sicherung sicherheitskritischer Variablen

Country Status (1)

Country Link
DE (1) DE102009012142B4 (de)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4473878A (en) * 1981-11-23 1984-09-25 Motorola, Inc. Memory management unit
DE102004051950A1 (de) * 2004-10-25 2006-04-27 Robert Bosch Gmbh Verfahren und Vorrichtung zur Taktumschaltung bei einem Mehrprozessorsystem
DE102005034572A1 (de) * 2005-07-22 2007-01-25 Continental Teves Ag & Co. Ohg Verfahren zur Fehleranalyse bei der Speicherung von Daten in elektronischen Steuergeräten
DE102005045399A1 (de) * 2005-09-23 2007-03-29 Robert Bosch Gmbh Datenverarbeitungssystem mit variabler Taktrate

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4473878A (en) * 1981-11-23 1984-09-25 Motorola, Inc. Memory management unit
DE102004051950A1 (de) * 2004-10-25 2006-04-27 Robert Bosch Gmbh Verfahren und Vorrichtung zur Taktumschaltung bei einem Mehrprozessorsystem
DE102005034572A1 (de) * 2005-07-22 2007-01-25 Continental Teves Ag & Co. Ohg Verfahren zur Fehleranalyse bei der Speicherung von Daten in elektronischen Steuergeräten
DE102005045399A1 (de) * 2005-09-23 2007-03-29 Robert Bosch Gmbh Datenverarbeitungssystem mit variabler Taktrate

Also Published As

Publication number Publication date
DE102009012142A1 (de) 2009-10-08

Similar Documents

Publication Publication Date Title
DE102007063638B4 (de) Elektroniksteuerung
EP2318920B1 (de) Steuergerät für ein fahrzeug und verfahren für eine datenaktualisierung für ein steuergerät für ein fahrzeug
DE102011075776A1 (de) Verfahren und System zum Aktualisieren eines gemeinsam genutzten Speichers
EP2907072B1 (de) Verfahren zur steuerung eines getrennten ablaufs von verknüpften programmblöcken und steuergerät
DE112016005096B4 (de) Elektronische Steuervorrichtung und elektronisches Steuerverfahren
DE102014222860A1 (de) Elektronische Fahrzeugregelungseinheit
WO2019072840A1 (de) Vorrichtung zur absicherung von diagnosebefehlen an ein steuergerät und entsprechendes kraftfahrzeug
DE112016002785T5 (de) Elektronische Steuereinheiten für Fahrzeuge
EP1804144A1 (de) Überprüfung des Steuerprogramms eines Steuergerätes für eine Maschine
EP1955164A1 (de) Programmgesteuerte einheit und verfahren zum betreiben derselbigen
US8117412B2 (en) Securing safety-critical variables
DE102013221098B4 (de) Fahrzeugsteuereinheit
DE102009012142B4 (de) Verfahren zur Sicherung sicherheitskritischer Variablen
EP1913478A1 (de) Mikroprozessorsystem zur steuerung bzw. regelung von zumindest zum teil sicherheitskritischen prozessen
DE102016200130B4 (de) Elektronische Steuervorrichtung
DE102007010264B4 (de) Verfahren zum Betreiben eines ersten und eines zweiten Steuergeräts und Geräteanordnung mit dem ersten und dem zweiten Steuergerät
DE102006036384A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen
DE10311250B4 (de) Mikroprozessorsystem und Verfahren zum Schützen des Systems vor dem Austausch von Bausteinen
WO2022042950A1 (de) VORRICHTUNG ZUR ERFASSUNG UND VERARBEITUNG EINER MESSGRÖßE EINES SENSORS IN EINEM KRAFTFAHRZEUG
EP1293858B1 (de) Verfahren zum Schutz eines Mikrorechner-Systems gegen Manipulation seines Programms
DE102017208872A1 (de) Elektronische Steuereinheit
DE102018219700B4 (de) Steuervorrichtung
DE112020007129T5 (de) Informations-verarbeitungsvorrichtung und informations-verarbeitungsverfahren
EP3876123B1 (de) Anordnung und betriebsverfahren für einen sicheren hochfahrablauf einer elektronischen einrichtung
DE102022128183B3 (de) Verfahren zum Starten einer Datenverarbeitungseinrichtung, Datenverarbeitungseinrichtung und Kraftfahrzeug

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8180 Miscellaneous part 1

Free format text: PFANDRECHT

8127 New person/name/address of the applicant

Owner name: GM GLOBAL TECHNOLOGY OPERATIONS LLC , ( N. D. , US

R081 Change of applicant/patentee

Owner name: GM GLOBAL TECHNOLOGY OPERATIONS LLC (N. D. GES, US

Free format text: FORMER OWNER: GM GLOBAL TECHNOLOGY OPERATIONS, INC., DETROIT, MICH., US

Effective date: 20110323

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final