DE102014203963A1 - Verfahren und Vorrichtung zum Kontrollieren eines Speichers - Google Patents

Verfahren und Vorrichtung zum Kontrollieren eines Speichers Download PDF

Info

Publication number
DE102014203963A1
DE102014203963A1 DE102014203963.0A DE102014203963A DE102014203963A1 DE 102014203963 A1 DE102014203963 A1 DE 102014203963A1 DE 102014203963 A DE102014203963 A DE 102014203963A DE 102014203963 A1 DE102014203963 A1 DE 102014203963A1
Authority
DE
Germany
Prior art keywords
memory
memory block
complement
program code
state information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102014203963.0A
Other languages
English (en)
Inventor
Christian Lasarczyk
Bernd Mueller
Uwe Beutnagel-Buchner
Pascal Kanter
Sergio Amaya
Tobias Kirchner
Andreas-Juergen Rohatschek
Thomas Jaeger
Michael FRISCHKE
Thorsten Schwarz
Mahtab Niknahad
Werner Knee
Klaus-Peter Mattern
Michael Smuda Von Trzebiatowski
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102014203963.0A priority Critical patent/DE102014203963A1/de
Publication of DE102014203963A1 publication Critical patent/DE102014203963A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Die Erfindung betrifft ein Verfahren (100) zum Kontrollieren eines Speichers. Das Verfahren (100) umfasst einen Schritt des Beschreibens (102) 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. Ferner umfasst das Verfahren (100) einen Schritt des Ermittelns (104) eines Prüfwerts des Speicherblocks unter Verwendung einer Prüfwertvorschrift und einen Schritt des Vergleichens (106) 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.

Description

  • 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.

Claims (12)

  1. Verfahren (100) zum Kontrollieren eines Speichers, wobei das Verfahren (100) die folgenden Schritte aufweist: Beschreiben (102) 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 (104) eines Prüfwerts des Speicherblocks unter Verwendung einer Prüfwertvorschrift; und Vergleichen (106) 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.
  2. Verfahren (100) gemäß Anspruch 1, bei dem die Schritte des Beschreibens (102), des Ermittelns (104) und des Vergleichens (106) an einem anderen Speicherblock des Speichers unter Verwendung des Komplements wiederholt werden, wenn die Zustandsinformation einen Fehler an zumindest einer Speicherzelle des Speicherblocks repräsentiert.
  3. Verfahren (100) gemäß einem der vorangegangenen Ansprüche, bei dem der Speicherblock bei einem erneuten Durchlauf des Verfahrens (100) erneut mit einem Komplement zumindest eines Datenworts des Programmcodes beschrieben wird, wenn die Zustandsinformation einen Fehler an zumindest einer Speicherzelle des Speicherblocks während einem vorausgehenden Durchlauf des Verfahrens repräsentiert.
  4. Verfahren (100) gemäß Anspruch 3, bei dem zu dem Speicherblock eine Fehlermarke zugeordnet wird, wenn die Zustandsinformation erneut einen Fehler an zumindest einer Speicherzelle des Speicherblocks repräsentiert.
  5. Verfahren (100) gemäß Anspruch 4, bei dem im Schritt (102) des Beschreibens in einen Speicherblock mit einer zugeordneten Fehlermarke kein Komplement zumindest eines Datenworts geschrieben wird.
  6. Verfahren (100) gemäß einem der vorangegangenen Ansprüche, bei dem 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.
  7. Verfahren (100) gemäß einem der vorangegangenen Ansprüche, mit einem Schritt (108) des Überschreibens, einem Schritt (110) des erneuten Ermittelns, einem Schritt (112) des erneuten Vergleichens und einem Schritt 114 des Zuordnens, wobei im Schritt (108) des Überschreibens die Speicherzellen mit dem zumindest einen Datenwort überschrieben werden, um die Speicherzellen in einen, zu dem ersten Zustand invertierten, zweiten Zustand zu versetzen, wobei im Schritt (110) des erneuten Ermittelns ein weiterer Prüfwert des Speicherblocks unter Verwendung der Prüfwertvorschrift ermittelt wird, wobei im Schritt (112) des erneuten Vergleichens der weitere Prüfwert mit einem erwarteten weiteren Prüfwert für das zumindest eine Datenwort verglichen wird, um eine weitere Zustandsinformation für den Speicherblock zu erhalten, wobei im Schritt (114) des Zuordnens eine Kontrollinformation zu dem Speicherblock zugeordnet wird, wobei die Kontrollinformation ein, unter Verwendung der Zustandsinformation und der weiteren Zustandsinformation ermitteltes Kontrollergebnis repräsentiert.
  8. Verfahren (100) gemäß Anspruch 7, bei dem die Schritte des Beschreibens (102), des Ermittelns (104), des Vergleichens (106), des Überschreibens (108), des erneuten Ermittelns (110), des erneuten Vergleichens (112) und des Zuordnens (114) 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.
  9. Verfahren (100) gemäß einem der vorangegangenen Ansprüche, mit einem Schritt (116) des Ausführens, in dem ein Prüfwert des Programmcodes unter Verwendung der Prüfwertvorschrift gebildet wird und mit einem erwarteten Programmprüfwert verglichen wird, um eine Beschädigung des Speichers oder des Programmcodes zu erkennen.
  10. Vorrichtung (200) zum Kontrollieren eines Speichers, die ausgebildet ist, um alle Schritte eines Verfahrens gemäß einem der vorangegangen Ansprüche durchzuführen.
  11. Computerprogramm, das dazu eingerichtet ist, alle Schritte eines Verfahrens gemäß einem der vorangegangen Ansprüche durchzuführen.
  12. Maschinenlesbares Speichermedium mit einem darauf gespeicherten Computerprogramm nach Anspruch 11.
