-
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