DE102004006308B4 - Method for modifying program code of a portable data carrier by means of patch data - Google Patents

Method for modifying program code of a portable data carrier by means of patch data Download PDF

Info

Publication number
DE102004006308B4
DE102004006308B4 DE102004006308A DE102004006308A DE102004006308B4 DE 102004006308 B4 DE102004006308 B4 DE 102004006308B4 DE 102004006308 A DE102004006308 A DE 102004006308A DE 102004006308 A DE102004006308 A DE 102004006308A DE 102004006308 B4 DE102004006308 B4 DE 102004006308B4
Authority
DE
Germany
Prior art keywords
memory
program code
patch
data
patch 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.)
Expired - Fee Related
Application number
DE102004006308A
Other languages
German (de)
Other versions
DE102004006308A1 (en
Inventor
Wolfgang Rankl
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.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Priority to DE102004006308A priority Critical patent/DE102004006308B4/en
Publication of DE102004006308A1 publication Critical patent/DE102004006308A1/en
Application granted granted Critical
Publication of DE102004006308B4 publication Critical patent/DE102004006308B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Verfahren zum Verändern von ausführbarem Programmcode (20), der in einem nichtflüchtigen überschreibbaren Speicher (18) eines ferner einen Prozessor (12) und eine Kommunikationsschnittstelle (14) aufweisenden tragbaren Datenträgers (10) gespeichert ist, wobei Patchdaten (24), die an der Kommunikationsschnittstelle (14) eingehen, empfangen und von dem Prozessor (12) verarbeitet werden und die Patchdaten (24) zumindest einen Teilbereich (22) des nichtflüchtigen überschreibbaren Speichers (18) definieren und ferner definieren, welchen neuen Programmcode (32) dieser Teilbereich (22) nach der Ausführung des Verfahrens enthalten soll, und wobei der Prozessor (12) den ausführbaren Programmcode (20) wie in den Patchdaten (24) angegeben verändert, dadurch gekennzeichnet, daß der Programmcode (20) als Speicherabbild vorliegt und die Patchdaten (24) definieren, ob und inwieweit der Inhalt mindestens eines Verschiebebereichs (48) des nichtflüchtigen überschreibbaren Speichers (18) verschoben werden soll, der Prozessor (12) diese Verschiebung wie in den Patchdaten (24) angegeben vornimmt, und ferner Referenzen in zumindest einem Teil des nichtflüchtigen überschreibbaren Speichers (18), die auf...method to change of executable Program code (20) stored in a non-volatile rewritable memory (18) a further a processor (12) and a communication interface (14) having portable data carrier (10) is stored, wherein Patch data (24) received at the communication interface (14), received and processed by the processor (12) and the Patch data (24) at least a portion (22) of the non-volatile rewritable memory (18) define and further define which new program code (32) contain this portion (22) after the execution of the method and wherein the processor (12) executes the executable program code (20) as in the patch data (24) indicated changed, characterized that the Program code (20) is present as a memory image and the patch data (24) define whether and to what extent the content of at least one shift area (48) of the non-volatile overwritable Memory (18) is to be moved, the processor (12) this Shift as specified in the patch data (24), and furthermore, references in at least part of the non-transitory rewritable Memory (18), which ...

Figure 00000001
Figure 00000001

Description

Die Erfindung betrifft allgemein tragbare Datenträger und spezieller ein Verfahren zum Verändern von Programmcode eines tragbaren Datenträgers mittels Patchdaten. Ein tragbarer Datenträger im Sinne des vorliegenden Dokuments kann insbesondere eine Chipkarte (smart card) in unterschiedlichen Bauformen oder ein Chipmodul oder eine sonstige ressourcenbeschränkte Vorrichtung sein.The This invention relates generally to portable data carriers, and more particularly to a method to change of program code of a portable data carrier by means of patch data. One portable data carrier in For the purposes of the present document, in particular a chip card (smart card) in different designs or a chip module or another resource limited Be device.

Heute übliche Chipkarten weisen in der Regel einen maskenprogrammierten Festwertspeicher (ROM) zur Aufnahme des Betriebssystems und gegebenenfalls weiterer ausführbarer Programme auf. Der Speicherinhalt des ROM ist durch die bei der Herstellung verwendeten Masken unveränderlich festgelegt. Um dennoch eventuell vorhandene Programmierfehler korrigieren zu können, sind sogenannte Patchmechanismen (patch = Flicken, Korrekturstück) bekannt.Today common chip cards usually have a mask-programmed read-only memory (ROM) for the inclusion of the operating system and possibly further executable Programs on. The memory content of the ROM is through the manufacture used masks fixed immutable. In order nevertheless to correct possibly existing programming errors can, So-called patch mechanisms (patch = patch, correction piece) are known.

In Abschnitt 5.4 des Buches "Handbuch der Chipkarten" von W. Rankl und W. Effing, Hanser Verlag, 3. Auflage 1999, Seiten 216–217, ist ein Patchmechanismus dargestellt, bei dem der im ROM befindliche Programmcode Aussprungbefehle zu einem veränderbaren EEPROM-Speicher aufweist. Im Normalfall enthält das Sprungziel im EEPROM lediglich einen Rücksprung zu der dem Aussprungbefehl im ROM unmittelbar folgenden Stelle. Zur Korrektur eines Programmfehlers wird dagegen statt des unmittelbaren Rücksprungs ein Sprung zu einer Patchroutine eingefügt, die ihrerseits – nach Ausführung des fehlerfreien Programmcodes – wieder an eine Stelle im ROM hinter dem Programmfehler verzweigt. Bei typischen heutigen Chipkarten sind mehrere Hundert solche Aussprungbefehle im ROM und Rücksprungbefehle im EEPROM vorgesehen.In Section 5.4 of the book "Handbook the chip cards "from W. Rankl and W. Effing, Hanser Verlag, 3rd edition 1999, pages 216-217 a patch mechanism is shown in which the located in the ROM Program code has jump instructions to a variable EEPROM memory. Normally contains the jump destination in the EEPROM merely returns to the exit command immediately following in the ROM. To correct a program error on the other hand, instead of the immediate return, a jump to a Inserted patch routine, which in turn - after execution of the error-free program code - again branched to a position in the ROM behind the program error. In typical Today's chip cards are several hundred such exit instructions in ROM and return commands provided in the EEPROM.

Um eine nachträgliche Korrektur fehlerhafter Programme für Chipkarten zu ermöglichen schlägt EP 1 306 759 A2 vor eine Vergleichslogik einzurichten, die die Adresse eines auszuführenden Programmbefehles mit vorgegebenen Auslöseadressen vergleicht. Ergibt sich eine Übereinstimmung, wird eine Verteilerroutine aufgerufen, die die Ausführung einer im EEPROM gespeicherten Patchroutine veranlaßt. Die Patchroutine ersetzt einen fehlerhaften Abschnitt in einem Programm, dessen Ausführung sodann hinter dem korrigierten Abschnitt fortgesetzt wird.To allow a subsequent correction of incorrect programs for smart cards suggests EP 1 306 759 A2 to set up a comparison logic which compares the address of a program instruction to be executed with predetermined trigger addresses. If there is a match, a dispatcher routine is called that causes execution of a patch routine stored in the EEPROM. The patch routine replaces a faulty section in a program whose execution then continues beyond the corrected section.

Aus der EP 458 559 A2 ist für einen E-Chip-Mikrocomputer zur Schaffung der Möglichkeit zur nachträglichen Korrektur nichtveränderbarer Programmdaten der Vorschlag bekannt, ein Patchmodul vorzusehen, das ein Register und einen Vergleicher umfaßt. In einem nichtpflichtigen Speicher befindet sich ein Programmsegment, das ein fehlerhaftes Segment in den unveränderbaren Programmdaten ersetzt. Der Vergleicher vergleicht den Programmzähler mit in dem Register gespeicherten Fangadressen und bewirkt bei Übereinstimmung, daß ein im nichtflüchtigen Speicher abgelegtes Patchprogramm ausgeführt wird.From the EP 458 559 A2 For an e-chip microcomputer for providing the possibility of subsequently correcting non-variable program data, the proposal is made to provide a patch module comprising a register and a comparator. In a non-compulsory memory is a program segment which replaces a defective segment in the unchangeable program data. The comparator compares the program counter with the fetch addresses stored in the register and, if coincident, causes a patch program stored in the nonvolatile memory to be executed.

Aufgrund der stetigen Weiterentwicklung der Halbleitertechnologie ist abzusehen, daß das maskenprogrammierte ROM in Mikrocontrollern für Chipkarten in Zukunft ganz oder teilweise durch nichtflüchtigen beschreibbaren Speicher ersetzt werden wird. Dieser nichtflüchtige beschreibbare Speicher kann beispielsweise als Flash-Speicher oder FRAM (ferroelectric random access memory = ferroelektrischer Speicher mit wahlfreiem Zugriff) ausgestaltet sein. Wenn ein derartiger Speicher als Programmspeicher bei einem Chipkarten-Mikrocontroller vorgesehen ist, kann der im Speicher befindliche Programmcode überschrieben werden.by virtue of the continuous development of semiconductor technology is foreseeable that this mask-programmed ROM in microcontrollers for smart cards in the future completely or partly by non-volatile writable memory will be replaced. This non-volatile writeable Memory can be stored as flash memory or FRAM (ferroelectric random access memory = ferroelectric memory with random Access) be configured. If such a memory as a program memory is provided in a chip card microcontroller, the in the Memory are overwritten.

Es ist prinzipiell möglich, den oben beschriebenen Patchmechanismus auch bei Chipkarten-Mikrocontrollern zu verwenden, die einen nichtflüchtigen beschreibbaren Programmspeicher aufweisen. Hierbei muß jedoch in Kauf genommen werden, daß die Aussprung- und Rücksprungbefehle wertvollen Speicherplatz benötigen und die effektive Geschwindigkeit der Programmausführung verringern. Es wäre daher wünschenswert, diese Probleme, die bei Chipkarten mit maskenprogrammiertem Festwertspeicher unumgänglich sind, bei Chipkarten mit nichtflüchtigem überschreibbaren Programmspeicher zu vermeiden.It is possible in principle, the patch mechanism described above also with chip card microcontrollers to use a non-volatile have writable program memory. Here, however, must be accepted that the Exit and return commands need valuable storage space and reduce the effective speed of program execution. It would therefore be desirable, these problems, which are inevitable with chip cards with mask-programmed read-only memory, with chip cards with non-volatile overwritable Program memory to avoid.

Zur Programmfehlerkorrektur wäre es ferner möglich, den gesamten nichtflüchtigen überschreibbaren Speicher zu löschen und vollständig neu zu beschreiben. Dieser Vorgang benötigt jedoch sowohl zur Datenübertragung des gesamten Speicherabbilds auf die Chipkarte als auch für den eigentlichen Schreibvorgang in den Speicher verhältnismäßig viel Zeit. Da sich der Schreibvorgang in der Regel nicht parallel zu anderen Herstellungsschritten ausführen läßt, würde sich durch diese Vorgehensweise die Herstellung des Datenträgers verlängern und damit verteuern.to Program error correction would be it is also possible the entire non-volatile overwritable Memory to clear and completely to rewrite. However, this process requires both for data transmission the entire memory image on the smart card as well as for the actual writing process into the store a relatively long time. Because the writing process is usually not parallel to others Performing manufacturing steps, would be extend the production of the disk by this approach and make it more expensive.

US 6,526,574 offenbart ein Verfahren zur effizienten Verbreitung von fehlerbereinigten Programmdateien an eine Mehrzahl von Abnehmern. Danach werden nicht die gesamten überarbeiteten Dateien sondern nur noch kompakte Patchdateien verbreitet, welche die Abnehmer mit Hilfe eines jeweils zuvor installierten Patchanwendungsprogrammes in die Lage versetzen, aus einem zu ersetzenden vorhandenen Programm ein fehlerbereinigtes neues Programm zu generieren. Die Patchdatei wird in einer Zentrale durch Vergleich des vorhandenen mit dem fehlerbereinigten Programm erzeugt, indem festgestellt wird, wie aus dem vorhandenen Programm das fehlerbereinigte erzeugt werden kann. Die Lösung setzt hinreichend große Hard- und Softwareressourcen voraus, auf denen insbesondere ein Patchanwendungsprogramm bereitgehalten und ausgeführt werden kann. US 6,526,574 discloses a method for efficiently distributing bug-fixed program files to a plurality of customers. Thereafter, not all the revised files but only compact patch files are distributed, which enable the customers with the help of a previously installed patch application program in the situation to generate from an existing existing program a clean-cleaned new program. The patch file will in a central office by comparison of the available with the error-corrected program generated by determining how the error-cleaned can be generated from the existing program. The solution requires sufficiently large hardware and software resources on which in particular a patch application program can be kept and executed.

JP-A-09114655 zeigt ein Verfahren zur Programmfehlerkorrektur, bei dem eine Korrekturfunktion generiert wird und ein Patchabschnittslademodul in einen Speicher geschrieben wird.JP-A-09114655 shows a method for program error correction, in which a correction function is generated and a Patchabladlademodul in a memory is written.

US 6,256,232 B1 offenbart ein Datenzugriffsverfahren zur Verlängerung der Lebensdauer eines Flash-Speichers. Wenn die in einen Datenblock einzuschreibenden Daten von den bereits gespeicherten Daten nur geringfügig abweichen, wird der Unterschied in einem Patchbereich vermerkt. Andernfalls wird der Inhalt des Datenblocks überschrieben. US 6,256,232 B1 discloses a data access method for extending the life of a flash memory. If the data to be written into a data block deviates only slightly from the data already stored, the difference is noted in a patch area. Otherwise, the contents of the data block will be overwritten.

Allgemein bekannt sind desweiteren Techniken zur Suche nach Referenzen und zur Anpassung von Referenzen. So findet sich eine Anleitung zum Auflösen externer Referenzen in dem „Informatikhandbuch", Rechenberg/Pomberger, Hanser Verlag, 1997, S. 608, 609. Techniken zum Auflösen von Referenzen sind zudem regelmäßig Gegenstand der Ausbildung auf dem Gebiet der Informatik und waren beispielsweise Teil der Vorlesung „Technische Informatik II" von A. Strey, im Wintersemester 2001/02 an der Universität Ulm. U.a. wurde in dieser Vorlesung auf die Aufgaben eines Binders eingegangen und dabei insbesondere das Verschieben von Instruktionen und Daten sowie das Auflösen von Querbezügen zwischen Programmteilen durch Ersetzen von symbolischen Bezeichnern genannt.Generally furthermore known are techniques for searching for references and for adapting references. So there is a guide to resolve external References in the "Informatikhandbuch", Rechenberg / Pomberger, Hanser Verlag, 1997, p. 608, 609. Techniques for dissolving References are also a regular subject training in the field of computer science and were for example Part of the lecture "Technical Computer Science II "of A. Strey, in the winter semester 2001/02 at the University of Ulm. Et al This lecture deals with the tasks of a binder and in particular the shifting of instructions and data as well as the dissolution of cross references between Program parts called by replacing symbolic identifiers.

Die Erfindung hat die Aufgabe, die Probleme des Stands der Technik zumindest zum Teil zu vermeiden und einen verbesserten Patchmechanismus für Programmcode, der in einem nichtflüchtigen überschreibbaren Speicher eines tragbaren Datenträgers vorliegt, bereitzustellen. In bevorzugten Ausgestaltungen soll sich der Patchmechanismus insbesondere für Chipkarten-Betriebssysteme eignen, die für einen Chipkarten-Mikrocontroller mit Flash-Programmspeicher vorgesehen sind.The Invention has the task of the problems of the prior art, at least partly to avoid and an improved patch mechanism for program code, in a non-volatile overwritable Memory of a portable data carrier is present, provide. In preferred embodiments, the patch mechanism should especially for Smart card operating systems suitable for a smart card microcontroller are provided with flash program memory.

Erfindungsgemäß wird diese Aufgabe gelöst durch ein Verfahren mit den Merkmalen des Hauptanspruchs.According to the invention this Task solved by a method having the features of the main claim.

Die Erfindung geht von der Grundüberlegung aus, Patchdaten einzusetzen, die ausschließlich oder zumindest weitgehend die durch den Patchvorgang zu bewirkenden Veränderungen definieren. Die vom Patchvorgang nicht betroffenen Teile des ausführbaren Programmcodes gehen nicht oder allenfalls in geringem Maße in die Patchdaten ein. Erfindungsgemäß wird dieses Grundprinzip dadurch umgesetzt, daß die Patchdaten zumindest einen Teilbereich des nichtflüchtigen überschreibbaren Speichers definieren und ferner definieren, welchen neuen Programmcode dieser Teilbereich nach dem Ende des Patchvorgangs enthalten soll. Prinzipiell ist eine solche Definition des neuen Programmcodes durch eine Differenzbildung mit dem bisherigen Speicherinhalt – z.B. über eine XOR-Operation – möglich. Vorzugsweise enthalten die Patchdaten jedoch Programmcode, der unmittelbar – also ohne Berücksichtigung des ursprünglichen Dateninhalts – in den Teilbereich einzuschreiben ist.The Invention is based on the basic idea Use patch data that is exclusive or at least largely define the changes to be made by the patching process. The patching process unaffected parts of the executable Program codes are not or only to a small degree in the Patch data. According to the invention this Basic principle implemented by the fact that the patch data at least a subset of the nonvolatile overwritable Define memory and further define which new program code should contain this subspace after the end of the patching process. In principle, such a definition of the new program code is through a difference with the previous memory contents - e.g. over a XOR operation - possible. Preferably included the patch data, however, program code, the immediate - ie without consideration of the original one Data content - in to enroll the subarea.

Die Erfindung ermöglicht es, bei Bedarf Veränderungen an dem im nichtflüchtigen überschreibbaren Speicher enthaltenen Programmcode des Datenträgers vorzunehmen. Dadurch erübrigen sich Patchmechanismen, die Aussprung- und Rücksprungbefehle vorsehen. Dies verringert den Speicherplatzbedarf und die zur Programmausführung benötigte Zeit. Ferner brauchen zur Veränderung des Programmcodes nur erheblich weniger Daten an den Datenträger übertragen zu werden, als dies zum vollständigen Überschreiben des Programmspeichers erforderlich wäre. Dies verringert die Durchlaufzeit bei der Fertigung des Datenträgers und führt somit zu einer erheblichen Kosteneinsparung.The Invention allows it, if necessary changes on the non-volatile overwritable Memory contained program code of the disk. This eliminates the need for patch mechanisms the exit and return commands provide. This reduces the memory requirements and the time required to execute the program. Furthermore, need to change the program code transmitted only considerably less data to the disk to be, as to the complete overwriting the program memory would be required. This reduces the turnaround time the production of the data carrier and leads thus a considerable cost savings.

Die Grundidee, durch die Patchdaten die "Differenz" zwischen dem ursprünglichen und dem zu erzielenden Speicherabbild möglichst kompakt zu definieren, wird in bevorzugten Ausgestaltungen dadurch weitergebildet, daß die Patchdaten ferner angeben, ob und inwieweit der Inhalt zumindest eines Verschiebebereichs des nichtflüchtigen über schreibbaren Speichers verschoben werden soll. Durch eine solche Angabe eines Verschiebewerts können Programmcodestücke, die kürzer oder länger als der zu ersetzende Programmcode sind, ohne Leerräume bzw. Hin- und Rücksprünge eingefügt werden. Das Volumen der Patchdaten wird durch die Verschiebefunktionalität bei der Patchdatenverarbeitung nochmals deutlich verringert. Es werden jedoch auch Ausgestaltungen als vorteilhaft angesehen, bei denen keine Verschiebemöglichkeit vorgesehen ist, weil dadurch die Erzeugung und Verarbeitung der Patchdaten besonders einfach ist.The Basic idea, the patch data, the "difference" between the original and to be achieved Memory image as possible to define compact becomes in preferred embodiments thereby further developed that the Patch data also indicate whether and to what extent the content at least a shift range of the non-volatile over writable memory shifted shall be. Such an indication of a shift value may include program code pieces that shorter or longer as the program code to be replaced, without any voids or Jumps and returns are inserted. The volume of the patch data is determined by the shift functionality in the Patch data processing significantly reduced again. It will, however Also considered to be advantageous embodiments in which no displacement possibility is intended because it reduces the generation and processing of the Patch data is particularly easy.

Wenn eine Verschiebung von Programmcodeabschnitten vorgesehen ist, werden vorzugsweise Referenzen im nichtflüchtigen überschreibbaren Speicher – z.B. Sprungziele und Tabellenzeiger –, die auf Speicheradressen im Verschiebebereich verweisen, an die Verschiebung angepaßt. Diese auch als "Code-Relokation" bekannte Anpassung von Referenzen bei der Verschiebung von ausführbarem Programmcode ist als solche gut bekannt.If a shift of program code sections is provided, preferably references in the non-volatile rewritable memory - eg jump destinations and table pointers - which refer to memory addresses in the shift area, are adapted to the shift. This adaptation of references in the displacement of executable pro, also known as "code relocation" Code is well known as such.

In bevorzugten Ausgestaltungen werden anzupassende Referenzen in einem Suchvorgang ermittelt und gemäß dem Verschiebewert korrigiert. Vorzugsweise enthalten die Patchdaten keine oder nur wenige Informationen – z.B. Anfang und Ende des zu durchsuchenden Bereichs – über die anzupassenden Referenzen. Da ein solcher Suchvorgang jedoch relativ aufwendig zu implementieren ist, sind auch Ausgestaltungen vorgesehen, bei denen keine automatische Referenzanpassung erfolgt. Die erforderlichen Änderungen können in solchen Ausgestaltungen in Form von Patchdaten an den Datenträger übertragen werden. So kann z.B. die Sprungzieladresse jedes anzupassenden Sprungbefehls in den Patchdaten als zu verändernder Teilbereich definiert werden, wobei die neue Sprungzieladresse expliziert in den Patchdaten angegeben wird. Eine solche Ausgestaltung benötigt zwar deutlich mehr zu übertragende Patchdaten; sie vermeidet jedoch den für die Code- Relokation erforderlichen Rechenaufwand beim tragbaren Datenträger und vermindert die Größe des zur Implementierung der erfindungsgemäßen Funktionalität erforderlichen Programms.In Preferred embodiments are to be adapted references in one Search determined and according to the shift value corrected. Preferably, the patch data contains no or only little information - e.g. Start and end of the area to be searched - about the references to be adjusted. However, such a search process is relatively expensive to implement is, are also provided arrangements in which no automatic Reference adjustment takes place. The necessary changes may be made in such embodiments be transmitted in the form of patch data to the disk. Thus, e.g. the jump destination address of each jump instruction to be adapted in the patch data as to be changed Subarea defined, where the new branch destination address is explicated in the patch data is specified. Although such an embodiment requires much more to be transmitted Patch data; however, it avoids the computational overhead required for code relocation portable data carrier and reduces the size of the Implementation of the functionality of the invention required Program.

Der Gesamtvorgang des Erstellens von Patchdaten durch einen Vergleich zweier Speicherabbilder und des Veränderns des im tragbaren Datenträger befindlichen Programmcodes ist vollständig automatisierbar. Dies vermeidet Bedienungsfehler, erhöht die Robustheit und reduziert die Kosten für einen Patch. Besonders vorteilhaft ist die Verwendung des hier beschriebenen Verfahrens für Chipkarten-Betriebssysteme, die zumindest zum Teil in einem Flash-Speicher vorliegen.Of the Overall process of creating patch data by comparison two memory images and changing the located in the portable disk Program codes are fully automatable. This avoids operator errors, increases robustness and reduces the price for a patch. Particularly advantageous is the use of the described here Procedure for Smart card operating systems, at least in part in a flash memory available.

Vorteilhafte Anwendungsgebiete der Erfindung sind nicht nur die Korrektur von Programmfehlern, sondern auch die Konfigurierung eines Betriebssystems und dessen Anpassung an kundenindividuelle Anforderungen. Beispielsweise bedeutet es für den Halbleiterhersteller nur einen sehr geringen Aufwand, bei der Herstellung der Chipkarten-Mikrocontroller ein Standard-Betriebssystem in den nichtflüchtigen überschreibbaren Speicher einzuschreiben. Beim Kartenhersteller kann dieses Standard-Betriebssystem dann durch den erfindungsgemäßen Patchmechanismus individuell konfiguriert werden. Hierfür müssen deutlich weniger Daten übertragen werden, als wenn der Kartenhersteller das gesamte Betriebssytem in den nichtflüchtigen überschreibbaren Speicher der Chipkarte einspielen müßte. Die Durchlaufzeit und damit auch die Kosten beim Kartenhersteller können somit deutlich gesenkt werden.advantageous Areas of application of the invention are not only the correction of Program errors, but also the configuration of an operating system and its adaptation to customer-specific requirements. For example it means for the Semiconductor manufacturers only a very small effort in the production the smart card microcontroller is a standard operating system in the non-volatile overwritable To write in memory. At the card manufacturer can use this standard operating system then by the patch mechanism of the invention individually configured. This requires significantly less data to be transferred as if the card manufacturer overwrites the entire operating system in the non-volatile Memory of the chip card would have to import. The lead time and Thus also the costs with the map manufacturer can be lowered thus clearly become.

Das erfindungsgemäße Computerprogrammprodukt weist in einer ersten Ausgestaltung die Patchdaten auf. In einer zweiten Ausgestaltung enthält das Computerprogrammprodukt Programmbefehle, um das erfindungsgemäße Verfahren zum Erzeugen und/oder Verwenden der Patchdaten zu implementieren. Ein derartiges Computerprogrammprodukt kann ein körperliches Medium sein, beispielsweise ein Halbleiterspeicher oder eine Diskette oder eine CD-ROM. Das Computerprogrammprodukt kann jedoch auch ein nicht-körperliches Medium sein, beispielsweise ein über ein Computernetzwerk übermitteltes Signal. Insbesondere kann das Computerprogrammprodukt bei der Komplettierung oder Initialisierung oder Personalisierung oder während des Betriebs des tragbaren Datenträgers oder zur Programmierung einer Verarbeitungsstation zur Erzeugung der Patchdaten eingesetzt werden.The Computer program product according to the invention has the patch data in a first embodiment. In a second embodiment contains the computer program product program commands to the inventive method for implementing and / or using the patch data. Such a computer program product can be a physical one Be medium, for example, a semiconductor memory or a floppy disk or a CD-ROM. However, the computer program product may also be non-physical Be a medium, for example an over a computer network transmitted Signal. In particular, the computer program product may be at the completion or initialization or personalization or during operation of the portable data carrier or for programming a processing station for generation the patch data are used.

Die erfindungsgemäße programmgesteuerte Vorrichtung ist in einer ersten Ausgestaltung eine Verarbeitungsstation zur Erzeugung der Patchdaten und in einer zweiten Ausgestaltung ein tragbarer Datenträger, der die zur Auswertung der Patchdaten erforderliche Funktionalität aufweist. In bevorzugten Ausgestaltungen weist/weisen die Vorrichtung und/oder das Computerprogrammprodukt Merkmale auf, die den gerade beschriebenen und/oder den in den abhängigen Verfahrensansprüchen genannten Merkmalen entsprechen.The inventive program-controlled device In a first embodiment, a processing station for Generation of the patch data and in a second embodiment portable data carrier, which has the functionality required for evaluating the patch data. In preferred embodiments, the device and / or the computer program product features that just described and / or the dependent method claims corresponded features.

Weitere Merkmale, Vorteile und Aufgaben der Erfindung gehen aus der folgenden genauen Beschreibung mehrerer Ausführungsbeispiele und Ausführungsalternativen hervor. Es wird auf die schematischen Zeichnungen verwiesen:Further Features, advantages and objects of the invention will become apparent from the following detailed description of several embodiments and alternative embodiments out. Reference is made to the schematic drawings:

1 zeigt ein Blockdiagramm der an der Erzeugung und Verarbeitung von Patchdaten beteiligten Vorrichtungen und Datenstrukturen nach einem Ausführungsbeispiel der Erfindung, 1 FIG. 12 shows a block diagram of the devices and data structures involved in the generation and processing of patch data according to an embodiment of the invention, FIG.

2 zeigt ein Flußdiagramm des Erzeugens und Verarbeitens von Patchdaten in dem Ausführungsbeispiel von 1, und 2 FIG. 12 is a flowchart of generating and processing patch data in the embodiment of FIG 1 , and

3 zeigt ein Flußdiagramm eines Vorgangs zur Referenzanpassung, wie er bei dem Verfahren von 2 durchgeführt wird. 3 FIG. 10 is a flow chart of a reference adjustment process used in the method of FIG 2 is carried out.

Der in 1 dargestellte Datenträger 10 ist im vorliegenden Ausführungsbeispiel als Chipkarte ausgestaltet. Der Datenträger 10 weist auf einem einzigen Halbleiterchip einen Prozessor 12 und eine Kommunikationsschnittstelle 14 zur kontaktlosen oder kontaktgebundenen Kommunikation auf. Ferner enthält der Datenträger 10 einen als RAM ausgestalteten Arbeitsspeicher 16 und einen nichtflüchtigen überschreibbaren Speicher 18. Der nichtflüchtige überschreibbare Speicher 18 ist im vorliegenden Ausführungsbeispiel als Flash-Speicher ausgebildet; in Ausführungsalternativen kann jedoch eine andere Speichertechnologie verwendet werden.The in 1 illustrated data carrier 10 is configured in the present embodiment as a chip card. The disk 10 has a processor on a single semiconductor chip 12 and a communication interface 14 for contactless or contact-based communication. Furthermore, the disk contains 10 a random access memory configured as RAM 16 and a non-volatile overwritable memory 18 , The non-volatile overwritable memory 18 is formed in the present embodiment as a flash memory; however, in alternative embodiments may be another Storage technology can be used.

Der nichtflüchtige überschreibbare Speicher 18 ist ganz oder teilweise durch Programmcode 20 belegt. Der Programmcode 20 kann ein Betriebssystem des Datenträgers 10 oder ein Anwendungsprogramm oder einen Teil eines Betriebssystems oder Anwendungsprogramms bilden. Ein Teilbereich 22 enthält Programmcode, der zur Korrektur eines Programmierfehlers oder zur Programmkonfiguration verändert werden soll.The non-volatile overwritable memory 18 is completely or partially by program code 20 busy. The program code 20 can be an operating system of the disk 10 or form an application program or part of an operating system or application program. A subarea 22 Contains program code that is to be modified to correct a programming error or program configuration.

Zur Veränderung des Inhalts des Teilbereichs 22 werden Patchdaten 24 zum Datenträger 10 übertragen. Die Patchdaten 24 weisen einen oder mehrere Patchdatensätze auf, von denen in 1 beispielhaft ein Patchdatensatz 26 dargestellt ist. Im vorliegenden Ausführungsbeispiel enthält der Patchdatensatz 26 eine Startadresse 28, einen Verschiebewert 30 und neuen Programmcode 32.To change the content of the subarea 22 become patch data 24 to the disk 10 transfer. The patch data 24 have one or more patch records, of which in 1 an example of a patch record 26 is shown. In the present embodiment, the patch record contains 26 a start address 28 , a shift value 30 and new program code 32 ,

Die Patchdaten 24 werden durch eine als Computer ausgebildete Verarbeitungsstation 34 erzeugt. In der Regel werden die Patchdaten 24 in einem Datenspeicher 36 zwischengespeichert und dann, bei der Komplettierung oder Initialisierung oder Personalisierung des Datenträgers 10, über ein Terminal 38 an den Datenträger 10 und an eine Vielzahl weiterer Datenträger übertragen. Es sind jedoch auch Ausgestaltungen denkbar, bei denen die Patchdaten 24 unmittelbar von der Verarbeitungsstation 34 an einen einzigen Datenträger 10 gesendet werden.The patch data 24 are processed by a computerized processing station 34 generated. In general, the patch data 24 in a data store 36 cached and then, at the completion or initialization or personalization of the disk 10 , via a terminal 38 to the disk 10 and transmitted to a variety of other media. However, embodiments are also conceivable in which the patch data 24 directly from the processing station 34 to a single volume 10 be sent.

Die Verarbeitungsstation 34 erzeugt die Patchdaten 24 durch einen Vergleich zweier Speicherabbilder 40, 42. Das Speicherabbild 40 ist das ursprüngliche, möglicherweise fehlerbehaftete oder noch zu konfigurierende Speicherabbild, wie es sich z.B. nach der Herstellung des Datenträgers 10 im nichtflüchtigen überschreibbaren Speicher 18 oder einem Teilbereich davon befindet. Das Speicherabbild 42 ist dagegen das neue, fehlerfreie oder fertig konfigurierte Speicherabbild.The processing station 34 generates the patch data 24 by comparing two memory images 40 . 42 , The memory image 40 is the original, possibly error-prone or still to be configured memory image, such as after the production of the disk 10 in non-volatile overwritable memory 18 or part of it. The memory image 42 is the new, error-free or fully configured memory dump.

Das ursprüngliche Speicherabbild 40 enthält ursprünglichen Programmcode 44, der durch neuen Programmcode 46 ersetzt werden soll. Im vorliegenden Beispiel ist der ursprüngliche Programmcode 44 kürzer als der neue Programmcode 46, so daß ferner der Speicherinhalt in einem Verschiebebereich 48 verschoben werden muß. Obwohl sich der Verschiebebereich 48 im ursprünglichen Speicherabbild 40 an einer anderen Stelle als im neuen Speicherabbild 42 befindet, wird hier das einzige Bezugszeichen 48 verwendet, um auszudrücken, daß sich der Speicherinhalt des Verschiebebereichs – bis auf eine möglicherweise erforderliche Anpassung von Referenzen – bei der Verschiebung nicht ändert.The original memory image 40 contains original program code 44 that by new program code 46 should be replaced. In this example, the original program code is 44 shorter than the new program code 46 so that further the memory contents in a shift range 48 must be moved. Although the shift range 48 in the original memory dump 40 at a different location than in the new memory image 42 is here, the only reference number 48 used to express that the memory content of the shift area does not change during the move, except for a possibly required adjustment of references.

Das ursprüngliche Speicherabbild 40 weist ferner einen freien Speicherbereich 50 auf, während das neue Speicherabbild 42 einen freien Speicherbereich 52 enthält. Durch die Einfügung des neuen Programmcodes 46 hat sich im vorliegenden Beispiel der freie Speicherbereich 52 gegenüber dem freien Speicherbereich 50 verkleinert.The original memory image 40 also has a free memory area 50 on while the new memory dump 42 a free storage area 52 contains. By inserting the new program code 46 has in the present example the free memory area 52 opposite the free memory area 50 reduced.

Neben dem oben geschilderten Fall, bei dem der neue Programmcode 46 umfangreicher als der ursprüngliche Programmcode 44 war, ist auch der umgekehrte Fall möglich. Wenn der einzufügende neue Programmcode 46 kürzer als der ursprüngliche Programmcode 44 ist, wird der Verschiebebereich 48 "nach oben" bewegt. Der freie Speicherbereich 52 im neuen Speicherabbild 42 ist damit größer als der freie Speicherbereich 50. Ferner ist der Fall möglich, daß der ursprüngliche und der neue Programmcode 44, 46 die gleiche Größe aufweisen. Eine Verschiebung ist dann nicht erforderlich.In addition to the case described above, where the new program code 46 more extensive than the original program code 44 was the reverse case is possible. If the new program code to be inserted 46 shorter than the original program code 44 is, the shift range becomes 48 moved "up". The free memory area 52 in the new memory image 42 is thus larger than the free memory area 50 , Furthermore, the case is possible that the original and the new program code 44 . 46 the same size. A shift is then not required.

In Ausführungsalternativen, die sich durch eine besonders einfache Implementierung auszeichnen, ist die Funktion der Programmcodeverschiebung nicht vorgesehen. In diesem Fall sollte bei der Erstellung des neuen Speicherabbilds 42 darauf geachtet werden, Programmcode, der nicht inhaltlich verändert werden muß, möglichst am ursprünglichen Ort zu belassen.In alternative embodiments, which are characterized by a particularly simple implementation, the function of the program code shift is not provided. In this case, when you create the new memory dump 42 Care must be taken to leave the program code, which does not need to be changed in terms of content, as far as possible at the original location.

Das in 2 gezeigte Verfahren geht von den Speicherabbildern 40, 42 aus, wobei das neue Speicherabbild 42 z.B. manuell durch einen Softwareentwickler erstellt worden ist. Alle weiteren Verfahrensschritte sind vollständig automatisierbar. Das Verfahren läßt sich gliedern in einen ersten Abschnitt 60, in dem die Patchdaten 24 erzeugt werden, einen Schritt 62, in dem die Patchdaten 24 zum Datenträger 10 übertragen werden, und einen zweiten Abschnitt 64, in dem die Patchdaten 24 im Datenträger 10 verarbeitet werden.This in 2 The method shown is based on the memory images 40 . 42 out, taking the new memory dump 42 eg manually created by a software developer. All further process steps are completely automatable. The method can be divided into a first section 60 in which the patch data 24 be generated, a step 62 in which the patch data 24 to the disk 10 be transferred, and a second section 64 in which the patch data 24 in the volume 10 are processed.

In dem ersten Abschnitt 60 erfolgt zunächst, in Schritt 66, ein Vergleich der Speicherabbilder 40, 42, um einen Teilbereich 22 mit divergierendem Programmcode zu finden. Ist ein solches Paar von ursprünglichem Programmcode 44 und neuem Programmcode 46 gefunden worden, kann in einem optionalen Schritt 68 der neue Programmcode 46, also die "Speicherabbilddifferenz", verlustlos komprimiert werden.In the first section 60 first, in step 66 , a comparison of memory dumps 40 . 42 to a subarea 22 to find with diverging program code. Is such a pair of original program code 44 and new program code 46 may have been found in an optional step 68 the new program code 46 , So the "memory image difference", lossless compressed.

In Schritt 70 wird dann der Patchdatensatz 26 erzeugt. Der Patchdatensatz 26 enthält als Startadresse 28 die – notwendigerweise übereinstimmende – Startadresse des ursprünglichen bzw. neuen Programmcodes 44, 46. Als Programmcode 32 wird in den Patchdatensatz 26 der gegebenenfalls komprimierte neue Programmcode 46 aufgenommen. Ferner enthält der Patchdatensatz 26 im vorliegenden Ausführungsbeispiel als Verschiebewert 30 den Wert 0, wenn keine Verschiebung des Verschiebebereichs 48 erforderlich ist, und sonst einen die Verschiebung definierenden positiven oder negativen Wert. In Ausführungsalternativen kann der Patchdatensatz 26 weitere Informationen enthalten, beispielsweise die Länge des neuen Programmcodes 32 oder dessen Endadresse oder die Länge oder Endadresse des Verschiebebereichs 48.In step 70 then becomes the patch record 26 generated. The patch record 26 contains as starting address 28 the - necessarily coinciding - start address of the original or new program code 44 . 46 , As program code 32 will be in the patch record 26 the possibly compressed new program code 46 added. It also contains the patch record 26 in the present embodiment as a shift value 30 the Value 0, if no shift of the shift range 48 and otherwise a positive or negative value defining the displacement. In execution alternatives, the patch record may be 26 contain further information, for example the length of the new program code 32 or its end address or the length or end address of the shift range 48 ,

Die Schritte 66 bis 70 werden gegebenenfalls wiederholt ausgeführt, um weitere Abweichungen zwischen dem ursprünglichen und dem neuen Speicherabbild 40, 42 zu ermitteln. Für jede so gefundene Abweichung wird ein Patchdatensatz 26 in den Patchdaten 24 erzeugt. Diese wiederholte Ausführung der Schritt 66 bis 70 kann z.B. durch eine Programmschleife implementiert werden, wie dies in 2 durch einen gestrichelten Pfeil 72 angedeutet ist.The steps 66 to 70 If necessary, they are repeatedly executed to allow for further discrepancies between the original and the new memory image 40 . 42 to investigate. For every deviation found in this way, a patch data set is created 26 in the patch data 24 generated. This repeated execution of the step 66 to 70 can be implemented by a program loop, as in 2 by a dashed arrow 72 is indicated.

Nach der Erstellung aller Patchdatensätze 26 ist der erste Verfahrensabschnitt 60 beendet. Die Patchdaten 24 können nun – gegebenenfalls nach einer Zwischenspeicherung im Datenspeicher 36 – in Schritt 62 an den Datenträger 10 übertragen werden.After creating all patch records 26 is the first stage of the procedure 60 completed. The patch data 24 can now - possibly after an intermediate storage in the data memory 36 - in step 62 to the disk 10 be transmitted.

Bei der Verarbeitung der Patchdaten 24 im zweiten Verfahrensabschnitt 64 werden die in den Patchdaten 24 enthaltenen Patchdatensätze 26 der Reihe nach abgearbeitet. Das Verfahren beginnt in Schritt 74 mit der Dekomprimierung des neuen Programmcodes 32 im ersten Patchdatensatz 26. Natürlich ist Schritt 74 nur dann erforderlich, wenn auch der korrespondierende Schritt 68 bei der Erzeugung des Patchdatensatzes 26 ausgeführt wurde.When processing the patch data 24 in the second stage of the procedure 64 will be the ones in the patch data 24 contained patch records 26 processed in sequence. The procedure begins in step 74 with the decompression of the new program code 32 in the first patch record 26 , Of course, step is 74 only required if the corresponding step 68 during the generation of the patch dataset 26 was executed.

Falls der Verschiebewert 30 des gerade verarbeiteten Patchdatensatzes 26 anzeigt, daß der Speicherinhalt des Verschiebebereichs 48 bewegt werden muß, erfolgt die Verschiebung in Schritt 76. Der neue Programmcode 32 wird dann in Schritt 78 in den Teilbereich 22 des nichtflüchtigen überschreibbaren Speicher 18 eingeschrieben. Dieser Teilbereich 22 ist dadurch definiert, daß er die im Patchdatensatz 26 angegebene Startadresse 28 und die Länge des neuen Programmcodes 32 aufweist. In Schritt 80 werden Sprungadressen und sonstige Referenzen im gesamten Programmcode 20 an eine gegebenenfalls in Schritt 76 erfolgte Verschiebung angepaßt. Dies wird unten im Zusammenhang mit 3 noch genauer erläutert.If the shift value 30 of the currently processed patch record 26 indicates that the memory contents of the shift range 48 must be moved, the shift takes place in step 76 , The new program code 32 will then step in 78 in the subarea 22 the non-volatile overwritable memory 18 enrolled. This subarea 22 is defined as being in the patch record 26 specified start address 28 and the length of the new program code 32 having. In step 80 become jump addresses and other references in the entire program code 20 to an optionally in step 76 adjusted shift adjusted. This will be related below 3 explained in more detail.

In Abfrage 82 wird überprüft, ob alle in den Patchdaten 24 angegebenen Veränderungen des Speicherinhalts vorgenommen wurden, also ob alle Patchdatensätze 26 verarbeitet wurden. Steht noch mindestens ein Patchdatensatz 26 zur Bearbeitung an, so erfolgt ein Rücksprung zu Schritt 74. Andernfalls wird das Verfahren in Schritt 84 mit einem Rücksetzen des Datenträgers 10 oder einem Neustart des Betriebssystems abgeschlossen. Die Schritte 74 bis 82 werden atomar, also unterbrechungsfrei, ausgeführt.In query 82 will check if all in the patch data 24 changes made to the contents of the memory, that is, all patch records 26 were processed. Is still at least one patch record 26 for processing, a jump back to step 74 , Otherwise, the procedure in step 84 with a reset of the volume 10 or restarting the operating system. The steps 74 to 82 are executed atomically, ie without interruption.

Die im Zusammenhang mit Schritt 80 von 2 ausgeführten Vorgänge sind in 3 genauer dargestellt. Es geht hierbei um die Anpassung von Referenzen, die sich im Programmcode 20 oder einem Teil davon befinden und die auf Speicheradressen im Verschiebebereich 48 zeigen. Solchen Referenzen können insbesondere Sprungziele, Zeiger oder Verweise auf Daten und Konstantentabellen sein. Im vorliegenden Ausführungsbeispiel wird in Schritt 90 der gesamte Programmcode 20 – einschließlich des neuen Programmcodes 32 sowie des Programmcodes im bereits verschobenen Verschiebebereich 48 – nach anzupassenden Referenzen durchsucht. Wenn eine solche Referenz gefunden wurde, wird das Verfahren gemäß Abfrage 92 mit Schritt 94 fortgesetzt. In diesem Schritt wird die Referenz an die neue Adresse, die sich durch die Programmcodeverschiebung ergeben hat, angepaßt. Der Ablauf endet, wenn in Abfrage 96 festgestellt wird, daß alle Referenzen gefunden und bearbeitet wurden. Andernfalls wird das Verfahren von Schritt 90 an wiederholt.The related step 80 from 2 executed operations are in 3 shown in more detail. It is about adapting references that are in the program code 20 or part of it and the memory addresses in the move area 48 demonstrate. Such references may in particular be jump destinations, pointers or references to data and constant tables. In the present embodiment is in step 90 the entire program code 20 - including the new program code 32 and the program code in the already displaced shift area 48 - searched for references to be customized. If such a reference has been found, the procedure according to query 92 with step 94 continued. In this step, the reference to the new address resulting from the program code shift is adjusted. The process ends when in query 96 It is determined that all references have been found and edited. Otherwise, the procedure of step 90 on repeatedly.

Techniken zur Suche nach Referenzen und zur Anpassung von Referenzen sind als solche bekannt. Allerdings ist die Implementierung einer vollautomatischen Code-Relokation, wie sie beim vorliegenden Ausführungsbeispiel in den Schritten 76 und 80 vorgesehen ist, relativ aufwendig. In Ausführungsalternativen wird deshalb keine automatische Referenzanpassung durchgeführt; Schritt 80 entfällt dann ersatzlos. In solchen Ausgestaltungen muß bei der Erzeugung der Patchdaten 24 für jede anzupassende Referenz ein weiterer Patchdatensatz 26 erstellt werden. Die Referenzanpassung ergibt sich dann durch die Verarbeitung dieser Patchdatensätze 26 auf die oben beschriebene Weise.Techniques for searching for references and adapting references are known as such. However, the implementation of a fully automatic code relocation, as in the present embodiment in the steps 76 and 80 is provided, relatively expensive. In alternative embodiments, therefore, no automatic reference adjustment is performed; step 80 then canceled without replacement. In such embodiments, when generating the patch data 24 for each reference to be customized, another patch record 26 to be created. The reference adaptation then results from the processing of these patch data records 26 in the manner described above.

Claims (9)

Verfahren zum Verändern von ausführbarem Programmcode (20), der in einem nichtflüchtigen überschreibbaren Speicher (18) eines ferner einen Prozessor (12) und eine Kommunikationsschnittstelle (14) aufweisenden tragbaren Datenträgers (10) gespeichert ist, wobei Patchdaten (24), die an der Kommunikationsschnittstelle (14) eingehen, empfangen und von dem Prozessor (12) verarbeitet werden und die Patchdaten (24) zumindest einen Teilbereich (22) des nichtflüchtigen überschreibbaren Speichers (18) definieren und ferner definieren, welchen neuen Programmcode (32) dieser Teilbereich (22) nach der Ausführung des Verfahrens enthalten soll, und wobei der Prozessor (12) den ausführbaren Programmcode (20) wie in den Patchdaten (24) angegeben verändert, dadurch gekennzeichnet, daß der Programmcode (20) als Speicherabbild vorliegt und die Patchdaten (24) definieren, ob und inwieweit der Inhalt mindestens eines Verschiebebereichs (48) des nichtflüchtigen überschreibbaren Speichers (18) verschoben werden soll, der Prozessor (12) diese Verschiebung wie in den Patchdaten (24) angegeben vornimmt, und ferner Referenzen in zumindest einem Teil des nichtflüchtigen überschreibbaren Speichers (18), die auf einen Ort im Verschiebebereich (48) verweisen, an die Verschiebung angepaßt werden.Method for modifying executable program code ( 20 ) stored in a non-volatile overwritable memory ( 18 ) a further a processor ( 12 ) and a communication interface ( 14 ) having portable data carrier ( 10 ), where patch data ( 24 ) connected to the communication interface ( 14 ), received and received by the processor ( 12 ) and the patch data ( 24 ) at least one subarea ( 22 ) of the non-volatile overwritable memory ( 18 ) and further define which new program code ( 32 ) this subarea ( 22 ) after the execution of the method, and wherein the processor ( 12 ) the executable program code ( 20 ) as in the patch data ( 24 ) specified, characterized in that the program code ( 20 ) exists as a memory image and the patch data ( 24 ) define whether and to what extent the contents of at least one shift range ( 48 ) of the non-volatile overwritable memory ( 18 ), the processor ( 12 ) this shift as in the patch data ( 24 ) and also references in at least a part of the non-volatile rewritable memory ( 18 ) to a location in the displacement area ( 48 ), are adapted to the displacement. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Prozessor (12) einen Suchvorgang im nichtflüchtigen überschreibbaren Speicher (18) zum Auffinden der anzupassenden Referenzen ausführt.Method according to Claim 1, characterized in that the processor ( 12 ) a search in the non-volatile rewritable memory ( 18 ) to find the references to be adjusted. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der Programmcode (20) in Form eines Speicherabbilds vorliegt und die Erstellung der Patchdaten erfolgt, indem ein ursprüngliches Speicherabbild (40) und ein neues Speicherabbild (42) zumindest eines Bereichs des nichtflüchtigen überschreibbaren Speichers (18) miteinander verglichen werden, um voneinander abweichende Teilbereiche der Speicherabbilder (40, 42) zu identifizieren, wobei in die Patchdaten (24) für zumindest einen so identifizierten Teilbereich (22) Daten aufgenommen werden, die den Teilbereich (22) definieren und die ferner definieren, welchen neuen Programmcode (32) dieser Teilbereich (22) enthalten soll, und wobei bei dem Vergleich der Speicherabbilder (40, 42) die Möglichkeit einer Verschiebung des Inhalts mindestens eines Verschiebebereichs (48) berücksichtigt wird, indem die Patchdaten (24) ferner definieren, ob und inwieweit eine solche Verschiebung erfolgen soll.Method according to Claim 1 or 2, characterized in that the program code ( 20 ) is in the form of a memory image and the patch data is created by an original memory image ( 40 ) and a new memory image ( 42 ) at least a portion of the non-volatile rewritable memory ( 18 ) are compared to each other to divergent portions of the memory images ( 40 . 42 ), with the patch data ( 24 ) for at least one subarea thus identified ( 22 ) Data is taken that covers the subarea ( 22 ) and further define which new program code ( 32 ) this subarea ( 22 ) and in comparing the memory images ( 40 . 42 ) the possibility of shifting the content of at least one shift range ( 48 ) is taken into account by the patch data ( 24 ) define whether and to what extent such a shift should take place. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Programmcode (20) das Betriebssystem des tragbaren Datenträgers (10) oder einen Teil davon darstellt.Method according to one of the preceding claims, characterized in that the program code ( 20 ) the operating system of the portable data carrier ( 10 ) or a part thereof. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß das Verfahren zur Korrektur von Programmierfehlen und/oder zur Konfigurierung des Betriebssystems des Datenträgers (10) und/oder zur Anpassung des Betriebssystems des Datenträgers (10) an kundenindividuelle Anforderungen dient.Method according to Claim 4, characterized in that the method for correcting programming errors and / or for configuring the operating system of the data carrier ( 10 ) and / or to adapt the operating system of the data carrier ( 10 ) to customer-specific requirements. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der nichtflüchtige überschreibbare Speicher (18) ein Flash-Speicher oder ein FRAM ist.Method according to one of the preceding claims, characterized in that the non-volatile rewritable memory ( 18 ) is a flash memory or a FRAM. Computerprogrammprodukt, das Patchdaten (24) mit mindestens einem Patchdatensatz (26) enthält, wobei jeder Patchdatensatz (26) mindestens einen Teilbereich (22) eines nichtflüchtigen überschreibbaren Speichers (18) eines tragbaren Datenträgers (10) definiert und ferner neuen Programmcode (32) definiert, der in diesen Teilbereich (22) eingeschrieben werden soll, dadurch gekennzeichnet, daß die Patchdaten (24) zur Verarbeitung durch ein Verfahren nach Anspruch 1 und/oder durch ein Verfahren nach Anspruch 3 erstellt worden sind.Computer program product containing patch data ( 24 ) with at least one patch dataset ( 26 ), where each patch record ( 26 ) at least one subregion ( 22 ) of a non-volatile overwritable memory ( 18 ) of a portable data carrier ( 10 ) and new program code ( 32 ) defined in this subarea ( 22 ), characterized in that the patch data ( 24 ) have been prepared for processing by a method according to claim 1 and / or by a method according to claim 3. Computerprogrammprodukt, das Programmbefehle aufweist, die mindestens einen Prozessor zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 6 veranlassen.Computer program product having program instructions, the at least one processor for performing a method according to one of the claims 1 to 6 cause. Programmgesteuerte Vorrichtung, die dazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 6 auszuführen.Program-controlled device that is set up is to carry out a method according to one of claims 1 to 6.
DE102004006308A 2004-02-09 2004-02-09 Method for modifying program code of a portable data carrier by means of patch data Expired - Fee Related DE102004006308B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102004006308A DE102004006308B4 (en) 2004-02-09 2004-02-09 Method for modifying program code of a portable data carrier by means of patch data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102004006308A DE102004006308B4 (en) 2004-02-09 2004-02-09 Method for modifying program code of a portable data carrier by means of patch data

Publications (2)

Publication Number Publication Date
DE102004006308A1 DE102004006308A1 (en) 2005-09-01
DE102004006308B4 true DE102004006308B4 (en) 2006-03-16

Family

ID=34813210

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004006308A Expired - Fee Related DE102004006308B4 (en) 2004-02-09 2004-02-09 Method for modifying program code of a portable data carrier by means of patch data

Country Status (1)

Country Link
DE (1) DE102004006308B4 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102007057001A1 (en) * 2007-11-27 2009-05-28 Giesecke & Devrient Gmbh Writing operating data to a portable data carrier
DE102007057002A1 (en) * 2007-11-27 2009-05-28 Giesecke & Devrient Gmbh Writing data to a portable disk
CN107861748A (en) * 2017-12-04 2018-03-30 山东浪潮通软信息科技有限公司 A kind of patch generation method and device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0458559A2 (en) * 1990-05-24 1991-11-27 Schlumberger Industries Limited Mask-programmable microprocessors
US6526574B1 (en) * 1997-07-15 2003-02-25 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
EP1306759A2 (en) * 2001-10-24 2003-05-02 Giesecke & Devrient GmbH Executing program in a chip card

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0458559A2 (en) * 1990-05-24 1991-11-27 Schlumberger Industries Limited Mask-programmable microprocessors
US6526574B1 (en) * 1997-07-15 2003-02-25 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
EP1306759A2 (en) * 2001-10-24 2003-05-02 Giesecke & Devrient GmbH Executing program in a chip card

Also Published As

Publication number Publication date
DE102004006308A1 (en) 2005-09-01

Similar Documents

Publication Publication Date Title
DE60030872T2 (en) METHOD AND ARRANGEMENT TO CARRY OUT ATOMIC UPDATES BY USING A LOGICAL FLASH MEMORY DEVICE
DE102009024605B4 (en) Apparatus and method for bypassing a first program code section with a replacement program code section
DE10234971B4 (en) Method and data carrier for generating and correcting program code
DE3116385C2 (en) Microprogram control
DE102018202446A1 (en) Method for modularizing a software architecture
DE10064025B4 (en) A method for booting a microprocessor and microprocessor with a conditional deterministic reset vector
DE102004006308B4 (en) Method for modifying program code of a portable data carrier by means of patch data
DE3210616A1 (en) COMPUTER
EP1709534B1 (en) The running of a program by a virtual machine
DE112019006886T5 (en) System development support apparatus, method, program and recording medium
EP1163577B1 (en) Caching of short program loops in an instruction fifo
DE112019004272T5 (en) INSTALLING APPLICATION PROGRAM CODE ON A VEHICLE CONTROL SYSTEM
WO2009103728A1 (en) Method and device for storing information data
DE102004005290B3 (en) Securing data in non-volatile data memory divided into segments involves management data per segment containing further data element to determine age range of second segment data compared to first segment data for incomplete clearing
DE102006013759B4 (en) Method and computing unit for operating a memory device
EP4055472B1 (en) Method for data migration for a pointer element in the course of a data migration for a program state of a control program of an automation system
EP1600855B1 (en) Generating and using information about memory occupation in a portable device
DE1774421C (en) Multi-program data processing system
DE102022133764A1 (en) FIRMWARE UPGRADE PROCEDURE OF A FLASH BOOTLOADER IN A MCU FOR A VEHICLE
DE102022003789A1 (en) Method for changing the memory content of a main memory of a microcontroller without a separate memory management unit, application thereof, microcontroller and vehicle
DE19637883A1 (en) Operating method for data processing system
DE102022132503A1 (en) ELECTRONIC DEVICE FOR EMULATION OF EEPROM AND METHOD OF ITS OPERATION
DE102008002494A1 (en) Method for actualizing flash memory for emulation of electrically EPROMs, for saving serial electrically EPROMs, in dashboard of vehicle, involves verifying actual version of data set to violation of defined rule
DE102018005091A1 (en) Efficient firmware updates
DE2854976B2 (en) Method for the correctable storage of programs in a permanent memory

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee