-
Stand der Technik
-
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Sicherung von Daten in einem nicht flüchtigen Speicherbaustein sowie einen Speicherbaustein, wobei die Daten mehrfach in dem Speicherbaustein abgelegt werden gemäß den unabhängigen Ansprüchen.
-
Die
DE 100 44 505 A1 offenbart ein Steuergerät zur Speicherung von Steuerdaten in einem nichtflüchtigen Speicher, das mit einer nichtflüchtigen Speichereinrichtung mit einer Vielzahl von Blöcken zur Speicherung von Steuerdaten und einer Steuereinrichtung zum Schreiben gleicher Daten in die Vielzahl der Blöcke ausgestattet ist.
-
Ein Verfahren zum Einschreiben von Daten und Programmen in wenigstens einen ersten Speicher eines Computersystems ist aus der
DE 198 39 680 A1 bekannt. Dabei sind die Programme in wenigstens erste Programme und zweite Programme aufgeteilt. Neben dem ersten Speicher wird dabei zumindest ein zweiter Speicher eingesetzt, wobei eine definierte Aufteilung in Speicherbereiche vorgegeben wird. Die Daten werden in den Speicherbereichen gesichert, indem vor dem Löschen, Kopieren oder Einlesen der Daten und Programme von diesen eine Sicherungskopie in wenigstens einem der wenigstens zwei Speicher erzeugt wird. Diese Sicherungskopie wird nach erfolgreichem Programmieren entweder gelöscht oder als Original weiter verwendet, muss also nicht bleibend abgelegt oder von außen neu eingeschrieben werden.
-
Um Datenfehler, beispielsweise bei fehlerhaften Speicher- oder Programmiervorgängen zu erkennen, sind vielfältige Verfahren bekannt. Dazu müssen die Daten in einem Fehlercode bzw. Fehlererkennungscode dargestellt werden. Solche Informationen sind beispielsweise Paritätsbits, die eine Fehlererkennung durch Checksummenbildung wie Quersummen- und/oder Längssummenbildung (even parity check) erlauben.
-
Weitere linear und/oder zyklisch ausführbare Prüfverfahren sind mit dem Hamming-Code, dem BCH-Code (Bose, Chandhuri, Hocquenghem) und dem Abramsen-Code bekannt. Zu dieser Prüfmethodik ist auch der Cyclic Redundancy Check (CRC) zu zählen, bei welchem aus den Daten außer den zu löschenden bzw. zu kopierenden oder einzulesenden Informationen blockweise Prüfbytes eben nach dem CRC-Verfahren erzeugt und mit diesen Informationen verarbeitet bzw. aufgezeichnet werden. Daneben ist im Allgemeinen der Speicherbedarf für diese Prüfbytes bzw. Prüfbits sehr hoch.
-
Dabei ist allgemein nicht gewährleistet, dass sowohl sofortige Datenverluste als auch schleichende Datenverluste in einem nicht flüchtigen Speicherbaustein erkannt werden können und korrigiert werden können. D. h., dass bisherige bereits bekannte Verfahren beispielsweise schleichende Datenverluste wie Bitkipper zwar erkennen, aber im Allgemeinen nicht korrigieren können.
-
Es liegt somit die Aufgabe zu Grunde oben genannte Situation zu optimieren, insbesondere sowohl sofortige Datenverluste als auch schleichende Datenverluste in einem nicht flüchtigen Speicherbaustein zu erkennen und zu korrigieren.
-
Vorteile der Erfindung
-
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Sicherung von Daten in einem nichtflüchtigen Speicherbaustein sowie einen entsprechenden Speicherbaustein, wobei die Daten mehrfach in dem Speicherbaustein abgelegt werden und die Daten mit wenigstens einem Prüfkennzeichen derart gesichert werden, dass das Prüfkennzeichen und ein bitweiser Inhalt der Daten korreliert sind, wobei mit wenigstens einem Gültigkeitskennzeichen vorgegeben wird, welche der mehrfach abgelegten Daten auslesbar sind, also ausgelesen werden dürfen. Dabei werden vorteilhafter Weise neben den Daten auch die zu den Daten gehörenden jeweiligen Prüfkennzeichen und die zu den Daten gehörenden jeweiligen Gültigkeitskennzeichen mehrfach im Speicherbaustein abgelegt und den entsprechenden Daten zugeordnet, wobei die Sicherung der Daten weiterhin zweckmäßiger Weise dadurch erfolgt, dass wenigstens die mehrfach im Speicherbaustein abgelegten Daten beim Auslesen bitweise logisch verknüpft werden.
-
Vorteilhafter Weise werden die Daten beim Auslesen bitweise verodert (ODER, OR), wodurch Bitkipper, also schleichende Datenverluste verhindert bzw. korrigiert werden können.
-
Dabei ist zweckmäßig, dass nicht vollständig oder fehlerhaft abgelegte Daten anhand des wenigstens eines Prüfkennzeichens und/oder anhand des wenigstens einen Gültigkeitskennzeichens erkannt werden, wobei dann andere vollständige und fehlerfreie der redundanten, mehrfach abgelegten Daten ausgelesen werden.
-
Dabei finden vorteilhafter Weise ein erstes und ein zweites Gültigkeitskennzeichen Verwendung, wobei das erste Gültigkeitskennzeichen angibt, ob die zu diesem Gültigkeitskennzeichen zugeordneten Daten auslesbar sind, also gültig sind und das zweite Gültigkeitskennzeichen vorgibt, ob die Daten derart in einen Bereich des Speicherbausteins ablegbar sind, dass die in diesem Bereich befindlichen Daten ersetzt werden können, also die bereits vorliegenden Daten veraltet sind.
-
Dabei wird zweckmäßiger Weise wenigstens ein Gültigkeitskennzeichen vor dem Ablegen der Daten in dem Speicherbaustein auf einen ersten Wert gesetzt und nach dem vollständigen Ablegen der Daten auf einen zweiten Wert, wobei sich der erste Wert und der zweite Wert in mehr als einem Bit unterscheiden und bei einer Prüfung des Gültigkeitskennzeichens lediglich festgestellt wird, ob der Wert ungleich, insbesondere größer als der erste Wert ist. Dies hat den Vorteil, dass damit einzelne Bitkipper oder einzelne Datenverluste bezüglich des Gültigkeitskennzeichens keine negativen Auswirkungen auf das Ergebnis der Überprüfung haben.
-
So werden durch das Verfahren, die Vorrichtung und den Speicherbaustein vorteilhafter Weise sowohl sofortige Datenverluste, wie z. B. Schreibunterbrechungen, als auch schleichende Datenverluste, wie z. B. Bitkipper erkannt und korrigiert.
-
Weitere Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus der Beschreibung und den Ansprüchen. Insbesondere ist der erfindungsgemäße Speicherbaustein nicht flüchtig, wobei die Daten elektrisch oder optisch oder magnetisch ablegbar sind, wobei der Speicherbaustein elektrisch oder optisch oder magnetisch wiederbeschreibbar ausgebildet ist.
-
Zeichnungen
-
Im Weiteren wird die Erfindung anhand der in der Zeichnung dargestellten Figuren näher erläutert.
-
Dabei zeigt 1 ein mögliches Speicherlayout eines erfindungsgemäßen Bausteines,
-
2 ein Verfahren, auf welche Weise die Daten aus dem Speicherbaustein ausgelesen bzw. ausgewertet werden
-
und 3, auf welche Weise die Daten in den Speicherbaustein abgelegt werden.
-
Beschreibung der Ausführungsbeispiele
-
Anhand eines dargestellten Ausführungsbeispieles wird die Erfindung näher erläutert. Nachfolgend beschrieben ist ein Ausführungsbeispiel, bei dem der Speicherbaustein als nicht flüchtiger Speicherbaustein, insbesondere als EEPROM ausgebildet ist. Anstelle eines EEPROMs kann jeder andere, speziell nichtflüchtige Speicherbaustein wie Flash-EPROM, oder jeder sonstige Flashbaustein ebenso wie andere insbesondere optisch oder magnetisch oder elektrisch wiederbeschreibbare Speicherbausteine Verwendung finden. Das Verfahren bzw. die Vorrichtung und der Speicherbaustein haben dabei folgende Aufgaben zu erfüllen; einerseits das Abspeichern der Daten in den Speicherbaustein, das Rücklesen der Daten aus dem Speicherbaustein, die Erkennung und Korrektur von schleichenden Datenverlusten sowie die Erkennung von Schreibabbrüchen, also sofortigen Datenverlusten. Dabei wird im Weiteren nur von EEPROM im Beispiel gesprochen; wie oben bereits erwähnt, ist dies aber nicht einschränkend im Sinne des Gegenstandes der Erfindung zu verstehen.
-
1 zeigt ein mögliches Speicherlayout des EEPROM-Bausteines 100. Der erste Bereich 103 enthält ein bestimmtes Prüfmuster PM als Kennung für das verwendete Speicherlayout. Dieses Prüfmuster PM kann insbesondere durch ein Gültigkeitskennzeichen GKPM, eben ein Gültigkeitsflag und ein Prüfkennzeichen PKPM, insbesondere eine Checksumme, abgesichert sein. Der zweite Bereich 104 enthält Daten De, die nur einfach abgelegt sind, wobei diese Daten De ebenfalls mit Gültigkeitskennzeichen GKDe und Prüfkennzeichen PKDe gesichert sind.
-
Der dritte Bereich 105 enthält erfindungsgemäß besonders gesicherte Daten Dm, die mehrfach, insbesondere zweifach, abgelegt sind. Als Gültigkeitskennzeichen werden hier in diesem Beispiel insbesondere zwei Gültigkeitskennzeichen verwendet; ein Validflag VF und ein Blockflag BF. So sind die mehrfach abgelegten Daten Dm, hier zweifach (Dm1 und Dm2), jeweils mit einem Validflag VFDm und einem Blockflag BFDm gesichert und können jeweils mit einem Prüfkennzeichen, insbesondere einer Checksumme PKDm geprüft werden. Ein erfindungsgemäßer Datensatz besteht somit aus VFDm1, dem Validflag für die mehrfach abgelegten Daten Dm1, einem Blockflag BFDm1 für die mehrfach abgelegten Daten Dm1, den Daten Dm1 selbst und einem Prüfkennzeichen PKDm1, insbesondere einer Prüfsumme oder Checksumme. Die beiden Gültigkeitskennzeichen VFDm1 und BFDm1 werden im Weiteren näher erläutert.
-
Die Struktur für die Daten Dm1 wiederholt sich dann für die Daten Dm2, ist also auch bezüglich der Gültigkeitskennzeichen VFDm2 und BFDm2 und der Prüfkennzeichen PKDm2 mehrfach abgelegt.
-
Der Speicherbaustein steht mit einer Steuereinheit, insbesondere einem Prozessor, Mikroprozessor, Mikrocomputer, Mikrocontroller oder dergleichen im Rahmen einer Ablaufsteuerung über eine beliebige Schnittstelle 102 in Verbindung.
-
Allen Bereichen des Speicherbausteins, insbesondere des EEPROMs 100, gemeinsam ist, dass die Daten De oder Dm bzw. PM für das Prüfmuster durch Gültigkeitskennzeichen und Prüfkennzeichen abgesichert sind. Speziell die Daten im dritten Bereich sind neben den ersten Gültigkeitskennzeichen VFDm1 und VFDm2 durch zusätzliche Gültigkeitskennzeichen, die Blockflags BFDm1 und BFDm2, abgesichert.
-
Mit Hilfe des Prüfmusters PM im ersten Bereich 103 wird entschieden, ob das Speicherlayout im EEPROM zur Anwendung kompatibel ist oder nicht. Falls das Speicherlayout im EEPROM zur Anwendung nicht kompatibel ist, werden Standardwerte in das EEPROM kopiert.
-
Im Allgemeinen wird ein ungewollter Datenverlust durch unmittelbare Vorgänge also sofortige Datenverluste, wie Schreibabbrüche oder Versorgungsspannungsunterbrechungen und/oder mittelbare Vorgänge also schleichende Datenverluste, wie beispielsweise Bitkipper, entstehen.
-
Eine Absicherung gegen Datenverlust durch unmittelbare Vorgänge erfolgt folgendermaßen:
Zu Beginn eines Abspeichervorganges wird das betreffende Validflag, beispielsweise VFDm1 im EEPROM auf einen ersten Wert, insbesondere 0X00 gesetzt. Nach abgeschlossener Abspeicherung und Aktualisierung des Prüfkennzeichens wird das Validflag VFDm1 als Gültigkeitskennzeichen mit einem zweiten Wert, insbesondere 0XFF beschrieben. Beim Zurücklesen der Daten, beispielsweise in einen flüchtigen Speicher 106, insbesondere ein Arbeitsspeicher also z. B. ein RAM, was also einem Auslesen der Daten aus dem nichtflüchtigen Speicherbaustein gleichkommt, erfolgt eine Untersuchung auf Gültigkeit bzw. Auslesbarkeit der Daten, indem das Gültigkeitskennzeichen VFDm1 überprüft wird. Ist das Validflag VFDm1 gleich dem ersten Wert, also hier 0X00, so wurden die Daten nicht vollständig geschrieben bzw. abgelegt. Ist das Validflag VFDm1. gleich dem zweiten Wert 0XFF, so wurden die Daten vollständig geschrieben. Erfindungsgemäß wird nun aber nicht auf Gleichheit mit dem zweiten Wert, z. B. 0XFF, geprüft, sondern lediglich darauf, ob der Wert für das Validflag VFDm1 größer als der erste Wert 0X00 ist. Der Vorteil dieser Vorgehensweise ist der, dass einzelne Bitkipper, also einzelne schleichende Datenverluste in dem Validflag VFDm1 keine negativen Auswirkungen auf das Ergebnis der Überprüfung haben.
-
Die Absicherung gegen Datenverlust durch mittelbare Vorgänge, also beispielsweise ein schleichender Datenverlust durch sogenannte Bitkipper wird im Weiteren beschrieben. Bei solchem schleichenden Datenverlust, insbesondere bei Bitkippern, ändert sich der Inhalt einer Speicherzelle des nichtflüchtigen Speichers von beispielsweise logisch 0 nach logisch 1 oder umgekehrt. Bitkipper können somit im Betrieb oder im stromlosen Zustand auftreten. So können Bitkipper beispielsweise von logisch 1 nach logisch 0 dadurch entstehen, wenn die Speicherzellen im EEPROM sehr häufig bei hohen Temperaturen beschrieben werden. Die Bitkipper sind physikalisch bedingt und entstehen durch einen sehr langsam auftretenden Spannungsverlust in einer EEPROM-Zelle. Jeder Schreibvorgang, auch beispielsweise ein Refresh, führt zur zusätzlichen Möglichkeit eines solchen Bitkippers. Daher wird erfindungsgemäß ein Byte oder Bit oder sonstiger Datenblock beliebiger Länge nur dann in das EEPROM geschrieben, wenn der Inhalt des zuvor dafür abgelegten Datenbestandes nicht mehr aktuell ist, also veraltet ist und somit ersetzt werden darf bzw. soll.
-
Die Aufgabe, Bitkipper zu erkennen und weitgehend zu kompensieren, wird dadurch gelöst, dass die Daten im EEPROM doppelt abgelegt sind. Mit Hilfe des Prüfkennzeichens und der Gültigkeitskennzeichen, wie erfindungsgemäß beschrieben, wird der Abspeicher, also Ablege- bzw. Lese- und Auslesevorgang so gesteuert, dass Inkonsistenzen erkannt und behoben werden. Dabei unterteilen sich die erfindungsgemäßen Gültigkeitskennzeichen in zwei Arten, die schon genannten Validflags und Blockflags.
-
Die wesentliche Aufgabe der Validflags wurde bereits beschrieben. Die Blockflags hingegen dienen u. a. dazu, den Abspeichervorgang so zu steuern, dass die Daten zuerst in den ungültigen oder veralteten Teil der Doppeldatenablage in Bereich 105 geschrieben werden. D. h. zunächst wird der nicht vollständig oder fehlerhaft oder veraltete Teil der Doppeldatenablage für Dm1 oder für Dm2 mit den entsprechenden Gültigkeitskennzeichen und Prüfkennzeichen beschrieben. Um beim Rücklesen der Daten aus dem EEPROM insbesondere in das RAM 106, also beim Auslesen der Daten, Bitkipper, also schleichende Datenverluste, korrigieren zu können, werden immer beide Seiten der Doppelablage, wie beschrieben, mit Daten belegt.
-
Unmittelbar nach dem Abspeichervorgang, also dem Ablegen der Daten müssen die Daten aus dem EEPROM rückgelesen und verglichen werden. Falls wiederholtes Rücklesen einen misslungenen Schreibvorgang signalisiert, wird das Abspeichern unterbrochen und ein Fehler an eine übergeordnete Überwachungseinrichtung gemeldet. Diese übergeordnete Überwachungseinrichtung wird insbesondere durch den Mikrocomputer bzw. die Steuereinheit 101 repräsentiert oder ist mit dieser verbunden. Durch das Rücklesen kann das Korrekturverfahren für schleichende Datenverluste oder Bitkipper aber auch für plötzliche Datenverluste wie Schreibabbrüche durchgeführt werden.
-
Zu Beginn des Abspeichervorganges, also des Ablegens der Daten und Kennzeichen, werden die Blockflags auf einen bestimmten Wert, beispielsweise 0X00 gesetzt. Wenn beide Blöcke, also sprich Daten und Kennzeichen zu Dm1 und Dm2 geschrieben sind, werden die Blockflags auf einen zweiten Wert, beispielsweise 0XFF gesetzt. Beim Zurücklesen erfolgt nun die Untersuchung auf Aktualität der Daten. Ist das Blockflag BFDm1 = 0x00, so sind die Daten veraltet. Ist das Blockflag BFDm1 = 0XFF, eben dem zweiten Wert entsprechend, sind die Daten im Datenblock Dm1 bzw. zugehörigem Ablageblock (Bereich im Speicher für Daten und Kennzeichen) aktuell. Erfindungsgemäß wird nun nicht auf Gleichheit mit dem zweiten Wert, sondern auf Ungleichheit mit dem ersten Wert geprüft. Es wird insbesondere geprüft, ob das Blockflag BFDm1 > 0 ist oder nicht. Ist das Blockflag > 0, sind die Daten im Block aktuell. Auch hier besteht der Vorteil, dass einzelne Bitkipper in dem Blockflag keine negativen Auswirkungen auf das Ergebnis der Überprüfung haben, wie bei den Validflags. Gleiches gilt für BFDm2.
-
Das bisher Beschriebene, insbesondere für die Validflags VFDm1 und die Blockflags BFDm1 gilt generell ebenfalls für den zweiten Ablageblock, also das Validflag VFDm2 und BFDm2 sowie Daten und Prüfkennzeichen.
-
Das Rücklesen der Daten erfolgt im Allgemeinen dadurch, wie bereits erwähnt, dass die Daten vom EEPROM in das RAM kopiert werden. Dabei muss entschieden werden, in welchen Fällen dies möglich ist bzw. wann ein Kopieren nicht möglich ist und Standardwerte in das RAM kopiert werden müssen.
-
Unter der Voraussetzung, dass der EEPROM-Baustein als Gesamtheit einwandfrei funktioniert, hängt die Entscheidung von der Gültigkeit der Checksummen und dem Zustand der Validflags und Blockflags ab.
-
Dazu zeigt 2 noch einmal auf, in welcher Weite die Daten aus dem EEPROM ausgelesen und ausgewertet werden. Falls die Daten doppelt abgelegt sind und alle Valid- und Blockflags ungleich 0 sind, werden Bitkipper dadurch korrigiert, dass alle Bitdaten logisch verknüpft, insbesondere bitweise verodert werden.
-
Im Block 200 wird überprüft, ob eine Doppelablage vorliegt oder nicht. Ist dies nicht der Fall, gelangt man zu Block 201, in dem die Ablage, also die Daten mit entsprechenden Kennzeichen (Gültigkeits- und Prüfkennzeichen) kopiert werden. Daraufhin gelangt man zu Block 208, wo die Gültigkeit des Prüfkennzeichens, insbesondere der Checksumme überprüft wird. Ist die Checksumme gültig, gelangt man zu Block 210 und dem Normalbetrieb; ist die Checksumme ungültig, werden in Block 209 Standardwerte in EEPROM und RAM kopiert. Ist die Doppelablage vorhanden, gelangt man zu Block 202. Dort wird geprüft, ob die Blockflags und Validflags > 0 sind, wie bereits beschrieben. Ist dies der Fall, gelangt man zu Block 203, wo die Datenablage bzw. Ablage 1 und 2 logisch verknüpft, also die Daten insbesondere bitweise verodert werden und das Ergebnis insbesondere ins RAM kopiert wird. Auch hier gelangt man zur Prüfung 208 auf Gültigkeit der Checksumme mit den gleichen Folgen Normalbetrieb und Kopieren der Standardwerte, abhängig von der Gültigkeit der Checksumme. Sind die Block- und Validflags nicht > 0, ist also ein Fehler aufgetreten, wird zunächst im Block 204 Validflag 1, VFDm1 auf Gültigkeit geprüft. Ist dieses gültig, werden in Block 205 Daten und Kennzeichen zu Dm1, also in Ablage 1, abgelegt und es erfolgt wieder die Prüfung auf gültige Checksumme im Block 208 mit den bereits beschriebenen Folgen.
-
Ist Validflag 1, also VFDm1 nicht gültig, so wird Validflag 2, VFDm2 auf Gültigkeit geprüft (im Block 206). Ist VFDm2 gültig, wird Ablage 2, also Daten und Kennzeichen zu Dm2 kopiert und wiederum die Checksumme auf Gültigkeit geprüft (im Block 208) mit entsprechenden Folgen. Ist auch Validflag 2 ungültig, gelangt man direkt zu Block 209, in welchem die Standardwerte in EEPROM und RAM kopiert werden.
-
3 zeigt nun eine erfindungsgemäße Möglichkeit, auf welche Weise die Daten in das EEPROM abgelegt bzw. abgespeichert werden. Der Beginn des Verfahrens liegt im Block 300. In Abfrage 301 wird überprüft, ob Validflag 2, also VFDm2 > 0 ist. Ist dies nicht der Fall, sind also die Daten in Datenblock 2 ungültig, wird im Block 302 Ablage 2 oder Datenblock 2 adressiert mit einem Adressflag AF, das beispielsweise dann auf 1 gesetzt wird. Aus Block 302 gelangt man zu Block 304, in welchem eine Initialisierung des Validflags und Blockflags sowie der Checksumme des zu beschreibenden Datenblocks durchgeführt wird. Im anderen Fall, also wenn ein gültiges Validflag VFDm2 > 0 korrekte Daten in Ablage 2 oder Block 2 anzeigt wird zunächst in Block 303 Ablage 1 addressiert.
-
Gleichermaßen wird ein Element el in 304 initialisiert. Der nachfolgende Kopiervorgang kann entweder in Form von Bytes, Bits oder andersformatigen Datenblöcken erfolgen, möglicherweise insbesondere zellenweise entsprechend dem EEPROM. Diese Einheit, in der das Verfahren, insbesondere der Kopier- oder Ablegevorgang ausgeführt wird, also Bit, Byte oder andersformatiger Datenblock wird mit Element el als Laufvariable bezeichnet.
-
Die Initialisierung im Block 304 erfolgt insbesondere dadurch, dass die Flags und die Checksumme zu 0 (0X00) gesetzt werden. Ist das Validflag 2, also VFDm2 nicht > 0, wird wie gesagt Datenblock 1 adressiert, also die Ablage gehörend zu Dm1, wobei das Adressflag AF insbesondere auf 0 gesetzt wird. Auch hier erfolgt nach der Adressierung der Ablage 1 die Initialisierung im Block 304, allerdings dann der Kennzeichen VFDm1, BFDm1 und PKDm1 zu Dm1.
-
Im Block 305 werden nun die Elemente el, hier beispielsweise die Bytes, ins EPROM kopiert, wie nachfolgend beschrieben. Zunächst wird für jedes Byte also Element el geprüft, ob das Validflag > 0 ist oder nicht, also der Ablege- oder Schreibvorgang abgeschlossen ist oder nicht. Ist das Validflag nicht > 0, also der Kopiervorgang nicht abgeschlossen wird im Block 307 geprüft, ob das letzte Element el vorliegt, das kopiert werden soll. Ist dies nicht der Fall, gelangt man zum Block 308 zum nächsten Element und damit zum inkrementieren von el und anschließend zum erneuten Kopieren in Block 305.
-
Ist das letzte Element gewählt, wird das Validflag im Block 309 gesetzt, beispielsweise auf den Wert 0XFF und das Element el wieder zu 0 initialisiert. Man gelangt ein letztes Mal in den Kopierblock 305. Ist das Validflag jetz > 0 (wenn kein Fehler da Validflag gesetzt), gelangt man zu Block 310.
-
Darin wird beispielsweise folgende Bedingung abgeprüft:
Blockflag BF > 0 (D und [(Adressflag = 0 und Validflag 2 > 0) oder (Adressflag > 0 und Validflag 2 = 0)].
-
Wiederholung der Bedingung mit Erläuterungen in geschweiften Klammern:
Blockflag BF > 0 {Daten aktuell ?} und [(Adressflag = 0 {Ablage 1} und Validflag 2 > 0 {Ablage 2 vollständig}) oder (Adressflag > 0 {AF = 1, Ablage 2} und Validflag 2 = 0){Ablage 2 nicht vollständig}]
-
Ist diese Bedingung erfüllt, gelangt man zum Verfahrensende im Block 316.
-
Ist diese nicht erfüllt, gelangt man zu Block 311, wo dann weiterhin geprüft wird, ob Blockflag = 0 und [(Adressflag = 0 und Validflag 2 = 0) oder (Adressflag AF > 0 und Validflag 2 > 0)].
-
Wiederholung der Bedingung mit Erläuterungen in geschweiften Klammern:
Blockflag = 0 {Daten nicht aktuell} und [(Adressflag = 0 {Ablage 1} und Validflag 2 = 0) {Ablage 2 nicht vollständig} oder (Adressflag AF > 0 {AF = 1, Ablage 2} und Validflag 2 > 0) {Ablage 2 vollständig}]
-
Ist dies der Fall, wird das erste Blockflag, also BFDm1 gesetzt, beispielsweise auf den Wert 0XFF im Block 312 und das Element el zu 1.
-
Ist die Abfrage in Block 311 nicht erfüllt, gelangt man zu Block 313. Dort wird geprüft, ob das Blockflag > 0 ist. Ist dies der Fall, wird das zweite Blockflag BFDm2 gesetzt, das Adressflag AF invertiert und Element el zu 1 gesetzt (im Block 314).
-
Ist das Blockflag nicht > 0, gelangt man zu Block 315, wo eine Umschaltung zwischen den Datenblocks, also Ablagen 1 nach 2 oder umgekehrt erfolgt (je nach Vorrausetzungen im Verfahren vorher), das Adressflag AF ebenfalls invertiert wird und das Validflag, das Element el und die Checksumme auf 0 gesetzt, also initialisiert werden. Aus Block 312, 314 und 315 gelangt man wiederum in den Block 305 Kopieren der Bytes ins EEPROM.
-
Damit ergibt sich ein Verfahren zur sicheren Abspeicherung von Daten in nichtflüchtige, wiederbeschreibbare Speicherbausteine, wobei die Daten inklusive der Gültigkeitskennzeichen und Prüfkennzeichen im Speicherbaustein mehrfach abgelegt sind, wobei die Gültigkeit der Daten durch ein oder mehrere Gültigkeitsflags gekennzeichnet ist, wobei die Gültigkeit der Daten durch ein oder mehrere Checksummen abgesichert ist und die Auswertung der Daten durch den Zustand der Gültigkeitsflags und der Korrektheit der Checksummen gesteuert wird.
-
Weiterhin werden Datenverluste dadurch korrigiert, indem mehrfach abgelegte Daten logisch miteinander verknüpft werden und Schreibabbrüche durch den Zustand der Gültigkeitsflags und der Korrektheit der Checksummen erkannt werden. Bei erkannten Schreibabbrüchen wird auf eine andere gültige Ablage zugegriffen. Wie in 1 beschrieben, ist der Speicherbaustein an eine Ablaufsteuerung wie beispielsweise einen Mikroprozessor, eben eine Steuereinheit, angeschlossen. Dabei ist der Speicherbaustein elektrisch, magnetisch oder optisch wiederbeschreibbar.