DE102017102147B4 - Subsequent patchable memory (OTP) with bit memory cells and method of patching same - Google Patents

Subsequent patchable memory (OTP) with bit memory cells and method of patching same Download PDF

Info

Publication number
DE102017102147B4
DE102017102147B4 DE102017102147.7A DE102017102147A DE102017102147B4 DE 102017102147 B4 DE102017102147 B4 DE 102017102147B4 DE 102017102147 A DE102017102147 A DE 102017102147A DE 102017102147 B4 DE102017102147 B4 DE 102017102147B4
Authority
DE
Germany
Prior art keywords
patt
memory
memory area
area
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.)
Active
Application number
DE102017102147.7A
Other languages
German (de)
Other versions
DE102017102147A1 (en
Inventor
Jan Ortmann
Axel Fröhlich
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.)
Elmos Semiconductor SE
Original Assignee
Elmos Semiconductor SE
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 Elmos Semiconductor SE filed Critical Elmos Semiconductor SE
Publication of DE102017102147A1 publication Critical patent/DE102017102147A1/en
Application granted granted Critical
Publication of DE102017102147B4 publication Critical patent/DE102017102147B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Abstract

Nachträglich patch-barer Speicher (OTP) mit Bitspeicherzellen, die in Bits oder in Bytes oder in Datenworten mit einer Bit,- Byte- oder Wortadresse organisiert sind,- wobei die Speicherzellen in einem programmierten und einem nicht programmierten Zustand vorliegen können,- wobei der der programmierte Zustand und der nicht programmierte Zustand sich unterscheiden und- wobei ein Verfahren existiert, ausgewählte einzelne Bitspeicherzellen unabhängig von anderen Bitspeicherzellen vom nicht programmierten in den programmierten Zustand zu bringen und- wobei dem nicht programmierten Zustand einer Bitspeicherzelle ein erster logischer Zustand zugewiesen werden kann und- wobei dem programmierten Zustand einer Bitspeicherzelle ein zweiter logischer Zustand zugewiesen werden kann und- wobei der Speicher n Speicherbereiche (PATT, PATT...... PATT), aufweist, die als gespeicherten Inhalt jeweils logische Zeiger für Programmprozeduren und/oder Datentabellen und/oder Daten für einen oder mehrere Prozessoren oder endliche Automaten aufweisen, und- wobei n eine ganze positive Zahl größer gleich 1 ist und- wobei jeder i-te Speicherbereich (PATTmit 1≤i≤n) der n Speicherbereiche (PATT, PATT...... PATT) aus einem oder mehreren zusammenhängenden Adressbereichen innerhalb des Speichers (OTP) besteht, die sich nicht überlappen und- wobei ein j-ter Speicherbereich (PATT) der n Speicherbereiche (PATT, PATT...... PATT) an einer oder mehreren vordefinierten Adresspositionen innerhalb des Speicherbereichs - im Folgenden vordefinierter Adressraum genannt, dessen Definition für alle Speicherbereiche innerhalb der jeweiligen Adressbereich relativ bezogen auf den Beginn des Adressbereichs des jeweiligen Speicherbereichs gilt -• eine oder mehrere nicht programmierte Bit-Zellen, und/oder• ein oder mehrere nicht programmierte Bytes und/der• ein oder mehrere nicht programmierte Datenworte und• keine programmierten Bit-Zellen und• keine programmierten Bytes und• keine programmierten Datenworte, im Folgenden allesamt „Zero-Entry“ genannt, aufweist und- wobei mindestens ein Speicherbereich (PATT) der erste Speicherbereich ist und- wobei der erste Speicherbereich (PATT) in dem vordefinierten Adressraum innerhalb des ersten Speicherbereichs (PATT) einen Zeiger auf den zweiten Speicherbereich (PATT) enthält, wenn er nicht der j-te Speicherbereich (PATT) ist und- wobei ein vorausgehender Speicherbereich (PATTmit 1≤k-1≤j-1) in dem vordefinierten Adressraum innerhalb des vorausgehenden Speicherbereichs (PATTmit 1≤k-1≤j-1) einen Zeiger auf den nachfolgenden Speicherbereich (PATTmit 2≤k≤j) enthält, wenn er nicht der j-te Speicherbereich (PATT) ist.Subsequent patchable memory (OTP) having bit memory cells organized into bits or bytes or data words having a bit, byte or word address, the memory cells being in a programmed and an unprogrammed state, wherein the the programmed state and the unprogrammed state differ and wherein a method exists to bring selected individual bit memory cells from unprogrammed to programmed state independently of other bit memory cells, and wherein a non-programmed state of a bit memory cell can be assigned a first logical state and in which the programmed state of a bit memory cell can be assigned a second logic state, and wherein the memory has n memory areas (PATT, PATT... PATT), each having logical pointers for program procedures and / or data tables and / or data for one or more Have processors or finite state machines, and - where n is a whole positive number greater than or equal to 1 and - where every i-th memory area (PATTwith 1≤i≤n) of the n memory areas (PATT, PATT ...... PATT) one or more contiguous address areas within the memory (OTP) that do not overlap and wherein a jth memory area (PATT) of the n memory areas (PATT, PATT ...... PATT) at one or more predefined address locations within the memory area - hereinafter referred to as predefined address space whose definition applies to all memory areas within the respective address area relative to the beginning of the address area of the respective memory area - one or more unprogrammed bit cells, and / or one or more unprogrammed bytes and / or • one or more unprogrammed data words and • no programmed bit cells and • no programmed bytes and • no programmi and at least one memory area (PATT) is the first memory area and wherein the first memory area (PATT) in the predefined address space within the first memory area (PATT) a pointer to contains the second memory area (PATT) if it is not the jth memory area (PATT) and wherein a previous memory area (PATTwith 1≤k-1≤j-1) in the predefined address space within the previous memory area (PATTwith 1≤ k-1≤j-1) contains a pointer to the subsequent memory area (PATTwith 2≤k≤j) if it is not the jth memory area (PATT).

Description

Oberbegriffpreamble

Die Erfindung betrifft das Patchen von Programmteilen in einem nur einmal beschreibbaren Speicher (OTP). Die Erfindung richtet sich im Besonderen auf einen nachträglich patch-baren Speicher (OTP) mit Bitspeicherzellen, die in Bits oder in Bytes oder in Datenworten mit einer Bit,- Byte- oder Wortadresse organisiert sind sowie ein Verfahren zum Auffinden und zum Aufruf einer Programmprozedur in einem solchen OTP-Speicher bzw. zum Auffinden einer Datentabelle oder von Daten in einem solchen OTP-Speicher und ein Verfahren zum Ändern der aufzufindenden Programmprozeduren und/oder Daten und/oder Datentabellen für einen solchen OTP-Speicher. Sie stellt eine Anordnung zur Programmsteuerung, insbesondere eine Anordnung zur Durchführung eines besonderen Programms zum Laden oder Starten von Programmen und zwar zum Patchen von Programmteilen zur Beseitigung von Schwachstellen, dar.The invention relates to the patching of program parts in a write once memory (OTP). The invention is particularly directed to a post-patch memory (OTP) having bit memory cells organized into bits or bytes or data words having a bit, byte or word address, and a method for locating and calling a program procedure Such an OTP memory or for finding a data table or data in such an OTP memory and a method for changing the program procedures to be located and / or data and / or data tables for such an OTP memory. It is an arrangement for program control, in particular an arrangement for performing a special program for loading or starting programs and indeed for patching program parts for the removal of vulnerabilities, is.

Allgemeine EinleitungGeneral introduction

Insbesondere in mikroelektronischen Schaltungen für die Automobilindustrie werden Softwareteile in den mikroelektronischen Schaltreisen als sogenannte Firmware mituntergebracht. Ein dabei verwendeter Speicher kann ein OTP-Speicher sein. OTP steht hierbei für Englisch „one-time-programmable“, was bedeutet, dass die Bits des Speichers nur einmal von einem nicht programmierten Zustand in einen programmierten Zustand gebracht werden können und typischerweise nicht löschbar sind.Especially in microelectronic circuits for the automotive industry, software parts in the microelectronic switching circuits are accommodated as so-called firmware. A memory used in this case may be an OTP memory. OTP stands for English "one-time programmable", which means that the bits of the memory can only be brought from a non-programmed state into a programmed state once and are typically not erasable.

Während der Softwareentwicklung unentdeckte Fehler in der Programmlogik oder geänderte technische Rahmenbedingungen können es auch nach Serienstart notwendig machen, Teile des im OTP-Speicher vorhandenen Programm-Kodes auszutauschen. Dabei tritt das Problem auf, dass die Einzelbits einer OTP Speicherzelle nur einmalig geschrieben werden können, d.h. sie können, je nach eingesetzter Technologie, nur einmal von 0 auf 1, bzw. von 1 auf 0 umprogrammiert werden. Ein erneutes Ändern eines Speicherbits ist dann nicht mehr möglich. Das unten vorgeschlagene Verfahren und die vorgeschlagene Speicherorganisation ermöglichen es, trotz dieser Einschränkung, Teile der Programmlogik auszutauschen. Gleichzeitig ist es dennoch möglich, die Gültigkeit des aktuellen Speicherinhaltes zu verifizieren (z.B. über eine Prüfsumme).During software development, undetected errors in the program logic or changed technical conditions may make it necessary to replace parts of the program code in the OTP memory even after the start of series production. The problem arises that the individual bits of an OTP memory cell can only be written once, i. Depending on the technology used, they can only be reprogrammed from 0 to 1 or from 1 to 0 once. Changing the memory bit again is no longer possible. The method proposed below and the proposed memory organization make it possible, despite this restriction, to exchange parts of the program logic. At the same time, it is still possible to verify the validity of the current memory contents (e.g., via a checksum).

Stand der TechnikState of the art

Aus der US 2015 0 317 152 A1 ist ein Verfahren bekannt, dass das Patchen von Programmcode in OTP-Speichern unterstützt. Der Programm-Kode wird in dem OTP-Speicher direkt abgespeichert und von dort ausgeführt. Der Programm-Kode im OTP-Speicher wird dabei auf Unterprogrammebene ausgeführt. Das Verfahren der US 2015 0 317 152 A1 umfasst die folgenden Schritte:

  1. (1) Bereitstellen eines einmalig programmierbaren (OTP) Speichers und von Mitteln die dazu geeignet sind, die Bits des OTP-Speichers zu modifizieren, wobei ein oder mehrere Speicherstellen Sprung-Befehle umfassen, die in den Original-Code im OTP-Speicher so eingefügt werden, dass Unterprogrammaufrufe aus den besagten Speicherstellen vorgenommen werden anstatt direkt in das Unterprogramm an die Startadresse selbst zu springen;
  2. (2) Programmierung einer neuen Unterprogrammroutine in einem zuvor nicht programmierten OTP-Speicherbereich;
  3. (3) Patchen einer Speicherstelle in der Form, dass nach dem Patchen der Sprung zu dem Unterprogramm gelöscht wird und stattdessen ein Sprung an die neue Unterprogrammstelle erfolgt.
From the US 2015 0 317 152 A1 For example, a method is known that supports patching of program code into OTP stores. The program code is stored directly in the OTP memory and executed from there. The program code in the OTP memory is executed at the subprogram level. The procedure of US 2015 0 317 152 A1 includes the following steps:
  1. (1) providing a one-time programmable memory (OTP) and means adapted to modify the bits of the OTP memory, one or more memory locations comprising jump instructions inserted into the original code in the OTP memory be that subroutine calls are made from the said memory locations instead of jumping directly to the subroutine at the start address itself;
  2. (2) programming a new subroutine routine in a previously unprogrammed OTP memory area;
  3. (3) Patching a memory location such that, after patching, the jump to the subroutine is cleared and instead a jump is made to the new subroutine location.

