DE102020209133A1 - Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und Schnittstellenmodul - Google Patents

Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und Schnittstellenmodul Download PDF

Info

Publication number
DE102020209133A1
DE102020209133A1 DE102020209133.1A DE102020209133A DE102020209133A1 DE 102020209133 A1 DE102020209133 A1 DE 102020209133A1 DE 102020209133 A DE102020209133 A DE 102020209133A DE 102020209133 A1 DE102020209133 A1 DE 102020209133A1
Authority
DE
Germany
Prior art keywords
memory
interface module
error correction
data item
data
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
DE102020209133.1A
Other languages
English (en)
Inventor
Martin Assel
Axel Aue
Matthias Schreiber
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 DE102020209133.1A priority Critical patent/DE102020209133A1/de
Priority to US17/317,353 priority patent/US11573857B2/en
Priority to CN202110819017.XA priority patent/CN113961382A/zh
Publication of DE102020209133A1 publication Critical patent/DE102020209133A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher (64), der an einen Mikrocontroller (50) über ein Schnittstellenmodul (58) angebunden ist, das dazu eingerichtet ist, Speicheradressen für zu speichernde Daten und Fehlerkorrekturwerte zu berechnen. Das Verfahren umfasst ein Empfangen des zu speichernden Datenelements durch das Schnittstellenmodul, ein Berechnen einer Speicheradresse im externen Speicher (64) für das zu speichernde Datenelement durch das Schnittstellenmodul, ein Berechnen eines Fehlerkorrekturwerts für das Datenelement durch das Schnittstellenmodul und ein Schreiben des Datenelements und des Fehlerkorrekturwerts über das Schnittstellenmodul in den externen Speicher beginnend an der Speicheradresse, wobei der Fehlerkorrekturwert unmittelbar auf das Datenelement folgend geschrieben wird und das Schreiben innerhalb einer Adressierungsphase erfolgt. Weiterhin betrifft die Erfindung ein entsprechendes Schnittstellenmodul (58), einen entsprechenden Mikrocontroller (50) und ein entsprechendes Steuergerät.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und ein Schnittstellenmodul, einen Mikrocontroller und eine Recheneinheit zu dessen Durchführung.
  • Stand der Technik
  • In Arbeitsspeichern wie SRAM, Flash, PCM oder DRAM können, um den Dateninhalt abzusichern, zusätzlich zu den Datenbits weitere, als „Error Correction Code“ (ECC) bezeichnete Bits zur Fehlerkorrektur bzw. Fehlererkennung gespeichert werden. Einzel- oder Mehrbitfehler innerhalb eines Datenelementes können damit erkannt und abhängig von der Anzahl der Bitfehler innerhalb des Datenelements korrigiert werden.
  • In eingebetteten Systemen, etwa Steuergeräten von Maschinen oder Fahrzeugen, kommen sogenannte Mikrocontroller zum Einsatz, die neben einem oder mehreren Prozessorkernen über eine bestimmte, beschränkte Menge an internem Arbeitsspeicher verfügen, in dem Programme und Daten während der Ausführung gespeichert werden. Für diesen Arbeitsspeicher kann, insbesondere für sicherheitskritische Anwendungen, etwa in Kraftfahrzeugen, ein Fehlerkorrekturverfahren mittels ECC im Mikrocontroller implementiert sein.
  • Typische in Mikrocontrollern als Arbeitsspeicher verwendete SRAM-Speicherzellen umfassen 6 Transistoren und sind entsprechend relativ teuer und aufwendig in der Herstellung, daher ist der im Mikrocontroller integrierte Arbeitsspeicher oftmals nur so groß bemessen, dass er für grundlegende Anwendungen ausreichend ist. Eine interne Erweiterbarkeit des Arbeitsspeichers ist bei Mikrocontrollern aus Kostengründen üblicherweise nicht vorgesehen bzw. nicht möglich, da der Arbeitsspeicher mit den Prozessorkernen in einem Chip integriert ist.
  • Um auch die Ausführung von Anwendungen zu ermöglichen, die auf einen größeren Arbeitsspeicher als auf dem Mikrocontroller vorgesehen zugreifen, kann ein externer Arbeitsspeicher über eine Kommunikationsschnittstelle, z.B. eine SPI-Schnittstelle (Serial Peripheral Interface), angebunden werden. Dieser externe Arbeitsspeicher kann kostengünstig in Form von DRAM-Speicherzellen, die nur einen Transistor benötigen, ausgeführt werden. Allerdings ist in verfügbaren extern anbindbaren Arbeitsspeichern keine Fehlerkorrekturfunktion implementiert.
  • Offenbarung der Erfindung
  • Erfindungsgemäß werden ein Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und ein Schnittstellenmodul, einen Mikrocontroller und eine Recheneinheit zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
  • Gemäß dem vorgeschlagenen Verfahren werden das Datenelement und der zugehörige Fehlerkorrekturwert (im Folgenden auch ECC-Wert) innerhalb einer einzigen Adressierungsphase des Speichers geschrieben, ein eigenständige Adressberechnung zur Bestimmung einer Speicheradresse für den ECC-Wert und ein weiterer langer Adresszugriff während einer eigenen Adressierungsphase für den ECC-Wert entfallen. Dies ist vorteilhaft, da dadurch Speicherzugriffszeiten gegenüber einer voneinander unabhängigen Handhabung von Datenelementen und ECC-Werten verringert werden.
  • Das Berechnen der Speicheradresse und des ECC-Werts werden durch das Schnittstellenmodul durchgeführt. Dieses ist als Hardwaremodul des Mikrocontrollers ausgeführt. Eine entsprechende Funktionalität, die im Prozessorkern oder als Software implementiert ist, erübrigt sich. Entsprechend ist eine Abänderung existierender Prozessorkerne oder Software nicht notwendig. Das Schnittstellenmodul ist insbesondere als ein Modul für einen seriellen Datenbus, insbesondere als SPI-Modul (Serial Peripheral Interface) ausgebildet.
  • Das Schnittstellenmodul ist dazu eingerichtet, Speicheradressen von Datenelementen im Adressraum des Mikrocontrollers (sogenannte logische Speicheradressen) in Speicheradressen (für die Datenelemente) des externen Speichers abzubilden (sogenannte physikalische Speicheradressen), wobei bei der Abbildung der ECC-Wert, d.h. dessen Speicherplatzbedarf, berücksichtigt wird.
  • Als Fehlerkorrekturverfahren bzw. Fehlererkennungsverfahren zur Berechnung des ECC-Werts kann ein beliebiges geeignetes Fehlerkorrekturverfahren, etwa ein Hamming-Code, verwendet werden. Solche Verfahren sind dem Fachmann an sich bekannt.
  • Der über das Schnittstellenmodul angebundene externe Speicher kann insbesondere ein flüchtiger Speicher sein, der vom Mikrocontroller als Arbeitsspeicher verwendet wird, d.h. ein DRAM-Speicher (DRAM, Dynamic Random Access Memory). Es ist allerdings auch die Anwendung des Verfahrens bei einem nichtflüchtigen Speicher möglich.
  • Als „Adressierungsphase“ wird hier ein Speicherzugriff (schreibend oder lesend) verstanden, bei dem beginnend bei einer Startadresse eine bestimmte Anzahl aufeinanderfolgender (d.h. an aufeinanderfolgenden Adressen zu speichernde bzw. gespeicherte) Bits (oder Bytes) geschrieben bzw. gelesen wird. Die Startadresse wird als Speicheradresse der entsprechenden Daten bezeichnet.
  • Das Verfahren umfasst bevorzugt einen Lesevorgang des geschriebenen Datenelements aus dem Speicher, wobei bei der Lesevorgang umfasst: ein Bestimmen der Speicheradresse des Datenelements durch das Schnittstellenmodul; ein Lesen des Datenelement und des ECC-Werts innerhalb einer Adressierungsphase aus dem Speicher; ein Berechnen eines Fehlerkorrekturvergleichswerts (im Folgenden auch ECC-Vergleichswerts) aus dem gelesenen Datenelement durch das Schnittstellenmodul; und ein Vergleichen des ECC-Vergleichswert durch das Schnittstellenmodul mit dem gelesenen ECC-Wert, um festzustellen, ob diese gleich sind oder nicht gleich sind. Weiter bevorzugt umfasst der Lesevorgang: wenn der ECC-Vergleichswert und der gelesene ECC-Wert gleich sind, ein Senden des gelesenen Datenelements; beziehungsweise, wenn der ECC-Vergleichswert und der gelesene ECC-Wert nicht gleich sind, Senden eines auf Grundlage des gelesenen Datenelements und des gelesenen ECC-Werts korrigierten Datenelements.
  • Die Berechnung von Speicheradresse und ECC-Vergleichswert werden wieder durch das Schnittstellenmodul durchgeführt. Die Speicheradresse muss beim Lesevorgang bestimmt bzw. erneut berechnet werden, da die Speicheradresse eine physikalische Adresse darstellt, die den tatsächlichen Speicherort im Speicher angibt, während aus Sicht eines Computerprogramms bzw. des das Schnittstellenmodul aufweisenden Mikrocontrollers, das bzw. der das Datenelement auslesen will, lediglich die entsprechende logische Speicheradresse bekannt ist.
  • Bevorzugt umfasst der Lesevorgang des Datenelements, durch das Schnittstellenmodul, ein Empfangen eines geänderten Teil-Datenelements des gelesenen Datenelements, ein Bilden eines geänderten Datenelements aus dem geänderten Teil-Datenelement und den nicht geänderten Teilen des gelesenen Datenelements, ein Berechnen eines geänderten Fehlerkorrekturwerts basierend auf dem geänderten Datenelement, und ein Schreiben, beginnend an der Speicheradresse, des geänderten Datenelements und unmittelbar darauffolgend des berechneten geänderten Fehlerkorrekturwerts innerhalb einer Adressierungsphase. Hierdurch wird ein Lese-Schreib-Vorgang realisiert, mittels dem z.B. sogenannte „read-modify-write“-Befehle implementiert werden können. Der modifizierte bzw. geänderte Teil des gelesenen Datenworts wird durch das Schnittstellenmodul in das gelesene Datenwort eingefügt und ebenso wird durch das Schnittstellenmodul eine Neuberechnung des Fehlerkorrekturwerts vorgenommen. Diese Schritte sind aus Sicht der Software nicht sichtbar bzw. transparent, so dass diese nicht angepasst werden muss.
  • Bevorzugt umfasst das Verfahren, dass das zu speichernde Datenelement von wenigstens einem Prozessorkern des Mikroprozessors an das Schnittstellenmodul gesendet wird und/oder von dem Schnittstellenmodul an den wenigstens einen Prozessorkern des Mikroprozessors gesendet wird. Die Speicherung wird also vorzugsweise vom Prozessorkern vorgenommen. Es auch allerdings auch möglich, dass andere Funktionselemente des Mikrocontrollers einen Speicherdirektzugriff (DMA, Direct Memory Access) auf den externen Speicher durchführen, dieser erfolgt dann ebenfalls über das Schnittstellenmodul.
  • Ein erfindungsgemäßes Schnittstellenmodul zur abgesicherten Speicherung eines Datenelementes in einem externen Speicher ist dazu eingerichtet, eines der vorstehenden Verfahren durchzuführen, insbesondere, ist es dazu eingerichtet, Speicheradressen und ECC-Werte für zu speichernde Datenelemente bzw. für gelesene Datenelemente zu berechnen und ist eingerichtet, Speicheradressen von Datenelementen in einem Adressraum des Mikrocontrollers in Speicheradressen in einem Adressraum des externen Speichers abzubilden, wobei bei der Abbildung der Speicherplatzbedarf des ECC-Werts berücksichtigt wird.
  • Ein erfindungsgemäßer Mikrocontroller umfasst ein erfindungsgemäßes Schnittstellenmodul und, bevorzugt, mindestens einen Prozessorkern, der mit dem Schnittstellenmodul verbunden ist.
  • Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs, umfasst einen erfindungsgemäßen Mikrocontroller und, bevorzugt, einen externen Speicher, der mit dem Schnittstellenmodul verbunden ist.
  • Die Erfindung eignet sich insbesondere für sog. „Embedded Systems“ bzw. eingebettete Systeme. Darunter werden elektronische Rechner oder Computer verstanden, die in einen technischen Kontext eingebunden (eingebettet) ist. Dabei übernimmt der Rechner entweder Überwachungs-, Steuerungs- oder Regelfunktionen oder ist für eine Form der Daten- bzw. Signalverarbeitung zuständig, beispielsweise beim Ver- bzw. Entschlüsseln, Codieren bzw. Decodieren oder Filtern. Eine typische Anforderung an eingebettete Systeme ist die Realzeit-Fähigkeit (Echtzeit-Fähigkeit). Eine Verarbeitung mit nicht vorhersagbarer Verarbeitungsgeschwindigkeit kann nicht toleriert werden. Viele Applikationen (insbesondere Steuerungen in sicherheitsrelevante Systemen - also Systeme, durch die ein Mensch gefährdet, verletzt oder sogar getötet werden könnte) setzen eine vorhersagbare Reaktionszeit des Systems voraus.
  • Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
  • Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
  • Figurenliste
    • 1A zeigt ein Ablaufdiagramm eines Schreibvorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung;
    • 1B zeigt ein Ablaufdiagramm eines Lesevorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung;
    • 2 zeigt einen Mikrocontroller, der zur Implementierung des erfindungsgemäßen Verfahrens bevorzugt verwendet werden kann; und
    • 3 zeigt beispielhaft die Anordnung zweier Datenelemente samt zugehörigen EEC-Werten, wie sie durch die vorliegende Erfindung erreicht wird.
  • Ausführungsform(en) der Erfindung
  • 1A stellt ein Ablaufdiagramm eines Schreibvorgangs zur abgesicherten Speicherung eines Datenelements in einem an einen Mikrocontroller angebundenen externen Speicher gemäß einer bevorzugten Ausführungsform der Erfindung dar. In der weiteren Beschreibung (auch bei den weiteren Figuren) wird insbesondere auf ein Datenelement und einen ECC-Wert Bezug genommen, dies dient der sprachlichen Vereinfachung und ist im Sinne von wenigstens ein Datenelement und wenigstens ein ECC-Wert zu lesen. Die Erfindung ist also nicht auf ein einzelnes Datenelement eingeschränkt.
  • Bei dem Datenelement kann es sich sowohl um Programmdaten, d.h. Programmanweisungen, als auch um Daten, die vom Computerprogramm verwendet und gegebenenfalls verändert werden, handeln. Im Verfahren wird ein Schnittstellenmodul verwendet, über das der externe Speicher mit dem Mikrocontroller verbunden ist. Das Schnittstellenmodul ist dazu eingerichtet, Adressberechnungen und Fehlerkorrekturberechnungen durchzuführen.
  • In Schritt 10 wird das zu speichernde Datenelement von dem Schnittstellenmodul empfangen.
  • In Schritt 12 findet eine Adressrechnung bzw. Adressbestimmung statt, in der eine Speicheradresse für das zu speichernde Datenelement berechnet wird. Weiterhin wird in Schritt 14 ein Fehlerkorrekturwert (ECC-Wert) für das Datenelement berechnet. Die Schritte 12 und 14 (Berechnen der Speicheradresse bzw. des ECC-Werts) können, anders als dargestellt, auch in umgekehrter Reihenfolge durchgeführt werden. Beide Schritte 12, 14 werden durch das Schnittstellenmodul durchgeführt.
  • In Schritt 16 werden das Datenelement und der ECC-Wert während einer einzelnen Adressierungsphase an die berechnete Speicheradresse in den Speicher geschrieben, d.h. das Datenelement wird beginnend an der berechneten Speicheradresse geschrieben und der ECC-Wert wird unmittelbar auf das Datenelement folgend geschrieben. Eine Berechnung einer eigenen Speicheradresse für den ECC-Wert ist somit nicht notwendig.
  • 1B stellt ein Ablaufdiagramm eines Lesevorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung dar.
  • In Schritt 22 findet eine Adressrechnung statt, in der die Speicheradresse, an der das Datenelement gespeichert ist, bestimmt wird. Hier (und zur Adressrechnung beim Schreibvorgang) ist anzumerken, dass der Prozessorkern des Mikrocontrollers bzw. ein darin ausgeführtes Computerprogramm zwar eine logische Adresse des gespeicherten Datenelements kennt, mit dem aus Sicht des Prozessorkerns darauf zugegriffen werden kann, allerdings durch die Adressrechnung eine physikalische Adresse bestimmt wird, an der das Datenelement und der ECC-Wert tatsächlich im Speicher gespeichert werden bzw. sind. Die Speicheradresse, die in Schritt 22 (und zuvor in Schritt 12) bestimmt bzw. berechnet wird ist die physikalische Adresse. Daher muss diese beim Lesevorgang erneut berechnet bzw. bestimmt werden. Diese Bestimmung der Speicheradresse wird durch das Schnittstellenmodul durchgeführt, der Prozessorkern ist nicht involviert.
  • In Schritt 24 werden, beginnend an der Speicheradresse, das Datenelement und der unmittelbar nachfolgend gespeicherte ECC-Wert aus dem Speicher gelesen. Dies erfolgt wieder innerhalb einer einzigen Adressierungsphase, eine gesonderte Adressierungsphase zum Auslesen des ECC-Werts ist nicht notwendig.
  • In Schritt 26 wird ein Fehlerkorrekturvergleichswert (ECC-Vergleichswert) aus dem gelesenen Datenelement durch das Schnittstellenmodul berechnet. Dieser ECC-Vergleichswert wird in Schritt 28 mit dem gelesenen ECC-Wert, d.h. dem beim Schreiben des Datenelements gültigen ECC-Wert, verglichen. Beim Vergleich wird festgestellt, ob das Datenelement verändert wurde, ob also ein Speicherfehler aufgetreten ist.
  • Wenn der ECC-Vergleichswert gleich dem ECC-Wert ist, d.h. wenn (im Sinne des verwendeten Fehlerkorrekturverfahrens) kein Speicherfehler aufgetreten ist, wird das gelesene Datenelement an den mindestens einen Prozessorkern des Mikrocontrollers gesendet, Schritt 30.
  • Wenn der ECC-Vergleichswert nicht gleich dem ECC-Wert ist, d.h. wenn ein Speicherfehler aufgetreten ist, wird in Schritt 32 zunächst geprüft, ob der Fehler korrigiert werden kann. Ob dies möglich ist, hängt vom verwendeten Fehlerkorrekturverfahren, mit dem der ECC-Wert berechnet wird, ab. Wird beispielsweise für ein 64 Bit langes Datenelement ein 8 Bit langer ECC-Wert verwendet, können typischerweise 1-Bit-Fehler erkannt und korrigiert werden und 2-Bit-Fehler erkannt aber nicht korrigiert werden.
  • Wenn festgestellt wird, dass der Fehler korrigiert werden kann, so wird in Schritt 34 der Fehler korrigiert, d.h. ein korrigiertes Datenelement bestimmt. Das korrigierte Datenelement wird in Schritt 36 an den mindestens einen Prozessorkern des Mikrocontrollers übertragen. Wenn andererseits festgestellt wird, dass der Fehler nicht korrigiert werden kann, wird in Schritt 38 eine entsprechende Fehlermeldung an den mindestens einen Prozessorkern des Mikrocontrollers übermittelt.
  • Beim Schreibvorgang (1A) bzw. beim Lesevorgang (1B) werden die Berechnung bzw. Bestimmung der Speicheradresse (Schritt 12 bzw. Schritt 22) und die Berechnung des ECC-Werts (Schritt 14) bzw. des ECC-Vergleichswerts (Schritt 26) durch das Schnittstellenmodul durchgeführt, vgl. 2 und 3. Eine Änderung des Designs bzw. der Hardware des Prozessorkerns (oder der Prozessorkerne) ist also nicht notwendig. Auch können Computerprogramme verwendet bzw. programmiert werden, ohne dass dabei Kenntnis über das Schnittstellenmodul und das Fehlerkorrekturverfahren notwendig sind.
  • 2 stellt einen Mikrocontroller 50 dar, der zur Ausführung des erfindungsgemäßen Verfahrens verwendet werden kann. Der Mikrocontroller 50 ist hier beispielhaft in einem Steuergerät 52, etwa eines Kraftfahrzeugs oder einer Maschinensteuerung, integriert. Der Mikrocontroller 50 umfasst mindestens einen Prozessorkern 54, einen damit verbundenen (internen) flüchtigen Arbeitsspeicher 56 (DRAM, Dynamic Random Access Memory) und eine ebenfalls mit dem Prozessorkern 54 verbundenes Schnittstellenmodul 58. „Verbunden“ ist hier und im Folgenden im Sinne einer Kommunikationsverbindung zum Datenaustausch zu verstehen, hierfür sind typischerweise leitende Verbindung vorgesehen, es sind aber auch drahtlose Verbindungen (z.B. Funk oder Licht) möglich. Die Verbindungen können Punkt-zu-Punkt-Verbindungen sein oder über einen Bus realisiert sein, wobei jeweils serielle oder parallele Kommunikation vorgesehen sein kann. Die drei Funktionselemente (Prozessorkern, Arbeitsspeicher, Schnittstelle) können in einem einzelnen Chip als integrierte Schaltung realisiert sein.
  • Der mindestens eine Prozessorkern 54 ist dazu eingerichtet, Computerprogramme auszuführen. Im Arbeitsspeicher 56 werden die Computerprogramme und während derer Ausführung benötigte und/oder anfallende Daten gespeichert. Das Schnittstellenmodul 58 dient dem Datenaustausch des Mikrocontrollers 50 mit externen Geräten oder Funktionseinheiten. Die Schnittstellenmodul 58 kann eine serielle oder parallele Schnittstelle umfassen, z.B. eine SPI-Schnittstelle (SPI, Serial Peripheral Interface, ursprünglich von Motorola eingeführt) bzw. eine Weiterentwicklung derselben. Das Schnittstellenmodul 58 ist als Hardwaremodul ausgeführt und wird beim Fehlerkorrekturverfahren verwendet.
  • Der Mikrocontroller kann weitere mit dem Prozessorkern verbundene Funktionselemente 62 umfassen, etwa einen nichtflüchtigen Speicher (z.B. Flashspeicher) oder weitere Schnittstellen (z.B. eine CAN-Bus-Schnittstelle). Auch können weitere, nicht dargestellte Verbindungen zwischen den einzelnen Funktionselementen vorgesehen sein, beispielsweise eine direkte Verbindung zwischen Arbeitsspeicher 56 und Schnittstellenmodul 58.
  • In 2 ist weiterhin ein nicht im Mikrocontroller umfasster externer Arbeitsspeicher 64 dargestellt, der mit dem Schnittstellenmodul 58 verbunden ist. Ebenso können weitere Funktionseinheiten 66 über das Schnittstellenmodul 58 oder weitere Schnittstellen mit dem Mikrocontroller 58 verbunden sein (zusätzlich oder alternativ zu entsprechenden Funktionselementen 62 im Mikrocontroller). Beispiele sind wieder ein nichtflüchtiger Speicher oder weitere Schnittstellen (etwa eine CAN-Bus-Schnittstelle zur Kommunikation des Steuergeräts mit anderen Elementen der Vorrichtung, die vom Steuergerät gesteuert wird).
  • Durch den externen (flüchtigen) Arbeitsspeicher 64 kann der Arbeitsspeicher, auf den der Mikrocontroller 50 bzw. dessen Prozessorkern 54 zugreifen kann erweitert werden. Es können also Programme während der Ausführung zumindest teilweise im externen Arbeitsspeicher gespeichert werden, z.B., wenn diese für den internen Arbeitsspeicher 56 zu groß sind. Zwar ist der Zugriff auf den externen Arbeitsspeicher 64 langsamer als auf den internen Arbeitsspeicher 56, allerdings ist der Zugriff immer noch deutlich schneller als der Zugriff auf einen nichtflüchtigen Speicher, in dem die Programme dauerhaft gespeichert sind.
  • Speicherzugriffe auf den externen Arbeitsspeicher 64 erfolgen über das Schnittstellenmodul 58. Bei einem Schreibzugriff wird durch das Schnittstellenmodul 58 für jedes zu speichernde Datenelement ein zugehöriger Fehlerkorrekturwert (ECC-Wert) berechnet, das ebenfalls im externen Arbeitsspeicher gespeichert werden soll. Ebenso wird die Adressberechnung, d.h. die Berechnung der Speicheradresse im externen Arbeitsspeicher 64, an der das Datenelement gespeichert werden soll, durch das Schnittstellenmodul 58 durchgeführt. Beim Schreiben wird das Datenelement an die Speicheradresse geschrieben und unmittelbar nachfolgend wird der ECC-Wert geschrieben, eine eigene Adressberechnung für die ECC-Speicheradresse, d.h. die Speicheradresse an die der ECC-Wert geschrieben wird, ist also nicht notwendig. Im Prinzip kann die ECC-Speicheradresse aus der Speicheradresse und dem Datenelement bzw. dessen Länge bestimmt werden, an die der ECC-Wert geschrieben wird. Neben dem Entfallen einer eigenen Adressberechnung für den ECC-Wert ist auch vorteilhaft, dass das Schreiben und gegebenenfalls das spätere Lesen des Datenelements und des zugehörigen ECC-Werts normalerweise innerhalb eines Burst-Zugriffs des externen Arbeitsspeichers ausgeführt werden können. Ein sogenannter „Burst-Modus“ wird bei üblichen DRAM-Speichern, die als Arbeitsspeicher Verwendung finden, implementiert, dabei werden in einer Speicherzeile gespeicherte Daten in unmittelbarer Aufeinanderfolge geschrieben oder gelesen, so dass die Bereitstellung weiterer in einer Speicherzeile enthaltener Daten sehr wenig Zeit im Gegensatz zur Bereitstellung der ersten in der Speicherzeile enthaltenen Daten in Anspruch nimmt, da die Speicherzeile nicht neu aktiviert werden muss (typische Zeilenlängen sind 512 Byte, 1 kByte, 2 kByte).
  • Da die Adressberechnung durch das Schnittstellenmodul ausgeführt wird, sind aus Sicht des mindestens einen Prozessorkerns die Daten in linearer Aufeinanderfolge angeordnet, d.h. der mindestens eine Prozessorkern kann Datenelemente in linearer Weise ohne Berücksichtigung der ECC-Werte adressieren. Es findet sozusagen ein „Memory Mapping“ des externen Arbeitsspeichers durch das Schnittstellenmodul statt, wobei das Schnittstellenmodul eine Abbildung zwischen physikalischen Adressen des externen Arbeitsspeichers und logischen Adressen des Prozessorkerns durchführt, die physikalischen Adressen werden also in den Adressraum des Prozessorkerns abgebildet. Vom Prozessorkern ausgeführte Programme können daher den externen Arbeitsspeicher ohne Kenntnis der Fehlerkorrektur adressieren, d.h. die Programme müssen nicht angepasst werden.
  • 3 stellt eine beispielhaft die Anordnung zweier Datenelemente samt zugehörigen EEC-Werten, wie sie durch die vorliegende Erfindung im externen Arbeitsspeicher erreicht wird, dar. Selbstverständlich können im Speicher weitere, nicht dargestellte Datenelemente mit zugehörigen ECC-Werten gespeichert sein. Hierbei werden beispielhaft 64-Bit Datenelemente und 8-Bit ECC-Werte gezeigt. Abweichend von diesem Beispiel können im Allgemeinen die Datenelemente und die ECC-Werte eine beliebige Länge aufweisen. Beispielsweise können die Datenelemente eine Länge von 8, 16, 32, 64, 128 Bit, um einige typische Werte zu nennen, aufweisen. Ebenso können auch die ECC-Werte andere Längen aufweisen, z.B. 4, 8 oder 16 Bit, dies hängt vom verwendeten ECC-Verfahren ab und kann von der Länge der Datenelemente abhängen (z.B. je 8 Bit Datenelemente-Länge 1 Bit ECC-Wert-Länge) oder kann auch unabhängig davon sein. Es kann auch immer eine Länge des ECC-Werts von beispielsweise 8 Bit (oder einer anderen immer gleichen Länge) vorgesehen sein; typische Kombinationen sind dann 8-Bit Datenelement + 8-Bit ECC-Wert, 16-Bit Datenelement + 8-Bit ECC-Wert, 32-Bit Datenelement + 8-Bit ECC-Wert und 64-Bit Datenelement + 8-Bit ECC-Wert.
  • Dargestellt sind zwei aufeinanderfolgende Speicherabschnitte 70, 71, die bei den hexadezimalen Adressen 0x0000 und 0x0010 beginnen, wobei jede Adresse einem Byte (8 Bit) entspricht und jeweils 4-Byte-Abschnitte, d.h. 32-Bit-Abschnitte, durch gestrichelte Linien angezeigt sind. Gespeichert sind zwei 64-Bit-Datenelemente. Das erste Datenelement 72a, 72b ist beginnend bei der Adresse 0x0000 gespeichert, wobei die 64 Bit des ersten Datenelements als zwei 32-Bit-Elemente 72a, 72b eingezeichnet sind. Unmittelbar auf das erste Datenelement 72a, 72b, d.h. beginnend bei der Speicheradresse 0x0008, folgt der zugehörige ECC-Wert 73, der beispielsweise eine Länge von 8 Bit aufweisen kann.
  • Das zweite 64-Bit-Datenelement 74a, 74b beginnt in diesem Beispiel bei der Speicheradresse 0x000C und umfasst wieder zwei 32-Bit-Wörter 74a, 74b. Hier ist anzumerken, dass 32-Bit-Wörter in diesem Beispiel an 32-Bit-Abschnitten im Arbeitsspeicher ausgerichtet werden. Wenn der ECC-Wert kürzer als 32-Bit ist, bleibt entsprechend ein Abschnitt im Speicher frei (bei einem 8-Bit-ECC-Wert bleibt beispielsweise der Abschnitt von 0x0009 bis 0x000B frei). Unmittelbar nach dem zweiten Datenelement 74a, 74b ist der zum zweiten Datenelement gehörige ECC-Wert 75 gespeichert, d.h. an der Speicheradresse 0x0014.
  • Durch diese Anordnung können die 64-Bit-Datenelemente und die zugehörigen ECC-Werte jeweils unter Verwendung lediglich der jeweiligen Speicheradresse (0x0000 und 0x000C in Beispiel der 3) geschrieben bzw. gelesen werden. D.h. Datenelement und zugehöriger ECC-Wert bilden ein Verbunddatenelement, das mittels einer einzigen Speicheradresse adressiert werden kann und somit in einer einzigen Adressierungsphase geschrieben bzw. gelesen werden kann. Eine auf das erste Datenelement bezogene Adressierungsphase würde hier beispielsweise bei der Speicheradresse 0x0000 beginnend 9 Byte (72 Bits = 64 Bit Datenelement + 8 Bit ECC-Wert) betreffen, d.h. die Adressen 0x0000 bis einschließlich 0x0008.

