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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates 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
- (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) Programmierung einer neuen Unterprogrammroutine in einem zuvor nicht programmierten OTP-Speicherbereich;
- (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.
- (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) programming a new subroutine routine in a previously unprogrammed OTP memory area;
- (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
Aus der Schrift
Die in der
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
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
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 (
Der Rest des
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
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 (
Der verbleibende Rest des
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
Dieser Vorgang umfasst zum einen das Programmieren des Zero-Entries des zweiten Speicherbereichs (
In diesem Patch-Zustand (Patch-Level 2) enthält der dritte Speicherbereich (
Der verbleibende Rest des
Glossarglossary
Zero-Entry
Die n Speicherbereiche (
The n memory areas (
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. WithMTP 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. WithOTP 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
Claims (4)
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)
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 |
-
2017
- 2017-02-03 DE DE102017102147.7A patent/DE102017102147B4/en active Active
Patent Citations (4)
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 |