Darüber hinaus offenbart die Schrift DE 10 2014 006 998 A1 ein Verfahren zum Konfigurieren eines Korrekturcodes für einen programmierbaren Speicher. Der programmierbare Speicher der DE 10 2014 006 998 A1 umfasst Datenbitzellen. Ein Datenwort umfasst gemäß der technischen Lehre der DE 10 2014 006 998 A1 eine Gruppe von Datenbitzellen. Das in der DE 10 2014 006 998 A1 offenbarte Verfahren umfasst das Identifizieren einer ersten Stelle im programmierbaren Speicher, wo eine Korrektur erforderlich ist und das Modifizieren eines Datenwortes an der ersten Stelle zu einem vorbestimmten Datenwert sowie das Schreiben eines Korrekturcodes für die Korrektur an einer Korrekturcodestelle und das Speichern der Korrekturcodestelle.In addition, the Scripture reveals DE 10 2014 006 998 A1 a method for configuring a correction code for a programmable memory. The programmable memory of the DE 10 2014 006 998 A1 includes data bit cells. A data word comprises according to the technical teaching of DE 10 2014 006 998 A1 a group of data bit cells. That in the DE 10 2014 006 998 A1 The disclosed method comprises identifying a first location in the programmable memory where correction is required and modifying a data word at the first location to a predetermined data value, and writing a correction code for correction to a correction code location and storing the correction code location.

Aus der Schrift GB 2 231 419 A ist ein Verfahren zum Überschreiben der in einem programmierbaren Lesespeicher (PROM) gespeicherten Information bekannt. Gemäß der technischen Lehre der GB 2 231 419 A soll der programmierbare Lesespeicher in seinem Adressbereich zumindest einen Abschnitt mit vordefiniertem ausführbaren Programmbefehlen aufweisen, sowie einen nicht programmierten Adressbereich und Mittel zur Korrelationsinformation. Gemäß der technischen Lehre der GB 2 231 419 A weist das dort vorgeschlagene Verfahren einen Schritt zur Speicherung neuer Programmdaten in dem zuvor noch unprogrammierten Bereich auf. In einem weiteren Schritt werden die Mittel zur Korrelationsinformation so umprogrammiert, dass dieser neue Programmcode mit dem alten Programmcode korreliert wird. Am Beginn der bereits existierenden Programminformation ist ein Befehl vorgesehen, der den Prozessor dazu veranlasst, erst die besagten Mittel zur Korrelationsinformation zu konsultieren, bevor der bereits existierende Code ausgeführt wird. Sofern die besagten Mittel zur Korrelationsinformation dies signalisieren, führt gemäß der technischen Lehre der GB 2 231419 A der Prozessor jedoch nicht den bereits existierenden Code, sondern den besagten neuen Code aus.From the Scriptures GB 2 231 419 A A method for overwriting the information stored in a programmable read only memory (PROM) is known. According to the technical teaching of GB 2 231 419 A the programmable read-only memory should have at least a section with predefined executable program instructions in its address area, as well as a non-programmed address area and means for correlation information. According to the technical teaching of GB 2 231 419 A The method proposed there has a step for storing new program data in the previously unprogrammed area. In a further step, the means for correlation information are reprogrammed so that this new program code is correlated with the old program code. At the beginning of already existing program information is a Command is provided, which causes the processor to first consult the said means for correlation information before the already existing code is executed. If the means for correlation information signal this leads, according to the technical teaching of GB 2 231419 A However, the processor does not use the already existing code, but the said new code.

Die in der US 2015 0 317 152 A1 , der GB 2 231 419 A und der DE 10 2014 006 998 A1 offenbarte technische Lehren setzen jeweils voraus, dass der Befehlssatz des für die Programmabarbeitung eingesetzte Prozessors mindestens einen „neutralen“ oder speziellen Befehl enthält und dessen OP-Code zusätzlich den Wert einer nicht programmierten OTP-Speicherzelle repräsentiert. Dies ist nicht bei allen Prozessoren der Fall. Es können daher keine Standardprozessoren eingesetzt werden. Zusätzlich darf dieser Befehl bei dessen Abarbeitung den Zustand des Gesamtsystems nicht ändern. Die Existenz eines solchen Befehls ist bei der hier vorgeschlagenen Lösung nicht notwendig. Die Vorteile der vorgeschlagenen Lösung sind hierauf nicht beschränkt.The in the US 2015 0 317 152 A1 , of the GB 2 231 419 A and the DE 10 2014 006 998 A1 In each case, the technical teachings disclosed assume that the instruction set of the processor used for program execution contains at least one "neutral" or special instruction and whose OP code additionally represents the value of an unprogrammed OTP memory cell. This is not the case with all processors. Therefore, no standard processors can be used. In addition, this command must not change the state of the overall system during its execution. The existence of such a command is not necessary in the solution proposed here. The advantages of the proposed solution are not limited thereto.

Aufgabe der ErfindungObject of the invention

Der Erfindung liegt daher die Aufgabe zugrunde, eine Lösung zu schaffen die die obigen Nachteile des Stands der Technik nicht aufweist und weitere Vorteile aufweist.The invention is therefore based on the object to provide a solution which does not have the above disadvantages of the prior art and has further advantages.

Diese Aufgabe wird durch eine Vorrichtung nach Anspruch 1 und Verfahren nach Anspruch 2, 3 und 4 gelöst.This object is achieved by a device according to claim 1 and method according to claim 2, 3 and 4.

Lösung der AufgabeSolution of the task

Es wird ein eine Technik zum Patchen eines OTP-Speichers mit einer möglichen Gültigkeitsüberprüfung der jeweiligen Speicherbereiche vorgeschlagen. OTP steht hierbei für Englisch One-Time-Programmable, was bedeutet, dass die Bits dieses Speichers nur einmal von einem nicht programmierten in einen programmierten Zustand gebracht werden können. Der Vorgang ist also nicht reversibel. Der nicht programmierte Zustand eines solchen Bits ist dabei vorzugsweise mit einem ersten logischen Zustand verknüpft und der programmierte Zustand eines solchen Bits mit einem zweiten logischen Zustand. Im Gegensatz dazu können MTP Speicher gesehen werden. MTP steht hierbei für Englisch Multiple-Times-Programmable, was bedeutet, dass die Bits dieses Speichers mehrfach von einem nicht programmierten in einen programmierten Zustand gebracht werden können. Bei MTP-Speichern muss die Programmierung daher auf irgend eine Weise reversibel sein.A technique is proposed for patching an OTP memory with a possible validation of the respective memory areas. OTP stands for English One-Time Programmable, which means that the bits of this memory can only be changed from an unprogrammed to a programmed state once. The process is therefore not reversible. The non-programmed state of such a bit is preferably associated with a first logical state and the programmed state of such a bit with a second logical state. In contrast, MTP memory can be seen. MTP stands for English Multiple-Times-Programmable, which means that the bits of this memory can be changed several times from an unprogrammed to a programmed state. Therefore, programming with MTP must be reversible in some way.

Um es zu ermöglichen, alle oder Teile existierender Software, die sich in einem OTP-Speicher eines mikroelektronischen Speichers befindet, zu ändern, ist es notwendig, zusätzlichen OTP-Speicher mit einem zusätzlichen OTP-Speicheradressraum bereitzustellen und ein dazu passendes Verfahren anzugeben, existierende Unterprogrammaufrufe in neue Programmaufrufe umzuwandeln, die in einem späteren Programmablauf in diesem zusätzlichen OTP-Speicher für diese Unterprogramme resultieren. Ein solches, „Patch“-Prozess genanntes Verfahren ist für die Automobilindustrie von besonderer Bedeutung, da es im Falle von Erkenntnissen aus statistischen Marktdaten vorkommen kann, dass das Bedürfnis besteht auch nach Auslieferung der Automobile den Programmablauf den neuen Erkenntnissen anzupassen.To make it possible to change all or part of existing software residing in an OTP memory of a microelectronic memory, it is necessary to provide additional OTP memory with an additional OTP memory address space and specify a matching method to existing subroutine calls into new program calls that result in a later program flow in this additional OTP memory for these subroutines. Such a method called "patch" process is of particular importance for the automotive industry, since in the case of findings from statistical market data, it may happen that there is a need to adapt the program sequence to the new findings even after the automobiles have been delivered.

Während des Patch-Prozesses wird dieser zusätzliche OTP-Speicheradressraum mit neuem Programm-Code und/oder neuen Daten gefüllt, um die neuen Erkenntnisse zu implementieren können. Dieser neuem Programm-Code und/oder diese neuen Daten ersetzen den bisherigen Programm-Code und/oder die bisherigen Daten. Hierzu ist es notwendig den bisherigen Programm-Code und/oder die bisherigen Daten als ungültig zu markieren, sodass der Rechner diesen Programm-Code und/oder die bisherigen Daten nicht weiter benutzt. Des Weiteren ist es notwendig, dem Rechner mitzuteilen, wo stattdessen der neue Programm-Code und/oder die neuen Daten zu finden sind. Schließlich müssen die neuen Daten und/oder der neue Programm-Code durch den Rechner als gültig erkannt werden können und daher als gültig markiert sein.During the patch process, this additional OTP memory address space is filled with new program code and / or new data to implement the new insights. This new program code and / or this new data replace the previous program code and / or the previous data. For this purpose, it is necessary to mark the previous program code and / or the previous data as invalid, so that the computer does not continue to use this program code and / or the previous data. Furthermore, it is necessary to tell the computer where to find the new program code and / or the new data instead. Finally, the new data and / or the new program code must be recognized by the computer as valid and therefore be marked as valid.

Gleichzeitig mit dem Patch-Prozess des Austauschs der Software und/oder Daten oder von Teilen derselben kann eine Gültigkeitsüberprüfung des existierenden und gültigen Speicherinhalts, also der Software und der Daten oder von Teilen derselben erfolgen.Simultaneously with the patching process of the exchange of software and / or data or parts thereof, a validation of the existing and valid memory contents, ie the software and the data or parts thereof, may be made.

Hierzu wird vorgeschlagen, dass alle Unterprogrammaufrufe in den Adressbereich des OTP-Speichers hinein nicht direkt programmiert werden. Stattdessen wird jeder Aufruf der patch-baren Unterprogramme und der Zugriff auf Daten in patch-bar organisierten Datenblöcken so ausgeführt, dass der Aufruf eine Adressen-Übersetzungstabelle (PATT) referenziert.For this purpose, it is proposed that all subprogram calls into the address area of the OTP memory are not programmed directly. Instead, each call to the patchable subroutines and access to data in patch-bar organized blocks of data is executed so that the call references an address translation table (PATT).

Des Weiteren wird vorgeschlagen, dass alle Datenabrufe in den Adressbereich des OTP-Speichers hinein ebenfalls nicht direkt programmiert werden. Stattdessen wird jeder Zugriff auf Daten in patch-bar organisierten Datenblöcken so ausgeführt, dass der Zugriff die Adressen-Übersetzungstabelle (PATT) referenziert.Furthermore, it is proposed that all data calls into the address area of the OTP memory are likewise not programmed directly. Instead, any access to data in patch-bar organized blocks is done so that the access references the address translation table (PATT).

