DE3643560A1 - Flexible correction of firmware - Google Patents
Flexible correction of firmwareInfo
- Publication number
- DE3643560A1 DE3643560A1 DE19863643560 DE3643560A DE3643560A1 DE 3643560 A1 DE3643560 A1 DE 3643560A1 DE 19863643560 DE19863643560 DE 19863643560 DE 3643560 A DE3643560 A DE 3643560A DE 3643560 A1 DE3643560 A1 DE 3643560A1
- Authority
- DE
- Germany
- Prior art keywords
- program
- rom
- identifier
- firmware
- correction point
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/328—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
-
- 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/66—Updates of program code stored in read-only memory [ROM]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Image Processing (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
Description
Die Erfindung bezieht sich auf das Gebiet der Computer und insbesondere auf Firmwareprogramme.The invention relates to the field of Computers and especially firmware programs.
Computerprogramme sind in verschiedenen Medien geschrieben worden. Während einige Medien relativ teuer sind, sind sie genügend "weich", ständige Modifikation des Programms vor oder während der Ausführung des Programms zu erlauben. Zum Bereich der weichen Medien gehören beispielsweise Plattenspeicher , Bandspeicher und Schreib- Lesespeicher (RAM). In solchen weichen Medien gespeicherte Computerprogramme werden "Software" genannt. Andererseits sind andere Medien, die nicht so viel kosten, wie die zuvor beschriebenen Medien, genügend "fest", die Programmspei cherung zu ermöglichen, ohne die Fähigkeit der Modifikation des gespeicherten Programms. Diese festen Medien schließen Einrichtungen, wie Festwertspeicher (ROM) und verdrahtete Schaltungen ein. Auf den festen Medien gespeicherte Compu terprogramme werden allgemein als "Firmware" bezeichnet.Computer programs are in different media been written. While some media are relatively expensive are, they are sufficiently "soft", constant modification of the program before or during the execution of the program to allow. Belong to the field of soft media for example disk storage, tape storage and writing Read memory (RAM). Stored in such soft media Computer programs are called "software". On the other hand are other media that don't cost as much as the one before described media, enough "firm", the program enable without the ability to modify the saved program. Close these solid media Devices such as read-only memory (ROM) and wired Circuits. Compu stored on the fixed media Subroutines are commonly referred to as "firmware".
In der Vergangenheit war es unpraktisch, wenn nicht gar unmöglich, Firmware im voraus zu entwickeln und die Möglichkeit des Vorkommens eines Programmfehlers in Betracht zu ziehen oder eine notwendige oder wünschens werte Programm-Modifikation einführen zu können. Die Un möglichkeit kommt dadurch zustande, daß man nicht all die Stellen vorhersagen kann an denen ein Programmfehler gefunden werden kann und an denen eine Programm-Modifika tion gewünscht werden könnte. Unpraktisch wäre das Vorse hen deshalb, weil bei der unmöglichen Natur der Aufgabe zu viel Raum in dem festen Medium beansprucht werden würde, mögliche Modifikationen und Korrekturen für die Firmware zusammen mit dieser Firmware selbst zu programmieren. In the past, it was impractical when not impossible to develop firmware in advance and the possibility of a bug in To consider or a necessary or desirable worthy program modification. The Un possibility arises from not having all of these Can predict places where a bug can be found and on which a program modification tion could be desired. That would be impractical because the impossible nature of the task too much space would be used in the solid medium possible modifications and corrections for the firmware to be programmed together with this firmware.
Wenn Systemdesigner deshalb mit einem Programmfehler oder einer Programm-Modifikation des Firmwareprogramms konfron tiert sind, entwickeln sie gewöhnlich eine Neuausgabe der Firmware einschließlich des korrigierten oder auf den neuesten Stand gebrachten Programms und ersetzen die existierende Firmware.If system designers with a bug or a program modification of the firmware program konfron they usually develop a new edition of the Firmware including the corrected or on the updated program and replace the existing firmware.
Da feste Medien und insbesondere Festwertspeicher (ROM) zunehmend bedeutende Vorrichtungen zur Speicherung aller oder mindestens eines bedeutsamen Teils des Betriebs systemprogramms für kleine Prozessoren und periphere Prozessoren geworden sind, werden diese extensiv in ver teilten Anlagen verwendet. Solch extensiver Gebrauch ver größert notwendigerweise die Systemkosten, wenn eine große Anzahl von Einheiten in dem System ersetzt werden muß. Natürlich werden diese hohen Systemkosten in Verbindung mit Firmwareersatz durch die Anzahl der auf Firmware basierenden Systeme an einer Stelle multipliziert.Because solid media and in particular read-only memory (ROM) increasingly important storage devices all or at least a significant part of the business system program for small processors and peripheral Processors have become, these are extensively used in ver shared facilities used. Such extensive use ver necessarily increases the system cost if a large one Number of units in the system must be replaced. Of course, these high system costs are linked with firmware replacement by the number of firmware based systems multiplied in one place.
Die Durchführung der Programm-Modifikationen bei existierenden Firmwareprogrammen zu einer zukünftigen Zeit wird dadurch einfach und kostengünstig ausgeführt, daß innerhalb des existierenden Firmwareprogramms sowohl ein Ausbesserungs-Ingangsetzungs-Programm zur Anrufung einer gestaltbaren Programm-Modifikation als auch Mittel zur Übertragung von Steuerung von mindestens einem vorbe stimmten Punkt des existierenden Firmwareprogramms auf das Ausbesserungsingangsetzungsprogramm einschließt. Änderungen in der Betriebsumgebung des Firmwareprogramms bedeuten Einführung eines neuen, maßgeschneiderten Zustands an einer wählbaren Stelle in einer Maschine mit endlichen Zuständen, Ändern eines variablen Wertes oder eines Satzes von variablen Werten, Ändern des Flusses des existierenden Firmwareprogramms , indem ein Programmzähler oder ein anderes Steuerregister auf den neuesten Stand gebracht wird, und Neuschreiben des Inhalts einer oder mehrerer Eingangs/Ausgangsadressenstellen, ist jedoch nicht auf diese Änderungen beschränkt.Implementation of the program modifications with existing firmware programs to a future one This makes time easy and inexpensive, that within the existing firmware program both a call repair program a customizable program modification as well as means to transfer control from at least one prep matched point of the existing firmware program includes the touch-up program. Changes in the operating environment of the firmware program mean introducing a new, bespoke condition at a selectable point in a machine with finite States, changing a variable value or a set of variable values, changing the flow of the existing Firmware program by adding a program counter or a updated other tax register and rewriting the content of one or more Input / output address locations, however, is not open limited these changes.
Ein besseres Verständnis der Erfindung kann durch Lesen der nachfolgenden Beschreibung eines speziellen Ausführungsbeispiels der Erfindung in Verbin dung mit der Zeichnung gewonnen werden. Dabei zeigt:A better understanding of the invention can by reading the description below of a special embodiment of the invention in Verbin can be obtained with the drawing. It shows:
Fig. 1 ein vereinfachtes Blockschaltbild für eine verteilt angeordnete Prozeßanord nung, welche Aspekte der Erfindung verkörpert, Fig. 1 is a simplified block diagram for a distributed disposed Prozeßanord voltage, which embodies aspects of the invention,
Fig. 2 einen Speicherplan für jeden Prozessor mit Festwertspeicher in Fig. 1 und Fig. 2 shows a memory map for each processor with read-only memory in Fig. 1 and
Fig. 3 ein Flußdiagramm für das generelle Funktionsprogramm. Fig. 3 is a flow chart for the general function program.
Die vorliegende Erfindung ist insbesondere bei der Anwendung auf ein System nützlich, welches eine Mehrzahl von auf Firmware basierenden Prozessoren aufweist, bei spielsweise das in vereinfachter Form in Fig. 1 dargestell te, verteilt angeordnete Verarbeitungssystem. Das verteilt angeordnete Verarbeitungssystem weist einen Hauptprozessor 10 auf, der über eine Datensammelleitung 11 mit einer Mehrzahl von verteilt angeordneten, peripheren Prozessoren 12-1 bis 12-N verbunden ist und mit diesen zusammenwirkt.The present invention is particularly useful when applied to a system having a plurality of firmware-based processors, for example the processing system shown in a simplified form in Fig. 1, distributed. The arranged distributed processing system comprises a main processor 10 which is arranged on a data bus 11 with a plurality of distributed peripheral processors 12 - N is connected to and cooperates with this - 1 Up to 12th
Der verteilt angeordnete, periphere Prozessor 12.1 ist mit mehr Einzelheiten gezeigt, um einige der wesentlichen Elemente in vereinfachter Form anzugeben, nämlich Eingangs/Ausgangsschaltung 121 (I/O), verbunden mit der Datensammelleitung 11, Prozessordatensammelleitung 122, verbunden mit der Eingangs/Ausgangsschaltung 121, Schreib-Lesespeicher 123 (RAM), verbunden mit der Prozes sordatensammelleitung 122, Festwertspeicher 124 (ROM), verbunden mit der Prozessordatensammelleitung 122, und zentraler Prozessor 125 , verbunden mit der Prozessor datensammelleitung 122. Jeder verteilt angeordnete, peri phere Prozessor leitet sein Betriebsprogramm generell von dem zugeordneten Festwertspeicher ROM ab und kann deshalb als ein auf Firmware basierender oder ROM-basierender Prozessor bezeichnet werden. In alternativen Prozessor ausführungen können die Speicher RAM 123 und ROM 124 inner halb des zentralen Prozessors 125 angeordnet sein. Die Betriebsweise eines verteilt angeordneten Verarbeitungs systems wird nicht im einzelnen beschrieben, da dies den Fachleuten auf dem Computergebiet bekannt ist und zum Verständnis der Erfindung nicht wesentlich ist.The distributed peripheral processor 12.1 is shown in more detail to provide some of the essential elements in a simplified form, namely input / output circuit 121 (I / O) connected to data bus 11 , processor data bus 122 connected to input / output circuit 121 , Read-write memory 123 (RAM) connected to the processor data bus 122 , read-only memory 124 (ROM) connected to the processor data bus 122 , and central processor 125 connected to the processor data bus 122 . Each distributed, peripheral processor generally derives its operating program from the associated read-only memory ROM and can therefore be referred to as a firmware-based or ROM-based processor. In alternative processor implementations, RAM 123 and ROM 124 may be located within central processor 125 . The operation of a distributed processing system is not described in detail since this is known to those skilled in the computer field and is not essential to understanding the invention.
In Fig. 2 ist ein vereinfachter Speicherplan gezeigt, der Programme, Unterprogramme und dergleichen enthält, die sowohl dem Festwertspeicher 123 als auch dem Schreib-Lesespeicher 124 zugeordnet sind. Fig. 3 zeigt ein Flußdiagramm des allgemeinen Funktionsprogramms 210 aus Fig. 2. Fig. 2 und 3 müssen zusammen betrachtet werden, um die folgende Beschreibung besser zu verstehen.In FIG. 2, a simplified memory map is shown which contains programs, subroutines and the like, the read-write memory 124 are assigned to both the ROM 123 as well. Fig. 3 shows a flowchart of the general operation program 210 of Fig. 2. Fig. 2 and 3 must be considered together, in order, the following description to better understand.
Das Hauptprogramm 201 im ROM-Speicher bestimmt die vom Prozessor 125 auszuführenden Arbeiten. Das heißt, das Hauptprogramm 201 ruft zahlreiche Programm-Module oder Unterprogramme von dem ROM-Speicher zur Ausführung durch den Prozessor 125 ab. Bei dem in Fig. 2 gezeigten Ausfüh rungsbeispiel ist jedes Programm-Modul dazu da einen Befehlsblock und eine zugeordnete Übertragungsinstruktion oder einen Instruktionssatz, genannt "Korrektur" (Hook), einzuschließen. Die "Korrektur" (Hook) führt zum Programm transfer auf das generelle Funktionsprogramm 210.The main program 201 in ROM memory determines the work to be performed by the processor 125 . That is, the main program 201 fetches numerous program modules or subroutines from the ROM memory for execution by the processor 125 . In the embodiment shown in FIG. 2, each program module is there to include a command block and an associated transfer instruction or instruction set called a "hook". The "correction" (hook) leads to the program transfer to the general function program 210 .
Das Hauptprogramm 201 ruft individuelle Programm-Module einschließlich Befehlsblöcke 202, 204, 206 und 208 ab und bringt diese in einer vorgegebenen Reihenfolge in Betrieb, damit der verteilt angeordnete periphere Prozessor eine spezielle Funktion ausführt.The main program 201 calls individual program modules including instruction blocks 202 , 204 , 206 and 208 and puts them into operation in a predetermined order so that the distributed peripheral processor performs a special function.
Es sei angenommen, daß das Hauptprogramm 201 das Programm-Modul einschließlich des Befehlsblockes 202 und der Übertragungsinstruktion 203 abgerufen hat. Jeder Befehlsblock weist eine oder mehrere Instruktionen auf, die ausgeführt werden, wenn das Programm-Modul von dem Hauptprogramm abgerufen wird. Die Instruktionen innerhalb eines Befehlsblockes für eine gut definierte Aufgabe wird durch den Prozessor ausgeführt, indem er seine spezielle Funktion (definiert durch das Hauptprogramm) ausführt. Nach der Ausführung der Instruktionen des Befehlsblocks 202 , aber bevor die Steuerung von dem Programm-Modul zurück zum Hauptprogramm 201 übertragen wird, bringt die Transferinstruktion 203 die Programmsteuerung dazu, auf das generelle Funktionsprogramm 210 überzugehen. Assume that main program 201 has fetched the program module including instruction block 202 and transfer instruction 203 . Each instruction block has one or more instructions that are executed when the program module is called from the main program. The instructions within a command block for a well-defined task are carried out by the processor by performing its special function (defined by the main program). After executing instructions from instruction block 202 , but before control is transferred from the program module back to main program 201, transfer instruction 203 causes program control to transition to general function program 210 .
Das Flußdiagramm für das generelle Funktions programm 210 weist drei unterschiedliche Symbole auf, nämlich oval, rechteckförmig und rautenförmig. Ovale Symbole zeigen den Beginn und das Ende des Programms an. Rechteckförmige Symbole, gewöhnlich als Operationsblöcke bezeichnet, enthalten die Beschreibung eines speziellen detaillierten Operationsschrittes. Rautensymbole, gewöhn lich als bedingte Verzweigungsstellen bezeichnet, enthalten die Beschreibung eines vom Prozessor ausgeführten Tests, um diesem zu ermöglichen, die nächste auszuführende Opera tion zu bestimmen.The flow diagram for the general function program 210 has three different symbols, namely oval, rectangular and diamond-shaped. Oval symbols indicate the start and end of the program. Rectangular symbols, commonly referred to as operation blocks, contain the description of a specific detailed operation step. Diamond symbols, commonly referred to as conditional branches, contain the description of a test performed by the processor to enable the processor to determine the next operation to be performed.
Das generelle Funktionsprogramm wird bei dem Startoval 301 begonnen. Das Programm schreitet dann zu dem Operationsblock 302 fort, worin der Identifizierer (HID) für den Korrekturbefehl (Hook) auf einen besonderen Wert gesetzt wird, der durch die spezielle Trans ferinstruktion bestimmt wird, nämlich die Transferinstruk tion 203 in diesem Beispiel, was den Transfer auf das generelle Funktionsprogramm 210 veranlaßt. HID, der "Hook"- Identifizierer, wird auf eine beliebige Anzahl von Wegen bestimmt. Beispielsweise kann HID gleich der Adresse der ROM- Speicherstelle, enthaltend den Transferinstruktionssatz, welcher gerade ausgeführt worden ist, gesetzt werden.The general function program is started at the Startoval 301 . The program then proceeds to operation block 302 , where the identifier (HID) for the correction command (hook) is set to a particular value determined by the particular transfer instruction, namely the transfer instruction 203 in this example, which is the transfer to the general function program 210 . HID, the "hook" identifier, is determined in any number of ways. For example, HID can be set equal to the address of the ROM location containing the transfer instruction set that has just been executed.
Nachdem HID ein Wert zugeordnet worden ist, bestimmt das generelle Funktionsprogramm 210 , ob ein oder mehrere der Ausbesserungsbefehle aktiviert werden sollen, die von den im RAM gespeicherten Ausbesserungsmodulen spezifiziert werden. Ein Ausbesserungsmodul schließt einen "Patch"-Identifizierer (PID(i) wobei i=1, 2 3 . . . N PID)) und eine zugeordnete Ausbesserungstabelle ein. Beispiels weise weisen der Ausbesserungsidentifizierer 214 und die Ausbesserungstabelle 215 ein einziges Ausbesserungsmodul auf. Das Ausbesserungsmodul ist in den RAM-Speicher durch den Hauptprozessor 10 zusammen mit anderen variablen Operationsparametern eingeschrieben worden. Im allgemeinen ist die Anzahl der im RAM-Speicher enthaltenen Ausbesse rungsmodule variabel. Für die beispielsweise beschriebene Ausführungsform wird die Anzahl der im RAM-Speicher enthaltenen Ausbesserungsmodule vollständig durch den Wert bestimmt, der in der Anzahl der Ausbesserungs identifizierer N PID 213 gespeichert ist.After a value has been assigned to HID, general function program 210 determines whether to activate one or more of the repair commands specified by the repair modules stored in RAM. A patch module includes a "patch" identifier (PID (i) where i = 1 , 2 3 ... N PID)) and an associated patch table. For example, the repair identifier 214 and the repair table 215 have a single repair module. The patch module has been written into RAM by the main processor 10 along with other variable operation parameters. In general, the number of repair modules contained in RAM is variable. For the embodiment described as an example, the number of the repair modules contained in the RAM memory is completely determined by the value which is stored in the number of the repair identifiers N PID 213 .
Wenn ein Ausbesserungsmodul (Patch Modul) zur Ausführung eingeschaltet wird, führt dies zu einer vorbestimmten Modifikation oder Änderung der existieren den Firmware, wie durch das Hauptprogramm und die zuge ordneten Programm-Module definiert. Ein spezielles Ausbesserungsmodul I, wobei I=1, 2, . . . N PID, wird dann und nur dann aktiviert, wenn HID gleich dem Aus besserungsidentifizierer PID(I) für das spezielle Ausbesserungsmodul 1 ist. Das generelle Funktionspro gramm 210 vergleicht HID mit jedem PID(I), bis eine Übereinstimmung angetroffen wird oder wenn keine Aus besserungsidentifizierer mehr für den Vergleich übrig bleiben. Zur Vorbereitung dieses Vergleichs schaltet der Operationsblock 302 einen Schleifenzähler I auf den ganzzahligen Wert 1. Der Schleifenzähler ist nütz lich zur Bestimmung, ob einer oder alle gespeicherten Ausbesserungsidentifizierer durch das generelle Funk tionsprogramm 210 , wie zuvor beschrieben, geprüft worden sind.When a patch module is turned on for execution, this leads to a predetermined modification or change to the existing firmware, as defined by the main program and the assigned program modules. A special repair module I, where I = 1 , 2,. . . N PID is activated only when HID is equal to the repair identifier PID (I) for the special repair module 1 . The general function program 210 compares HID with each PID (I) until a match is found or when there are no more patch identifiers left for comparison. In preparation for this comparison, operation block 302 switches a loop counter I to the integer value 1. The loop counter is useful for determining whether one or all of the stored repair identifiers have been checked by the general function program 210 as previously described.
Der mögliche Verzweigungspunkt 303 führt einen Test aus, ob der Wert des Schleifenzählers I größer als die Anzahl der im RAM-Speicher gespeicherten Aus besserungsidentifizierer (N PID) ist. Wenn der Test zu einem Ausgangssignal "Ja" führt, wird das generelle Funktionsprogramm 210 durch eine Rückkehroperation beim Oval 304 beendet. Wenn das Testergebnis anderer seits zu einem Ausgangssignal "Nein" führt, wird die Steuerung auf den nächsten Programmschritt beim Block 306 übertragen.The possible branch point 303 carries out a test as to whether the value of the loop counter I is greater than the number of correction identifiers (N PID) stored in the RAM memory. If the test leads to an output signal "yes", the general function program 210 is ended by a return operation at oval 304 . If, on the other hand, the test result leads to an output signal "No", control is transferred to the next program step at block 306 .
Der mögliche Verzweigungspunkt 306 führt einen Test darüber aus, ob der Wert des Ausbesserungsidenti fizierers PID (I) gleich dem Wert des vorliegenden "Hook"-Identifizierers HID ist. Wenn der Test zu dem Ergebnis "Nein" führt, wird der Schleifenzähler I um eine 1 im Betriebsblock 307 weitergerückt und der Test wird an dem möglichen Verzweigungspunkt 303 wieder aufgenommen. Für das Testergebnis "Ja" wird andererseits die Steuerung auf den nächsten Programmschritt beim Operationsblock 308 übertragen.The possible branch point 306 tests whether the value of the repair identifier PID (I) is equal to the value of the present "hook" identifier HID. If the test leads to the result "No", the loop counter I is incremented by a 1 in operating block 307 and the test is resumed at the possible branch point 303 . For the test result "yes", on the other hand, control is transferred to the next program step at operation block 308 .
Da PID(I) gleich dem vorliegenden "Hook"-Identi fizierer angetroffen worden ist, wird der I-te Ausbesse rungsmodul (der dem Ausbesserungsidentifizierer PID(I) zugeordnete Ausbesserungsmodul) aktiviert und ausgeführt. Der Betriebsblock 308 liest Information aus der Ausbesse rungstabelle ab, die dem I-ten Ausbesserungsmodul zugeord net ist. Die in der Ausbesserungstabelle enthaltene Information stellt einen Satz von Parametern dar, damit die generelle Sequenz des Instruktionsblockes 308 im Hinblick auf eine spezielle Aktion strukturiert (configuring) oder maßgeschneidert (customizing) wird.Since PID (I) is equal to the present "Hook" -Identi fizierer encountered, the I th Ausbesse approximately module (of the Ausbesserungsidentifizierer PID (I) associated repair module) is activated and executed. The operation of block 308 reads information from the Ausbesse approximately table from which net is the i th correction module zugeord. The information contained in the repair table represents a set of parameters so that the general sequence of the instruction block 308 is structured (configuring) or tailored (customizing) with regard to a specific action.
Die generelle Sequenz der Instruktionen ist so formuliert, daß eine maximale Anpassungsfähigkeit gegeben ist, beispielsweise zur Änderung des gesamten Verlaufs der normalen Programmoperation oder zur Änderung solcher Teile der Programmoperation, welche von vornherein wahrscheinliche Kandidaten für spätere Modifikationen sind.The general sequence of instructions is formulated so that maximum adaptability is given, for example to change the whole Course of normal program operation or to change such parts of the program operation, which are a priori likely candidates for later modifications are.
Eine repräsentative Sequenz von Instruktionen schließt Operationen zur Änderung des Inhalts einer speziellen Eingangsstelle auf einen neuen, speziellen Wert, Operationen zur Änderung eines speziellen Satzes von Ausgangssignalen auf einen neuen Satz von Ausgangs signalen und Operationen zur Ausrichtung oder Änderung des Programmflusses an einer speziellen Stelle in der Sequenz der Instruktionen ein. Für diese repräsentative Sequenz von Instruktionen kann die jedem Ausbesserungs identifizierer zugeordnete Ausbesserungstabelle die folgenden Daten in sequentiell angeordneten Stellen enthalten:A representative sequence of instructions includes operations to change the content of a special entry point to a new, special one Value, operations to change a special sentence of output signals to a new set of output signals and operations for alignment or change of the program flow at a special point in the Sequence of instructions. For this representative Sequence of instructions can be any repair repair table associated with identifier following data in sequentially arranged places contain:
1. Stelle: Adresse der zu ändernden Eingangsvariablen und neuer Wert für die identifizierte Eingangsvariable; 1st digit: Address of the input variable to be changed and new value for the identified Input variable;
2. Stelle: Adresse der Ausgangsvariablen und neuer Satz von Werten für Ausgangsvariable; und2nd digit: address of the output variables and new block of values for output variable; and
3. Stelle: Adresse für den nächsten auszuführenden Programm- Modul nach Abgabe aus dem generellen Funktions programm 210.3rd digit: Address for the next program module to be executed after delivery from the general function program 210 .
Die Flexibilität des generellen Funktionsprogramms 210 wird oben natürlich dadurch realisiert, daß die Ausführung des generellen Funktionsprogramms 210 in Kombination mit einer geeignet geschriebenen Ausbesserungs tabelle entweder den Fluß des Hauptprogramms 201 dazu bringen kann, geändert zu werden, oder daß die Werte der Eingangsvariablen an die Steuerblöcke oder deren Ausgangssignale auf den neuesten Stand gebracht werden. Zusätzlich können bis zu N PID unterschiedliche Modifika tionen der normalen Programmausführung an eine der Stellen in der Instruktionssequenz realisiert oder ausgeführt werden, an welchen eine Transferinstruktion eingefügt worden ist.The flexibility of the general function program 210 is of course realized above that the execution of the general function program 210 in combination with a suitably written repair table can either cause the flow of the main program 201 to be changed or that the values of the input variables to the control blocks or their output signals are updated. In addition, up to N PID, different modifications of the normal program execution can be implemented or executed at one of the locations in the instruction sequence at which a transfer instruction has been inserted.
Wegen der Unvorhersehbarkeit der Stelle solcher zukünftiger Ausbesserungen sowie der Leichtigkeit und der niedrigen Kosten der Zufügung von Transferinstruk tionen an die Firmware ist zu erwarten, daß die Anzahl der Transferinstruktionen in einem Firmware-Programm, welches diese Technik benutzt, viel größer als N PID sein wird. Demgemäß wird die Steuerung vom Block 308 auf den Block 307 übertragen, so daß das generelle Funktionsprogramm 310 bestimmen kann, ob andere Ausbesserungsmodule akti viert werden sollen, wenn notwendig.Because of the unpredictability of the location of such future fixes and the ease and low cost of adding transfer instructions to the firmware, it is expected that the number of transfer instructions in a firmware program using this technique will be much greater than N PID . Accordingly, control is transferred from block 308 to block 307 so that general function program 310 can determine whether other repair modules should be activated if necessary.
Das generelle Funktionsprogramm 210 wird von dem Rückkehrschritt 304 in Gang gesetzt.The general function program 210 is started by the return step 304 .
Mehrere Beispiele werden nachfolgend zur Erläuterung (nicht Begrenzung) gebracht, um ein klares Verständnis der zahlreichen Wege zu entwickeln, nach wel chen die Erfindung realisiert werden kann.Several examples are given below Explanation (not limitation) brought to a clear Understand the numerous ways to develop according to wel Chen the invention can be realized.
Im ersten Ausführungsbeispiel sei angenom men, daß ein Parameter in dem gespeicherten Werteblock des ROM-Speichers, der zur Voreinstellung eines Allzweck zeitgebers verwendet wird, entweder inkorrekt, nicht optimal oder nicht länger gültig ist. Eine RAM-Speicher stelle wird als ein Allzweckzeitgeber 219 verwendet. Das Hauptprogramm 201 zählt den Inhalt dieser Speicher stelle in regulären Intervallen herunter. Der Programm befehlsfluß ist derart, daß der Befehlsblock 202 den Allzweckzeitgeber mit dem im gespeicherten Werteblock 211 gespeicherten Wert in Gang setzt. Während dieser Ausführung wartet der Befehlblock 204, bis der Allzweckzeitgeber aus gezählt hat, d. h. auf Null zurückgelaufen ist.In the first embodiment it is assumed that a parameter in the stored value block of the ROM memory, which is used to preset a general-purpose timer, is either incorrect, not optimal or is no longer valid. A RAM memory location is used as a general-purpose timer 219 . The main program 201 counts down the contents of this memory location at regular intervals. Is instruction flow of the program so that the command block 202 sets the general purpose timer with the value stored in the stored value block 211 value in transition. During this execution, instruction block 204 waits until the general purpose timer has counted out, ie, returned to zero.
Als das Firmware-Programm geschrieben worden ist, wurde der Ausgangswert für den Allzweckzeitgeber zu 10 gewählt. Demgemäß wurde die Zahl 10 in den ROM-Speicher als gespeicherter Werteblock 211 eingegeben. Für einen vorliegenden Satz von Umständen, die zum Zeitpunkt der Festlegung des Programms im ROM-Speicher und deren Über prüfung noch nicht vorlagen, wurde jedoch bestimmt, daß eine etwas größere Zeiteinheit erforderlich ist, um rich tiges Arbeiten in dem Programmbefehlsfluß zu garantieren. Den neue Einheitswert für den Allzweckzeitgeber ist in diesem Ausführungsbeispiel 11 und nicht 10. Ein PID, welches dem HID der Übertragungsinstruktion 203 gleichkommt, wird zusammen mit den Parametern der Ausbesserungstabelle spezifiziert, um die RAM-Speicherstelle 219 dazu zu bringen, auf den gewünschten Wert von 11 gesetzt zu werden. Es wird darauf hingewiesen, daß - obwohl das Firmware- Programm ursprünglich den unkorrekten Zeitgeberparameter von 10 eingegeben hat - der geeignete, in den RAM-Speicher eingegebene Ausbesserungsschritt bei der Ausführung aktiviert wird und diesen Wert auf den richtigen Parameter wert von 11 korrigiert.When the firmware program was written, the output value for the general-purpose timer was chosen to be 10. Accordingly, the number 10 was entered into the ROM as a stored block of values 211 . However, for a given set of circumstances that were not present at the time the program was set in ROM and checked, it was determined that a slightly larger unit of time would be required to guarantee proper operation in the program instruction flow. The new unit value for the general purpose timer in this embodiment is 11 and not 10. A PID that is equal to the HID of the transfer instruction 203 is specified along with the parameters of the patch table to cause the RAM location 219 to the desired value of 11 to be put. It should be noted that although the firmware program originally entered the incorrect timer parameter of 10, the appropriate patch step entered into RAM is activated upon execution and corrects this value to the correct parameter value of 11.
In einem zweiten Beispiel sei angenommen, daß das existierende Firmware-Programm zustandsbetrieben ist. Das bedeutet, daß die Funktionen des Firmware-Programms in einen Untersatz von Funktionen aufgeteilt worden sind, die in jedem von vielen Zuständen gebraucht werden. Die Gesamtfunktionalität des Programms ist dadurch gegeben, daß von einem zum nächsten Zustand übergegangen wird, wenn geeignete Bedingungen erfüllt worden sind. Jeder Befehls block entspricht einem Zustand, weil jeder der Befehls blöcke 202, 204, 206, 208 usw. die Programminstruktionen enthält die zur Ausführung der Funktionen eines einzelnen Zustandes notwendig sind. Mehrere Instruktionen in jedem Befehlsblock bestimmen, welcher von mehreren Zuständen eingegeben werden soll, wenn der vorliegende, durch den Befehlsblock dargestellte Zustand ausläuft.In a second example, assume that the existing firmware program is state-operated. This means that the functions of the firmware program have been divided into a subset of functions that are needed in each of many states. The overall functionality of the program is given by moving from one state to the next if suitable conditions have been met. Each command block corresponds to a state because each of the command blocks 202 , 204 , 206 , 208 , etc. contains the program instructions necessary to perform the functions of a single state. Multiple instructions in each instruction block determine which of several states to enter when the present state represented by the instruction block expires.
In diesem Beispiel stellen die Befehlsblöcke außer dem Block 208 den Satz der Zustände des Firmware- Programms dar, wie dieses ursprünglich geschrieben wurde. Unter normalen Betriebsbedingungen kommuniziert kein Zu stand (Befehlsblock) mit dem vom Befehlsblock 208 darge stellten Zustand oder überträgt Betriebssteuerung auf diesen. Der Befehlsblock 208 enthält genügend Instruktio nen, um Ausgangssignale zu erzeugen, Eingangsbedingungen zu erkennen und Steuerung auf einen anderen Zustandsblock zu übertragen. Der Satz der Parameter für diese Instruk tionen, d. h. die zu erzeugenden Ausgangssignale, zu erkennenden Eingangsbedingungen und Zustandsblock (Befehls block), an welche die Steuerung zu übertragen ist, nach dem dieser Zustand (Befehlsblock 208) ausläuft, ist jedoch nicht in dem ursprünglichen Firmware-Programm spezifiziert. Der Satz an Parametern ist absichtlich variabel gewählt, weil der Befehlsblock 208 in dem ursprünglichen Firmware- Programm nur deshalb plaziert worden ist, eine Firmware- Ausbesserungsmöglichkeit vorzusehen, die durch einen Satz von Parametern bestimmt wird, welche später in eine Aus besserungstabelle im RAM-Speicher eingegeben werden. Der Befehlsblock 208 wird nicht beschrieben; es sei denn, er wird durch das generelle Funktionsprogramm 210 in Abhängigkeit von der Übereinstimmung eines HID mit einem PID aktiviert.In this example, the command blocks other than block 208 represent the set of states of the firmware program as it was originally written. Under normal operating conditions, no state communicates (command block) with the state represented by command block 208 or transfers operational control to it. Instruction block 208 contains enough instructions to generate output signals, recognize input conditions, and transfer control to another state block. However, the set of parameters for these instructions, ie the output signals to be generated, input conditions to be recognized and status block (command block) to which control is to be transferred after which this status (command block 208 ) expires, is not in the original firmware Program specified. The set of parameters is deliberately chosen to be variable because the instruction block 208 has been placed in the original firmware program only to provide a firmware upgrade option that is determined by a set of parameters that will later be included in a patch table in RAM can be entered. Instruction block 208 is not described; unless it is activated by the general function program 210 depending on the correspondence of an HID with a PID.
In diesem letzteren Beispiel ist die Möglich keit demonstriert worden, einen beliebigen Zustand (d.h. einer dessen Betrieb und Funktionscharakteristiken zu einem späteren Zeitpunkt bestimmt werden) an beliebiger Stelle einer Zustandsmaschine einzufügen. Diese Möglich keit kann dazu verwendet werden, die Betriebsnatur der Zustandsmaschine in einer Vielzahl von profunden Wegen zu irgendeiner beliebigen Zeit zu ändern.In the latter example, the is possible any state (i.e. one of its operation and functional characteristics to be determined later) at any Place a state machine. This possible speed can be used to determine the operational nature of the State machine in a variety of profound ways change any time.
Es sei angenommen daß eine gänzlich neue Funktion zwischen der Ausführung des Befehlsblockes 202 und der nächsten Ausführung des Hauptprogramms 201 ausge führt werden muß. Diese neue Funktion kann erforderlich sein, um eine im Kommandoblock 202 irrtümlich ausgeführte Aktion zu korrigieren. Es sei auch angenommen, daß der RAM- Speicher in der Weise angeordnet ist, daß der Prozessor 125 Instruktionen sowohl vom RAM-Speicher als auch vom ROM-Speicher ausführen kann. Der RAM-Speicher wird in diesem Fall nur zur Speicherung dynamischer Operations parameter benutzt. Ein Teil des verfügbaren Raums im RAM- Speicher - Ausbesserungsbefehlsblock 218 - wird mit der Instruktionssequenz, die zur Ausführung der neuen, oben beschriebenen Funktion benötigt wird, eingegeben. Ein Ausbesserungsmodul wird dann in den RAM-Speicher einge geben, der ein PID gleichkommend dem HID der Transfer instruktion 203 und eine Ausbesserungstabelle aufweist, die der neuen Funktion angepaßt (spezifisch) ist. Wenn im Betrieb das generelle Funktionsprogramm 210 von dem geeig neten Programm-Modul (202 und 203) eingegeben wird, wird die Ausbesserungssequenz der Instruktionen in dem Ausbes serungsbefehlsblock 218 ausgeführt. Nach Ausführung des Ausbesserungsmoduls wird die Steuerung zurück zum Haupt programm 201 übertragen.Assume that an entirely new function must be performed between the execution of instruction block 202 and the next execution of main program 201 . This new function may be required to correct an action performed in error in command block 202 . It is also assumed that the RAM is arranged in such a way that the processor 125 can execute instructions from both the RAM and the ROM. In this case, the RAM memory is only used to store dynamic operation parameters. A portion of the available space in RAM memory - repair instruction block 218 - is entered with the instruction sequence needed to perform the new function described above. A repair module is then entered into the RAM memory, which has a PID equivalent to the HID of the transfer instruction 203 and a repair table that is adapted (specific) to the new function. In operation, when the general function program 210 is input from the appropriate program module ( 202 and 203 ), the repair sequence of instructions in the repair command block 218 is executed. After execution of the repair module, the control is transferred back to the main program 201 .
Es wird schließlich darauf hingewiesen, daß die flexiblen Ausbesserungsmöglichkeiten während des Testens des Firmware-Programms dienlich sein können, wenn diese als ungeeignet, nicht gültig oder irrtümliche Zu stände oder Bedingungen oder dergleichen betreffend fest gestellt werden. Die flexible Ausbesserungsmöglichkeit er möglicht als solche gründlicheres Testen und Fehlerbesei tigung des Firmware-Programms.Finally, it is pointed out that the flexible repair options during the Testing the firmware program may be useful if these as unsuitable, not valid or erroneous stands or conditions or the like regarding be put. The flexible repair option he as such, more thorough testing and troubleshooting possible the firmware program.
Als letzter Punkt der Klarstellung wird darauf hingewiesen, daß die Erfindung nützlich zur Modifi zierung von Computerprogrammen während der Ausführung ist, die auf ROM-Speichern basieren oder auf festen Medien. The final point of clarification is noted that the invention useful for modifi adornment of computer programs during execution, based on ROM memories or on fixed media.
Die Ausdrücke "auf ROM-Speicher basierend" und "auf festen Medien basierend" sollen Medien definieren, die traditio nell durch physikalische oder elektronische Ex situ- Einrichtungen modifiziert werden und auf die Programme geschrieben werden, die während der Programmausführung ohne die vorliegende Erfindung nicht geändert werden können.The terms "based on ROM memory" and "on fixed Media based "are intended to define media that are traditional nell through physical or electronic ex situ Facilities are modified and based on the programs be written during program execution cannot be changed without the present invention can.
Wenn die Beschreibung vollständig gelesen ist, wird diese und andere Realisationsmöglichkeiten der Erfindung dem Fachmann klar sein, ohne vom Geist und Umfang der Erfindung abzuweichen.When the description is read in full is, this and other ways of realizing the Invention will be clear to those skilled in the art without the spirit and scope to deviate from the invention.
Claims (3)
eine Einrichtung ist zur Speicherung mindestens eines ersten, vorbestimmten Identifizierers (202, 203) vorgesehen; eine Einrichtung dient zur Speicherung mindestens eines ersten Korrekturstellen-Identifizierers (214) und minde stens ein erster Parameter ist diesem ersten Korrekturstel len-Identifizierer (215) zugeordnet;
eine Einrichtung (203) wird in dem ROM-basierenden Computer programm angesteuert zur Unterbrechung der Ausführung des ROM-basierenden Computerprogramms, um den Vergleich des vorbestimmten Identifizierers mit dem mindestens vorgese henen ersten Korrekturstellen-Identifizierers einzuleiten; eine Einrichtung (210) spricht auf den Anstoß der Unter brechungseinrichtung an und vergleicht den vorbestimmten Identifizierer mit dem ersten Korrekturstellen-Identifi zierer und dient zum Arbeiten auf den mindestens vorgesehenen Parameter, der dem mindestens ersten Korrekturstellen identifizierer zugeordnet ist, um die Ausführung eines ausgewählten Teils des ROM-basierenden Computerprogramms zu ändern, wenn der vorbestimmte Identifizierer identisch mit dem ersten Korrekturstellen-Identifizierer ist.2. Arrangement according to claim 1, having the following features:
a device is provided for storing at least a first, predetermined identifier ( 202 , 203 ); a device is used to store at least one first correction point identifier ( 214 ) and at least one first parameter is assigned to this first correction point identifier ( 215 );
a device ( 203 ) is activated in the ROM-based computer program to interrupt the execution of the ROM-based computer program in order to initiate the comparison of the predetermined identifier with the at least provided first correction point identifier; a device ( 210 ) responds to the initiation of the interruption device and compares the predetermined identifier with the first correction point identifier and serves to work on the at least provided parameter which is assigned to the at least first correction point identifier in order to execute a selected part of the ROM-based computer program if the predetermined identifier is identical to the first correction point identifier.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US81515285A | 1985-12-31 | 1985-12-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3643560A1 true DE3643560A1 (en) | 1987-07-02 |
Family
ID=25217020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19863643560 Withdrawn DE3643560A1 (en) | 1985-12-31 | 1986-12-19 | Flexible correction of firmware |
Country Status (3)
Country | Link |
---|---|
JP (1) | JPS62163142A (en) |
DE (1) | DE3643560A1 (en) |
SE (1) | SE8605235L (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0472433A2 (en) * | 1990-08-23 | 1992-02-26 | Fujitsu Limited | Firmware modification system wherein older version can be retrieved |
WO2003038611A1 (en) * | 2001-09-14 | 2003-05-08 | Medtronic,Inc. | Method and apparatus for hardware /firmware trap |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0283626A (en) * | 1988-09-20 | 1990-03-23 | Canon Inc | Electronic equipment |
-
1986
- 1986-12-05 SE SE8605235A patent/SE8605235L/en not_active Application Discontinuation
- 1986-12-19 DE DE19863643560 patent/DE3643560A1/en not_active Withdrawn
- 1986-12-24 JP JP61306689A patent/JPS62163142A/en active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0472433A2 (en) * | 1990-08-23 | 1992-02-26 | Fujitsu Limited | Firmware modification system wherein older version can be retrieved |
EP0472433A3 (en) * | 1990-08-23 | 1992-12-30 | Fujitsu Limited | Firmware modification system wherein older version can be retrieved |
US6915167B2 (en) | 2001-01-05 | 2005-07-05 | Medtronic, Inc. | Method and apparatus for hardware/firmware trap |
WO2003038611A1 (en) * | 2001-09-14 | 2003-05-08 | Medtronic,Inc. | Method and apparatus for hardware /firmware trap |
Also Published As
Publication number | Publication date |
---|---|
JPS62163142A (en) | 1987-07-18 |
SE8605235D0 (en) | 1986-12-05 |
SE8605235L (en) | 1987-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2645537C2 (en) | ||
DE3901579C2 (en) | ||
DE3732808A1 (en) | METHOD AND DEVICE FOR GENERATING AND EDITING INTERRUPT POINTS IN A MONITOR PROGRAM | |
DE4331703C2 (en) | Electronic device | |
DE2657848C2 (en) | ||
DE2328058C2 (en) | Fault diagnosis device in a digital data processing arrangement | |
DE2417795C2 (en) | Data processing system | |
DE1151397B (en) | Program-controlled data processing system with stored subroutines | |
DE69121937T2 (en) | Method and device for partially running a sequence program for the purpose of troubleshooting | |
DE2312707A1 (en) | TEST REQUIREMENTS FOR A COMPUTER | |
DE2646162B2 (en) | Circuit arrangement for replacing incorrect information in memory locations of a non-changeable memory | |
DE3151745A1 (en) | MULTITASKING DATA PROCESSING SYSTEM | |
EP0500973B1 (en) | EEPROM and method for altering a bootstrap routine in the EEPROM | |
DE68929080T2 (en) | Arrangement for storing information for a data provider processor | |
DE1275800B (en) | Control unit for data processing machines | |
DE1285219B (en) | Control unit for the execution of subroutines | |
DE2744359C2 (en) | ||
DE3688136T2 (en) | Procedure for testing and putting data into a record on a disk in an atomic I / O operation. | |
DE2364323C2 (en) | Method for handling interruption conditions in a data processing system | |
DE10244922B4 (en) | A program-controlled unit and method for debugging programs executed by a program-controlled unit | |
DE60010847T2 (en) | Method for debugging a thread program | |
DE2723706A1 (en) | DEVICE FOR ADDRESS COMPARISON | |
DE3643560A1 (en) | Flexible correction of firmware | |
DE1774421B1 (en) | MORE PROGRAM DATA PROCESSING SYSTEM | |
DE2106731A1 (en) | Diagnostic equipment for electronic data processing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8130 | Withdrawal |