Claims (11)

  1. Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher (64), der an einen Mikrocontroller (50) über ein Schnittstellenmodul (58) angebunden ist, das dazu eingerichtet ist, Speicheradressen für zu speichernde Datenelemente und Fehlerkorrekturwerte für Datenelemente zu berechnen, mit den von dem Schnittstellenmodul (58) durchgeführten Schritten: Empfangen (10) des zu speichernden Datenelements; Berechnen (12) einer Speicheradresse im externen Speicher für das zu speichernde Datenelement; Berechnen (14) eines Fehlerkorrekturwerts für das Datenelement; Schreiben (16) des Datenelements und des Fehlerkorrekturwerts in den externen Speicher beginnend an der Speicheradresse, wobei der Fehlerkorrekturwert unmittelbar auf das Datenelement folgend geschrieben wird und das Schreiben innerhalb einer Adressierungsphase erfolgt.
  2. Verfahren nach Anspruch 1, umfassend einen Lesevorgang des geschriebenen Datenelements aus dem Speicher mit den von dem Schnittstellenmodul (58) durchgeführten Schritten: Bestimmen (22) der Speicheradresse des Datenelements, Lesen (24) des Datenelements und des Fehlerkorrekturwerts innerhalb einer Adressierungsphase aus dem Speicher; Berechnen (26) eines Fehlerkorrekturvergleichswerts aus dem gelesenen Datenelement; und Vergleichen (28) des Fehlerkorrekturvergleichswerts mit dem gelesenen Fehlerkorrekturwert, um festzustellen, ob diese gleich sind oder nicht gleich sind.
  3. Verfahren nach Anspruch 2, mit den weiteren von dem Schnittstellenmodul (58) durchgeführten Schritten: wenn der Fehlerkorrekturvergleichswert und der gelesene Fehlerkorrekturwert gleich sind, Senden (30) des gelesenen Datenelements; und wenn der Fehlerkorrekturvergleichswert und der gelesene Fehlerkorrekturwert nicht gleich sind, Senden (36) eines auf Grundlage des gelesenen Datenelements und des gelesenen Fehlerkorrekturwerts korrigierten Datenelements.
  4. Verfahren nach einem der Ansprüche 2 oder 3, mit den weiteren von dem Schnittstellenmodul (58) durchgeführten Schritten: Empfangen eines geänderten Teil-Datenelements des gelesenen Datenelements; Bilden eines geänderten Datenelements aus dem geänderten Teil-Datenelement und den nicht geänderten Teilen des gelesenen Datenelements; Berechnen eines geänderten Fehlerkorrekturwerts basierend auf dem geänderten Datenelement; und Schreiben, beginnend an der Speicheradresse, des geänderten Datenelements und unmittelbar darauffolgend des geänderten Fehlerkorrekturwerts in den externen Speicher innerhalb einer Adressierungsphase.
  5. Verfahren nach einem der vorstehenden Ansprüche, wobei das zu speichernde Datenelement von wenigstens einem Prozessorkern (54) des Mikroprozessors (50) an das Schnittstellenmodul (58) gesendet wird und/oder, falls abhängig von Anspruch 3, von dem Schnittstellenmodul (58) an den wenigstens einen Prozessorkern (54) des Mikroprozessors (50) gesendet wird.
  6. Schnittstellenmodul (58) zur abgesicherten Speicherung eines Datenelementes in einem externen Speicher (64), das dazu eingerichtet ist, ein Verfahren nach einem der vorstehenden Ansprüche durchzuführen.
  7. Schnittstellenmodul (58) nach Anspruch 6, das dazu eingerichtet ist, Speicheradressen und Fehlerkorrekturwerte für zu speichernde Datenelemente bzw. für gelesene Datenelemente zu berechnen und Speicheradressen von Datenelementen in einem Adressraum des Mikrocontrollers in Speicheradressen in einem Adressraum des externen Speichers abzubilden, wobei bei der Abbildung der Speicherplatzbedarf des Fehlerkorrekturwerts berücksichtigt wird.
  8. Mikrocontroller (50) umfassend ein Schnittstellenmodul (58) nach einem der Ansprüche 6 oder 7.
  9. Mikrocontroller (50) nach Anspruch 8 umfassend mindestens einen Prozessorkern (54), der mit dem Schnittstellenmodul (58) verbunden ist.
  10. Recheneinheit (52) umfassend einen Mikrocontroller (50) nach einem der Ansprüche 8 oder 9.
  11. Recheneinheit (52) nach Anspruch 10 umfassend einen externen Speicher (64), der mit dem Schnittstellenmodul (58) verbunden ist.