Die Adressen-Übersetzungstabelle (PATT) enthält notwendiger Weise einen Eintrag für jedes Unterprogramm und jeden patch-baren Datenblock und zusätzlich zu diesen zumindest einen weiteren, nicht programmierten Eintrag an einer vordefinierten Adresse bzw. im vordefinierten Adressraum. Dieser nichtprogrammierte Eintrag befindet sich bevorzugt, aber nicht notwendiger Weise am Beginn des gesamten Adressraums des Speicherbereichs der Adressen-Übersetzungstabelle (PATT). In diesem beispielhaften Fall ist der Beginn des Adressraums des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) die vordefinierte Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT). Dieser nicht programmierte Eintrag an der vordefinierten Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) wird im Folgenden als Zero-Entry bezeichnet. Nicht alle Informationen, die an der vordefinierten Adresse bzw. im vordefinierten Adressraum des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) abgelegt sind, werden dabei immer als nichtprogrammierter Eintrag genutzt, sondern nur ein vorgegebener Teil dieser Informationen. Es ist in einigen Versionen aber möglich alle Informationen, die an der vordefinierten Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) abgelegt sind, als nichtprogrammierter Eintrag zu nutzen. Zero-Entry bedeutet im Sinne dieser Offenlegung also nicht, dass alle Speicherzellen des nicht programmierten Eintrags nicht programmiert sein dürfen. Es bedeutet lediglich, dass es sich um einen vordefinierten Wert handeln muss, der nach Programmierung von einer oder mehr Speicherzellen des nicht programmierten Eintrags nicht wieder eingestellt werden kann und daher einen bestimmten Status der Adressen-Übersetzungstabelle (PATT) signalisiert. Im Prinzip kann die vordefinierte Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) an jeder Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) liegen. Besonders bevorzugt sind aber eine Platzierung der vordefinierten Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) in der ersten Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) oder in der letzten Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT). Auch ist es denkbar, mehrere vordefinierte Adressen des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) mit ähnlichem Inhalt als vordefinierten Adressraum zum Zwecke der Redundanz zu verwenden und diese auszuwerten. The address translation table (PATT) necessarily includes an entry for each subroutine and each patchable data block, and in addition to these at least one further unprogrammed entry at a predefined address space or in the predefined address space. This unprogrammed entry is preferably, but not necessarily, at the beginning of the entire address space of the memory area of the Address Translation Table (PATT). In this exemplary case, the beginning of the address space of the memory area of the address translation table (PATT) is the predefined address of the memory area of the address translation table (PATT). This unprogrammed entry at the predefined address of the memory area of the address translation table (PATT) is referred to below as zero-entry. Not all information stored at the predefined address or in the predefined address space of the memory area of the address translation table (PATT) is always used as a non-programmed entry, but only a predetermined part of this information. However, in some versions it is possible to use as unprogrammed entry all information stored at the predefined address of the memory area of the address translation table (PATT). For the purposes of this disclosure, zero-entry does not mean that all memory cells of the unprogrammed entry must not be programmed. It simply means that it must be a predefined value that can not be reset after programming one or more memory cells of the unprogrammed entry and therefore signals a particular status of the address translation table (PATT). In principle, the predefined address of the memory area of the address translation table (PATT) may be located at each address of the memory area of the address translation table (PATT). However, a placement of the predefined address of the memory area of the address translation table (PATT) in the first address of the memory area of the address translation table (PATT) or in the last address of the memory area of the address translation table (PATT) is particularly preferred. It is also conceivable to use a plurality of predefined addresses of the memory area of the address translation table (PATT) with similar content as a predefined address space for the purpose of redundancy and to evaluate these.

Der OTP-Speicher kann an der vordefinierten Adresse des Speicherbereichs der Adressen-Übersetzungstabelle (PATT) neben diesem nicht programmieren Eintrag Zusatzinformationen, wie beispielsweise Prüfinformationen über die aktuelle Speicherkonfiguration und den zugehörigen OTP-Speicherinhalt enthalten. Diese Zusatzinformationen werden im Folgenden CRC-Eintrag genannt.The OTP memory may contain additional information such as test information about the current memory configuration and the associated OTP memory content at the predefined address of the memory area of the address translation table (PATT) next to this non-programming entry. This additional information is referred to below as the CRC entry.

Die Zusatzinformation können auch andere Inhalte umfassen als einen solchen CRC-Eintrag.The additional information may also include content other than such a CRC entry.

Besonders bevorzugt enthält es irgendeine Zusatzinformation mit Prüfdaten.It particularly preferably contains any additional information with test data.

Um ein Unterprogramm aufzurufen, wird zuerst eine aktuell gültige Adressen-Übersetzungstabelle (PATTj) in der Mehrzahl der möglichen Adressen-Übersetzungstabellen (PATT1 bis PATTn) und ihr entsprechender Speicherbereich gesucht. Diese gültige Adressen-Übersetzungstabelle (PATTj) wird an dem Zero-Entry an der vordefinierten Adresse bzw. im vordefinierten Adressraum ihres Speicherbereichs der betreffenden Adressen-Übersetzungstabelle (PATTj) als solche erkannt.In order to call a subroutine, a currently valid address translation table (PATT j ) in the plurality of possible address translation tables (PATT 1 to PATT n ) and their corresponding memory area are first searched for. This valid address translation table (PATT j ) is recognized as such at the zero entry at the predefined address or in the predefined address space of its memory area of the relevant address translation table (PATT j ).

Alle ungültigen Adressen-Übersetzungstabellen (PATT1 bis PATTj-1) werden an dem nicht mehr vorhandenen Zero-Entry an der vordefinierten Adresse bzw. im vordefinierten Adressraum ihres Speicherbereichs als solche erkannt. Ein nicht mehr vorhandenen Zero-Entry liegt insbesondere typischer Weise dann vor, wenn mindestens eine Speicherzelle - also beispielsweise ein einzelnes Bit - des Eintrags an der vordefinierten Adresse bzw. im vordefinierten Adressraum dieses Speicherbereichs der betrachteten Adressen-Übersetzungstabelle (PATTk) (mit 1≤k≤j) gegenüber einem erwarteten Zustand dieser Speicherzelle im Falle eines Zero-Entries von „nicht-programmiert“ statt dessen in einem nicht erwarteten Zustand „programmiert“ ist.All invalid address translation tables (PATT 1 to PATT j-1 ) are recognized as such at the no longer existing zero entry at the predefined address or in the predefined address space of their memory area. In particular, a zero entry that exists no longer exists if at least one memory cell - for example a single bit - of the entry at the predefined address or in the predefined address space of this memory area of the considered address translation table (PATT k ) (with 1 ≤k≤j) is instead "programmed" to an expected state of this memory cell in the case of a zero-entry of "unprogrammed" instead of in an unexpected state.

Aufgrund einer Aufruf-Information kann der Rechner dann auf eine referenzierende Speicherzelle in der gültige Adressen-Übersetzungstabelle (PATTj) zugreifen. Deren logischer Inhalt ist ein Zeiger, der vorzugsweise auf den Programm-Code des auszuführenden Codes im Falle eines ge-patchten Unterprogramms bzw. auf einen zu benutzenden Datenblock im Falle von ge-patchten Daten zeigt.Based on call information, the computer can then access a referencing memory cell in the valid address translation table (PATT j ). Its logical content is a pointer which preferably points to the program code of the code to be executed in the case of a patched subroutine or to a data block to be used in the case of patched data.

Vorzugsweise enthält der Eintrag an der vordefinierten Adresse eines Speicherbereichs einer ungültigen Adressen-Übersetzungstabelle (PATT1 bis PATTj-1) statt eines Zero-Entries einen Programmzeiger auf eine nachfolgende Adressen-Übersetzungstabelle (PATT2 bis PATTj).Preferably, the entry at the predefined address of a memory area of an invalid address translation table (PATT 1 to PATT j-1 ) instead of a zero entry contains a program pointer to a subsequent address translation table (PATT 2 to PATT j ).

Die einzelnen Adressen-Übersetzungstabellen (PATT1 bis PATTj) sind also bevorzugt durch die Programmzeiger in der vordefinierten Adresse bzw. im vordefinierten Adressraum ihrer jeweiligen Speicherbereiche miteinander zu einer Kette von Adressen-Übersetzungstabellen (PATT1 bis PATTj) verknüpft. Dabei sind alle Adressen-Übersetzungstabellen (PATT1 bis PATTj-1) bis auf die letzte Adressen-Übersetzungstabelle (PATTj) ungültig und nur die letzte Adressen-Übersetzungstabelle (PATTj) ist gültig.The individual address translation tables (PATT 1 to PATT j ) are thus preferably linked together by the program pointers in the predefined address or in the predefined address space of their respective memory areas to a chain of address translation tables (PATT 1 to PATT j ). In this case, all the address translation tables (PATT 1 to PATT j-1 ) are invalid except for the last address translation table (PATT j ) and only the last address translation table (PATT j ) is valid.

Die Einträge an den vordefinierten Adressen bzw. im vordefinierten Adressraum der jeweiligen Speicherbereiche aller Adressen-Übersetzungstabellen (PATT1 bis PATTj-1) bis auf den der letzten Adressen-Übersetzungstabelle (PATTj) enthalten Zeiger auf die jeweils nachfolgende Adressen-Übersetzungstabelle (PATT2 bis PATTj). Nur der Eintrag an der vordefinierten Adresse bzw. im vordefinierten Adressraum des jeweiligen Speicherbereichs der gültigen Adressen-Übersetzungstabelle, der letzten Adressen-Übersetzungstabelle (PATTj) in der Kette von Adressen-Übersetzungstabellen (PATT1 bis PATTj), enthält an der vordefinierten Adresse bzw. im vordefinierten Adressraum des jeweiligen Speicherbereichs der letzten Adressen-Übersetzungstabellen (PATT1 bis PATTj-1) einen Zero-Entry. The entries at the predefined addresses or in the predefined address space of the respective memory areas of all address translation tables (PATT 1 to PATT j-1 ) except for the last address translation table (PATT j ) contain pointers to the respective subsequent address translation table (PATT 2 to PATT j ). Only the entry at the predefined address or in the predefined address space of the respective memory area of the valid address translation table, the last address translation table (PATT j ) in the chain of address translation tables (PATT 1 to PATT j ), contains at the predefined address or in the predefined address space of the respective memory area of the last address translation tables (PATT 1 to PATT j-1 ) a zero-entry.

Um die gültige Adressen-Übersetzungstabelle (PATTj) zu finden, überprüft der Rechner nacheinander die Adressen-Übersetzungstabellen (PATT1 bis PATTj-1), vorzugsweise beginnend mit der ersten Adressen-Übersetzungstabelle (PATT1). Ist der Eintrag an der vordefinierten Adresse bzw. im vordefinierten Adressraum des Speicherbereichs der ersten Adressen-Übersetzungstabelle (PATT1) kein Zero-Entry, so erkennt der Rechner, dass die erste Adressen-Übersetzungstabelle (PATT1) ungültig ist. Besonders bevorzugt ist der Inhalt des Eintrags an der vordefinierten Adresse bzw. im vordefinierten Adressraum des Speicherbereichs der ersten Adressen-Übersetzungstabelle (PATT1) selbst ein Zeiger auf die nachfolgende zweite Adressen-Übersetzungstabelle (PATT2).To find the valid address translation table (PATT j ), the computer sequentially checks the address translation tables (PATT 1 to PATT j-1 ), preferably starting with the first address translation table (PATT 1 ). If the entry at the predefined address or in the predefined address space of the memory area of the first address translation table (PATT 1 ) is not a zero entry, the computer recognizes that the first address translation table (PATT 1 ) is invalid. Particularly preferably, the content of the entry at the predefined address or in the predefined address space of the memory area of the first address translation table (PATT 1 ) is itself a pointer to the subsequent second address translation table (PATT 2 ).

Ist der Eintrag an der vordefinierten Adresse bzw. im vordefinierten Adressraum des Speicherbereichs der zweiten Adressen-Übersetzungstabelle (PATT2) kein Zero-Entry, so erkennt der Rechner, dass die zweite Adressen-Übersetzungstabelle (PATT2) ungültig ist. Besonders bevorzugt ist der Inhalt des Eintrags an der vordefinierten Adresse bzw. im vordefinierten Adressraum des Speicherbereichs der zweiten Adressen-Übersetzungstabelle (PATT2) selbst ein Zeiger auf die nachfolgende dritte Adressen-Übersetzungstabelle (PATT3).If the entry at the predefined address or in the predefined address space of the memory area of the second address translation table (PATT 2 ) is not a zero entry, the computer recognizes that the second address translation table (PATT 2 ) is invalid. Particularly preferably, the content of the entry at the predefined address or in the predefined address space of the memory area of the second address translation table (PATT 2 ) itself is a pointer to the subsequent third address translation table (PATT 3 ).

Dies führt der Rechner für alle in der Kette von Adressen-Übersetzungstabellen (PATT1 bis PATTj) bis er durch einen Zero-Entry an der vordefinierten Adresse bzw. im vordefinierten Adressraum des Speicherbereichs der j-ten Adressen-Übersetzungstabelle (PATTj) die gültige Adressen-Übersetzungstabelle (PATTj) erkennt.This is done by the computer for all in the chain of address translation tables (PATT 1 to PATT j ) until, by a zero entry at the predefined address or in the predefined address space of the memory area of the jth address translation table (PATT j ) valid address translation table (PATT j ).