DE102014203963.0A 2014-03-05 2014-03-05 Verfahren und Vorrichtung zum Kontrollieren eines Speichers Pending DE102014203963A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102014203963.0A DE102014203963A1 (de) 2014-03-05 2014-03-05 Verfahren und Vorrichtung zum Kontrollieren eines Speichers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102014203963.0A DE102014203963A1 (de) 2014-03-05 2014-03-05 Verfahren und Vorrichtung zum Kontrollieren eines Speichers

Publications (1)

Publication Number Publication Date
DE102014203963A1 true DE102014203963A1 (de) 2015-09-10

Family

ID=53883937

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014203963.0A Pending DE102014203963A1 (de) 2014-03-05 2014-03-05 Verfahren und Vorrichtung zum Kontrollieren eines Speichers

Country Status (1)

Country Link
DE (1) DE102014203963A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656043A (zh) * 2021-08-24 2021-11-16 北京奇艺世纪科技有限公司 一种代码校验方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656043A (zh) * 2021-08-24 2021-11-16 北京奇艺世纪科技有限公司 一种代码校验方法、装置、电子设备及存储介质
CN113656043B (zh) * 2021-08-24 2023-09-05 北京奇艺世纪科技有限公司 一种代码校验方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
DE102013211077A1 (de) Verfahren zum Testen eines Speichers und Speichersystem
DE19839680B4 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE2225841B2 (de) Verfahren und Anordnung zur systematischen Fehlerprüfung eines monolithischen Halbleiterspeichers
DE102019131865A1 (de) Verfahren und vorrichtung zur eigendiagnose der ram-fehlererkennungslogik eines antriebsstrangcontrollers
DE102015105414B4 (de) Bearbeiten eines Zielspeichers
EP3378006B1 (de) Verfahren zum laden eines sicheren speicherabbilds eines mikrocontrollers und anordnung mit einem mikrocontroller
EP2924522B1 (de) Verfahren zur Beeinflussung eines Steuerprogramms
DE102014203963A1 (de) Verfahren und Vorrichtung zum Kontrollieren eines Speichers
DE102005060901A1 (de) Verfahren zur Erkennung einer Versorgungsunterbrechung in einem Datenspeicher und zur Wiederherstellung des Datenspeichers
DE102017108288B4 (de) Aktualisieren eines Speichers
DE102015211458A1 (de) Verfahren und Vorrichtung zum Absichern einer Programmzählerstruktur eines Prozessorsystems und zum Überwachen der Behandlung einer Unterbrechungsanfrage
DE102010027287A1 (de) Verfahren und Vorrichtung zum prüfen eines Hauptspeichers eines Prozessors
DE102004043063A1 (de) Halbleiter-Bauelement mit Test-Schnittstellen-Einrichtung
DE102015209033A1 (de) Verfahren und Vorrichtung zum Liefern einer Prüfantwort
DE102017115056B3 (de) Verfahren zur Überprüfung sicherheitsrelevanter Register- oder Speicherzellen auf Stuck-At-Fehler im Betrieb
DE102018219700B4 (de) Steuervorrichtung
DE102017115058B4 (de) Verfahren zur Überprüfung sicherheitsrelevanter Register- oder Speicherzellen auf Stuck-At-Fehler im Betrieb und Herbeiführung der Ausfallsicherheit
DE102019220156A1 (de) Verfahren zum Betreiben einer Speichereinheit einer Recheneinheit
DE3817857C2 (de)
DE102015219266A1 (de) Verfahren zum Testen einer Speichereinheit eines Mikrocontrollers
DE102020210100A1 (de) Verfahren und Vorrichtung zum Überwachen eines Betriebs einer nichtflüchtigen Speichereinrichtung
DE102023200923A1 (de) Verfahren und Steuergerät zum Speichern von Daten in einer sicherheitsrelevanten Anwendung in einem Kraftfahrzeug
DE19749240A1 (de) Verfahren zum Testen des Pufferspeichers eines Mikroprozessorsystems
DE102017115057A1 (de) Verfahren zur Überprüfung sicherheitsrelevanter Register- oder Speicherzellen auf Stuck-At-Fehler im Betrieb durch Vergleich zweier Schreibvorgänge mit unterschiedlichem Inversionsstatus

Legal Events

Date Code Title Description
R012 Request for examination validly filed