DE102020209133.1A 2020-07-21 2020-07-21 Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und Schnittstellenmodul Pending DE102020209133A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102020209133.1A DE102020209133A1 (de) 2020-07-21 2020-07-21 Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und Schnittstellenmodul
US17/317,353 US11573857B2 (en) 2020-07-21 2021-05-11 Method for the secured storing of a data element in an external memory and interface module
CN202110819017.XA CN113961382A (zh) 2020-07-21 2021-07-20 用于将数据元素安全存储在外部存储器中的方法和接口模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102020209133.1A DE102020209133A1 (de) 2020-07-21 2020-07-21 Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und Schnittstellenmodul

Publications (1)

Publication Number Publication Date
DE102020209133A1 true DE102020209133A1 (de) 2022-01-27

Family

ID=79179156

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020209133.1A Pending DE102020209133A1 (de) 2020-07-21 2020-07-21 Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und Schnittstellenmodul

Country Status (3)

Country Link
US (1) US11573857B2 (de)
CN (1) CN113961382A (de)
DE (1) DE102020209133A1 (de)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8437183B2 (en) * 2009-12-16 2013-05-07 Sandisk Il Ltd. Auxiliary parity bits for data written in multi-level cells
US10489241B2 (en) * 2015-12-30 2019-11-26 Arteris, Inc. Control and address redundancy in storage buffer
US11728003B2 (en) * 2020-05-12 2023-08-15 Qualcomm Incorporated System and memory with configurable error-correction code (ECC) data protection and related methods