Damit hat der Rechner den Speicherbereich der gültigen Adressen-Übersetzungstabelle (PATTj) erkannt und kann die darin vorhandenen Informationen verwenden. Vorzugsweise wird dieser Vorgang nur einmal beim Start des Rechnersystems oder nach einem Zurücksetzen desselben durchgeführt. Dies spart Zeit während des eigentlichen Programmablaufs. Daher ist es sinnvoll, wenn der Rechner die Startadresse des gültigen Speicherbereichs und/oder die Startadressen wichtiger Unterprogramme an geeigneter Stelle abspeichert und verwendet. Schließlich kann diese Methode verwendet werden, um eine Sprungtabelle aus verschiedenen Adressen-Übersetzungstabellen (gültigen wie ungültigen) im Speicher des Rechners zusammenzustellen und diese zu verwenden. Thus, the computer has recognized the memory area of the valid address translation table (PATT j ) and can use the information contained therein. Preferably, this process is performed only once at the start of the computer system or after a reset of the same. This saves time during the actual program execution. Therefore, it makes sense if the computer stores and uses the start address of the valid memory area and / or the start addresses of important subroutines at a suitable location. Finally, this method can be used to compile and use a jump table from various address translation tables (valid as well as invalid) in the memory of the computer.

Für jedes patch-bare Unterprogramm weist die gültige Adressen-Übersetzungstabelle (PATTj) einen Zeiger auf, der auf das betreffende Unterprogramm im Speicher des Rechners verweist. Ein solcher Zeiger kann übrigens auch wieder selbst auf eine Zeigertabelle verweisen, was sich in der Realität aber als nicht besonders effizient erwiesen hat. Jeder Aufruf eines patch-baren Unterprogramms ermittelt daher zuerst die gültige Adressen-Übersetzungstabelle (PATTj) und dann den Zeiger auf das betreffende Unterprogramm im Speicher des Rechners woraufhin das Programm des Rechners an genau diesem Speicherort im Speicher des Rechners fortgesetzt wird. Jedes patch-bare Unterprogramm wird also niemals direkt aufgerufen, sondern immer nur indiziert. Eine Ausnahme besteht nur dann, wenn der Bezug über einen Eintrag in der gültigen Adressen-Übersetzungstabelle (PATTj) hergestellt wird.For each patchable subroutine, the valid address translation table (PATT j ) has a pointer that points to the particular subroutine in the computer's memory. Incidentally, such a pointer can refer back to a pointer table itself, which has not proven to be very efficient in reality. Each call of a patchable subroutine therefore first determines the valid address translation table (PATT j ) and then the pointer to the relevant subroutine in the memory of the computer whereupon the program of the computer is continued in exactly this location in the memory of the computer. Each patchable subroutine is never called directly, but always indexed. An exception exists only if the reference is made via an entry in the valid address translation table (PATT j ).

Um den Inhalt des OTP-Speichers im Betrieb (Englisch „at run time“) zu verifizieren, ist es möglich, an einer zweiten vordefinierten Adresse der gültigen Adressen-Übersetzungstabelle (PATTj), die mit der ersten vordefinierten Adresse gleich sein kann bzw Teil des vordefinierten Adressraumes sein kann, Zusatzinformation zu programmieren. Sofern diese zweite vordefinierte Adresse der gültigen Adressen-Übersetzungstabelle (PATTj) gleich der ersten vordefinierten Adresse der gültigen Adressen-Übersetzungstabelle (PATTj) ist, wird der Teil des Eintrags an der ersten vordefinierten Adresse der Adressen-Übersetzungstabellen (PATT1 bis PATTj), der für diese Zusatzinformation verwendet wird, nicht für die Entscheidung, ob die Adressen-Übersetzungstabellen (PATT1 bis PATTj) gültig sind oder nicht verwendet und auch nicht als Zeiger auf nachfolgende Adressen-Übersetzungstabellen (PATT2 bis PATTj) verwendet. Der Teil des Eintrags an der ersten vordefinierten Adresse der Adressen-Übersetzungstabellen (PATT1 bis PATTj), der für die Entscheidung, ob die Adressen-Übersetzungstabellen (PATT1 bis PATTj) gültig sind oder nicht verwendet wird und/oder als Zeiger auf nachfolgende Adressen-Übersetzungstabellen (PATT2 bis PATTj) verwendet wird, wird nicht für diese Zusatzinformation verwendet. Die Zusatzinformation kann beispielsweise eine CRC-CheckSumme des Programm-Codes sein, der nach dem Patch-Vorgang aktiv sein sollte. Sofern also der Patch-Vorgang nicht erfolgreich gewesen sein sollte und/oder eine Speicherzelle aus welchen Gründen auch immer instabil sein sollte, so kann ein einzelner Bit-Kipper hieran erkannt werden, was in sicherheitsrelevanten Anwendungen, beispielsweise im Automobil von besonderer Bedeutung ist. In order to verify the contents of the OTP memory in operation (English "runtime"), it is possible, at a second predefined address of the valid address translation table (PATT j ), which may be equal to the first predefined address or part of the predefined address space may be to program additional information. If this second predefined address of the valid address translation table (PATT j ) is equal to the first predefined address of the valid address translation table (PATT j ), the part of the entry is written to the first predefined address of the address translation tables (PATT 1 to PATT j ) used for this additional information is not for deciding whether the address translation tables (PATT 1 to PATT j ) are valid or not used and also not used as pointers to subsequent address translation tables (PATT 2 to PATT j ). The part of the entry on the first predefined address of the address translation tables (PATT 1 to PATT j) responsive to the decision whether the address translation tables (PATT 1 to PATT j) are valid or is not used and / or as a pointer subsequent address translation tables (PATT 2 to PATT j ) is not used for this additional information. The additional information may be, for example, a CRC check sum of the program code which should be active after the patch process. So unless the patch process has been successful should and should a memory cell for whatever reason should be unstable, a single bit dump truck can be recognized, which is of particular importance in safety-relevant applications, for example in the automobile.

Jede durch einen solchen Patch-Vorgang, also durch den Vorgang der Korrekturauslieferung bereits ausgelieferter Software, erzeugte Programm-Version benötigt nicht programmierten Speicherplatz im OTP-Programmspeicher. Der Adressraumumfang dieses benötigten nicht programmierten Speicherplatzes im OTP-Speicher umfasst die Größe der Adressen-Übersetzungstabelle (PATT) plus die Größe des ablauffähigen Codes für die zu ändernden Unterprogramme. Auf diese Weise können diese Unterprogramme geändert werden, sofern genügend OTP-Speicherplatz zur Verfügung steht.Any program version created by such a patch, that is, by the process of the correction delivery already delivered, requires unprogrammed memory space in the OTP program memory. The address space size of this required unprogrammed memory space in the OTP memory includes the size of the address translation table (PATT) plus the size of the executable code for the subprograms to be changed. In this way, these subprograms can be changed if there is enough OTP space available.

Die vorgeschlagene Vorrichtung betrifft einen nachträglich patch-baren Speicher (OTP) in einem Rechnersystem, insbesondere in einem monolithisch integrierbaren Mikrorechnersystem, dessen Speicherzellen sich in einem ersten logischen Zustand befinden und durch Programmierung einmalig bitselektiv in einen zweiten logischen Zustand gebracht werden können. Daher wird ein solcher Speicher im Englischen mit „One-Time.Programmable“ = OTP = einmalig programmierbar bezeichnet. Hierbei bedeutet „patch-bar“, dass ein Verfahren angegeben werden kann, mit dem fehlerhafte oder aus einem anderen Grund zu modifizierende Routinen der Software gegen andere Routinen ausgetauscht werden können. (Solche auszutauschenden SW-Blöcke werden im Folgenden als Patches bezeichnet.) Der nachträglich patch-bare Speicher (OTP) umfasst Bitspeicherzellen, die typischerweise in Bits oder in Bytes oder in Datenworten mit einer Bit,- Byte- oder Wortadresse organisiert sind, um diese Speicherzellen adressieren zu können. Die Speicherzellen können in einem programmierten und einem nicht programmierten Zustand vorliegen. Der programmierte Zustand der Speicherzellen und der nicht programmierte Zustand der Speicherzellen sind voneinander verschieden. Der programmierte Zustand der Speicherzellen ist vorzugsweise einem ersten logischen Zustand zugeordnet und der nicht programmierte Zustand der Speicherzellen einem zweiten logischen Zustand zugeordnet. Für die Anwendung des im Folgenden beschriebenen Verfahrens ist es wichtig, dass ein Verfahren existiert, einzelne Bitspeicherzellen isoliert vom nicht programmierten Zustand und damit vom ersten logischen Zustand in den programmierten Zustand und damit dem zweiten logischen Zustand zu bringen. Es wird nun vorgeschlagen, den patch-baren Speicher mit n Speicherbereichen (PATT1, PATT2,...... PATTn) zu versehen, die jeweils logische Zeiger für Programmprozeduren und/oder Datentabellen und/oder Daten für einen oder mehrere Prozessoren oder endliche Automaten aufweisen. Hierbei soll n ein ganze positive Zahl größer gleich 1 sein. Jeder Speicherbereich (PATTj mit 1≤j≤n) besteht aus einem oder mehreren bezüglich der Adressen zusammenhängenden Adressbereichen innerhalb des Speichers. Diese Adressbereiche überlappen sich dabei nicht. Jeder Speicherbereich weist eine erste Adressposition auf, die auf das erste Element des betreffenden Speicherbereichs zeigt und von dem ausgehend sich der Adressraum des betreffenden Speicherbereichs bis zur Speicherposition der letzten Speicherzelle des betreffenden Speicherbereichs hin erstreckt.The proposed device relates to a subsequently patchable memory (OTP) in a computer system, in particular in a monolithically integrable microcomputer system, the memory cells are in a first logical state and can be brought by programming once bit selectively in a second logic state. Therefore, such a memory in English with "One-Time.Programmable" = OTP = one-time programmable called. Here, "patch-bar" means that a method can be specified with which faulty or for some other reason to be modified routines of the software can be exchanged for other routines. (Such SW blocks to be exchanged are referred to as patches hereinafter.) Post-patch memory (OTP) includes bit memory cells typically organized into bits or bytes, or data words having a bit, byte, or word address around them Be able to address memory cells. The memory cells may be in a programmed and an unprogrammed state. The programmed state of the memory cells and the unprogrammed state of the memory cells are different from each other. The programmed state of the memory cells is preferably assigned to a first logical state and the unprogrammed state of the memory cells is assigned to a second logical state. For the application of the method described below, it is important that there is a method of isolating individual bit storage cells from the unprogrammed state and thus from the first logic state to the programmed state and thus to the second logic state. It is now proposed to provide the patchable memory with n memory areas (PATT 1 , PATT 2, ... PATT n ), each having logical pointers for program procedures and / or data tables and / or data for one or more Processors or finite state machines. Here, n should be a whole positive number greater than or equal to 1. Each memory area (PATT j with 1≤j≤n) consists of one or more address-related address areas within the memory. These address ranges do not overlap. Each memory area has a first address position which points to the first element of the relevant memory area and from which the address space of the relevant memory area extends up to the memory position of the last memory cell of the relevant memory area.

