DE102020209136A1 - Method for secure storage of a data element to be stored by a computer program in an external memory - Google Patents
Method for secure storage of a data element to be stored by a computer program in an external memory Download PDFInfo
- Publication number
- DE102020209136A1 DE102020209136A1 DE102020209136.6A DE102020209136A DE102020209136A1 DE 102020209136 A1 DE102020209136 A1 DE 102020209136A1 DE 102020209136 A DE102020209136 A DE 102020209136A DE 102020209136 A1 DE102020209136 A1 DE 102020209136A1
- Authority
- DE
- Germany
- Prior art keywords
- error correction
- memory
- data element
- interface module
- data item
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0736—Error 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
Abstract
Die Erfindung betrifft ein Verfahren zur abgesicherten Speicherung eines von einem Computerprogramm zu speichernden Datenelements in einem externen Speicher (64), der an einen Mikrocontroller (50) angebunden ist, wobei der Mikrocontroller ein Schnittstellenmodul (58) umfasst, das dazu eingerichtet ist, Fehlerkorrekturwerte für Datenelemente zu berechnen, umfassend bei Erstellung des Computerprogramms, während einer Bestimmung von Speicheradressen des Computerprogramms ein Bestimmen (10) einer Speicheradresse in dem externen Speicher für das Datenelement, wobei ein gemeinsamer Speichplatzbedarf von Datenelement und einem zugehörigen Fehlerkorrekturwert berücksichtigt wird; und bei Ausführung des Computerprogramms ein Empfangen (12) des Datenelements durch das Schnittstellenmodul; ein Berechnen (14) eines Fehlerkorrekturwerts für das Datenelement durch das Schnittstellenmodul; und ein Schreiben (16), beginnend an der Speicheradresse, des Datenelements und unmittelbar darauffolgend des berechneten Fehlerkorrekturwerts innerhalb einer Adressierungsphase durch das Schnittstellenmodul. Weiter werden ein entsprechender Mikrocontroller und eine Recheneinheit bereitgestellt.The invention relates to a method for the secure storage of a data element to be stored by a computer program in an external memory (64) which is connected to a microcontroller (50), the microcontroller comprising an interface module (58) which is set up to output error correction values for to calculate data elements, comprising when creating the computer program, during a determination of memory addresses of the computer program, determining (10) a memory address in the external memory for the data element, taking into account a common memory space requirement of data element and an associated error correction value; and upon execution of the computer program, receiving (12) the data item by the interface module; calculating (14), by the interface module, an error correction value for the data item; and writing (16) by the interface module, starting at the memory address, the data element and immediately thereafter the calculated error correction value. A corresponding microcontroller and a computing unit are also provided.
Description
Die vorliegende Erfindung betrifft ein Verfahren zur abgesicherten Speicherung eines von einem Computerprogramm zu speichernden Datenelements in einem externen Speicher sowie einen Mikrocontroller und eine Recheneinheit zu dessen Durchführung.The present invention relates to a method for secure storage of a data element to be stored by a computer program in an external memory, as well as a microcontroller and a processing unit for carrying it out.
Stand der TechnikState of the art
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 working memories such as SRAM, Flash, PCM or DRAM, in order to secure the data content, additional bits known as "Error Correction Code" (ECC) for error correction or error detection can be stored in addition to the data bits. Single or multiple bit errors within a data element can thus be detected and corrected depending on the number of bit errors within the data element.
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.So-called microcontrollers are used in embedded systems, such as control units of machines or vehicles. In addition to one or more processor cores, they have a certain, limited amount of internal memory in which programs and data are stored during execution. An error correction method using ECC can be implemented in the microcontroller for this main memory, in particular for safety-critical applications, for example in motor vehicles.
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.Typical SRAM memory cells used as main memory in microcontrollers have 6 transistors and are therefore relatively expensive and complex to manufacture, which is why the main memory integrated in the microcontroller is often only large enough for basic applications. Internal expandability of the main memory is usually not provided or not possible in microcontrollers for cost reasons, since the main memory is integrated with the processor cores in one chip.
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.To enable the execution of applications that access a larger main memory than provided on the microcontroller, an external main memory can be connected via a communication interface, e.g. an SPI interface (Serial Peripheral Interface). This external working memory can be implemented inexpensively in the form of DRAM memory cells that only require one transistor. However, no error correction function is implemented in available externally connectable main memories.
Offenbarung der ErfindungDisclosure of Invention
Erfindungsgemäß werden ein Verfahren zur abgesicherten Speicherung eines von einem Computerprogramm zu speichernden Datenelements in einem externen Speicher sowie 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.According to the invention, a method for secure storage of a data element to be stored by a computer program in an external memory as well as a microcontroller and a processing unit for carrying it out are proposed with the features of the independent patent claims. Advantageous configurations are the subject of the dependent claims and the following description.
Die Erfindung basiert auf der Maßnahme, dass bei der Erstellung des Computerprogramms, d.h. insbesondere beim Bestimmen bzw. Zuweisen der (physikalischen) Speicheradresse für das zu speichernde Datenelement z.B. im sog. Linker oder Locator, ein gemeinsamer Speichplatzbedarf von Datenelement und einem zugehörigen Fehlerkorrekturwert berücksichtigt wird, also mit anderen worten entsprechender Platz zwischen aufeinanderfolgenden Datenelementen freigelassen wird. Somit ist der physikalisch „reservierte“ Speicherplatz zwischen zwei aufeinanderfolgenden Speicheradressen für Datenelemente so groß, dass er sowohl ein Datenelement als auch einen Fehlerkorrekturwert aufnehmen kann, obwohl im Programmcode selbst nur das Datenelement gespeichert wird. The invention is based on the measure that when creating the computer program, ie in particular when determining or assigning the (physical) memory address for the data element to be stored, e.g. in the so-called linker or locator, a common memory space requirement for the data element and an associated error correction value is taken into account , in other words corresponding space is left free between consecutive data elements. Thus, the physically "reserved" memory space between two consecutive memory addresses for data items is so large that it can accommodate both a data item and an error correction value, although only the data item is stored in the program code itself.
Der Fehlerkorrekturwert wird dann im Betrieb von einem Schnittstellenmodul des Mikrocontrollers hinzugefügt.The error correction value is then added on the fly by an interface module of the microcontroller.
Entsprechend werden gemäß dem vorgeschlagenen Verfahren durch das Schnittstellenmodul das Datenelement und der zugehörige Fehlerkorrekturwert (im Folgenden auch ECC-Wert) innerhalb einer einzigen Adressierungsphase des Speichers geschrieben, eine eigenständige Adressberechnung zur Bestimmung einer Speicheradresse für den ECC-Wert oder 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.According to the proposed method, the data element and the associated error correction value (hereinafter also ECC value) are written by the interface module within a single addressing phase of the memory, an independent address calculation to determine a memory address for the ECC value or another long address access during a separate addressing phase for the ECC value. This is advantageous because it reduces memory access times compared to handling data elements and ECC values independently of one another.
Wie erläutert, wird die Berechnung des ECC-Werts während der Ausführung des Computerprogramms 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.As explained, the calculation of the ECC value is performed by the interface module during the execution of the computer program. This is designed as a hardware module of the microcontroller. A corresponding functionality, which is implemented in the processor core or as software, is not required. Accordingly, no modification of existing processor cores or software is necessary.
Das Bestimmen der Speicheradresse in dem externen Speicher bzw. die Bestimmung der Speicheradressen des Computerprogramms erfolgt bei Erstellung des Computerprogramms, wobei bevorzugt ist, dass das Bestimmen der Speicheradresse bzw. die Bestimmung der Speicheradressen des Computerprogramms durch ein Programmierwerkzeug erfolgt, insbesondere durch einen Linker oder einen Locator, das in einem Computerprogrammcode des Computerprogramms oder in einem kompilierten oder assemblierten Binärcode bzw. Objektcode des Computerprogrammcodes enthaltene logische Speicheradressen in Speicheradressen des externen Speichers abbildet.The memory address in the external memory or the memory addresses of the computer program are determined at Creation of the computer program, it being preferable for the memory address or the memory addresses of the computer program to be determined by a programming tool, in particular by a linker or a locator, which is in a computer program code of the computer program or in a compiled or assembled binary code or object code maps logical memory addresses contained in the computer program code into memory addresses in the external memory.
Als Computerprogrammcode bzw. Software wird hier ein von dem Programmierer in einer Programmiersprache (z.B. in C oder Assembler) geschriebener Code, der die Funktion des Computerprogramms implementiert, verstanden. Der aus diesem Computerprogrammcode durch Kompilierung und/oder Assemblierung erhaltene Objektcode wird bei Erstellung des Computerprogramms zusammengefügt, wobei insbesondere Symbolen in dem Objektcode, die z.B. auf Datenelemente verweisen, Speicheradressen zugewiesen werden. Es werden also Speicheradressen des Computerprogramms bestimmt. Dies erfolgt durch einen sogenannten Linker. Bei Mikrocontrollern, die auf dem Gebiet eingebetteter Anwendungen verwendet werden, werden Computerprogramme und Datenelemente typischerweise an absoluten - bezogen auf den Adressraum des Mikrocontrollers - Adressen gespeichert. Wenn der Linker nur relative Adressen erzeugt, wird zusätzlich ein sogenannter Locator verwendet, der die relativen Adressen in absolute Adressen umwandelt.Computer program code or software is understood here as a code written by the programmer in a programming language (e.g. in C or assembler) that implements the function of the computer program. The object code obtained from this computer program code by compiling and/or assembling is combined when the computer program is created, with memory addresses being assigned in particular to symbols in the object code, which refer to data elements, for example. Memory addresses of the computer program are thus determined. This is done by a so-called linker. In microcontrollers used in the field of embedded applications, computer programs and data items are typically stored at absolute addresses relative to the microcontroller's address space. If the linker only generates relative addresses, a so-called locator is also used, which converts the relative addresses into absolute addresses.
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.Any suitable error correction method, such as a Hamming code, can be used as the error correction method or error detection method for calculating the ECC value. Such methods are known per se to those skilled in the art.
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.The external memory connected via the interface module can, in particular, be a volatile memory that is used by the microcontroller as working memory, i.e. a DRAM memory (DRAM, Dynamic Random Access Memory). However, it is also possible to use the method with a non-volatile memory.
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.The "addressing phase" is understood here as a memory access (writing or reading) in which, starting with a start address, a certain number of consecutive bits (or bytes) (i.e. to be saved or stored at consecutive addresses) are written or read. The starting address is referred to as the storage address of the corresponding data.
Im Rahmen dieser Anmeldung wird auf ein zu speicherndes Datenelement Bezug genommen, es ist jedoch klar, dass das erfindungsgemäße Verfahren auch auf mehrere zu speichernde Datenelemente angewandt werden kann (wobei die während der Ausführung des Computerprogramms auszuführenden Schritte aufeinanderfolgend jeweils auf verschiedene Datenelemente angewandt werden), ein Datenelement kann also im Sinne von wenigstens ein Datenelement verstanden werden.In the context of this application, reference is made to a data item to be stored, but it is clear that the method according to the invention can also be applied to several data items to be stored (whereby the steps to be carried out during the execution of the computer program are successively applied to different data items in each case), a data element can thus be understood in the sense of at least one data element.
Bevorzugt umfasst das Verfahren einen Lesevorgang des Datenelements, der ein Lesen des Datenelements und des ECC-Werts beginnend an der Speicheradresse, ein Berechnen eines Fehlerkorrektur-Vergleichswerts (im Folgenden auch ECC-Vergleichswert) für das gelesene Datenelement durch das Schnittstellenmodul und ein Vergleichen des ECC-Vergleichswerts mit dem gelesenen ECC-Wert, um festzustellen, ob diese gleich sind oder nicht gleich sind, durch das Schnittstellenmodul umfasst. Weiter bevorzugt umfasst der Lesevorgang, durch das Schnittstellenmodul, wenn der ECC-Vergleichswert und der gelesene ECC-Wert gleich sind, ein Senden des gelesenen Datenelements; und wenn der ECC-Vergleichswert und der gelesene ECC-Wert nicht gleich sind, ein Senden eines auf Grundlage des gelesenen Datenelements und des gelesenen ECC-Werts korrigierten Datenelements. Durch diese Verfahrensschritte können aufgetretene Speicherfehler beim Lesen erkannt und gegebenenfalls korrigiert werden.The method preferably includes a reading process of the data element, which reads the data element and the ECC value starting at the memory address, calculates an error correction comparison value (hereinafter also ECC comparison value) for the read data element by the interface module and compares the ECC - Comparing value with the read ECC value to determine whether they are equal or not equal, by the interface module. More preferably, the reading process comprises, by the interface module if the ECC comparison value and the read ECC value are the same, sending the read data element; and if the ECC comparison value and the read ECC value are not equal, sending a corrected data item based on the read data item and the read ECC value. By means of these method steps, memory errors that have occurred during reading can be recognized and, if necessary, corrected.
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.The read operation of the data element by the interface module preferably includes receiving a changed partial data element of the read data element, forming a changed data element from the changed partial data element and the unchanged parts of the read data element, calculating a changed error correction value based on the changed data element, and writing, starting at the memory address, the changed data element and immediately following the calculated changed error correction value within an addressing phase. This implements a read-write process that can be used, for example, to implement so-called "read-modify-write" commands. The modified or changed part of the read data word is inserted into the read data word by the interface module and the error correction value is also recalculated by the interface module. From the point of view of the software, these steps are not visible or transparent, so that they do not have to be adjusted.
Ein erfindungsgemäßer Mikrocontroller umfasst ein Schnittstellenmodul, das dazu eingerichtet ist, ein Datenelement und eine Speicheradresse für das Datenelement zu empfangen, einen ECC-Wert für das empfangene Datenelement zu berechnen, und das Datenelement und den zugehörigen ECC-Wert an die empfangene Speicheradresse in einem externen Speicher innerhalb einer Adressierungsphase zu schreiben. Der Mikrocontroller ist also dazu eingerichtet, einen Schreibvorgang entsprechend dem Verfahren, der während der Ausführung des Computerprogramms erfolgt, durchzuführen. Der Mikrocontroller ist weiter bevorzugt dazu eingerichtet, einen Lesevorgang gemäß dem erfindungsgemäßen Verfahren durchzuführen.A microcontroller according to the invention comprises an interface module which is set up for this purpose, a data element and a memory address for receiving the data item, calculating an ECC value for the received data item, and writing the data item and the associated ECC value to the received memory address in an external memory within an addressing phase. The microcontroller is therefore set up to carry out a write operation in accordance with the method that takes place during the execution of the computer program. The microcontroller is further preferably set up to carry out a reading process according to the method according to the invention.
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs, umfasst einen erfindungsgemäßen Mikrocontroller, wobei die Recheneinheit bevorzugt einen externen Speicher, der über das Schnittstellenmodul mit dem Mikrocontroller verbunden ist, umfasst.A computing unit according to the invention, e.g. a control unit of a motor vehicle, comprises a microcontroller according to the invention, the computing unit preferably comprising an external memory which is connected to the microcontroller via the interface module.
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.The invention is particularly suitable for so-called embedded systems. This includes electronic calculators or computers that are integrated (embedded) in a technical context. The computer either assumes monitoring, control or regulation functions or is responsible for a form of data or signal processing, for example when encrypting or decrypting, coding or decoding or filtering. A typical requirement for embedded systems is real-time capability. Processing at unpredictable processing speeds cannot be tolerated. Many applications (especially controllers in safety-relevant systems - i.e. systems that could endanger, injure or even kill a person) require a predictable system response time.
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.Further advantages and refinements of the invention result from the description and the attached drawing.
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.The invention is shown schematically in the drawing using exemplary embodiments and is described below with reference to the drawing.
Figurenlistecharacter list
-
1A zeigt ein Ablaufdiagramm eines Schreibvorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung;1A Figure 12 shows a flow chart of a write operation according to a preferred embodiment of the secure storage method; -
1B zeigt ein Ablaufdiagramm eines Lesevorgangs gemäß einer bevorzugten Ausführungsform des Verfahrens zur abgesicherten Speicherung;1B Figure 12 shows a flow chart of a read operation according to a preferred embodiment of the secure storage method; -
2 zeigt einen Mikrocontroller, der zur Implementierung des erfindungsgemäßen Verfahrens bevorzugt verwendet werden kann; und2 shows a microcontroller that can preferably be used to implement the method according to the invention; and -
3A und3b zeigen beispielhaft die physikalische Anordnung bzw. die Anordnung aus Sicht des Computerprogramms mehrerer Datenelemente samt zugehörigen EEC-Werten, wie sie durch die vorliegende Erfindung erreicht wird.3A and3b Fig. 12 shows, by way of example, the physical arrangement or the arrangement from the computer program's point of view of a plurality of data elements together with associated EEC values, as is achieved by the present invention.
Ausführungsform(en) der Erfindungembodiment(s) of the invention
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 eingerichtet, Fehlerkorrekturberechnungen durchzuführen.The data element can be both program data, i.e. program instructions, and data that is used and possibly changed by the computer program. An interface module is used in the method, via which the external memory is connected to the microcontroller. The interface module is set up to carry out error correction calculations.
In Schritt 10 findet eine Adressbestimmung statt, in der eine Speicheradresse für das zu speichernde Datenelement bestimmt wird. In dieser Adressbestimmung wird neben dem notwendigen Speicherplatz für das Datenelement auch ein notwendiger Speicherplatz für einen Fehlerkorrekturwert (ECC-Wert) berücksichtigt, wobei die Adressbestimmung so durchgeführt wird, dass der ECC-Wert direkt auf das Datenelement folgend angeordnet wird. Für das Datenelement und den zughörigen ECC-Wert wird also in der Adressbestimmung entsprechender Speicherplatz reserviert. Die Adressbestimmung wird während der Erstellung des Computerprogramms durchgeführt, genauer während einer Bestimmung von Speicheradressen des Computerprogramms, bevorzugt durch einen dabei verwendeten Linker und/oder Locator. Aus Sicht des Computerprogrammcodes (z.B. eines in C oder Assembler geschriebenen Programmcodes), d.h. aus Sicht des Programmierers, oder des kompilierten oder assemblierten Computerprogrammcodes, ist der ECC-Wert nicht sichtbar.In
Während der Ausführung des Computerprogramms wird in Schritt 12 das zu speichernde Datenelement und die zugehörige Speicheradresse vom Schnittstellenmodul empfangen und in Schritt 14 wird der zum Datenelement gehörige ECC-Wert berechnet. Beide Schritte 12, 14 werden durch das Schnittstellenmodul durchgeführt.During execution of the computer program, in
In Schritt 16, der ebenfalls vom Schnittstellenmodul durchgeführt wird, werden das Datenelement und der ECC-Wert während einer einzelnen Adressierungsphase an die empfangene Speicheradresse in den Speicher geschrieben, d.h. das Datenelement wird beginnend an der empfangenen 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.In
Nach Empfang einer Leseanforderung enthaltend eine Speicheradresse durch das Schnittstellenmodul werden in Schritt 24 werden, beginnend an der empfangenen 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.After receipt of a read request containing a memory address by the interface module, in
In Schritt 26 wird ein Fehlerkorrektur-Vergleichswert (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.In
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 gesendet, insbesondere an den mindestens einen Prozessorkern des Mikrocontrollers, Schritt 30.If the ECC comparison value is equal to the ECC value, i.e. if (in terms of the error correction method used) no memory error has occurred, the read data element is sent, in particular to the at least one processor core of the microcontroller,
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.If the ECC comparison value is not equal to the ECC value, i.e. if a memory error has occurred, it is first checked in
Wenn festgestellt wird, dass der Fehler korrigiert werden kann, 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. If it is determined that the error can be corrected, in
Beim Schreibvorgang (
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, d.h. das Schnittstellenmodul ist eingerichtet, Fehlerkorrekturwerte zu berechnen und gegebenenfalls fehlerhafte gelesene Datenelemente auf Grundlage der Fehlerkorrekturwerte zu korrigieren (bei einem im Sinne des Fehlerkorrekturverfahrens erkannten Speicherfehler).The at least one
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.The microcontroller can include other
In
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 oder deren Daten 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.The external (volatile)
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, der ebenfalls im externen Arbeitsspeicher gespeichert werden soll. Die Adressbestimmung, d.h. die Bestimmung der (physikalischen) Speicheradresse im externen Arbeitsspeicher 64, an der das Datenelement gespeichert werden soll, wird vor Ausführung des Computerprogramms, insbesondere bei dessen Erstellung, durchgeführt. Bei dieser Bestimmung werden sowohl die (physikalische) Speicheradresse als auch der Speicherplatzbedarf berechnet, wobei beim Speicherplatzbedarf der Platzbedarf des Datenelements (z.B. 64 Bit) und des zugehörigen ECC-Werts (z.B. 8 Bit) berücksichtigt werden (z.B. insgesamt 72 Bit).Memory accesses to the external
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).When writing, the data element is written to the memory address and the ECC value is written immediately afterwards, so a separate address calculation for the ECC memory address, i.e. the memory address to which the ECC value is written, is not necessary. In principle, the ECC memory address can be determined from the memory address and the data element or its length to which the ECC value is written. In addition to eliminating the need for a separate address calculation for the ECC value, it is also advantageous that writing and possibly later reading of the data element and the associated ECC value can normally be carried out within a burst access of the external main memory. A so-called "burst mode" is implemented in conventional DRAM memories that are used as main memory, whereby data stored in a memory row is written or read in immediate succession, so that the provision of further data contained in a memory row takes very little time In contrast to the provision of the first data contained in the memory row, since the memory row does not have to be reactivated (typical row lengths are 512 bytes, 1 kbyte, 2 kbytes).
Da die Adressbestimmung vor Ausführung des Computerprogramms (etwa bei Programmerstellung) stattfindet und die Berechnung des ECC-Werts durch das Schnittstellenmodul ausgeführt wird, kann der Computerprogrammcode bzw. die Software ohne Kenntnis der Fehlerkorrektur programmiert werden, d.h. die Programme müssen nicht angepasst werden.Since the address is determined before the computer program is executed (e.g. when the program is created) and the ECC value is calculated by the interface module, the computer program code or the software can be programmed without knowledge of the error correction, i.e. the programs do not have to be adapted.
Die
In
Dargestellt sind beispielhaft zwei aufeinanderfolgende physikalische Speicherabschnitte 70, 71 und zwei aufeinander folgende logische Speicherabschnitte 80, 81, die jeweils bei den hexadezimalen Adressen 0x0000 und 0x0010 beginnen. Diese Speicherabschnitte dienen nur als Beispiel, ebenso sind andere Adressen möglich; auch können die logischen von den physikalischen Adressen verschieden sein. Jede hexadezimale Adresse entspricht einem Byte (8 Bit) und jeweils 4-Byte-Abschnitte, d.h. 32-Bit-Abschnitte, sind durch gestrichelte Linien angezeigt. Gespeichert sind drei 64-Bit-Datenelemente. Das erste Datenelement 72a, 72b ist beginnend bei der physikalischen Adresse (siehe
Das zweite 64-Bit-Datenelement 74a, 74b beginnt in diesem Beispiel bei der physikalischen Speicheradresse 0x000C und umfasst wieder zwei 32-Bit-Elemente 74a, 74b. Hier ist anzumerken, dass 32-Bit-Elemente 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 physikalische Speicherabschnitt 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 physikalischen Speicheradresse 0x0014. Das dritte 64-Bit-Datenelement 76a, 76b ist an der physikalischen Speicheradresse 0x0018 (bis 0x001 F) gespeichert. Dessen ECC-Wert ist an der physikalischen Speicheradresse 0x0020 gespeichert, die im in
Durch diese Anordnung im externen Speicher 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
Claims (9)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102020209136.6A DE102020209136A1 (en) | 2020-07-21 | 2020-07-21 | Method for secure storage of a data element to be stored by a computer program in an external memory |
CN202110818778.3A CN113961381A (en) | 2020-07-21 | 2021-07-20 | Method for securely storing data elements to be stored by a computer program in an external memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102020209136.6A DE102020209136A1 (en) | 2020-07-21 | 2020-07-21 | Method for secure storage of a data element to be stored by a computer program in an external memory |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102020209136A1 true DE102020209136A1 (en) | 2022-01-27 |
Family
ID=79179142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102020209136.6A Pending DE102020209136A1 (en) | 2020-07-21 | 2020-07-21 | Method for secure storage of a data element to be stored by a computer program in an external memory |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113961381A (en) |
DE (1) | DE102020209136A1 (en) |
-
2020
- 2020-07-21 DE DE102020209136.6A patent/DE102020209136A1/en active Pending
-
2021
- 2021-07-20 CN CN202110818778.3A patent/CN113961381A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN113961381A (en) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19964013B4 (en) | Method and device for controlling operations in a vehicle | |
EP2318920B1 (en) | Control appliance for a vehicle, and method for updating data for a control appliance for a vehicle | |
DE19839680B4 (en) | Method and device for modifying the memory contents of control units | |
DE102018205204A1 (en) | Method for providing application data of at least one application executable on a control device of a vehicle, method for calibrating a control device, control device and evaluation device | |
EP2698678B1 (en) | Configuration technique for a control device with applications that communicate with each other | |
WO2008006737A1 (en) | Method for operating a lin bus | |
EP0500973A1 (en) | Bootstrap routine in an EEPROM | |
EP1588380B1 (en) | Method for the recognition and/or correction of memory access errors and electronic circuit arrangement for carrying out said method | |
DE19931184A1 (en) | Altering controller memory contents involves writing new data that is worthy of security into different memory area before transferring to original memory area contg. replaced data | |
DE102020209133A1 (en) | Method for secure storage of a data element in an external memory and interface module | |
EP1889128B1 (en) | Method and device for switching in a memory for a control device | |
DE102018213618A1 (en) | Cryptography module and operating method therefor | |
EP1611516A2 (en) | Program-controlled unit | |
DE102020209136A1 (en) | Method for secure storage of a data element to be stored by a computer program in an external memory | |
DE10002203B4 (en) | Method for protecting a microcomputer system against manipulation of data stored in a memory arrangement of the microcomputer system | |
DE102016106572A1 (en) | METHOD FOR OPERATING A CONTROL DEVICE FOR A VEHICLE, CONTROL UNIT, OPERATING SYSTEM, MOTOR VEHICLE | |
DE19963475B4 (en) | A method and apparatus for controlling operations in a vehicle and providing data therefor | |
DE102020209132A1 (en) | Method for secure storage of a data element to be stored of a specified data type by a computer program in an external memory | |
DE102005060901A1 (en) | A method of detecting a supply interruption in a data store and restoring the data store | |
DE10315638A1 (en) | Program controlled unit | |
EP0715313B1 (en) | Method of programming an electrically erasable read-only memory in an elecronic computer device and control device using the method | |
DE102009024019A1 (en) | Error detection code storage module | |
DE102018200660B4 (en) | ELECTRONIC CONTROL UNIT | |
EP2461253B1 (en) | Micro-process module, in particular chip card microprocessor module | |
WO2024046863A1 (en) | Control device and method for initializing a control device |