-
Die
vorliegende Erfindung betrifft ein Programmierverfahren für eine EEPROM-Speichereinrichtung,
insbesondere eine Flash-EEPROM-Speichereinrichtung,
wobei von einer Programmiereinrichtung in die EEPROM-Speichereinrichtung
Informationen eingeschrieben werden, die eine Nutzinformation und
eine Prüfinformation über die
Nutzinformation enthalten, wobei durch Auswertung der Informationen
Fehler in den in die EEPROM-Speichereinrichtung
eingeschriebenen Informationen bis zu einer Erkennungsbitzahl erkennbar
sind.
-
Die
vorliegende Erfindung betrifft ferner eine korrespondierende Schaltung
mit einer EEPROM-Speichereinrichtung.
-
Derartige
Programmierverfahren und die zugehörigen Schaltungen sind allgemein
bekannt.
-
In
eine EEPROM-Speichereinrichtung eingeschriebene Informationen ändern sich
in aller Regel nicht. Lediglich in sehr seltenen Ausnahmefällen kann
es geschehen, dass die Information sich doch ändert. Dieser Vorgang ist im
Stand der Technik als sogenanntes Bitflipping bekannt. Im Stand
der Technik wird daher die Prüfinformation
dazu verwendet, Einbitfehler in den in die EEPROM-Speichereinrichtung
eingeschriebenen Informationen bis zur Erkennungsbitzahl zu erkennen
und gegebenenfalls eine Fehlermeldung auszugeben.
-
Wenn
ein derartiger Einbitfehler auftritt, ist die in der EEPROM-Speichereinrichtung
enthaltene Information logischer weise nicht mehr ordnungsgemäß. Die Information
muss daher neu in die EEPROM-Speichereinrichtung eingeschrieben
werden. Oftmals ist sogar ein Austausch der EEPROM-Speichereinrichtung,
manchmal sogar der kompletten Schaltung, erforderlich. Diese Maßnahmen
sind umständlich,
teuer und oftmals auch umweltbelastend. Darüber hinaus kann es aufgrund
der Fehlerhaftigkeit der Informationen zu einem Ausfall und – eventuell
noch schlimmer – sogar
zu Fehlfunktionen aufgrund der fehlerhaften Nutzinformation kommen. Dies
ist insbesondere dann kritisch, wenn die Nutzinformation eine sicherheitsgerichtete
Anwendung beeinflusst.
-
Es
ist zwar möglich,
auch im Fehlerfall ein ordnungsgemäßes Funktionieren der Anwendung
zu gewährleisten,
beispielsweise durch redundante Abspeicherung der Nutzinformation.
Das ist aber kostenintensiv und umständlich. Ferner ist auch dann
im Fehlerfall eine vollständige
Neuprogrammierung oder ein Austausch der EEPROM-Speichereinrichtung
erforderlich.
-
Aus
der
DE 197 08 441
A1 ist ein Programmierverfahren für eine EEPROM-Speichereinrichtung
bekannt, bei dem in einem EEPROM auftretende Fehler bis zu einer
Fehlerbitzahl N bitgenau lokalisierbar sind. Wenn an einem Speicherplatz
N – 1 fehlerhafte
Bits vorkommen, wird die an diesem Speicherplatz hinterlegte Information – selbstverständlich unter
Korrektur der Bitfehler – in
einen Reservespeicherplatz umgespeichert.
-
Aus
dem Fachbuch „Einführung in
die Methoden der Digitaltechnik" von
Wolfgang Weber, AEG-Telefunken, Berlin 1970, Seiten 30 bis 36, sind verschiedene
Verfahren zur fehlersicheren Datenübertragung bekannt. Insbesondere
werden dabei auch Codes erwähnt,
mittels derer Einbitfehler bitgenau lokalisierbar und Zweibitfehler
erkennbar, aber nicht mehr bitgenau lokalisierbar sind.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, ein Programmierverfahren
für eine
EEPROM-Speichereinrichtung und eine hiermit korrespondierende Schaltung
mit einer EEPROM-Speichereinrichtung
zu schaffen, bei denen mit möglichst
geringem Aufwand – zumindest
für einen
deutlich überwiegenden
Teil der auftretenden Fehlerfälle – insbesondere
eine vollständige
Neuprogrammierung oder ein Austausch der EEPROM-Speichereinrichtung nicht erforderlich
ist.
-
Die
Aufgabe wird dadurch gelöst,
dass die Prüfinformation
derart bestimmt ist, dass durch Auswerten der Informationen Einbitfehler
in den in die EEPROM-Speichereinrichtung eingeschriebenen Informationen
bitgenau eindeutig lokalisierbar sind und Zweibitfehler erkennbar,
aber nicht mehr bitgenau eindeutig lokalisierbar sind.
-
Denn
aufgrund der bitgenauen Lokalisierbarkeit ist es dann möglich, die
betreffende fehlerhafte Stelle gezielt zu korrigieren. Eine vollständige Neuprogrammierung
und auch ein Austausch der EEPROM-Speichereinrichtung sind somit
nicht mehr erforderlich.
-
In
aller Regel treten, wie bereits erwähnt, gar keine Fehler auf.
Es ist daher völlig
ausreichend, wenn Einbitfehler lokalisierbar und Zweibitfehler nur noch
erkennbar sind.
-
Wenn
die Schaltung einen Fehlererkennungs- und -korrekturblock aufweist,
ist auch eine selbsttätige
Autokorrektur von Fehlern bis zur Korrekturbitzahl möglich. Der
Fehlererkennungs- und -korrekturblock kann dabei ein Hardwareblock
sein. Vorzugsweise aber ist er als Fehlererkennungs- und -korrekturprogramm
ausgebildet.
-
Wenn
das Fehlererkennungs- und -korrekturprogramm derart in ein Anwendungsprogramm eingebunden
in die EEPROM-Speichereinrichtung eingeschrieben wird, dass es bei
der Ausführung
des Anwendungsprogramms iterativ aufgerufen wird, erfolgt kontinuierlich
eine Prüfung
und Autokorrektur von auftretenden Bitfehlern. Der iterative Aufruf
kann dabei ereignisgesteuert sein. Alternativ oder zusätzlich kann
auch ein periodischer Aufruf erfolgen.
-
Das
erfindungsgemäße Programmierverfahren
und die erfindungsgemäße Schaltung
sind insbesondere dann von Bedeutung, wenn das Anwendungsprogramm
ein Anwendungsprogramm für
eine sicherheitsgerichtete Anwendung ist.
-
Wenn
die Prüfinformation
als von der Nutzinformation getrennter Prüfinformationsblock in die EEPROM-Speichereinrichtung
eingeschrieben wird, ist die Auswertung der Informationen besonders
einfach. Vorzugsweise wird dabei der Prüfinformationsblock in einen
unabhängig
von der Nutzinformation löschbaren
Bereich der EEPROM-Speichereinrichtung eingeschrieben.
-
Wenn
der Prüfinformationsblock
mindestens zwei Teilblöcke
aufweist, die getrennt voneinander in die EEPROM-Speichereinrichtung
eingeschrieben werden, ist die Auswertung der Prüfinformation noch einfacher.
Vorzugsweise werden dabei die Teilblöcke in unabhängig voneinander
löschbare
Bereiche der EEPROM-Speichereinrichtung eingeschrieben.
-
Wenn
der Programmiereinrichtung nur die Nutzinformation zugeführt wird
und die Programmiereinrichtung anhand der Nutzinformation die Prüfinformation
ermittelt, muss sich der Ersteller der Nutzinformation nicht um
die Erstellung der Prüfinformation kümmern.
-
Wenn
nach dem Einschreiben der Nutz- und der Prüfinformation in die EEPROM-Speichereinrichtung
die in die EEPROM-Speichereinrichtung eingeschriebenen Informationen
von der Programmiereinrichtung aus der EEPROM-Speichereinrichtung
ausgelesen werden, die ausgelesenen Informationen auf Korrektheit überprüft werden
und von der Programmiereinrichtung im Falle einer Unkorrektheit
eine Warnmeldung ausgegeben wird, kann sofort bei der Programmierung
erkannt werden, ob diese korrekt ausgeführt worden ist.
-
Wenn
die Schaltung eine programmgesteuerte Einrichtung aufweist, die
zumindest zum Zugreifen auf die Nutzinformation, gegebenenfalls
auch zum Ausführen
des Fehlererkennungs- und -korrekturprogramms, mit der EEPROM-Speichereinrichtung
verbunden ist, ergibt sich eine besonders kompakte Lösung.
-
Wenn
die Schaltung eine Ladungspumpe aufweist, die mit der EEPROM-Speichereinrichtung verbunden
ist und mittels derer zum Löschen und/oder
Schreiben der EEPROM-Speichereinrichtung erforderliche elektrische
Größen generierbar sind,
werden diese Größen schaltungsintern
zur Verfügung
gestellt.
-
Wenn
die Schaltung weitere Schaltungsblöcke aufweist, insbesondere
ein RAM, einen Taktgenerator und Ports, bildet die Schaltung eine
Rundumlösung
für eine
Anwendung.
-
Wenn
die Schaltung als integrierter Schaltkreis ausgebildet ist, ist
sie besonders kompakt realisiert. Der Begriff „integrierter Schaltkreis" kann dabei alternativ
als Schaltkreis, der auf einem einzigen Halbleitersubstrat angeordnet
ist, oder als Schaltung, die in einem gemeinsamen Bauelementgehäuse (package)
angeordnet ist, zu verstehen sein.
-
Weitere
Vorteile und Einzelheiten ergeben sich aus der nachfolgenden Beschreibung
eines Ausführungsbeispiels
in Verbindung mit den Zeichnungen. Dabei zeigen in Prinzipdarstellung
-
1 schematisch einen Programmierplatz für eine EEPROM-Speichereinrichtung,
-
2 ein Blockschaltbild einer
Schaltung mit einer EEPROM-Speichereinrichtung,
-
3 ein Flash-EEPROM mit mehreren Speicherblöcken,
-
4 ein EEPROM,
-
5 einen logischen Aufbau
einer Information,
-
6 eine Applikation mit einer
Schaltung gemäß 2 und
-
7–9 Ablaufdiagramme.
-
Gemäß 1 weist ein Programmierplatz für eine EEPROM-Speichereinrichtung 9 einen
Vorratsbereich 1, einen Programmierbereich 2,
einen Ablagebereich 3 und einen Ausschussbereich 4 auf. Gesteuert
von einer Steuereinrichtung 5, werden nacheinander zu programmierende
Schaltungen 6 mittels einer Transporteinrichtung 7 vom
Vorratsbereich 1 in den Programmierbereich 2 überführt und dort
abgesetzt. Im Programmierbereich 2 werden die Schaltungen 6 mittels
einer Programmiereinrichtung 8 programmiert. Es werden
also Informationen in die EEPROM-Speichereinrichtung 9 der
Schaltung 6 eingeschrieben.
-
Gemäß 1 erfolgt das Programmieren der
EEPROM-Speichereinrichtung 9 vor dem Einlöten der
EEPROM-Speichereinrichtung 9 in eine Schaltungsplatine.
Die Programmierung kann aber auch nach dem Einlöten erfolgen.
-
Gemäß 1 ist die Schaltung 6 als
integrierter Schaltkreis 6 ausgebildet. Die Schaltung 6 ist somit
in einem gemeinsamen Bauelementgehäuse 10 (package 10)
angeordnet. Im Bauelementgehäuse 10 ist
mindestens ein Halbleitersubstrat 11 angeordnet, auf dem
die einzelnen Komponenten der Schaltung 6 angeordnet sind.
-
In
ihrer Minimalkonfiguration ist die Schaltung 6 mit der
EEPROM-Speichereinrichtung 9 identisch. Gemäß 2 weist die Schaltung 6 aber
nicht nur die EEPROM-Speichereinrichtung 9, sondern auch
eine Vielzahl weiterer Schaltungsblöcke auf. Insbesondere weist
die Schaltung 6 Ein- und Ausgabeports 12, 13,
einen Schreiblesespeicher 14 (RAM 14) und einen
Mikrocontroller 15 auf. Der Mikrocontroller 15 kann
dabei zumindest lesend, vorzugsweise auch löschend und schreibend, auf
die EEPROM-Speichereinrichtung 9 und in diese eingeschriebene
Informationen zugreifen. Anstelle des Mikrocontrollers 15 könnte die
Schaltung 6 auch eine andere programmgesteuerte Einrichtung
wie z. B. einen Mikroprozessor aufweisen.
-
Ferner
weist die Schaltung 6 eine Ladungspumpe 16 und
einen Taktgenerator 17 auf. Die einzelnen Schaltungsblöcke 9, 12 bis 17 sind
untereinander verbunden. Dies gilt insbesondere auch für die Ladungspumpe 16 und
die EEPROM-Speichereinrichtung 9. Denn mittels der Ladungspumpe 16 sind erforderliche
elektrische Größen (insbesondere
Programmierspannungen) generierbar, mittels derer Speicherzellen
oder Speicherblöcke
der EEPROM-Speichereinrichtung 9 löschbar und beschreibbar sind.
-
Insbesondere
die Ladungspumpe 16 wird also gemäß 2 on-chip
zur Verfügung
gestellt.
-
Die
EEPROM-Speichereinrichtung 9 kann, wie in 2 dargestellt, selbst in mehrere Einheiten untergliedert
sein. Es handelt sich hierbei zum einen um einen Flash-EEPROM-Bereich 18 und
einen EEPROM-Bereich 19. Der Flash-EEPROM-Bereich 18 weist
mindestens einen Speicherblock 20 auf. Gemäß 3 weist der Flash-EEPROM-Bereich 18 sogar
vier Speicherblöcke 20 auf.
Jeder Speicherblock 20 ist vergleichsweise groß. Er weist
z. B. eine Speichergröße von 64
kBit auf. Jeder Speicherblock 20 ist nur in größeren Einheiten
löschbar.
Im Extremfall kann sogar der ganze Speicherblock 20 nur
als Einheit löschbar
sein. In der Regel ist er aber in Einheiten von z. B. 16 bis 256
Byte löschbar.
Ein Lesen und ein Schreiben von Informationen in die Speicherblöcke 20 ist
in der Regel in kleineren Einheiten möglich, z. B. in Einheiten von
einem bis vier Byte.
-
Der
EEPROM-Bereich 19 weist in der Regel eine kleinere Speichergröße auf als
der Flash-EEPROM-Bereich 18. Er weist beispielsweise eine Speichergröße von 2
kByte (bzw. 16 kBit) auf. In den EEPROM-Bereich 19 eingespeicherte
Informationen sind in der gleichen Größe, typisch einem bis vier Byte,
sowohl lesbar als auch schreib- und löschbar. Dies ist in 4 durch die Unterteilung
des EEPROM-Bereichs 19 in einzelne Speicherzellen 21 angedeutet.
-
Gemäß 7 (ergänzend sind die 1 bis 5 heranzuziehen)
wird der Programmiereinrichtung 8 in einem Schritt 41 zunächst eine
Nutzinformation N (und nur diese) zugeführt. Sodann wartet die Programmiereinrichtung 8 in
einem Schritt 42 ab, dass ihr von der Steuereinrichtung 5 ein
Startsignal zugeführt
wird. Nach dem Erhalt des Startsignals schreibt sie in einem Schritt 43 die
Nutzinformation N in die EEPROM-Speichereinrichtung 9 ein.
Wenn beispielsweise die Nutzinformation N ein Anwendungsprogramm
für den
Mikrocontroller 15 ist und eine Länge von knapp 8 kByte aufweist,
kann es in einen der Speicherblöcke 20 des
Flash-EEPROM-Bereichs 18 eingeschrieben werden. Die nichtbenutzten
Speicherzellen dieses Speicherblocks 20 werden nicht beschrieben.
-
Der
Programmiereinrichtung 8 ist aufgrund eines vor dem Einschreiben
der Nutzinformation N durchgeführten
Löschvorgangs,
in dem der Flash-EEPROM-Bereich 18 und der EEPROM-Bereich 19 gelöscht wurden,
bekannt, welchen Wert die nichtbenutzten Bits des beschriebenen
Speicherblocks 20 aufweisen. Ferner ist ihr (trivialerweise)
bekannt, in welche Speicherplätze
des betreffenden Speicherblocks 20 sie die Nutzinformation
N eingeschrieben hat. Die Programmiereinrichtung 8 kann daher
den Inhalt des Speicherblocks 20 logisch in z. B. 256 Zeilen
zu je 256 Bit untergliedern. Für
jede Zeile ermittelt sie in einem Schritt 44 ein Paritybit,
insgesamt also 256 Paritybits, die zu 32 Bytes zusammengefasst werden
können.
Ebenso ermittelt die Programmiereinrichtung 8 in einem
Schritt 46 über die
ersten, zweiten usw. bis 256. Bit der jeweiligen Zeilen weitere
256 Paritybits. Auch diese 256 Paritybits sind wieder zu 32 Byte
zusammenfassbar.
-
Die
so ermittelten insgesamt 64 Byte stellen eine Prüfinformation über die
Nutzinformation N dar. Sie werden von der Programmiereinrichtung 8 in Schritten 45 und 47 in
den EEPROM-Speicherbereich 19 eingeschrieben. Die erstgenannten
32 Byte können
beispielsweise als ein erster Teilblock 22 in mehrere Speicherzellen 21 des
EEPROM-Bereichs 19 eingeschrieben werden, die zweitgenannten
32 Byte als weiterer Teilblock 23. Aufgrund des Umstandes,
dass die einzelnen Speicherzellen 21 des EEPROM-Speicherbereichs 19 unabhängig voneinander
und selbstverständlich
auch unabhängig
von den Speicherblöcken 20 des
Flash-EEPROM-Speicherbereichs 18 löschbar sind, wird die Prüfinformation somit
in zwei Teilblöcken 22, 23 in
die EEPROM-Speichereinrichtung 9 eingeschrieben, die getrennt
voneinander sind und unabhängig
voneinander und unabhängig von
der Nutzinformation N löschbar
sind. Auch sind sie somit selbstverständlich von der Nutzinformation
N getrennt.
-
Aufgrund
der erfindungsgemäßen Ermittlung und
Einspeicherung der Prüfinformation
in die EEPROM-Speichereinrichtung 9 sind durch Auswerten der
Informationen Einbitfehler in den in der EEPROM-Speichereinrichtung 9 abgespeicherten
Informationen, also der Summe von Nutzinformation N und Prüfinformation,
nicht nur erkennbar, sondern sogar bitgenau eindeutig lokalisierbar.
Dies wird nachstehend in Verbindung mit 5 näher
erläutert.
Aus Gründen
der Übersichtlichkeit
ist dabei in 5 nur eine
logische Anordnung von insgesamt 16 Bit zu 4 Zeilen mit je 4 Bit
dargestellt. Die einzelnen Bits sind in 5 durch Pluszeichen symbolisiert.
-
Gemäß 5 wird über je eine Zeile je ein Paritybit
Z1 bis Z4 gebildet. Ferner werden Paritybits Y1 bis Y4 über jeweils
die ersten Bits der Zeilen, die zweiten Bits der Zeilen, die dritten
Bits der Zeilen und die vierten Bits der Zeilen gebildet. Wenn nun
ein einzelnes Nutzbit kippt, weist sowohl das Paritybit Z1 bis Z4
der jeweiligen Zeile als auch das Paritybit Y1 bis Y4 der jeweiligen
Spalte den falschen Wert auf. Unter der Annahme, dass nur ein Bit
der Information falsch ist, muss somit zwangsweise das Bit, das
durch den Schnittpunkt der fehlerhaften Zeile mit der fehlerhaften
Spalte eindeutig lokalisierbar ist, seinen Wert gewechselt haben.
Dieser Wert kann ausgelesen und invertiert wieder in den Speicher
eingeschrieben werden.
-
Wenn
hingegen eines der Zeilenparitybits Z1 bis Z4 seinen Wert ändert, ist
dies dadurch erkennbar, dass alle Spaltenparitybits Y1 bis Y4 den
zutreffenden Wert aufweisen. Somit muss das Zeilenparitybit Z1 bis
Z4, das den falschen Wert aufweist, seinen Wert geändert haben.
In analoger Weise ist auch erkennbar, wenn eines der Spaltenparitybits
Y1 bis Y4 unzulässigerweise
seinen Wert geändert
hat.
-
Wenn
hingegen zwei Bits unzulässigerweise ihren
Wert geändert
haben, kann es im ungünstigsten
Fall geschehen, dass ein derartiger Fall fehlerhafterweise als Wertänderung
eines dritten Bits gewertet wird. Wenn nämlich beispielsweise ein Nutzbit
und das diesem Nutzbit zugeordnete Zeilenparitybit Z1 bis Z4 beide
ihren Wert gewechselt haben, wird dies (fehlerhaft) als Umklappen
des dem Nutzbit zugeordneten Spaltenparitybits Y1 bis Y4 gewertet.
Auch eine Wertänderung
sowohl eines Zeilenparitybits Z1 bis Z4 als auch eines Spaltenparitybits
Y1 bis Y4 wird fälschlicherweise
als Änderung
des Nutzbits, das durch den Schnittpunkt der fehlerhaften Zeile
mit der fehlerhaften Spalte lokalisierbar ist, interpretiert. Eine Änderung
von zwei Bits kann also in einer ungünstigen Konstellation bereits
nicht mehr erkannt werden. Mit einem geringfügigem Zusatzaufwand sind aber auch
derartige Zweibitfehler zumindest erkennbar.
-
Im
einfachsten Fall kann dies dadurch erreicht werden, dass über die
Zeilenparitybits Z1 bis Z4 und/oder die Spaltenparitybits Y1 bis
Y4 Zusatzparitybits Y, Z ermittelt werden. Auch diese beiden Paritybits
Y, Z müssen
selbstverständlich
in der EEPROM-Speichereinrichtung 9 hinterlegt werden.
Bereits unter Verwendung nur eines dieser beiden Zusatzparitybits
Y, Z können
auch Zweibitfehler eindeutig erkannt, wenn auch nicht mehr lokalisiert
werden.
-
Ergänzend oder
zusätzlich
ist es selbstverständlich
auch möglich,
weitere Prüfinformationen
zu ermitteln. Beispielsweise können
auch diagonal über jeweils
(gemäß 5) 4 Bit Paritybits ermittelt
und im EEPROM-Speicherbereich 9 hinterlegt werden. Ersichtlich
kann also bei entsprechend höherem
Aufwand auch gewährleistet
werden, mehr als nur Einbitfehler, z. B. auch Zwei- oder Dreibitfehler,
bitgenau eindeutig lokalisieren zu können und auch mehr als Zweibitfehler,
z. B. Drei- oder
Vierbitfehler, eindeutig erkennen zu können. Bereits Zweibitfehler
sind aber in der Praxis so unwahrscheinlich, dass ein Erkennen von
einem oder zwei fehlerhaften Bits bei einer eindeutigen Lokalisierbarkeit
von einem Einbitfehler völlig
ausreichend ist.
-
Nach
dem Einschreiben der Prüfinformation in
die Teilblöcke 22, 23 liest
die Programmiereinrichtung 8 in einem Schritt 48 den
zuvor beschriebenen Speicherblock 20 des Flash-EEPROM-Bereichs 18 und
die Teilblöcke 22, 23 aus
der EEPROM-Speichereinrichtung 9 wieder aus. Sie vergleicht
die ausgelesenen Informationen in einem Schritt 49 mit
ihren Sollwerten. Sie überprüft sie also
auf Korrektheit. Je nach dem Ergebnis der Prüfung wird von der Programmiereinrichtung 8 entweder
in einem Schritt 50 eine Meldung an die Steuereinrichtung 5 übermittelt, dass
die Programmierung ordnungsgemäß abgeschlossen
werden konnte, oder es wird im umgekehrten Fall eine entsprechende
Warnmeldung in einem Schritt 51 an die Steuereinrichtung 5 ausgegeben.
-
Je
nach dem Inhalt der übermittelten
Meldung steuert die Steuereinrichtung 5 die Transporteinrichtung 7 dann
derart, dass die programmierte Schaltung 6 vom Programmierbereich 2 entweder
in den Ablagebereich 3 oder in den Ausschussbereich 4 überführt wird.
-
Bereits
aufgrund der nunmehr möglichen
bitgenauen Lokalisierung von Einbitfehlern ergibt sich ein wesentlicher
Fortschritt. Dies gilt insbesondere, wenn die Nutzinformation N
nicht in den Flash-EEPROM-Bereich 18, sondern in den EEPROM-Bereich 19 eingeschrieben
wird. Denn dann muss aufgrund des eindeutig ermittelbaren Fehlerortes
nur eine Speicherzelle 21 gelöscht und neu geschrieben werden.
-
Gemäß 2 weist die Schaltung 6 aber auch
einen Fehlererkennungs- und -karrekturblock 24 auf. Dadurch
ist es nicht nur möglich,
den Ort eines Einbitfehlers eindeutig zu ermitteln. Vielmehr kann
die Schaltung 6 in diesem Fall den Bitfehler auch selbsttätig korrigieren.
Der Fehlererkennungs- und
-korrekturblock 24 kann als Schaltungsblock ausgebildet sein,
also als Hardwareschaltung. Vorzugsweise aber ist der Fehlererkennungs-
und -korrekturblock 24 als Fehlererkennungs- und -korrekturprogramm 24 ausgebildet,
das ebenfalls in den Flash-EEPROM-Bereich 18, typischerweise
in einen anderen Speicherblock 20 des Flash-EEPROM-Bereichs 18,
eingeschrieben ist. Es wird gegebenenfalls vom Mikrocontroller 15 ausgeführt.
-
Das
Fehlererkennungs- und -korrekturprogramm 24 weist in der
Regel nur einen sehr kleinen Umfang auf. Es ist daher ohne weiteres
möglich,
das Fehlererkennungs- und -korrekturprogramm 24 in der
EEPROM-Speichereinrichtung 9 doppelt zu hinterlegen. Denn
dann kann, selbst wenn ein Bitumklappen in einem dieser beiden Programme 24 erfolgen
sollte, das jeweils andere Programm 24 das umgeklappte
Bit erkennen, lokalisieren und korrigieren.
-
6 zeigt eine typische Anwendung
einer Schaltung 6 gemäß 2. Gemäß 6 werden der Schaltung 6 von
einer Sensorik 25 über
die Eingangsports 12 Eingangssignale zugeführt. Innerhalb der
Schaltung 6 arbeitet der Mikrocontroller 15 das Anwendungsprogramm
N ab, das durch die Nutzinformationen N bestimmt ist. Der Mikrocontroller 15 ermittelt
daher Ausgangssignale, die einerseits an eine Ausgabe 26 und
andererseits an einen Auslöser 27 übermittelt
werden. Mittels des Auslösers 27 ist ein
Airbag 28 eines Kraftfahrzeugs auslösbar.
-
Die
durch die Nutzinformation N definierte Anwendung von 6 ist also eine sicherheitsgerichtete
Anwendung. Die Nutzinformation N kann aber auch eine andere Anwendung
definieren. Beispiele derartiger Anwendungen sind sowohl sicherheitsgerichtete
Anwendungen (z. B. eine Brennersteuerung, eine Steuerung eines Antiblockiersystems
oder eines Aufzugs) als auch nicht sicherheitsgerichtete Steuerungen
(z. B. eine Zeitschaltuhr).
-
Das
Fehlererkennungs- und -korrekturprogramm 24 ist in das
Anwendungsprogramm N (bzw. die Nutzdaten N) eingebunden. Gemäß 8 wird vom Anwendungsprogramm
nach jedem Neustart zunächst
in einem Schritt 52 das Fehlererkennungs- und -korrekturprogramm 24 aufgerufen.
Der Aufruf erfolgt somit insbesondere ereignisgesteuert, nämlich aufgrund
einer Energiezufuhr zur Schaltung 6. In einem Schritt 53 führt das
Anwendungsprogramm N dann seine normale Aufgabe aus. In einem Schritt 54 wird
aber immer wieder überprüft, ob eine
Zeitgrenze erreicht ist. Wenn die Zeitgrenze erreicht oder überschritten
ist, wird in einem Schritt 55 erneut das Fehlererkennungs-
und -korrekturprogramm 24 aufgerufen. Die Zeitgrenze kann
dabei sehr unterschiedlich sein, je nach Art der Anwendung. Im Einzelfall
kann ein Aufruf einmal pro Tag ausreichend sein. In anderen Anwendungsfällen ist
ein erheblich öfterer
Aufruf, z. B. jede Stunde, jede Minute, oder jede Sekunde, erforderlich.
-
Der
Aufruf des Fehlererkennungs- und -korrekturprogramms 24 erfolgt
also zusätzlich
zum ereignisgesteuerten Aufruf auch periodisch. In jedem Fall aber
wird es iterativ aufgerufen.
-
Das
Fehlererkennungs- und -korrekturprogramm 24 führt im wesentlichen
die nachfolgend in Verbindung mit 9 beschriebene
Routine aus.
-
Gemäß 9 liest das Fehlererkennungs- und
-korrekturprogramm 24 zunächst in einem Schritt 56 die
Nutzinformation N und die Prüfinformation
aus der EEPROM-Speichereinrichtung 9 aus. Sodann überprüft sie in
einem Schritt 57, ob die ausgelesenen Informationen fehlerfrei
sind. Ist dies der Fall, kann die Routine ohne weitere Maßnahmen
verlassen werden. Gegebenenfalls kann noch in einem Schritt 58 eine
OK-Meldung ausgegeben werden.
-
Wenn
die ausgelesenen Informationen nicht ordnungsgemäß sind, überprüft das Fehlererkennungs- und
-korrekturprogramm 24 in einem Schritt 59, ob
ein Einbitfehler vorliegt. Wenn dies nicht der Fall ist, wird in
einem Schritt 60 eine Fehlermaßnahme ergriffen. Die Fehlermaßnahme kann
dabei insbesondere darin bestehen, die weitere Abarbeitung des Anwendungsprogramms
N einzustellen, da ein nicht mehr lokalisierbarer und somit unbekannter Fehler
vorliegt. Auch kann eine gesteuerte Anlage in einen sicheren Zustand überführt werden.
Beispielsweise kann der Auslöser 27 für den Airbag 28 deaktiviert
werden. Zumindest aber erfolgt die Ausgabe einer Warnmeldung.
-
Wenn
ein Einbitfehler vorliegt, wird dieser zunächst in einem Schritt 61 lokalisiert.
Sodann wird der Speicherbereich, der nur einheitlich mit dem fehlerhaften
Bit löschbar
ist, in das RAM 14 eingelesen. Im Falle eines Fehler im
EEPROM-Bereich 19 entspricht dieser Bereich einer Speicherzelle 21,
im Falle eines Fehlers im Flash-EEPROM-Bereich 18 einer
löschbaren
Einheit der Speicherblöcke 20.
-
In
einem Schritt 63 wird dann der Wert des lokalisierten Fehlers
invertiert. In einem Schritt 64 wird der zuvor in das RAM 14 eingelesene
Speicherbereich gelöscht
und sodann in einem Schritt 65 der zuvor gelöschte Speicherbereich
wieder mit den korrekten Daten beschrieben, die im RAM 14 gespeichert
sind.
-
Sodann
wird in einem Schritt 66 nochmals der neu beschriebene
Speicherbereich ausgelesen und in einem Schritt 67 auf
Korrektheit überprüft. Wenn
die neu eingeschriebenen Informationen nunmehr korrekt sind, wird
das Fehlererkennungs- und -korrekurprogramm 24 – gegebenenfalls
wieder nach Ausführen
des Schrittes 58 – beendet.
Wenn die erneut ausgelesenen Informationen hingegen wieder unkorrekt
sind, liegt ein nicht behebbarer Fehler vor. In diesem Fall wird
in einem Schritt 68 ebenfalls eine Fehlerroutine ausgeführt.
-
Die
nunmehr ausgeführte
Fehlerroutine kann gegebenenfalls unterschiedlich von der zuvor
in Verbindung mit Schritt 60 er wähnten Fehlerroutine sein. Es
wird zwar ebenfalls eine Warnmeldung ausgegeben. Aufgrund des Umstands,
dass im RAM 14 eine korrekte Version der Informationen
verfügbar
ist, kann die weitere Abarbeitung des Anwendungsprogramms vorerst
aber noch ohne Gefahr fortgesetzt werden.
-
Mittels
des erfindungsgemäßen Programmierverfahrens
und der erfindungsgemäßen Schaltung 6 ist
somit auf einfache Weise die Datensicherheit von in eine EEPROM-Speichereinrichtung 9 eingeschriebenen
Informationen deutlich erhöhbar.
-
- 1
- Vorratsbereich
- 2
- Programmierbereich
- 3
- Ablagebereich
- 4
- Ausschussbereich
- 5
- Steuereinrichtung
- 6
- Schaltungen
- 7
- Transporteinrichtung
- 8
- Programmiereinrichtung
- 9
- EEPROM-Speichereinrichtung
- 10
- Bauelementgehäuse
- 11
- Halbleitersubstrat
- 12,
13
- Ports
- 14
- Schreiblesespeicher
- 15
- Mikrocontroller
- 16
- Ladungspumpe
- 17
- Taktgenerator
- 18
- Flash-EEPROM-Bereich
- 19
- EEPROM-Bereich
- 20
- Speicherblöcke
- 21
- Speicherzellen
- 22,
23
- Teilblöcke
- 24
- Fehlererkennungs-
und -korrekturblock
- 25
- Sensorik
- 26
- Ausgabe
- 27
- Auslöser
- 28
- Airbag
- 41–68
- Schritte
- N
- Nutzinformation
- Y,
Y1–Y4
- Paritybits
- Z,
Z1–Z4
- Paritybits