Ein Speicherbereich der n Speicherbereiche (PATT1, PATT2,...... PATTn) weist an einer vordefinierten Adressposition bzw. im vordefinierten Adressraum relativ zu seiner ersten Adressposition innerhalb dieses Speicherbereichs mehrere nicht programmierte Bit-Zellen, oder ein nicht programmiertes Byte oder ein nicht programmiertes Datenwort, im Folgenden „Zero Entry“ genannt, auf. Diese Definition der vordefinierten Adressposition gilt für alle Speicherbereiche innerhalb der jeweiligen Adressbereiche bezogen auf die erste Adressposition innerhalb des jeweiligen Speicherbereichs. Die im Folgenden beschriebene Teilvorrichtung kann mehrfach innerhalb einer Vorrichtung vorhanden sein. Ein Speicherbereich (PATT1) der n Speicherbereiche ist ein erster Speicherbereich. Mindestens ein j-ter Speicherbereich (PATTj mit 1≤j≤n) weist an dieser vordefinierten Adressposition innerhalb des Speicherbereichs mehrere nicht programmierte Bit-Zellen, oder ein oder mehrere nicht programmierte Bytes oder ein oder mehrere nicht programmierte Datenworte (Zero Entry) auf. Der j-te Speicherbereich kann also auch der erste Speicherbereich sein, muss es jedoch nicht. Sofern der erste Speicherbereich (PATT1) identisch mit dem j-ten Speicherbereich (PATTj) ist, so weist dieser erste Speicherbereich (PATT1) an dieser vordefinierten Adressposition innerhalb des ersten Speicherbereichs (PATT1) eine oder mehrere nicht programmierte Bit-Zellen, oder ein oder mehrere nicht programmierte Bytes oder ein oder mehrere nicht programmierte Datenworte (Zero Entry) auf. Besonders bevorzugt weist der erste Speicherbereich (PATT1) an der vordefinierten Adressposition einen logischen Zeiger auf den zweiten Speicherbereich (PATT2) auf, wenn er nicht der j-te Speicherbereich (PATTj) ist.A memory area of the n memory areas (PATT 1 , PATT 2, ... PATT n ) has a plurality of non-programmed bit cells, or a non-programmed bit, at a predefined address position or in the predefined address space relative to its first address position within this memory area Byte or an unprogrammed data word, referred to below as "zero entry". This definition of the predefined address position applies to all memory areas within the respective address areas with respect to the first address position within the respective memory area. The sub-device described below may be present multiple times within a device. A memory area (PATT 1 ) of the n memory areas is a first memory area. At least one jth memory area (PATT j with 1≤j≤n) has at this predefined address position within the memory area a plurality of unprogrammed bit cells, or one or more unprogrammed bytes or one or more non-programmed data words (zero entry) , The jth memory area may therefore also be the first memory area, but does not have to be. If the first memory area (PATT 1) identical to the j-th memory region (PATT j), so has the first memory area (PATT 1) at these predefined address location within the first memory area (PATT 1) one or more unprogrammed bit cells , or one or more unprogrammed bytes or one or more non-programmed data words (zero entry). Particularly preferably, the first memory area (PATT 1 ) at the predefined address position on a logical pointer to the second memory area (PATT 2 ), if it is not the j-th memory area (PATT j ).

Sofern der zweite Speicherbereich (PATT2) identisch mit dem j-ten Speicherbereich (PATTj) ist, so weist dieser zweite Speicherbereich (PATT2) wiederum an der vordefinierten Adressposition innerhalb des zweiten Speicherbereichs (PATT2) eine oder mehrere nicht programmierte Bit-Zellen, oder ein oder mehrere nicht programmierte Bytes oder ein oder mehrere nicht programmierte Datenworte (Zero Entry) auf. Besonders bevorzugt weist der zweite Speicherbereich (PATT2) an der vordefinierten Adressposition einen logischen Zeiger auf den dritten Speicherbereich (PATT3) auf, wenn er nicht der j-te Speicherbereich (PATTj) ist, also der gültige Speicherbereich ist.If the second memory area (PATT 2 ) is identical to the j-th memory area (PATT j ), this second memory area (PATT 2 ) again has one or more unprogrammed bit memories at the predefined address position within the second memory area (PATT 2 ). Cells, or one or more unprogrammed bytes, or one or more non-programmed data words (zero entry). Particularly preferably, the second memory area (PATT 2 ) at the predefined address position a logical pointer to the third memory area (PATT 3 ), if it is not the j-th memory area (PATT j ), that is the valid memory area.

Sofern der dritte Speicherbereich (PATT3) identisch mit dem j-ten Speicherbereich (PATTj) ist, so weist dieser dritte Speicherbereich (PATT3) wiederum an der vordefinierten Adressposition innerhalb des dritten Speicherbereichs (PATT3) eine oder mehrere nicht programmierte Bit-Zellen, oder ein oder mehrere nicht programmierte Bytes oder ein oder mehrere nicht programmierte Datenworte (Zero Entry) auf. Besonders bevorzugt weist der dritte Speicherbereich (PATT3) an der vordefinierten Adressposition einen logischen Zeiger auf den vierten Speicherbereich (PATT4) auf, wenn er nicht der j-te Speicherbereich (PATTj) ist, also der gültige Speicherbereich ist.If the third memory area (PATT 3 ) is identical to the j-th memory area (PATT j ), then this third memory area (PATT 3 ) again has one or more unprogrammed bit memories at the predefined address position within the third memory area (PATT 3 ). Cells, or one or more unprogrammed bytes, or one or more non-programmed data words (zero entry). Particularly preferably, the third memory area (PATT 3 ) at the predefined address position on a logical pointer to the fourth memory area (PATT 4 ), if it is not the j-th memory area (PATT j ), that is the valid memory area.

Dies kann bis zum (j-1)-ten Speicherbereich (PATTj-1) so fortgesetzt werden.This can be continued until the (j-1) th memory area (PATT j-1 ).

Da der (j-1)-te Speicherbereich (PATTj-1) nicht identisch mit dem j-ten Speicherbereich (PATTj) ist, weist dieser (j-1)-te Speicherbereich (PATTj-1) wiederum an der vordefinierten Adressposition innerhalb des (j-1)-ten Speicherbereichs (PATTj-1) eine oder mehrere nicht programmierte Bit-Zellen, oder ein oder mehrere nicht programmierte Bytes oder ein oder mehrere nicht programmierte Datenworte (Zero Entry) auf. Besonders bevorzugt weist der (j-1)-te Speicherbereich (PATTj-1) an der vordefinierten Adressposition einen logischen Zeiger auf den j-ten Speicherbereich (PATTj) auf.Since the (j-1) th memory area (PATT j-1 ) is not identical with the j-th memory area (PATT j ), this (j-1) -th memory area (PATT j-1 ) again has the predefined one Address location within the (j-1) -th memory area (PATT j-1 ) one or more unprogrammed bit cells, or one or more unprogrammed bytes or one or more non-programmed data words (zero entry) on. Particularly preferably, the (j-1) -th memory area (PATT j-1 ) has a logical pointer to the j-th memory area (PATT j ) at the predefined address position.

Der j-te Speicherbereich (PATTj mit 1≤j≤n) weist an dieser vordefinierten Adressposition innerhalb des Speicherbereichs, wie bereits beschrieben, ein oder mehrere nicht programmierte Bit-Zellen, oder ein oder mehrere nicht programmierte Bytes oder ein oder mehrere nicht programmierte Datenworte (Zero Entry) auf, was als Kennung für das Ende einer Suchsequenz verwendet werden kann und als Flag für die gültige Verweistabelle genutzt werden kann. Damit ist der j-te Speicherbereich als gültig markiert.The j-th memory area (PATT j with 1≤j≤n) has one or more unprogrammed bit cells, or one or more unprogrammed bytes, or one or more unprogrammed ones, at this predefined address location within the memory area, as previously described Zero Entry, which can be used as an identifier for the end of a search sequence and can be used as a flag for the valid lookup table. This marks the jth memory area as valid.

Ein vorausgehender Speicherbereich (PATTk-1 mit 1≤k-1≤j-1) enthält an der vordefinierten Adressposition somit einen Zeiger auf den nachfolgenden Speicherbereich (PATTk mit 2≤k≤j), wenn er nicht der j-te Speicherbereich (PATTj) ist.A preceding memory area (PATT k-1 with 1≤k-1≤j-1) thus contains at the predefined address position a pointer to the following memory area (PATT k with 2≤k≤j) if it is not the jth memory area (PATT j ) is.

Um den gültigen Speicherbereich aufzufinden, wird auf dieser Basis nun ein besonderes Verfahren zum Auffinden und Aufruf einer Programmprozedur in diesem Speicher vorgeschlagen. Das Verfahren beginnt mit dem Auslesen des Speicherwerts an der vordefinierten Adresse des eines k-ten Speicherbereichs (PATTk). Vorzugsweise handelt es sich um den ersten Speicherbereich (PATT1). Es folgt das Überprüfen, ob es sich bei dem Speicherwert der vordefinierten Adresse bzw. im vordefinierten Adressraum des ersten Speicherbereichs (PATT1) um einen Zero-Entry handelt. Für den Fall dass es sich nicht um einen Zero-Enty handelt folgt das Bestimmen des nachfolgenden Speicherbereichs (PATTk+1) ggf. in Abhängigkeit vom ausgelesenen Speicherwert.In order to find the valid memory area, a special procedure for finding and calling a program procedure in this memory is now proposed on this basis. The method begins by reading out the memory value at the predefined address of the k th memory area (PATT k ). Preferably, it is the first memory area (PATT 1 ). This is followed by checking whether the memory value of the predefined address or in the predefined address space of the first memory area (PATT 1 ) is a zero-entry. In the event that it is not a zero-enty, the determination of the subsequent memory area (PATT k + 1 ) may be dependent on the read-out memory value.

Die Schritte des Auslesens des Speicherwerts an der vordefinierten Adresse (bzw. der Speicherwerte im vordefinierten Adressraum) des eines (k+1)-ten Speicherbereichs (PATTk+1) und des Überprüfens, ob es sich bei dem Speicherwert der vordefinierten Adresse des ersten Speicherbereichs (PATT1) um einen Zero-Entry handelt, und des Bestimmens des nachfolgenden Speicherbereichs (PATTk+1) im Falle, dass es sich nicht um einen Zero-Enty handelt, folgen dann anlog für den k+1-ten Speicherbereich solange wie k+1>n ist. Mit jedem Durchlauf wird k um vorzugsweise eins erhöht. Für den Fall, dass es sich um einem Zero-Entry handelt, wird der Prozess abgebrochen und es folgt das Bestimmen des logischen Zeigers für die aufzufindende Programmprozedur mittels eines vorgegebenen Offsets innerhalb des k-ten Speicherbereichs (PATTk). Nachdem auf diese Weise der logischen Zeiger für die aufzufindende Programmprozedur bestimmt wurde, erfolgt das Aufrufen der aufzufindende Programmprozedur mit Hilfe dieses logischen Zeigers.The steps of reading the memory value at the predefined address (or the memory values in the predefined address space) of a (k + 1) th memory area (PATT k + 1 ) and verifying that the memory value of the predefined address of the first Memory area (PATT 1 ) is a zero-entry, and determining the subsequent memory area (PATT k + 1 ) in the case that it is not a zero-enty, then follow log for the k + 1-th memory area as k + 1> n. With each pass, k is increased by preferably one. In the event that it is a zero-entry, the process is aborted and it follows the determination of the logical pointer for the program procedure to be found by means of a predetermined offset within the k-th memory area (PATT k ). After having determined in this way the logical pointer for the program procedure to be found, the program procedure to be found is invoked with the aid of this logical pointer.

Dieses vorgeschlagene Verfahren kann auch anders beschrieben werden. Es handelt sich um ein Verfahren zum Auffinden einer Datentabelle oder von Daten in einem Speicher, wie er oben beschrieben wurde. Das vorgeschlagene Verfahren umfasst das Auslesen des Speicherwerts an der vordefinierten Adresse (bzw. der Speicherwerte im vordefinierten Adressraum) des k-ten Speicherbereichs (PATTk) gefolgt vom Überprüfen des ausgelesenen Speicherwerts darauf, ob es sich bei dem Speicherwert der vordefinierten Adresse des k-ten Speicherbereichs (PATTk) um einen Zero-Entry handelt. Für den Fall, dass es sich nicht um einen Zero-Enty handelt, folgt wieder das Bestimmen des nachfolgenden Speicherbereichs (PATTk+1) ggf. in Abhängigkeit vom ausgelesenen Speicherwert und das Wiederholen der Schritte für den k+1-ten Speicherbereich (PATTk+1) bis k+1>n. Für den Fall, dass es sich um einem Zero-Entry handelt folgt stattdessen das Bestimmen des logischen Zeigers für die aufzufindende Datentabelle oder die aufzufindenden Daten mittels eines vorgegebenen Offsets innerhalb des k-ten Speicherbereichs (PATTk) und das Auslesen der aufzufindenden Datentabelle oder der aufzufindenden Daten mit Hilfe dieses auf diese Weise ermittelten logischen Zeigers.This proposed method can also be described differently. It is a method for finding a data table or data in a memory as described above. The proposed method comprises reading the memory value at the predefined address (or the memory values in the predefined address space) of the k th memory area (PATT k ), followed by checking the read memory value for whether the memory value of the predefined address of the k memory area memory area (PATT k ) is a zero-entry. In the event that it is not a zero-enty, the determination of the subsequent memory area (PATT k + 1 ), if necessary depending on the read memory value and repeating the steps for the k + 1-th memory area (PATT k + 1 ) to k + 1> n. In the case of a zero-entry, instead of this, the determination of the logical pointer for the data table or the data to be found follows by means of a predefined offset within the kth memory area (PATT k ) and reading out of the data table or the data table to be found Data to be found using this determined in this way logical pointer.