Also Published As

Publication number Publication date
US20220027237A1 (en) 2022-01-27
CN113961382A (zh) 2022-01-21
US11573857B2 (en) 2023-02-07

Similar Documents

Publication Publication Date Title
DE19964013B4 (de) Verfahren und Vorrichtung zur Steuerung von Betriebsabläufen in einem Fahrzeug
EP3776222B1 (de) Verfahren zum bereitstellen von anwendungsdaten zumindest einer auf einem steuergerät eines fahrzeugs ausführbaren anwendung, verfahren zum kalibrieren eines steuergeräts, steuergerät und auswerteeinrichtung
WO2012113547A2 (de) Verfahren zum betrieb einer mikroprozessoreinheit, insbesondere in einem mobilen endgerät
DE19839680B4 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
EP2698678A2 (de) Konfigurationstechnik für ein Steuergerät mit miteinander kommunizierenden Anwendungen
EP1611517B1 (de) Programmgesteuerte einheit
EP1588380B1 (de) Verfahren zur erkennung und/oder korrektur von speicherzugriffsfehlern und elektronische schaltungsanordnung zur durchführung des verfahrens
EP1889128B1 (de) Verfahren und vorrichtung zur umschaltung bei einem speicher für ein steuergerät
DE102020209133A1 (de) Verfahren zur abgesicherten Speicherung eines Datenelements in einem externen Speicher und Schnittstellenmodul
EP1913478A1 (de) Mikroprozessorsystem zur steuerung bzw. regelung von zumindest zum teil sicherheitskritischen prozessen
EP0347970B1 (de) Verfahren zum Prüfen eines Festwertspeichers und Anordnung zur Durchführung des Verfahrens
DE102020209136A1 (de) Verfahren zur abgesicherten Speicherung eines von einem Computerprogramm zu speichernden Datenelements in einem externen Speicher
DE102020209132A1 (de) Verfahren zur abgesicherten Speicherung eines zu speichernden Datenelements eines vorgegebenen Datentyps durch ein Computerprogramm in einem externen Speicher
DE19963475B4 (de) Verfahren und Vorrichtung zur Steuerung von Betriebsabläufen in einem Fahrzeug sowie zur Bereitstellung von Daten diesbezüglich
DE102019118703A1 (de) System und Verfahren zum kontinuierlichen Verifizieren der Bauelementzustandsintegrität
WO2003009133A2 (de) Verfahren zum ansteuern einer zentralen verarbeitungseinheit für eine adressierung bezüglich eines speichers und controller
DE102005060901A1 (de) Verfahren zur Erkennung einer Versorgungsunterbrechung in einem Datenspeicher und zur Wiederherstellung des Datenspeichers
DE102006036384A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen
WO2004090654A2 (de) Programmgesteuerte einheit
DE102021101458A1 (de) Master- und Slave-Prozessoren zum Konfigurieren von Subsystemen
EP1293858B1 (de) Verfahren zum Schutz eines Mikrorechner-Systems gegen Manipulation seines Programms
EP0715313B1 (de) Verfahren zur Programmierung eines elektrisch löschbaren, nichtflüchtigen Speichers in einem elektronischen Rechengerät sowie Steuergerät zur Verwendung bei dem Verfahren
DE102009024019A1 (de) Fehlererkennungscode-Speichermodul
EP2461253B1 (de) Mikroprozessmodul, insbesondere Chipkarten-Mikroprozessormodul
EP1639466B1 (de) Verfahren und vorrichtung zur fehlererkennung für einen cachespeicher und entsprechender cachespeicher