-
Die
Erfindung betrifft ein Verfahren und eine Vorrichtung zum sicheren
Speichern von Daten, insbesondere in wiederbeschreibbare Speicher.
-
Bei
Speichern kann es sich um volatile oder nichtvolatile Speicher handeln,
wie zum Beispiel RAM, SRAM, EPROM, EEPROM, etc.
-
Bei
solchen Speichern kann ein Anwender in der Regel nicht feststellen,
ob die in einem Speicher eingeschriebenen Daten gültig sind
oder nicht. Das heißt,
wenn bei einem Schreibvorgang der Daten in den Speicher Fehler auftreten – zum Beispiel
durch Spannungseinbrüche,
wenn der Speicher in einer rauen Umgebung betrieben wird, oder durch
andere äußere Einflüsse – können die
im Speicher vorliegenden Daten ungültig bzw. fehlerhaft sein.
Insbesondere bei wiederbeschreibbaren nichtvolatilen Speichern,
zum Beispiel EEPROMs oder Flash-Speicher, bereitet dies ein Problem,
weil Daten nur in Blöcken – von zum
Beispiel typischerweise 128 Bytes – in Speicherbereiche geschrieben
bzw. gelöscht
werden können.
-
EEPROMs
werden beispielsweise im Automobilbereich eingesetzt, um Kilometerstände zu speichern.
Dabei ist es selbstverständlich
wichtig, den korrekten Kilometerstand abzuspeichern, wobei jedoch
Störungen
(Spannungsspitzen oder Spannungseinbrüche im Bordnetz zum Beispiel
beim Anlassen des Fahrzeugs oder Hochlastverbrauch bei schwacher
Batterie) auftreten können.
Um dennoch weitestgehend zuverlässige
Daten (zum Beispiel den Kilometerstand) zu speichern, wird das Speichern zeitlich
nacheinander mehrfach in verschiedene Speicherbereiche eines Speichers
durchgeführt. Zum
Anzeigen der Daten – in
diesem Fall des Kilometerstandes – werden die mehrfach abgespeicherten
Daten ausgelesen und anhand einer Mehrheitsent scheidung festgestellt,
welche Daten die richtig abgespeicherten Daten sind. Diese (richtigen)
Daten werden dann angezeigt.
-
In
der 1 ist eine bekannte
Speicherarchitektur nach dem Stand der Technik dargestellt. Die zum
Abspeichern vorliegenden Daten I sind über Datenleitungen oder einen
Datenbus D0 an eine Steuereinheit S gekoppelt,
die nacheinander über
die jeweiligen Datenleitungen D1, D2, D3 die Daten in die Speicherbereiche
M1, M2, M3 schreibt. Falls bei einer dieser Schreibzugriffe ein
Spannungseinbruch vorliegt, sind die in dem betroffenen Speicherbereich – zum Beispiel
M3 – vorliegenden
Daten fehlerhaft. Wenn nun die abgespeicherten Daten ausgegeben werden
sollen, liest die Steuereinheit S nacheinander die abgespeicherten
Daten in den drei Speicherbereichen aus, vergleicht die vorliegenden
Daten und gibt die der Mehrheit entsprechenden (in diesem Fall die
gleichen in M1 und M2 vorliegenden Daten) über eine I/O-Schnittstelle
aus. Durch das mehrfache Abspeichern, um eine Mehrheitsentscheidung
treffen zu können,
muss allerdings mindestens die dreifache Speichergröße zur Speicherung
einer Informationsmenge bzw. Datenmenge bestimmten Unfangs vorgehalten
werden. Die entsprechenden Speicherchips sind daher teuer.
-
Der
vorliegenden Erfindung liegt nun die Aufgabe zugrunde, ein einfaches
Verfahren zu schaffen, mit dem Daten bei geringem Speicherplatzbedarf
sicher abgespeichert werden. Insbesondere soll das Verfahren eine
Möglichkeit
liefern, die Gültigkeit
von in einem nichtvolatilen wiederbeschreibbaren Speicher abgelegten
Daten zu bestimmen.
-
Erfindungsgemäß wird zumindest
eine dieser Aufgaben durch ein im Patentanspruch 1 angegebenes Verfahren
gelöst.
Ferner wird die Aufgabe durch eine Speichervorrichtung mit den Merkmalen des
Patentanspruchs 16 gelöst.
-
Ein
wesentlicher Gedanke der Erfindung besteht darin, dass neben ersten
Speicherbereichen zum Speichern der Daten bzw. der Nutzdaten zweite Speicherbereiche
vorgesehen sind, in die Statusinformationen eingeschrieben werden,
die den Stand des Einschreibens oder Löschens der Nutzdaten in die
ersten Speicherbereiche charakterisieren. Diese Statusinformationen
sollen mindestens die Zustände „vollständig programmiert", „unvollständig programmiert", „vollständig gelöscht" und „unvollständig gelöscht" charakterisieren.
Anhand der Statusinformationen kann somit immer die Gültigkeit
der gespeicherten Nutzdaten festgestellt werden.
-
Da
die Statusinformationen gegenüber
den Nutzdaten einen geringeren Speicherbedarf aufweisen, wird durch
das erfindungsgemäße Verfahren
gegenüber
dem Stand der Technik Speicherplatz gespart. Ein weiterer Vorteil
des erfindungsgemäßen Verfahrens
besteht darin, dass gegenüber
redundantem Speichern nach dem Stand der Technik weniger Speicherschreib-
und Löschzugriffe
benötigt
werden und so das Verfahren schneller ist.
-
Das
erfindungsgemäße Verfahren
zum sicheren Speichern von Daten weist im Wesentlichen die folgenden
Verfahrensschritte auf:
- (a) Bereitstellen eines
Speichers, der einen ersten Speicherbereich zum Speichern von Daten
und mindestens einen zweiten Speicherbereich aufweist, zum Speichern
von Statusinformationen, die dem ersten Speicherbereich zugeordnet
sind,
- (b) Auslesen der Statusinformationen aus den zweiten Speicherbereichen,
- (c) Ändern
der Statusinformationen auf „unvollständig gelöscht", falls die Statusinformationen den
Zustand „vollständig programmiert" charakterisieren,
- (d) Löschen
des ersten Speicherbereichs, falls die Statusinformationen den Zustand „unvollständig programmiert" oder „unvollständig gelöscht" charakterisieren,
- (e) Ändern
der Statusinformationen auf „vollständig gelöscht", falls die Statusinformationen
einen anderen Zustand als „vollständig gelöscht" charakterisieren,
- (f) Ändern
der Statusinformationen auf „unvollständig programmiert",
- (g) Einschreiben der Daten in den gelöschten ersten Speicherbereich,
- (h) Ändern
der Statusinformationen auf „vollständig programmiert".
-
Ferner
weist die erfindungsgemäße Vorrichtung
zum Speichern von Daten, insbesondere zur Durchführung des erfindungsgemäßen Verfahrens, im
Wesentlichen auf:
- (a) einen ersten Speicherbereich
zum Speichern der Daten,
- (b) mindestens einen zweiten Speicherbereich zum Speichern von
Statusinformationen,
- (c) eine Steuereinheit, die über
erste Datenleitungen zum Schreiben und Löschen von Daten mit dem ersten
Speicherbereich gekoppelt ist, die über zweite Datenleitungen zum
Schreiben und Löschen
von Statusinformationen mit den zweiten Speicherbereichen gekoppelt
ist und die Anschlüsse
zur Annahme und Ausgabe von Daten aufweist, wobei die Steuereinheit
bei jedem Schreibzugriff und/oder bei jedem Löschzugriff auf die ersten Speicherbereiche
Statusinformationen in die zweiten Speicherbereiche schreibt.
-
Weitere
vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind
Gegenstand der Unteransprüche
sowie der Beschreibung unter Bezugnahme auf die Zeichnungen.
-
Gemäß einer
vorteilhaften Weiterbildung der Erfindung umfasst das Verfahren
nach dem Schritt des Auslesens der Statusinformationen ferner den Schritt „Erzeugen
einer Fehlermeldung",
falls die Statusinformationen einen anderen Zustand als „vollständig programmiert", „unvollständig programmiert", „vollständig gelöscht" oder „unvollständig gelöscht" charakterisieren.
Dadurch kann eine externe Fehleranalyse durchgeführt werden.
-
Gemäß einer
weiteren vorteilhaften Weiterbildung ist mindestens ein Bit der
Statusinformationen einzeln lösch-
oder schreibbar. Dies hat den Vorteil, dass für die Zustände Kodierungen realisierbar sind,
bei denen zum Ändern
von Zuständen
nur ein Schreib- oder Löschvorgang
eines einzelnen Bits notwendig ist.
-
Gemäß einer
weiteren bevorzugten Weiterbildung der Erfindung sind die Statusinformationen derart
kodiert, dass in den Verfahrensschritten zum Ändern der Statusinformation
nur jeweils eines der Bits der Statusinformation entweder geschrieben oder
gelöscht
wird. Dies hat insbesondere den Vorteil, dass im Falle einer geeigneten
Zwei-Bit-Kodierung bei einem Übergang
zwischen den Zuständen „vollständig programmiert", „unvollständig programmiert", „vollständig gelöscht" und „unvollständig gelöscht" nur eines der beiden
Status-Bits gelöscht oder
geschrieben werden muss. Durch eine derartige Weiterbildung wird
für die
Statusinformationen minimaler Speicherplatz benötigt. Außerdem ist der Rechen- bzw. Steueraufwand
sehr gering.
-
Gemäß einer
weiteren vorteilhaften Weiterbildung charakterisieren die Statusinformationen
neben den vier bereits Vorgenannten ferner mindestens einen der
folgenden Zwischenzustän de: „vollständig programmiert – unvollständig gelöscht", „unvollständig gelöscht – vollständig gelöscht", „vollständig gelöscht – unvollständig programmiert", „unvollständig programmiert – vollständig gelöscht" und „unvollständig programmiert – vollständig programmiert". Es ist darüber hinaus
vorteilhaft, die Kodierung der Statusinformation derart zu gestalten,
dass alle Änderungen
zwischen Zuständen
und/oder Zwischenzuständen
nur durch das Löschen
oder Schreiben eines einzelnen Bits der Statusinformationen geschieht.
-
Gemäß einer
weiteren vorteilhaften Weiterbildung der Erfindung ist mindestens
einer der Speicherbereiche unabhängig
beschreibbar und/oder löschbar.
Ferner ist es dann vorteilhaft, die Statusinformationen so zu kodieren,
dass alle Änderungen
zwischen Zuständen
und/oder Zwischenzuständen
nur durch das Löschen
oder Schreiben eines der zweiten Speicherbereiche, in denen die
Statusinformationen gespeichert sind, geschieht. Dies hat den Vorteil,
dass Speicherbereiche unter Umständen – zum Beispiel
von einem Byte Größe – einfacher
anzusteuern sind.
-
Gemäß noch einer
weiteren bevorzugten Weiterbildung der vorliegenden Erfindung weisen
die Statusinformationen mindestens ein vorbestimmtes Bit auf, das
anzeigt, ob eine Störung
bei irgendeinem der Schreib-, Lösch-
oder Lesevorgänge
aufgetreten ist. Wenn dieses vorbestimmte Bit gesetzt ist, wird eine
Fehlermeldung erzeugt. Anhand der Statusinformationen lässt sich
dann eine Fehlerbehandlung durchführen.
-
Gemäß einer
anderen vorteilhaften Weiterbildung der erfindungsgemäßen Speichervorrichtung ist
die Steuereinheit abschaltbar und schreibt oder ändert dann keine Statusinformationen
in die zweiten Speicherbereiche 3-1, ... 3-N bei
Schreib- oder Löschzugriffen
auf die ersten Speicherbereiche. Dies hat den Vorteil, dass der
Anwender bei Daten, die wenig Sicherheit beim Speichern erfordern,
Speicherzugriffe einsparen kann und so das Abspeichern schneller
ist.
-
Ausführungsbeispiele
der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden
Beschreibung näher
erläutert.
In den Zeichnungen zeigen:
-
1 ein Blockschaltbild einer
bekannten Speichervorrichtung;
-
2 ein Blockschaltbild eines
Ausführungsbeispiels
einer erfindungsgemäßen Speichervorrichtung;
-
3 ein Zustandsdiagramm zur
Erläuterung
einer Kodierung von Statusinformationen nach einem Ausführungsbeispiel
der Erfindung;
-
4 ein Ablaufdiagramm zur
Erläuterung des
erfindungsgemäßen Verfahrens.
-
Die 2 zeigt den prinzipiellen
Aufbau einer Vorrichtung zur sicheren Speicherung von Daten 1 mit
einem ersten Speicherbereich 2, zweiten Speicherbereichen 3-1, 3-2,
... 3-N und einer Steuereinheit 4. Die Steuereinheit 4 ist über erste
Datenleitungen 5 zum Schreiben und Löschen von Daten mit dem ersten
Speicherbereich 2 gekoppelt. Über zweite Datenleitungen 6-1, 6-2,
... 6-N ist die Steuereinheit 4 mit den zweiten
Speicherbereichen 3-1, 3-2, ... 3-N gekoppelt.
Die Speichervorrichtung 1 weist Anschlüsse 7 zur Annahme
und Ausgabe von Daten auf und hat einen I/O-Port 9 zur
Annahme und Ausgabe von Steuer- bzw. Kontrollinformationen und zur
Ausgabe von Fehlermeldungen. Liegen Daten 8 zum Abspeichern
vor, liest die Steuereinheit 4 zunächst die in den Speicherbereichen 3-1, 3-2,
... 3-N gespeicherten Statusinformationen über die
Datenleitungen 6-1, 6-2, ... 6-N und ändert diese
bevor sie den Speicherbereich 2 löscht und dann mit den Daten 8 beschreibt.
Anschließend ändert die
Steuereinheit 4 die Statusinformationen in den Speicherbereichen 3-1, 3-2,
... 3-N entsprechend einer vorgegebenen Kodierung.
-
Im
folgenden wird der erfindungsgemäße Verfahrensablauf
anhand einer bevorzugten Zwei-Bit-Kodierung der Statusinformationen
erläutert.
Die 3 zeigt ein Zustandsdiagramm
für eine 2-Bit-Kodierung
der Statusinformationen, wobei die Zustände A, B, C, D durch ein Schreib-Bit
P (program) und ein Lösch-Bit
E (erase) wie folgt definiert sind:
A = „vollständig programmiert" = 11 (P1, E=1)
B
= „unvollständig programmiert" = 10 (P1, E=0)
C
= „vollständig gelöscht" = 00 (P0, E=0)
D
= „unvollständig gelöscht" = 01 (P0, E=1).
-
In
dem Zustandsdiagramm in 3 sind
typischerweise nur solche Übergänge zugelassen,
bei denen nur eines der beiden Bits P oder E geschrieben oder gelöscht bzw.
verändert
wird. Zum Beispiel erfordert der Übergang vom Zustand A = „vollständig programmiert" zum Zustand D = „unvollständig gelöscht" das Löschen des
Programmierbits P. Bei einer derartigen Kodierung gemäß 3 benötigt eine erfindungsgemäße Speichereinrichtung
lediglich zwei Ein-Bit-große
zweite Speicherbereiche 3-1, 3-2, die einzeln
ansteuerbar sind.
-
Die 4 zeigt ein Ablaufdiagramm
des erfindungsgemäßen Verfahrens,
mit der vorgenannten Zwei-Bit-Kodierung.
-
Im
Schritt 100 liegen Daten 8 zum Abspeichern vor.
-
Im
Schritt 101 liest die Steuereinheit 4 die Status-Bits über die
Datenleitung 6-1 und 6-2 aus den zweiten Speicherbereichen 3-1 und 3-2 aus.
-
Falls
der Status „vollständig gelöscht" C ist, schreibt
die Steuereinheit 4 das Schreib-Bit P im Schritt 114 ein
und ändert
damit die Statusinformationen von „vollständig gelöscht" C auf „unvollständig programmiert" B.
-
Dann
schreibt die Steuereinheit 4 die Daten 8 über die
Datenleitungen 5 in den ersten Speicherbereich 2 im
Schritt 115. Dann schreibt die Steuereinheit 4 das
Lösch-Bit
E im zweiten Speicherbereich 3-2 (Schritt 116).
Dadurch zeigen die Statusinformationen den Zustand „vollständig programmiert" A an.
-
Falls
nach dem Lesen der Statusinformationen im Schritt 101 jedoch
der Zustand „vollständig programmiert" A angezeigt wird
(Schritt 103), wird zunächst
das Schreib-Bit P gelöscht
(Schritt 104), wodurch die Status-Bits den Zustand „unvollständig gelöscht" D charakterisieren.
Dann wird der erste Speicherbereich 2 gelöscht (Schritt 105)
und anschließend
das Lösch-Bit
E gelöscht,
wodurch die Statusinformationen den Zustand „vollständig gelöscht" C charakterisieren. Anschließend werden,
wie zuvor die Schritte 114, 115, 116, 117,
durchgeführt.
-
Falls
nach dem Lesen der Status-Bits der Zustand „unvollständig programmiert" B angezeigt wird (Schritt 107)
wird der erste Speicherbereich gelöscht (Schritt 108)
und dann das Schreib-Bit P gelöscht, wodurch
die Status-Bits wiederum den Zustand „vollständig gelöscht" anzeigen (Schritt 109). Daran schließen sich
dann die Schritte 114, 115, 116, 117 an.
-
Falls
nach dem Lesen der Status-Bits im Schritt 101 der Zustand „unvollständig gelöscht" D charakterisiert
wird, wird der erste Speicherbereich 2 gelöscht (Schritt 110)
und dann das Lösch-Bit
E gelöscht,
wodurch der Zustand „vollständig gelöscht" charakterisiert
wird. Daran schließen
sich die Schritte 114 bis 117 an.
-
Falls
es zum Beispiel durch einen Spannungseinbruch zu einem „Reset" kommt, kann anhand
der (nichtflüchtigen)
Statusinformationen in den zweiten Speicherbereichen – in diesem
Ausführungsbeispiel
den zwei Status-Bits P und E – festgestellt werden,
ob die im ersten Speicherbereich 2 abgespeicherten Daten
noch gültig
sind oder nicht. Bei nicht als Zustand „vollständig programmiert" A klassifizierten
Zuständen,
kann beispielsweise eine Fehlerbehandlung durchgeführt werden.
Diese kann das Lesen aus einem anderen Speicher sein, in dem die Daten
redundant abgespeichert sind oder das Lesen älterer Daten sein. Am Beispiel
der Kilometerstandanzeige, könnten
die älteren
Daten ein vorheriger Kilometerstand sein.
-
Obgleich
die vorliegende Erfindung vorstehend anhand eines bevorzugten Ausführungsbeispiels
beschrieben wurde, ist sie nicht darauf beschränkt, sondern auf vielfältige Art
und Weise modifizierbar. So sei die Speichervorrichtung nicht auf
den in der vorstehenden 2 dargestellten
speziellen Aufbau beschränkt.
Die Kopplung zwischen der Steuereinheit 4 und den Speicherbereichen 2, 3-1, 3-2,
... 3-N kann zum Beispiel über ein Datenbus geschehen,
seriell oder parallel durchgeführt
werden.
-
Insbesondere
kann die Kodierung der Statusinformationen mit mehr als zwei Bits
erfolgen. Beispielsweise ist eine Vier-Bit-Kodierung möglich, bei der die Zustände zum
Beispiel wie folgt definiert sind:
A = 1111
B = 1010
C
= 0000
D = 0101,
wobei gemäß dem Zustandsdiagramm, wie
es in 3 dargestellt
ist, nur die Übergänge bzw.
Zwischenzustände
von „vollständig programmiert" nach „unvollständig gelöscht" AD, „unvollständig gelöscht" auf „vollständig gelöscht" DC, „vollständig gelöscht" auf „unvollständig programmiert" CB, „unvollständig programmiert" auf „vollständig gelöscht" BC und „unvollständig programmiert" auf „vollständig programmiert" BA vorgesehen sind.
Die Übergänge zwischen den
Zuständen
A, B, C, D erfolgt dann nach dem folgenden Schema: Zunächst werden
die oberen beiden Bits (most significant bits) gemäß des Folgezustandes
gesetzt, dann zeitlich später
die unteren beiden Bits (least significant bits). Dies sei am Beispiel des Übergangs
von „unvollständig programmiert" B auf „vollständig programmiert" A erläutert. Zunächst liegt
der Zustand B = 1010 vor. Dann werden die oberen beiden Bits auf
11 gesetzt, was zu dem Zwischenzustand „unvollständig programmiert – vollständig programmiert" BA = 1110 führt. Dann
werden auch die unteren beiden Bits auf 11 gesetzt, sodass der Zustand
A = 1111 charakterisiert wird. Auf diese Weise steigt die Wahrscheinlichkeit,
dass bei einer Störung
der Programmierung der Status-Bits ein Zwischenzustand auftritt,
anhand dessen erkannt werden kann, an welcher Stelle im Zustandsdiagramm die
Unterbrechung erfolgte.
-
Es
ist nicht zwingend erforderlich, zum Ändern der Statusinformationen
einzelne Bits zu schreiben oder zu löschen. Es ist auch eine Kodierung möglich bei
der bei jedem Übergang
zwischen Zuständen
alle Bits in einem der zweiten Speicherbereiche 3-1, ..., 3-N geschrieben
oder gelöscht
werden. Eine Kodierung A = 111111, B=111000, C=000000 und D=000111
erfordert beispielsweise das Löschen oder
Schreiben von drei Bits gleichzeitig. Dieses Schema kann auch auf
mehrere Bits (zum Beispiel ein Byte) erweitert werden. Insbesondere
sind alle vorgenannten Kodierungen möglich, wobei allerdings dann
den einzelnen vorgenannten Programmier- oder Schreib-Bits P,E Speicherbereiche
bzw. eine Anzahl von Bits entsprechen. Diese Kodierungen sind von
Vorteil, wenn das einzelne Ansprechen von einzelnen Bits bei vorhandenen
Speicherarchitekturen aufwändig
ist bzw. das Ansprechen von Bytes einfacher ist.
-
Es
kann auch ein Status-Bit (VPER-Bit = voltage program error bit)
vorgesehen sein, das anzeigt, ob eine Störung bei einem der Schreib-,
Lösch-
oder Lesevorgänge
aufgetreten ist. Diese Störung
kann zum Beispiel ein Spannungseinbruch sein, der in seiner Ausprägung jedoch
nicht dazu ausreicht einen „Reset" des Speichers auszulösen. Insbesondere kann
dieses VPER-Bit auch über
eine I/O-Schnittstelle 9 von einem externen Spannungsüberwachungsbaustein
an die Steuereinheit 4 geliefert werden.
-
Außerdem können die
ersten und zweiten Speicherbereiche 2, 3-1, 3-2,
... 3-N Bestandteile eines einzigen Speicherbausteins sein.
Insbesondere kann der Speicherbaustein ein wiederbeschreibbarer nichtvolatiler
Speicher sein, wie zum Beispiel ein EEPROM oder Flash-Speicher.
Außerdem
kann die Steuereinheit 4 zur Durchführung des erfindungsgemäßen Verfahrens
abschaltbar sein.
-
- I
- Daten
- D0,
D1, D2, D3
- Datenleitungen
- S
- Steuereinheit
- M1,
M2, M3
- Speicherbereiche
- EP
- Speichervorrichtung
- I/O
- I/O-Port
- 1
- Speichervorrichtung
- 2
- erste
Speicherbereiche
- 3-1,
3-2, ... 3-N
- zweite
Speicherbereiche
- 4
- Steuereinheit
- 5
- Datenleitungen
- 6-1,
6-2, ... 6-N
- Datenleitungen
- 7
- Datenleitungen
- 8
- Daten
- 9
- I/O-Port