Es wird nun ein Verfahren zum Ändern der aufzufindenden Programmprozeduren und/oder Daten und/oder Datentabellen für den beschriebenen Speicher vorgeschlagen. Ein erster Schritt ist das Bestimmen eines j+1-ten Speicherbereiches (PATTj+1) der n Speicherbereiche, der dem aktuellen j-ten Speicherbereich (PATTj) nachfolgen soll. Zumindest Teile dieses j+1-ten Speicherbereichs (PATTj+1) sind komplett im Zustand „nicht programmiert“. Zumindest aber die besagte vordefinierte Adresse muss innerhalb dieses j+1-ten Speicherbereichs (PATTj+1) einen Zero-Entry enthalten. Es folgt nun die Programmierung der logischen Zeiger für Programmprozeduren und/oder Datentabellen und/oder Daten für einen oder mehrere Prozessoren oder endliche Automaten in den j+1-ten Speicherbereich (PATTj+1) und die Programmierung eines vom Zero-Entry abweichenden Werts in die Bits und/oder Bytes und/oder Datenworte der vordefinierten Adresse des j-ten Speicherbereichs (PATTj), der das Bestimmen des logischen Zeigers für die aufzufindende Datentabelle oder die aufzufindenden Daten mittels eines vorgegebenen Offsets innerhalb des j-ten Speicherbereichs (PATTj) ermöglicht. Hierdurch wird der bisherige j+1-te Speicherbereich (PATTj+1) zum neuen j-ten Speicherbereich (PATTj).There will now be a method for changing the program procedures and / or data and / or data tables to be found for the one described Memory proposed. A first step is to determine a j + 1th memory area (PATT j + 1 ) of the n memory areas to follow the current jth memory area (PATT j ). At least parts of this j + 1 th memory area (PATT j + 1 ) are completely in the state "not programmed". However, at least the said predefined address must contain a zero entry within this j + 1 th memory area (PATT j + 1 ). There now follows the programming of the logical pointers for program procedures and / or data tables and / or data for one or more processors or finite state machines in the j + 1th memory area (PATT j + 1 ) and the programming of a non-zero entry value into the bits and / or bytes and / or data words of the predefined address of the jth memory area (PATT j ), which determines the logical pointer for the data table or the data to be found by means of a predetermined offset within the j-th memory area (PATT j ). As a result, the previous j + 1-th memory area (PATT j + 1 ) becomes the new j-th memory area (PATT j ).

Figurenlistelist of figures

  • 1 1 zeigt die Veränderung einer beispielhaften Speicherstruktur bei Auslieferung (Patch-Level 0), nach dem ersten Patch-Vorgang (Patch-Level 1) und nach dem zweiten Patch-Vorgang (Patch-Level 2). 1 1 shows the change of an exemplary memory structure at delivery (patch level 0), after the first patch process (patch level 1) and after the second patch process (patch level 2).

Der OTP-Speicher wird im Laufe der Patch-Vorgänge in drei Speicherbereiche (PATT1 , PATT2 , PATT3 ) eingeteilt. Die Länge der Speicherbereiche kann dabei variieren.Of the OTP Memory is split into three memory areas during the patching process ( PATT 1 . PATT 2 . PATT 3 ) assigned. The length of the memory areas can vary.

Der vordefinierte Adressraum für die Markierung des jeweiligen Speicherbereiches befindet sich hier beispielhaft stets am Anfang des jeweiligen Speicherbereiches. Zu Beginn (Patch-Level 0) enthält der erste Speicherbereich (PATT1 ) in diesem vordefinierten Adressraum nur einen „Zero-Entry“. Das bedeutet, dass dieser Adressraum innerhalb des ersten Speicherbereiches (PATT1 ) nicht programmiert ist. Hierdurch kann das Programm erkennen, dass die nachfolgenden Zeiger, hier beispielhaft zwei Zeiger, die mit PATT[0] und PATT[1] bezeichnet sind, und der nachfolgende Programm-Kode gültig sind. Die Zeiger PATT[0] und PATT[1] zeigen beispielsweise auf jeweils eine Prozedur in diesem Programm-Kode, wodurch diese für die Software bekannt werden und damit nutzbar werden. Darüber hinaus enthält der erste Speicherbereich eine CRC-Checksumme, die für die jetzt gültige Programmversion gilt.The predefined address space for the marking of the respective memory area is here, for example, always at the beginning of the respective memory area. At the beginning (patch level 0), the first memory area ( PATT 1 ) in this predefined address space only a "zero-entry". This means that this address space within the first memory area ( PATT 1 ) is not programmed. As a result, the program can recognize that the following pointers, here by way of example two pointers, which are labeled PATT [0] and PATT [1], and the following program code are valid. The pointers PATT [0] and PATT [1], for example, each point to a procedure in this program code, whereby they become known to the software and thus become usable. In addition, the first memory area contains a CRC checksum, which applies to the currently valid program version.

Der Rest des OTP-Speichers ist ungenutzt und nicht programmiert.The rest of the OTP Memory is unused and not programmed.

Während eines der Auslieferung beispielhaft nachfolgenden ersten Patch-Vorgangs wird der Patch-Zustand in den Patch-Level 1 gebracht.During an exemplary subsequent first patch operation, the patch state is brought into the patch level 1.

Dieser beispielhafte Vorgang umfasst zum einen das Programmieren des Zero-Entries im vordefinierten Adressraum des ersten Speicherbereichs mit dem Zeiger auf den zweiten Speicherbereich. Dies markiert zum Einen den ersten Speicherbereich als ungültig, da sich in dem vordefinierten Adressraum kein Zero-Entry mehr befindet. Zum Anderen ermöglicht es der Software das Auffinden des zweiten Speicherbereiches, der nun anstelle des ersten Speicherbereiches die gesuchten Sprungadressen und Daten zur Verfügung stellt.On the one hand, this exemplary process includes programming the zero-entry in the predefined address space of the first memory area with the pointer to the second memory area. On the one hand, this marks the first memory area as invalid, because no zero-entry is left in the predefined address space. On the other hand, the software makes it possible to find the second memory area, which now provides the desired jump addresses and data instead of the first memory area.

In diesem Patch-Zustand (Patch-Level 1) enthält der zweite Speicherbereich (PATT2 ) in dem vordefinierten Adressraum wieder nur einen „Zero-Entry“. Das bedeutet, dass dieser Adressraum innerhalb des zweiten Speicherbereiches (PATT2 ) wieder nicht programmiert ist. Hierdurch kann das Programm erkennen, dass die nachfolgenden Zeiger, hier beispielhaft wieder die zwei Zeiger, die mit PATT[0] und PATT[1] bezeichnet sind, und der nachfolgende Programm-Kode gültig sind. Die Zeiger PATT[0] und PATT[1] zeigen nun jedoch beispielhaft auf jeweils eine nunmehr geänderte Prozedur in diesem Programm-Kode, wodurch diese für die Software an Stelle der bisher benutzten Prozeduren bekannt werden und damit nutzbar werden. Darüber hinaus enthält der zweite Speicherbereich (PATT2 ) eine angepasste CRC-Checksumme, die für die jetzt gültige und gegenüber der vorhergehenden geänderten Programmversion gilt.In this patch state (patch level 1), the second memory area ( PATT 2 ) in the predefined address space again only a "zero-entry". This means that this address space within the second memory area ( PATT 2 ) is not programmed again. In this way, the program can recognize that the following pointers, here again by way of example, the two pointers, which are labeled PATT [0] and PATT [1], and the subsequent program code are valid. However, the pointers PATT [0] and PATT [1] now show an example of a now changed procedure in this program code, whereby they are known for the software instead of the previously used procedures and thus become usable. In addition, the second memory area ( PATT 2 ) an adapted CRC checksum, which applies to the currently valid version of the program and to the previous one.

Der verbleibende Rest des OTP-Speichers ist weiter ungenutzt und nicht programmiert.The remainder of the OTP Memory is still unused and not programmed.

Während des beispielhaften zweiten Patch-Vorgangs wird der Patch-Zustand in den Patch-Level 2 gebracht.During the exemplary second patch process, the patch state is brought into patch level 2.

Dieser Vorgang umfasst zum einen das Programmieren des Zero-Entries des zweiten Speicherbereichs (PATT2 ) mit dem Zeiger auf den dritten Speicherbereich (PATT3 ). Dies markiert zum Einen den zweiten Speicherbereich (PATT2 ) als ungültig, da sich in dessen vordefinierten Adressraum kein Zero-Entry mehr befindet. Zum Anderen ermöglicht es der Software das Auffinden des dritten Speicherbereiches (PATT3 ), der nun anstelle des zweiten Speicherbereichs (PATT2 ) die gesuchten Sprungadressen und Daten zur Verfügung stellt.This process comprises on the one hand the programming of the zero entry of the second memory area ( PATT 2 ) with the pointer to the third memory area ( PATT 3 ). This marks on the one hand the second memory area ( PATT 2 ) is invalid because no zero-entry is left in its predefined address space. On the other hand, the software makes it possible to find the third memory area ( PATT 3 ), which instead of the second memory area ( PATT 2 ) provides the required jump addresses and data.

In diesem Patch-Zustand (Patch-Level 2) enthält der dritte Speicherbereich (PATT3 ) in dem vordefinierten Adressraum wieder nur einen „Zero-Entry“. Das bedeutet, dass dieser Adressraum innerhalb des dritten Speicherbereiches (PATT3 ) wieder nicht programmiert ist. Hierdurch kann das Programm wieder erkennen, dass die nachfolgenden Zeiger, hier beispielhaft wieder die zwei Zeiger, die mit PATT[0] und PATT[1] bezeichnet sind, und der nachfolgende Programm-Kode nun gültig sind. Die Zeiger PATT[0] und PATT[1] zeigen nun jedoch beispielhaft auf jeweils eine nunmehr zum zweiten Mal geänderte Prozedur in diesem Programm-Kode, wodurch diese für die Software an Stelle der bisher benutzten Prozeduren bekannt werden und damit nutzbar werden. Darüber hinaus enthält der dritte Speicherbereich (PATT3 ) eine nochmals angepasste CRC-Checksumme, die für die jetzt gültige und gegenüber den vorhergehenden Programmversionen geänderte Programmversion gilt.In this patch state (patch level 2), the third memory area ( PATT 3 ) in the predefined address space again only a "zero-entry". This means that this address space is within the third memory area ( PATT 3 ) not again is programmed. In this way, the program can recognize again that the following pointers, here again by way of example the two pointers which are labeled PATT [0] and PATT [1], and the subsequent program code are now valid. However, the pointers PATT [0] and PATT [1] now show an example of a now changed for the second time procedure in this program code, whereby they are known for the software instead of the previously used procedures and thus become usable. In addition, the third memory area ( PATT 3 ) a re-adjusted CRC checksum, which applies to the version of the program that is now valid and has changed compared to the previous program versions.

Der verbleibende Rest des OTP-Speichers ist wieder weiter ungenutzt und nicht programmiert.The remainder of the OTP Memory is again unused and not programmed.

