-
Stand der Technik
-
Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Kontrollieren eines Speichers, auf eine entsprechende Vorrichtung sowie auf ein entsprechendes Computerprogramm.
-
Ein digitales Speichermedium besteht aus einer Vielzahl einzelner Speicherzellen, die jeweils durch ein Beschreiben in einen ersten Zustand oder einen zweiten Zustand gebracht werden können. Die Zustände der Speicherzellen repräsentieren eine digitale Information, die aus dem Speichermedium ausgelesen werden kann. Wenn eine oder mehrere Speicherzellen defekt sind, kann beim Beschreiben der Zustand der Speicherzelle nicht mehr verändert werden. Dann wird beim Auslesen eine veränderte digitale Information ausgelesen, die einen Fehler enthält.
-
Offenbarung der Erfindung
-
Vor diesem Hintergrund werden mit dem hier vorgestellten Ansatz ein Verfahren zum Kontrollieren eines Speichers, weiterhin eine Vorrichtung, die dieses Verfahren verwendet sowie schließlich ein entsprechendes Computerprogramm gemäß den Hauptansprüchen vorgestellt. Vorteilhafte Ausgestaltungen ergeben sich aus den jeweiligen Unteransprüchen und der nachfolgenden Beschreibung.
-
Um einen Fehlereintrag in eine digitale Information durch das Speichern der Information zu verhindern, kann der Speicher blockweise überprüft werden, bevor der Speicher für seine eigentliche Verwendung benutzt wird. Dazu können die Speicherzellen des Speichers alle zumindest einmal mit dem ersten Zustand und dem zweiten Zustand beschrieben werden und jeweils eine Richtigkeit des Zustands überprüft werden.
-
Beispielsweise können alle Speicherzellen dazu angeregt werden, den ersten Zustand anzunehmen. Anschließend kann überprüft werden, ob alle Speicherzellen tatsächlich den ersten Zustand angenommen haben. Wenn bereits ein Fehler erkannt wird, kann der Vorgang abgebrochen werden.
-
Wenn kein Fehler erkannt wird, können alle Speicherzellen dazu angeregt werden, den zweiten Zustand anzunehmen. Anschließend kann überprüft werden, ob alle Speicherzellen tatsächlich den zweiten Zustand angenommen haben. Wenn beide Prüfungen keinen Fehler anzeigen, kann davon ausgegangen werden, dass die Speicherzellen funktionstüchtig sind. Jetzt kann die digitale Information in den Speicher geschrieben werden.
-
Der hier vorgestellte Ansatz ermöglicht die Überprüfung der Speicherzellen in beiden Zuständen mit einem Prozessschritt weniger. Das entspricht einer Reduzierung des notwendigen Aufwands um zumindest 20 Prozent.
-
Bei dem hier vorgestellten Ansatz werden die Speicherzellen beim ersten Anregen anstatt mit dem einheitlichen ersten Zustand mit einer definierten digitalen Prüfinformation beschrieben. Die Prüfinformation ist aus der eigentlich zu schreibenden digitalen Information abgeleitet. Die Prüfinformation entspricht einer invertierten Information. Die Prüfinformation weist also anstelle eines ersten Zustands einen zweiten Zustand und anstelle eines zweiten Zustands einen ersten Zustand auf.
-
Nach dem ersten Anregen wird die Prüfinformation in den Speicherzellen überprüft.
-
Wenn kein Fehler erkennbar ist wird die eigentliche Information in die Speicherzellen geschrieben. Dabei wechseln alle funktionsfähigen Speicherzellen einmal ihren Zustand.
-
Die Information wird überprüft. Basierend auf beiden Überprüfungen kann also auf die Funktionstüchtigkeit der Speicherzellen geschlossen werden.
-
Im Gegensatz zu dem Überprüfen mit einem vorbestimmten Prüfmuster ist die Information jetzt bereits ausführbereit in den überprüften Speicher geschrieben, wodurch ein wesentlicher Zeitvorteil erreicht werden kann.
-
Es wird ein Verfahren zum Kontrollieren eines Speichers vorgestellt, wobei das Verfahren die folgenden Schritte aufweist:
Beschreiben von Speicherzellen zumindest eines Speicherblocks des Speichers mit einem Komplement zumindest eines Datenworts eines ausführbaren Programmcodes, um die Speicherzellen in einen ersten Zustand zu versetzen;
Ermitteln eines Prüfwerts des Speicherblocks unter Verwendung einer Prüfwertvorschrift; und
Vergleichen des Prüfwerts mit einem erwarteten Prüfwert für das Komplement, um eine Zustandsinformation für den Speicherblock zu erhalten, um den Speicher unter Verwendung der Zustandsinformation zu kontrollieren.
-
Unter einem Speicherblock kann eine Gruppe von Speicherzellen verstanden werden. Der Speicherblock kann eine feste Anzahl von Speicherzellen umfassen. Die Anzahl kann systemabhängig sein. Beispielsweise kann die Anzahl einer Wortbreite von zu speichernden Datenworten entsprechen. Ein Speicherblock kann eine Speicheradresse für ein Datenwort repräsentieren. Ein Komplement eines Datenworts kann das Datenwort invertiert sein. Bei dem Komplement kann ein Signalwert „1“ einen Signalwert „0“ des Datenworts repräsentieren, und umgekehrt. Unter einem Prüfwert kann eine Prüfsumme verstanden werden. Die Prüfsumme kann gewichtet ermittelt werden, sodass eine Abweichung des Prüfwerts von dem erwarteten Prüfwert einen Rückschluss auf eine Adresse der defekten Speicherzelle oder Speicherzellen zulässt. Die Adresse kann in der Zustandsinformation und/oder einer Kontrollinformation enthalten sein. Die Zustandsinformation und/oder die Kontrollinformation kann in einem Fehlerspeicher hinterlegt werden.
-
Die Schritte des Beschreibens, des Ermittelns, des Vergleichens und des Überschreibens, können an einem anderen Speicherblock des Speichers unter Verwendung des Komplements und des zumindest einen Datenworts wiederholt werden, wenn die Zustandsinformation einen Fehler an zumindest einer Speicherzelle des Speicherblocks repräsentiert. Dadurch kann das Komplement direkt und schnell in einen anderen Speicherblock geschrieben werden, ohne erneut eingelesen zu werden.
-
Der Speicherblock kann bei einem erneuten Durchlauf des Verfahrens erneut mit einem Komplement zumindest eines Datenworts des Programmcodes beschrieben werden, wenn die Zustandsinformation einen Fehler an zumindest einer Speicherzelle des Speicherblocks während einem vorausgehenden Durchlauf des Verfahrens repräsentiert. Dem Speicherblock kann eine Fehlermarke zugeordnet werden, wenn die Zustandsinformation erneut einen Fehler repräsentiert. Dadurch kann ein zufälliger Fehler einer Speicherzelle erkannt werden, wenn beim erneuten Kontrollieren kein Fehler mehr gefunden wird. Dadurch kann ein unnötiges Deaktivieren von Speicherblöcken verhindert werden. Beispielsweise kann die Speicherzelle durch einen spontanen Teilchenbeschuss und/oder eine spontane Entladung kurzzeitig einen Defekt aufweisen, der aber nicht dauerhaft ist.
-
Während eines erneuten Durchlaufs des Verfahrens kann das Komplement in einen anderen Speicherblock des Speichers geschrieben werden, sodass zumindest ein vorbestimmter Umfang des Speichers in einer Mehrzahl von Durchläufen vollumfänglich kontrolliert wird. Durch das Speichern des Programmcodes an einer anderen Speicheradresse kann Schritt für Schritt der ganze Speicher auf Fehler überprüft werden.
-
Das Verfahren kann einen Schritt des Überschreibens, des erneuten Ermittelns, des erneuten Vergleichens und einen Schritt des Zuordnens aufweisen. Im Schritt des Überschreibens können die Speicherzellen mit dem zumindest einen Datenwort überschrieben werden, um die Speicherzellen in einen, zu dem ersten Zustand invertierten, zweiten Zustand zu versetzen. Im erneuten Schritt des Ermittelns kann ein weiterer Prüfwert des Speicherblocks unter Verwendung der Prüfwertvorschrift ermittelt werden. Im Schritt des erneuten Vergleichens kann der weitere Prüfwert mit einem erwarteten weiteren Prüfwert für das zumindest eine Datenwort verglichen werden, um eine weitere Zustandsinformation für den Speicherblock zu erhalten. Im Schritt des Zuordnens kann einer Kontrollinformation zu dem Speicherblock zugeordnet werden. Die Kontrollinformation kann ein, unter Verwendung der Zustandsinformation und der weiteren Zustandsinformation ermitteltes Kontrollergebnis repräsentieren.
-
Die Schritte des Beschreibens, des Ermittelns, des Vergleichens, des Überschreibens, des erneuten Ermittelns, des erneuten Vergleichens und des Zuordnens können an zumindest einem weiteren Speicherblock unter Verwendung zumindest eines weiteren Datenworts des Programmcodes ausgeführt werden, bis der Programmcode vollständig in den Speicher geladen ist. Dadurch kann Programmcode in den Speicher geladen werden, der länger als der Datenblock ist.
-
Das Verfahren kann einen Schritt des Ausführens des Programmcodes aufweisen, wobei Speicherblöcke, deren Kontrollinformation einen Fehler repräsentiert ignoriert werden. Beim Ausführen des Programmcodes kann der defekte Speicherblock übersprungen werden.
-
Der Programmcode kann ausgeführt werden, wenn der weitere Prüfwert beim Überschreiben mit dem Datenwort keinen Fehler anzeigt, obwohl ein Fehler beim Beschreiben mit dem Komplement angezeigt ist. Dadurch kann auf ein erneutes Beschreiben eines anderen Speicherblocks verzichtet werden, da die im Programmcode enthaltene Information vollständig ist. Der Speicherblock kann trotzdem als fehlerhaft markiert werden.
-
Im Schritt des Ausführens kann ein Prüfwert des Programmcodes unter Verwendung der Prüfwertvorschrift gebildet werden und mit einem erwarteten Programmprüfwert verglichen werden, um eine Beschädigung des Speichers oder des Programmcodes zu erkennen. Der Prüfwert des Programmcodes kann auch aus den einzelnen zweiten Prüfwerten gebildet werden, die zum Überprüfen der Speicherblöcke verwendet worden sind. Dadurch kann eine sichere Ausführung des Programmcodes sichergestellt werden.
-
Auch kann im Schritt des Beschreibens in einen Speicherblock mit einer zugeordneten Fehlermarke kein Komplement zumindest eines Datenworts geschrieben werden. Dadurch kann ein unnötiges Testen defekter Datenblöcke vermieden werden, wodurch das Verfahren schneller ausgeführt werden kann.
-
Das Verfahren kann einen Schritt des Einlesens des zumindest einen Datenworts aufweisen. Das Komplement kann durch ein Invertieren des zumindest einen Datenworts gebildet werden. Das Bilden des Komplements kann schneller ausgeführt werden, als ein Auslesen des Komplements. Dadurch können Speicherplatz und Zeit gespart werden. Der zu erwartende erste Prüfwert und/oder der zu erwartende zweite Prüfwert kann beim Bilden des Komplements unter Verwendung der Prüfwertvorschrift ebenfalls gebildet werden. Die zu erwartenden Prüfwerte können in einem Zwischenspeicher hinterlegt werden.
-
Der hier vorgestellte Ansatz schafft ferner eine Vorrichtung, die ausgebildet ist, um die Schritte einer Variante eines hier vorgestellten Verfahrens in entsprechenden Einrichtungen durchzuführen bzw. umzusetzen. Auch durch diese Ausführungsvariante der Erfindung in Form einer Vorrichtung kann die der Erfindung zugrunde liegende Aufgabe schnell und effizient gelöst werden.
-
Unter einer Vorrichtung kann vorliegend ein elektrisches Gerät verstanden werden, das Sensorsignale verarbeitet und in Abhängigkeit davon Steuer- und/oder Datensignale ausgibt. Die Vorrichtung kann eine Schnittstelle aufweisen, die hard- und/oder softwaremäßig ausgebildet sein kann. Bei einer hardwaremäßigen Ausbildung können die Schnittstellen beispielsweise Teil eines sogenannten System-ASICs sein, der verschiedenste Funktionen der Vorrichtung beinhaltet. Es ist jedoch auch möglich, dass die Schnittstellen eigene, integrierte Schaltkreise sind oder zumindest teilweise aus diskreten Bauelementen bestehen. Bei einer softwaremäßigen Ausbildung können die Schnittstellen Softwaremodule sein, die beispielsweise auf einem Mikrocontroller neben anderen Softwaremodulen vorhanden sind.
-
Von Vorteil ist auch ein Computerprogrammprodukt oder Computerprogramm mit Programmcode, der auf einem maschinenlesbaren Träger oder Speichermedium wie einem Halbleiterspeicher, einem Festplattenspeicher oder einem optischen Speicher gespeichert sein kann und zur Durchführung, Umsetzung und/oder Ansteuerung der Schritte des Verfahrens nach einer der vorstehend beschriebenen Ausführungsformen verwendet wird, insbesondere wenn das Programmprodukt oder Programm auf einem Computer oder einer Vorrichtung ausgeführt wird.
-
Der hier vorgestellte Ansatz wird nachstehend anhand der beigefügten Zeichnungen beispielhaft näher erläutert. Es zeigen:
-
1 ein Ablaufdiagramm eines Verfahrens zum Kontrollieren eines Speichers gemäß einem Ausführungsbeispiel der vorliegenden Erfindung; und
-
2 ein Blockschaltbild einer Vorrichtung zum Kontrollieren eines Speichers gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
-
In der nachfolgenden Beschreibung günstiger Ausführungsbeispiele der vorliegenden Erfindung werden für die in den verschiedenen Figuren dargestellten und ähnlich wirkenden Elemente gleiche oder ähnliche Bezugszeichen verwendet, wobei auf eine wiederholte Beschreibung dieser Elemente verzichtet wird.
-
1 zeigt ein Ablaufdiagramm eines Verfahrens 100 zum Kontrollieren eines Speichers gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Das Verfahren 100 weist einen Schritt 102 des Beschreibens, einen Schritt 104 des Ermittelns und einen Schritt 106 des Vergleichens auf.
-
Um immer schneller steigende Rechenanforderungen im KFZ zu erfüllen, können spezielle Field Programmable Gate Array (FPGA) System on Chip (SoC) eingesetzt werden. Dabei können spezielle Funktionen in Hardware ausgelagert werden, um so eine sehr hohe Rechenleistung zu erzielen. Beispielsweise können Bildverarbeitungsfunktionen einer Stereo Video Kamera ausgelagert werden.
-
Video verarbeitende Systeme auf FPGA Basis zeichnen sich durch einen schnellen, großen Random Access Memory (RAM) Speicher aus, in dem sowohl Daten als auch ein Programm Code des Systems abgelegt werden. Der Programm Code wird aus einem deutlich langsameren Flash Baustein in den RAM kopiert, um die Ausführung des Codes zu beschleunigen. Dabei können universelle Bausteine eingesetzt werden, die keine oder nur schwach ausgeprägte Anpassungen an die speziellen Anforderungen im Automobil erfordern.
-
Beim System on Chip (SoC) einer Stereo Video Kamera kann der Speicher des Controllers zu groß sein, als dass er zuverlässig und während des laufenden Betriebs der Kamera getestet werden kann. Der hier vorgestellte Ansatz zeigt eine Methode auf, wie dieser Speichertest umgesetzt werden kann.
-
Durch den hier vorgestellten Ansatz können bei sicherheitskritischen Anwendungen auftretende Fehler am RAM zuverlässig erkannt werden. Die erforderliche Erkennungsrate kann abhängig von der Anwendung sein.
-
Nach einem Erkennen eines Fehlers reagiert das System innerhalb einer Fehler-Toleranzzeit angemessen auf den Fehler. Durch den hier vorgestellten Ansatz kann ein Fehler innerhalb dieser Toleranzzeit erkannt werden. Daraus folgt, dass ein entsprechender Test zur Fehlererkennung nicht länger als die Toleranzzeit dauert.
-
Da die Prozessorlast des System on Chip (SoC) im laufenden Betrieb sehr hoch ist, verbleibt keine Zeit, den Arbeitsspeicher zu testen. Erschwerend kommt hinzu, dass ein Testen eines Speicherbereichs, welcher durch die reguläre Funktionalität des Systems belegt ist, nicht möglich ist. Grund hierfür ist, dass ein Beschreiben und Auslesen des Speichers im Rahmen des Tests die Anwendungsdaten zerstören und damit die Funktion beeinträchtigen würde.
-
Aufgrund der Arbeitsweise des System on Chip (SoC), insbesondere des Caches, ist es ausgeschlossen, dass der zu testende Bereich in einen freien Bereich des Speichers umgelagert wird. Derartige Operationen würden die eigentliche Testdauer noch weiter verlängern. Es hat sich gezeigt, dass ein kompletter Test des Speichers im laufenden Betrieb deutlich mehr Fahrzyklen dauern würde, als dies zur Erreichung des Sicherheitsziels erforderlich wäre.
-
Der Speicher wird daher bei dem hier vorgestellten Ansatz etappenweise beim Start des Systems getestet.
-
Im Schritt 102 des Beschreibens werden Speicherzellen zumindest eines Speicherblocks des Speichers mit einem Komplement zumindest eines Datenworts eines Programmcodes beschrieben, um die Speicherzellen in einen ersten Zustand zu versetzen.
-
Im Schritt 104 des Ermittelns wird ein Prüfwert des Speicherblocks unter Verwendung einer Prüfwertvorschrift ermittelt.
-
Im Schritt 106 des Vergleichens wird der Prüfwert mit einem erwarteten ersten Prüfwert für das Komplement verglichen, um eine erste Zustandsinformation für den Speicherblock zu erhalten.
-
Wenn beim Beschreiben mit dem Komplement bereits ein Fehler an einer der Speicherzellen erkannt wird, kann das Verfahren 100 abgebrochen werden.
-
Wenn kein Fehler erkannt wird, werden im Schritt 108 des Überschreibens die Speicherzellen mit dem zumindest einen Datenwort überschrieben, um die Speicherzellen in einen, zu dem ersten Zustand invertierten, zweiten Zustand zu versetzen.
-
Im Schritt 110 des erneuten Ermittelns wird ein zweiter Prüfwert des Speicherblocks unter Verwendung der Prüfwertvorschrift ermittelt.
-
Im Schritt 112 des erneuten Vergleichens wird der zweite Prüfwert mit einem erwarteten zweiten Prüfwert für das zumindest eine Datenwort verglichen, um eine zweite Zustandsinformation für den Speicherblock zu erhalten.
-
Im Schritt 114 des Zuordnens wird eine Kontrollinformation zu dem Speicherblock zugeordnet, wobei die Kontrollinformation ein, unter Verwendung der ersten Zustandsinformation und der zweiten Zustandsinformation ermitteltes Kontrollergebnis repräsentiert.
-
Wenn der Programmcode vollständig in den Speicher geschrieben ist, kann im Schritt 116 des Ausführens der Programmcode ausgeführt werden, wobei Speicherblöcke, deren Kontrollinformation einen Fehler repräsentiert ignoriert werden.
-
Damit der Startvorgang durch den Test nicht verlängert wird, fungiert der ohnehin in das Random Access Memory (RAM) zu kopierende Programmcode als Testmuster. Mit jedem Start, also dem Beginn jedes Fahrzyklus wird der Code dabei an eine andere Stelle kopiert, sodass der gesamte Speicher nach einigen Startvorgängen komplett getestet wird.
-
Bei dem vorgeschlagenen Verfahren wird als erstes Testmuster das Komplement (–1) des Programmcodes verwendet. Anschließend wird der Test mit dem originalen Programmcode wiederholt. Nach Abschluss des Tests ist dadurch ohne weitere Kopiervorgänge das Programm zur Ausführung im RAM vorhanden. Der RAM Test wird etappenweise vorgenommen, wobei der zu testende Bereich nicht durch die RAM Test Funktion bestimmt werden muss, sondern vorab durch die Konfigurierung der memory managing unit (MMU) festgelegt werden kann.
-
Wenn die Zustandsinformation einen Fehler an zumindest einer Speicherzelle des Speicherblocks repräsentiert, werden zumindest die Schritte des Beschreibens 102, des Ermittelns 104 und des Vergleichens 106 an einem anderen Speicherblock des Speichers unter Verwendung des Komplements wiederholt. Die Schritte des Überschreibens 108, des erneuten Ermittelns 110, des erneuten Vergleichens 112 und des Zuordnens 116 können unter Verwendung des zumindest einen Datenworts ebenfalls wiederholt werden.
-
Wenn die Zustandsinformation und/oder die Kontrollinformation einen Fehler an zumindest einer Speicherzelle des Speicherblocks während einem vorausgehenden Durchlauf des Verfahrens 100 repräsentiert, wird der Speicherblock bei einem erneuten Durchlauf des Verfahrens 100 erneut mit einem Komplement zumindest eines Datenworts des Programmcodes beschrieben. Anschließend läuft das Verfahren in der beschriebenen Abfolge ab. Im Schritt 114 des Zuordnens wird dem Speicherblock eine Fehlermarke zugeordnet, wenn die erste Zustandsinformation und/oder die zweite Zustandsinformation erneut einen Fehler repräsentiert. Speicherblöcke mit einer zugeordneten Fehlermarke werden im Schritt 102 des Beschreibens ignoriert.
-
Wenn in dem getesteten Speicherbereich ein Fehler gefunden wurde, so kann der Test beim nächsten Fahrzyklus an derselben Stelle wiederholt werden, um erneut auf den Fehler zu testen, und den Fehler so zu bestätigen.
-
Wenn der Programmcode länger als das zumindest eine Datenwort ist, werden die Schritte des Verfahrens 100 so lange wiederholt, bis der Programmcode vollständig und jeweils durch die entsprechenden Prüfwerte abgesichert in den Speicher geschrieben ist.
-
Der zu testende Speicherbereich kann größer oder kleiner als das Code Segment sein.
-
In einem Ausführungsbeispiel weist das Verfahren 100 einen Schritt des Einlesens des zumindest einen Datenworts auf. Dabei wird das Komplement durch ein Invertieren des zumindest einen Datenworts gebildet.
-
Der Code, der vom Flash Speicher in den RAM Bereich kopiert werden soll, ist mit einer Prüfsumme gesichert. Dadurch kann der Inhalt des Flash Speichers bei korrekter Prüfsumme ebenfalls als korrekt angenommen werden. Dazu wird im Schritt 116 des Ausführens ein Prüfwert des Programmcodes unter Verwendung der Prüfwertvorschrift gebildet. Der Prüfwert wird und mit einem erwarteten Programmprüfwert verglichen, um einen Schaden an dem Speicher oder dem Programmcode zu erkennen.
-
Ein weiterer Vorteil ist, dass durch das Prüfen eines großen RAM Blocks mit einer Prüfsumme auch Bitfehler erkannt werden können, bei denen zwei physikalisch benachbarte aber logisch auseinanderliegende Bits miteinander verbunden (gekoppelt) sind. Dies wird bei einem Test mit einzelnen Speicherzellen in der Regel nicht erkannt.
-
Durch dieses Verfahren wird zunächst nur der Speicherbereich getestet, in dem sich der Programm Code befindet. Damit auch andere Bereiche getestet werden, wird der Code bei jedem Fahrzyklus an eine andere Stelle im RAM geschrieben. Dazu wird im Schritt 102 des Beschreibens während eines erneuten Durchlaufs des Verfahrens 100 das Komplement in einen anderen Speicherblock des Speichers geschrieben wird, sodass zumindest ein vorbestimmter Umfang des Speichers in einer Mehrzahl von Durchläufen vollumfänglich kontrolliert wird.
-
Durch die memory managing unit (MMU) des Prozessors wird der physisch vorhandene Speicher verwaltet. Die MMU stellt den Speicher für den Programmierer zur Verfügung. Dadurch kann der Code willkürlich im Speicher verschoben werden, da er aufgrund der Rechteverwaltung der MMU nicht durch den Linker auf einen bestimmten Speicherbereich festgelegt ist. Dabei kann der Speicher z. B. mit Zugriffsrechten versehen werden, die beim Zugriff durch die MMU geprüft werden. Durch die MMU können absolute Sprungadressen, die nach einem Kopieren des Codes in einen anderen Adressbereich nicht mehr stimmen würden, zu relativen Sprungadressen umgewandelt werden.
-
Mit einer MMU ist es auch möglich, physikalische Speicherbereiche auf logische Bereiche abzubilden. Ein physikalischer Bereich bezieht sich dabei auf die tatsächliche Position einer Speicherzelle im Silizium des RAM Bausteins. Der logische Bereich hingegen ist der Speicherbereich, welcher für den Programmierer sichtbar ist.
-
Durch zyklische Rotation der Zuordnungen der Speicherbereiche (logisch-physikalisch) kann nun erreicht werden, dass der Programmierer vermeintlich immer mit demselben Speicher arbeitet, tatsächlich das Programm aber an unterschiedlichen Stellen auf dem RAM Silizium befindet. Eine solche Rotation findet gemäß dem hier vorgestellten Ansatz nach jedem erfolgreichen Test eines Speicherbereichs statt.
-
Wenn die Lesegeschwindigkeit des FLASH deutlich langsamer ist, als die RAM Geschwindigkeit, können zwei beziehungsweise mehrere Blöcke parallel getestet werden.
-
Es kann im Flash zusätzlich zur regulären Prüfsumme auch die Prüfsumme des komplementären Inhalts abgelegt werden und diese Prüfung zusätzlich im RAM durchgeführt werden.
-
Die MMU kann den gesamten Speichertest in Hardware auch ohne Zutun des Programmierers vornehmen.
-
2 zeigt ein Blockschaltbild einer Vorrichtung 200 zum Kontrollieren eines Speichers gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Die Vorrichtung 200 weist zumindest eine Einrichtung 202 zum Beschreiben, eine Einrichtung 204 zum Ermitteln und eine Einrichtung 206 zum Vergleichen auf. Zusätzlich kann die Vorrichtung 200 eine Einrichtung 208 zum Überschreiben, eine Einrichtung 210 zum erneuten Ermitteln, eine Einrichtung 212 zum erneuten Vergleichen und eine Einrichtung 214 zum Zuordnen aufweisen. Der Programmcode kann auf einer Einrichtung 216 zum Ausführen ausgeführt werden.
-
Bei RAM Tests gibt es viele Ansätze, welche Bitmuster geschrieben werden und anschließend geprüft werden. Am häufigsten wird dabei auf so genannte „Stuck-at“ Fehler geprüft. Bei diesen Fehlern lässt sich ein Bit beziehungsweise eine Speicherzelle nicht mehr mit einem bestimmten Wert beschreiben, sondern verharrt immer im selben Zustand, ist also „festgefahren“.
-
Um diese Fehler zu erkennen, reicht es nicht, den Code einfach in das RAM zu kopieren. „Stuck-at“ Fehler könnten dann unerkannt bleiben, wenn das Bit zufällig im für den Code günstigen Zustand stecken geblieben ist. Bei dem hier vorgestellten Ansatz wird daher die betreffende Speicherzelle zunächst mit dem Komplement des eigentlich zu schreibenden Code Worts beschrieben und der Inhalt geprüft. Anschließend wird der eigentliche Code, wie er zur späteren Programmausführung erforderlich ist, geschrieben. Anschließend wird auch dieses Wort wieder auf seine Richtigkeit geprüft.
-
Da RAM Zugriffe deutlich schneller sind, als Flash Zugriffe entsteht durch den zweifachen Test der einzelnen Speicherzelle keine Verlängerung der Startzeit. Wenn der gesamte Code in das RAM übertragen wurde, wird die Prüfsumme dieses, von dem Code beschriebenen RAM Bereichs berechnet und mit der Prüfsumme des Flash Inhalts verglichen. Dadurch erfolgt keine Verlängerung der Startzeit des Systems.
-
Der Geschwindigkeitsvorteil des hier vorgestellten Ansatzes resultiert daraus, dass das im RAM zurückbleibende Testmuster gleichzeitig der anschließend auszuführende Code ist.
-
Die Einrichtung 202 zum Beschreiben ist dazu ausgebildet, Speicherzellen zumindest eines Speicherblocks des Speichers mit einem Komplement zumindest eines Datenworts eines Programmcodes zu beschrieben, um die Speicherzellen in einen ersten Zustand zu versetzen.
-
Die eine Einrichtung 204 zum Ermitteln ist dazu ausgebildet, einen Prüfwert des Speicherblocks unter Verwendung einer Prüfwertvorschrift zu ermitteln.
-
Die Einrichtung 206 zum Vergleichen ist dazu ausgebildet, den Prüfwert mit einem erwarteten Prüfwert für das Komplement zu vergleichen, um eine erste Zustandsinformation für den Speicherblock zu erhalten.
-
Die Einrichtung 208 zum Überschreiben ist dazu ausgebildet, die Speicherzellen mit dem zumindest einen Datenwort zu überschreiben, um die Speicherzellen in einen, zu dem ersten Zustand invertierten, zweiten Zustand zu versetzen.
-
Die Einrichtung 210 zum erneuten Ermitteln ist dazu ausgebildet, einen weiteren Prüfwert des Speicherblocks unter Verwendung der Prüfwertvorschrift zu ermitteln.
-
Die Einrichtung 212 zum erneuten Vergleichen ist dazu ausgebildet, den weiteren Prüfwert mit einem erwarteten weiteren Prüfwert für das zumindest eine Datenwort zu vergleichen, um eine weitere Zustandsinformation für den Speicherblock zu erhalten.
-
Die Einrichtung 214 zum Zuordnen ist dazu ausgebildet, eine Kontrollinformation zu dem Speicherblock zuzuordnen, wobei die Kontrollinformation ein, unter Verwendung der Zustandsinformation und der weiteren Zustandsinformation ermitteltes Kontrollergebnis repräsentiert.
-
Die Einrichtung 216 zum Ausführen ist dazu ausgebildet, den Programmcode auszuführen, wobei Speicherblöcke, deren Kontrollinformation einen Fehler repräsentiert ignoriert werden.
-
In einem Ausführungsbeispiel sind die Einrichtung 204 zum Ermitteln und die Einrichtung 210 zum erneuten Ermitteln in einer Ermittlungseinrichtung zusammengefasst.
-
In einem Ausführungsbeispiel sind die Einrichtung 206 zum Vergleichen und die Einrichtung 212 zum erneuten Vergleichen in einer Vergleichseinrichtung zusammengefasst.
-
In einem Ausführungsbeispiel ist die Einrichtung 216 zum Ausführen ein Prozessor 216, der auf den Speicher zugreift.
-
Die beschriebenen und in den Figuren gezeigten Ausführungsbeispiele sind nur beispielhaft gewählt. Unterschiedliche Ausführungsbeispiele können vollständig oder in Bezug auf einzelne Merkmale miteinander kombiniert werden. Auch kann ein Ausführungsbeispiel durch Merkmale eines weiteren Ausführungsbeispiels ergänzt werden.
-
Ferner können die hier vorgestellten Verfahrensschritte wiederholt sowie in einer anderen als in der beschriebenen Reihenfolge ausgeführt werden.
-
Umfasst ein Ausführungsbeispiel eine „und/oder“-Verknüpfung zwischen einem ersten Merkmal und einem zweiten Merkmal, so ist dies so zu lesen, dass das Ausführungsbeispiel gemäß einer Ausführungsform sowohl das erste Merkmal als auch das zweite Merkmal und gemäß einer weiteren Ausführungsform entweder nur das erste Merkmal oder nur das zweite Merkmal aufweist.