Glossarglossary

Zero-Entry
Die n Speicherbereiche (PATT1 , PATT2,...... PATTn ) weisen jeweils an einer oder mehreren vordefinierten Adresspositionen relativ zu ihrer ersten Adressposition innerhalb ihres jeweiligen Speicherbereichs ein oder mehrere nicht programmierte Bit-Zellen und/oder ein oder mehrere nicht programmierte Bytes und/oder ein oder mehrere nicht programmierte Datenworte an vordefinierten Stellen an den vordefinierten Adresspositionen auf. Vorzugsweise handelt es sich um einen Eintrag in der Bitbreite eines Zeigers. Ist dieser komplett nicht programmiert, so kann eine Software daran erkennen, dass es sich um einen gültigen Eintrag handelt. Ist der Eintrag jedoch programmiert, so kann dieser Eintrag beispielsweise den Zeiger (Verweis) auf den nächsten Speicherbereich enthalten.
Zero-Entry
The n memory areas ( PATT 1 , PATT 2, ...... PATT n ) each have one or more non-programmed bit cells and / or one or more unprogrammed bytes and / or one or more unprogrammed data words at predefined locations to the predefined one or more predefined address positions relative to their first address position within their respective memory area Address locations. Preferably, it is an entry in the bit width of a pointer. If this is not completely programmed, a software can recognize that it is a valid entry. However, if the entry is programmed, this entry may, for example, contain the pointer (reference) to the next memory area.

Patch Ein Patch ist eine Korrekturauslieferung für Software oder Firmware oder Daten aus Endanwendersicht, um Sicherheitslücken zu schließen, Fehler zu beheben oder bislang nicht vorhandene Funktionen nachzurüsten. Ein Patch ist die Auslieferung einer Fehlerbehebung für ausführbare Programme beziehungsweise Betriebssysteme und kann auch kleinere Funktionserweiterungen enthalten. Ein Patch kann auch eine Aktualisierung (Update) zur Erweiterung des bestehenden Funktionsumfangs von ausführbaren Programmen sein und gleichzeitig Fehlerbehebungen umfassen. Ein Patch kann auch ein Bugfix zur Behebung von Fehler im Programm-Quellcode, die ansonsten Fehlfunktionen hervorrufen könnten, sein. Ein Patch kann auch ein Hotfix für eine besonders wichtige, eilige Fehlerbehebung für ausführbare Programme beziehungsweise Betriebssysteme sein, die aber keine neuen Funktionen enthält. Ein Patch für ein Binärprogramm ersetzt in der Regel eine oder mehrere Dateien durch eine neue Version. Patches für Binärprogramme werden meist von Herstellern proprietärer Software für ihre eigenen Programme veröffentlicht. Verbreitet sind Patches für Binärprogramme auch unter Softwarepiraten. Hier wird mit einem Patch meist ein Kopierschutz umgangen. Auch in der Computerspieleszene sind Patches verbreitet, um Spiele zu modifizieren.
(Quelle https://de.wikipedia.org/wiki/Patch_%28Software%29)
Patch A patch is a software or firmware or end-user-proofing delivery that corrects security vulnerabilities, fixes bugs, or upgrades previously unavailable features. A patch is the delivery of a bug fix for executable programs or operating systems and may also contain minor feature enhancements. A patch may also be an update to extend the existing functionality of executable programs while providing troubleshooting. A patch may also be a bug fix to fix bugs in the program source code that could otherwise cause malfunction. A patch can also be a hotfix for a particularly important, urgent fix for executable programs or operating systems, but does not include new functionality. A patch for a binary program usually replaces one or more files with a new version. Binary program patches are mostly released by proprietary software vendors for their own programs. Patches for binary programs are also widespread among software pirates. Here a patch is usually bypassed a copy protection. Also in the computer game scene patches are used to modify games.
(Source https://de.wikipedia.org/wiki/Patch_%28Software%29)

patch-bar
ein Speicher ist dann patch-bar, wenn er ein Patch der in ihm gespeicherten Daten und Programme nach Auslieferung zulässt und wenn ein Verfahren angegeben werden kann, wie dieser Patch ausgeliefert werden kann.
patch-bar
a memory is then patchable if it allows a patch of the data and programs stored in it after delivery, and if a procedure can be specified as to how this patch can be delivered.

Vordefiniere Adresse und vordefinierte Adressraum
Im Sinne dieser Offenbarung wird hierunter ein informationstechnisches Speicherobjekt verstanden, das zumindest ein Bit umfasst und aus verschiedenen Informationen zusammengesetzt sein kann. Es kann sich beispielsweise um eine Struktur handeln, die in der Programmiersprache C als „record“ bezeichnet wird und mit dem Deklarator „struct“ vereinbart wird. Die Elemente eines solchen Records müssen nicht notwendigerweise sukzessiv hintereinander liegen, sondern können bevorzugt in stets gleicher Weise zueinander im Speicher platziert werden. Ist die Adresse eines Record-Elements bekannt, so sind die anderen Elemente ebenfalls bekannt. Wenn in dieser Offenbarung von vordefinierter Adresse und/oder einem vordefinierten Adressraum die Rede ist, so ist damit der Adressraum einer solchen vordefinierten Struktur gemeint. Mindestens ein Element dieser Struktur stellt den Zeiger auf den nächsten Speicherbereich dar oder stellt alternativ den Zero-Entry dar, wenn alle Bits dieses Elements im nicht-Programmierten Zustand sind. Das Element kann natürlich selbst wieder ein Record sein.
Predefined address and predefined address space
For the purposes of this disclosure, this is understood to mean an information technology storage object which comprises at least one bit and may be composed of different information. For example, it may be a structure that is referred to in the programming language C as a "record" and is declared with the declarator "struct". The elements of such a record do not necessarily have to be successively successive, but can preferably be placed in memory in always the same way. If the address of a record element is known, then the other elements are also known. If in this disclosure of predefined address and / or a predefined address space is mentioned, so that the address space of such a predefined structure is meant. At least one element of this structure represents the pointer to the next memory area, or alternatively represents the zero-entry if all bits of that element are in the unprogrammed state. The element can of course be a record again.

BezugszeichenlisteLIST OF REFERENCE NUMBERS

MTPMTP
steht für Englisch „Multiple-Times-Programmable“, was mehrfach programmierbar bedeutet. Mit MTP-Speicher wird also ein Speicher bezeichnet, bei dem jedes Bit dieses Speichers für sich mehrfach programmierbar ist und demzufolge auf einem nicht weiter definierten Wege löschbar ist;stands for English "Multiple-Times-Programmable", which means multiply programmable. With MTP Memory is thus called a memory in which each bit of this memory is repeatedly programmable and therefore can be erased in a manner not further defined;
OTPOTP
steht für Englisch „One-Time-Programmable“, was nur einmal programmierbar bedeutet. Mit OTP-Speicher wird also ein Speicher bezeichnet, bei dem jedes Bit dieses Speichers für sich nur einmal programmierbar ist;stands for English "one-time programmable", which means only once programmable. With OTP Memory is thus called a memory in which each bit of this memory is programmable only once;
PATT1 PATT 1
erster Speicherbereich der ersten Adressen-Übersetzungstabelle;first storage area of the first address translation table;
PATT2 PATT 2
zweiter Speicherbereich der zweiten Adressen-Übersetzungstabelle;second memory area of the second address translation table;
PATT3 PATT 3
dritter Speicherbereich der dritten Adressen-Übersetzungstabelle;third memory area of the third address translation table;
PATTj-1 PATT j-1
(j-1)-ter Speicherbereich mit 1≤(j-1)<j≤n der (j-1)-ten Adressen-Übersetzungstabelle;(j-1) -th memory area with 1≤ (j-1) <j≤n of the (j-1) -th address translation table;
PATTj PATT j
j-ter Speicherbereich mit 1≤j≤n der j-ten Adressen-Übersetzungstabelle;j-th memory area with 1≤j≤n of the jth address translation table;
PATTn PATT n
n-ter Speicherbereich der n-ten Adressen-Übersetzungstabelle;nth memory area of the nth address translation table;

Liste der zitierten SchriftenList of quoted writings

US 2015 0 317 152 A1  GB 2 231 419 A DE 10 2014 006 998 A1US 2015 0 317 152 A1 GB 2 231 419 A DE 10 2014 006 998 A1

Claims (4)

Nachträglich patch-barer Speicher (OTP) mit Bitspeicherzellen, die in Bits oder in Bytes oder in Datenworten mit einer Bit,- Byte- oder Wortadresse organisiert sind, - wobei die Speicherzellen in einem programmierten und einem nicht programmierten Zustand vorliegen können, - wobei der der programmierte Zustand und der nicht programmierte Zustand sich unterscheiden und - wobei ein Verfahren existiert, ausgewählte einzelne Bitspeicherzellen unabhängig von anderen Bitspeicherzellen vom nicht programmierten in den programmierten Zustand zu bringen und - wobei dem nicht programmierten Zustand einer Bitspeicherzelle ein erster logischer Zustand zugewiesen werden kann und - wobei dem programmierten Zustand einer Bitspeicherzelle ein zweiter logischer Zustand zugewiesen werden kann und - wobei der Speicher n Speicherbereiche (PATT1, PATT2,...... PATTn), aufweist, die als gespeicherten Inhalt jeweils logische Zeiger für Programmprozeduren und/oder Datentabellen und/oder Daten für einen oder mehrere Prozessoren oder endliche Automaten aufweisen, und - wobei n eine ganze positive Zahl größer gleich 1 ist und - wobei jeder i-te Speicherbereich (PATTi mit 1≤i≤n) der n Speicherbereiche (PATT1, PATT2,...... PATTn) aus einem oder mehreren zusammenhängenden Adressbereichen innerhalb des Speichers (OTP) besteht, die sich nicht überlappen und - wobei ein j-ter Speicherbereich (PATTj) der n Speicherbereiche (PATT1, PATT2,...... PATTn) an einer oder mehreren vordefinierten Adresspositionen innerhalb des Speicherbereichs - im Folgenden vordefinierter Adressraum genannt, dessen Definition für alle Speicherbereiche innerhalb der jeweiligen Adressbereich relativ bezogen auf den Beginn des Adressbereichs des jeweiligen Speicherbereichs gilt - • eine oder mehrere nicht programmierte Bit-Zellen, und/oder • ein oder mehrere nicht programmierte Bytes und/der • ein oder mehrere nicht programmierte Datenworte und • keine programmierten Bit-Zellen und • keine programmierten Bytes und • keine programmierten Datenworte, im Folgenden allesamt „Zero-Entry“ genannt, aufweist und - wobei mindestens ein Speicherbereich (PATT1) der erste Speicherbereich ist und - wobei der erste Speicherbereich (PATT1) in dem vordefinierten Adressraum innerhalb des ersten Speicherbereichs (PATT1) einen Zeiger auf den zweiten Speicherbereich (PATT2) enthält, wenn er nicht der j-te Speicherbereich (PATTj) ist und - wobei ein vorausgehender Speicherbereich (PATTk-1 mit 1≤k-1≤j-1) in dem vordefinierten Adressraum innerhalb des vorausgehenden Speicherbereichs (PATTk-1 mit 1≤k-1≤j-1) einen Zeiger auf den nachfolgenden Speicherbereich (PATTk mit 2≤k≤j) enthält, wenn er nicht der j-te Speicherbereich (PATTj) ist.Subsequent patchable memory (OTP) having bit memory cells organized into bits or bytes or data words having a bit, byte or word address, the memory cells being in a programmed and an unprogrammed state, wherein the the programmed state and the unprogrammed state differ; and wherein a method exists to bring selected individual bit memory cells from unprogrammed to programmed state independently of other bit memory cells, and wherein a non-programmed state of a bit memory cell can be assigned a first logic state, and - wherein the programmed state of a bit memory cell, a second logic state can be assigned and - wherein the memory n memory areas (PATT 1 , PATT 2, ...... PATT n ), having as stored content respectively logical pointers for program procedures and / or data tables and / or data for ei where n is a whole positive number greater than or equal to 1, and where every i-th memory area (PATT i with 1≤i≤n) of the n memory areas (PATT 1 , PATT 2 ,. ..... PATT n ) consists of one or more contiguous address areas within the memory (OTP) which do not overlap and - wherein a jth memory area (PATT j ) of the n memory areas (PATT 1 , PATT 2, .. .... PATT n ) at one or more predefined address positions within the memory area - hereinafter called predefined address space whose definition applies to all memory areas within the respective address area relative to the beginning of the address area of the respective memory area - • one or more unprogrammed Bit cells, and / or • one or more unprogrammed bytes and / or • one or more unprogrammed data words, and • no programmed bit cells and • no programmed bytes and • no programmed data words, in the following all called "zero-entry", and - wherein at least one memory area (PATT 1 ) is the first memory area and - wherein the first memory area (PATT 1 ) in the predefined address space within the first memory area (PATT 1 ) contains a pointer to the second memory area (PATT 2 ) if it is not the j-th memory area (PATT j ), and - a preceding memory area (PATT k-1 with 1≤k-1≤j -1) in the predefined address space within the previous memory area (PATT k-1 with 1≤k-1≤j-1) contains a pointer to the subsequent memory area (PATT k with 2≤k≤j) if it is not the j -th memory area (PATT j ) is. Verfahren zum Auffinden und Aufruf einer Programmprozedur in einem OTP-Speicher nach Anspruch 1 - Auslesen der Speicherwerte aus dem vordefinierten Adressraum des eines k-ten Speicherbereichs (PATTk) mit 1≤k≤n, wobei insbesondere bei erstmaliger Ausführung des Verfahrens k=1 gewählt werden kann; - Überprüfen, ob es sich bei den Speicherwerten aus dem vordefinierten Adressraum des k-ten Speicherbereichs (PATTk) um einen Zero-Entry handelt - Für den Fall dass es sich NICHT um einen Zero-Enty handelt: • Bestimmen eines nachfolgenden Speicherbereichs (PATTk+1) ggf. in Abhängigkeit von den ausgelesenen Speicherwerten und wiederholen der Schritte dieses Anspruchs für den k+1-ten Speicherbereich und ggf. auf diesen nachfolgende Speicherbereiche bis k+1>n; - Für den Fall, dass es sich um einem Zero-Entry handelt: • Ermitteln eines logischen Zeigers für die aufzufindende Programmprozedur durch Ermittlung des Inhalts einer Speicherstelle innerhalb des k-ten Speicherbereichs (PATTk) mittels eines vorgegebenen Offsets; • Aufrufen der aufzufindenden Programmprozedur mit Hilfe dieses ermittelten logischen Zeigers;Method for finding and calling a program procedure in an OTP memory Claim 1 - Readout of the memory values from the predefined address space of a k-th memory area (PATT k ) with 1≤k≤n, wherein k = 1 can be selected in particular at the first execution of the method; - Check whether the memory values from the predefined address space of the kth memory area (PATT k ) are zero-entry - In the event that it is NOT a zero-enty: • Determining a subsequent memory area (PATT k + 1 ) possibly in dependence on the read-out memory values and repeating the steps of this claim for the k + 1-th memory area and possibly on these subsequent memory areas up to k + 1>n; In the case of a zero-entry: determining a logical pointer for the program procedure to be found by determining the content of a memory location within the k-th memory area (PATT k ) by means of a predetermined offset; Calling the program procedure to be found using this determined logical pointer; Verfahren zum Auffinden einer Datentabelle oder von Daten in einem OTP-Speicher nach Anspruch 1 - Auslesen der Speicherwerte aus dem vordefinierten Adressraum des eines k-ten Speicherbereichs (PATTk) mit 1≤k≤n, wobei insbesondere bei erstmaliger Ausführung des Verfahrens k=1 gewählt werden kann; - Überprüfen, ob es sich bei den Speicherwerten aus dem vordefinierten Adressraum des k-ten Speicherbereichs (PATTk) um einen Zero-Entry handelt - Für den Fall dass es sich NICHT um einen Zero-Enty handelt: • Bestimmen des nachfolgenden Speicherbereichs (PATTk+1) ggf. in Abhängigkeit vom ausgelesenen Speicherwert und wiederholen der Schritte dieses Anspruchs für den k+1-ten Speicherbereich und ggf. auf diesen nachfolgende Speicherbereiche bis k+1>n; - Für den Fall, dass es sich um einem Zero-Entry handelt: • Ermitteln eines logischen Zeigers für die aufzufindende Datentabelle oder die aufzufindenden Daten durch Ermittlung des Inhalts einer Speicherstelle innerhalb des k-ten Speicherbereichs (PATTk) mittels eines vorgegebenen Offsets; • Auslesen der aufzufindende Datentabelle oder der aufzufindenden Daten mittels mit Hilfe dieses ermittelten logischen Zeigers; Method for finding a data table or data in an OTP memory Claim 1 - Readout of the memory values from the predefined address space of a k-th memory area (PATT k ) with 1≤k≤n, wherein k = 1 can be selected in particular at the first execution of the method; - Check whether the memory values from the predefined address space of the kth memory area (PATT k ) are zero-entry - In the event that it is NOT a zero-enty: • Determine the following memory area (PATT k + 1 ) possibly in dependence on the read-out memory value and repeating the steps of this claim for the k + 1-th memory area and possibly on these subsequent memory areas up to k + 1>n; In the case of a zero-entry: determining a logical pointer for the data table or the data to be found by determining the content of a memory location within the k-th memory area (PATT k ) by means of a predetermined offset; • reading the data table or the data to be found by means of this determined logical pointer; Verfahren zum Ändern der aufzufindenden Programmprozeduren und/oder Daten und/oder Datentabellen für einen Speicher nach Anspruch 1 mit den Schritten - Bestimmen eines j+1-ten Speicherbereiches (PATTj+1) der n Speicherbereiche, der dem aktuellen j-ten Speicherbereich nachfolgen soll, wobei zumindest Teile dieses j+1-ten Speicherbereichs komplett im Zustand „nicht programmiert“ sind und wobei zumindest der vordefinierten Adressraum innerhalb dieses j+1-ten Speicherbereichs einen Zero-Entry enthalten muss; - Programmierung der logischen Zeiger für Programmprozeduren und/oder Datentabellen und/oder Daten für einen oder mehrere Prozessoren oder endliche Automaten in den j+1-ten Speicherbereich (PATTj+1); - Programmierung eines vom Zero-Entry abweichenden Wertes in die Bits und/oder Bytes und/oder Datenworte des vordefinierten Adressraums des j-ten Speicherbereichs (PATTj), der das Bestimmen des logischen Zeigers für die aufzufindende Datentabelle oder die aufzufindenden Daten mittels eines vorgegebenen Offsets innerhalb des j-ten Speicherbereichs (PATTj) ermöglicht wodurch der bisherige j+1-te Speicherbereich zum neuen j-ten Speicherbereich wird;Method for changing the program procedures and / or data and / or data tables for a memory to be found Claim 1 comprising the steps of - determining a j + 1-th memory area (PATT j + 1 ) of the n memory areas to follow the current j-th memory area, wherein at least parts of this j + 1-th memory area are completely in the state "not programmed" and wherein at least the predefined address space within this j + 1 th memory area must contain a zero entry; Programming the logical pointers for program procedures and / or data tables and / or data for one or more processors or finite state machines into the j + 1 th memory area (PATT j + 1 ); Programming a value deviating from the zero entry into the bits and / or bytes and / or data words of the predefined address space of the jth memory area (PATT j ), which determines the logical pointer for the data table or the data to be found by means of a predetermined one Offsets within the j-th memory area (PATT j ) enable the previous j + 1-th memory area to become the new j-th memory area;
DE102017102147.7A 2016-10-11 2017-02-03 Subsequent patchable memory (OTP) with bit memory cells and method of patching same Active DE102017102147B4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102016119363 2016-10-11
DE102016119363.1 2016-10-11

Publications (2)

Publication Number Publication Date
DE102017102147A1 DE102017102147A1 (en) 2018-04-12
DE102017102147B4 true DE102017102147B4 (en) 2018-09-20

Family

ID=61696082

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017102147.7A Active DE102017102147B4 (en) 2016-10-11 2017-02-03 Subsequent patchable memory (OTP) with bit memory cells and method of patching same

Country Status (1)

Country Link
DE (1) DE102017102147B4 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2231419A (en) 1989-05-05 1990-11-14 Technophone Ltd Program-updating PROM
US8472233B1 (en) * 2010-04-21 2013-06-25 Marvell International Ltd. Circuits and methods for multiple programmable memory using one-time programmable memory
DE102014006998A1 (en) 2013-08-07 2015-02-12 Cambridge Silicon Radio Limited Correction of a programmable memory
US20150317152A1 (en) 2014-04-30 2015-11-05 Dialog Semiconductor Gmbh Patching of Program Code Executed from One Time Programmable Memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2231419A (en) 1989-05-05 1990-11-14 Technophone Ltd Program-updating PROM
US8472233B1 (en) * 2010-04-21 2013-06-25 Marvell International Ltd. Circuits and methods for multiple programmable memory using one-time programmable memory
DE102014006998A1 (en) 2013-08-07 2015-02-12 Cambridge Silicon Radio Limited Correction of a programmable memory
US20150317152A1 (en) 2014-04-30 2015-11-05 Dialog Semiconductor Gmbh Patching of Program Code Executed from One Time Programmable Memory

Also Published As

Publication number Publication date
DE102017102147A1 (en) 2018-04-12

Similar Documents

Publication Publication Date Title
EP2318920B1 (en) Control appliance for a vehicle, and method for updating data for a control appliance for a vehicle
EP1199726B1 (en) Method and apparatus for testing integrated circuits
DE102009024605A1 (en) Apparatus and method for bypassing a first program code portion with a replacement program code portion
DE2328869A1 (en) PROCEDURE FOR TESTING A DIGITAL STORAGE SYSTEM AND FOR CARRYING OUT THIS PROCEDURE BY A SELF-CHECKING DIGITAL STORAGE SYSTEM
DE10308545A1 (en) Method and device for updating a distributed program
DE19839680B4 (en) Method and device for modifying the memory contents of control units
DE60222891T2 (en) Non-volatile memory device and self-repair method
EP0500973B1 (en) EEPROM and method for altering a bootstrap routine in the EEPROM
DE102006029690A1 (en) Maintaining identification of an electronic control unit during reprogramming events
EP1262856B1 (en) Program controlled unit
DE60102466T2 (en) TWO-TOR CAM MEMORY FOR SIMULTANEOUS FLASH MEMORY OPERATION
EP1008993A2 (en) Writeable memory with self-test device and method therefor
EP1118935A2 (en) Circuit and method for programming and reading patch data
DE10234971A1 (en) Program code generation method for generating program code from source text uses a processor core in a micro-controller to run the program code and a compiler to generate corresponding commands
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
DE102017102147B4 (en) Subsequent patchable memory (OTP) with bit memory cells and method of patching same
EP3378006B1 (en) Method for loading of a secure memory image of a microcontroler and arrangement with a microcontroller
DE102006009214A1 (en) Contents writing method for e.g. uniform channel programming electrically erasable ROM, involves writing contents of output memory to target memory if selection memory indicates to output memory that target memory is not written
DE19951048A1 (en) Procedure for identification of integrated circuit by generation of faulty or erroneous memory cells within memory and identification of the circuit from the faulty memory cell pattern, with no need to hard-wire a serial number
DE102014006998A1 (en) Correction of a programmable memory
EP1032871B1 (en) Process and device for loading data for basic system routines of a data processing system
DE3210616A1 (en) COMPUTER
DE602005005289T2 (en) Method, system and computer program product for correcting errors in a read-only memory
EP0917053B1 (en) Program controlled unit and method of operating
WO2009103728A1 (en) Method and device for storing information data

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009445000

Ipc: G06F0008654000

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: ELMOS SEMICONDUCTOR SE, DE

Free format text: FORMER OWNER: ELMOS SEMICONDUCTOR AKTIENGESELLSCHAFT, 44227 DORTMUND, DE