-
Die Erfindung betrifft eine elektronische
Vorrichtung mit einer oder mehreren Speichereinrichtung(en) zum
Speichern von Daten und insbesondere eine elektronische Vorrichtung
mit einer oder mehreren sogenannten "Blitz"-Speichereinrichtung(en).
-
Blitzspeichereinrichtungen sind bekannt
in der Datenverarbeitungstechnik und weisen Schaltungen auf, welche
Halbleiter beinhalten und so gestaltet sind, um elektrische Signale
in nicht flüchtiger
Weise zu speichern. Dies bedeutet, dass solche Speichereinrichtungen
Speichersignale, die Daten repräsentieren,
selbst dann speichern, wenn die elektrische Stromversorgung zu den
Schaltungen beendet wird. Anders als andere Halbleiterspeichereinrichtungen, die
für ein
nicht flüchtiges
Speichern von Daten verwendet werden, haben Blitzspeichereinrichtungen die
Fähigkeit,
wieder programmiert zu werden, d. h. die in den Blitzspeichereinrichtungen
gespeicherten Daten können
gelöscht
und neue Daten können
in den Speicher geschrieben werden, ohne dass die Einrichtung aus
der elektronischen Vorrichtung entfernt werden muss. Halbleitereinrichtungen,
die zur Wiederprogrammierung entfernt werden müssen, müssen entfernbar in einem Einrichtungssockel
an geordnet werden und dies führt
zu gesteigerten Herstellungskosten der Einrichtung sowie zu einem
potentiellen Zuverlässigkeitsverlust
aufgrund eines möglichen
Widerstandes in dem Zwischenraum zwischen den Verbindungsstiften
der Einrichtung und den Stift empfangenen Sockeln der Sockeleinrichtung.
Für eine
Zuverlässigkeit
und eine Herstellungskostenreduzierung ist es wünschenswert, dass die Speichereinrichtung
permanent angelötet
ist, beispielsweise durch Oberflächenbefestigung
an den elektronischen Verbindungen einer gedruckten Schalterplatte.
-
Blitzspeichereinrichtungen können bereits programmiert
werden, bevor sie an der gedruckten Schalterplatte angelötet werden.
Wenn eine Blitzspeichereinrichtung zur Speicherung eines Programminstruktionscodes
einschließlich
eines Boot-Software-Instruktionscodes verwendet wird, muss ein Mikroprozessor
der Vorrichtung, der unter der Steuerung des Programminstruktionscodes
betätigbar
ist, wenigstens den Boot-Code aus dem Speicher lesen, um Funktionen
einschließlich
der Wiederprogrammierung des Speichers ausführen zu können. Um dementsprechend den
Speicher wieder programmieren zu können, ist es notwendig, dass
der Mikroprozessor den Instruktionscode aus dem Speicher lesen sowie
einen neuen Instruktionscode in den Speicher schreiben kann. Jedoch
erlauben es Blitzspeichereinrichtungen nicht, den Speicher zur selben
Zeit zu programmieren oder wieder zu programmieren, wenn Daten oder
ein Code aus dem Speicher gelesen werden. Deshalb ist es notwendig,
dass der Programminstruktionscode einschließlich des Boot-Codes in einer
anderen Speichereinrichtung gespeichert wird, aus der der Mikroprozessor
den Programminstruktionscode lesen kann, um unter dem in der anderen
Speichereinrichtung gespeicherten Code betätigbar zu sein, um Betätigungen
auszuführen, die
für die
Wiederprogrammierung des Blitzspeichers erforderlich sind. Deshalb
ist bei bekannten elektronischen Vorrichtungen oder Systemen, die
einen Blitzspeicher beinhalten, wo der Blitzspeicher nicht zur Entfernung
aus der Vorrichtung zur Wiederprogrammierung ausgebildet ist, die
Vorrichtung, wenn es gewünscht
wird, den Blitzspeicher wieder zu programmieren, mit einer getrennten
Speichereinrichtung zum Aufrechterhalten des Boot-Software-Instruktionscodes
ausgerüstet.
Gewöhnlich
ist bei mikroprozessorbetätigten
elektronischen Vorrichtungen ein RAM-Speicher (Arbeitsspeicher)
vorgesehen zur temporären
Speicherung von Daten während
der Betätigung
des Mikroprozessors. Dementsprechend kann der RAM-Speicher verwendet
werden, um den Programminstruktionscode zu speichern und der Mikroprozessor
wird unter Steuerung des in dem RAM-Speicher gespeicherten Instruktionscodes
betätigt,
wenn die Wiederprogrammierung des Blitzspeichers bewirkt wird. Anfangs
liest der Mikroprozessor, welcher unter dem in dem Blitzspei cher
gespeicherten Programminstruktionscode arbeitet, den Code aus dem
Blitzspeicher und schreibt den Code in den RAM-Speicher. Somit wird
eine Kopie des Programminstruktionscodes in dem RAM-Speicher gespeichert.
Ein Signal schaltet dann die Betätigung des
Mikroprozessors von der Steuerung des in dem Blitzspeicher gespeicherten
Codes zu der Steuerung des in dem RAM-Speicher gespeicherten Codes. Dieses
Schaltsignal ist ein Hardware-Signal.
-
Es wird angenommen, dass der RAM-Speicher
ein flüchtiger
Speicher ist, und dass irgendwelche Daten oder ein Code, die darin
gespeichert sind, verloren gehen, wenn die Stromversorgung zum Speicher
beendet wird. Weil der gesamte Programminstruktionscode noch in
dem nicht flüchtigen
Blitzspeicher gespeichert ist, bleibt das System in einem Betätigungsmodus,
und wenn die Stromversorgung wiederhergestellt wird, wird der Mikroprozessor
dann wiederum unter der Steuerung des in dem Blitzspeicher gespeicherten
Programminstruktionscodes betätigbar.
Wenn jedoch die Stromversorgung fehlschlägt und die Stromzufuhr zum
RAM-Speicher beendet wird, ist der vorhergehend in dem RAM-Speicher
gespeicherte Programminstruktionscode verloren und zusätzlich wird
der Originalprogramminstruktionscode in dem Blitzspeicher ganz oder
teilweise gelöscht
sein und nur ein Teil des neuen Instruktionscodes in den Blitzspeicher
geschrieben sein. Dementsprechend gibt es als Resultat des Stromversorgungsverlustes
und folglich des Herunterfahrens des Systems nicht länger einen
kompletten Originalprogramminstruktionscode oder einen kompletten
neuen Programminstruktionscode in dem System. Ohne einen kompletten
Programminstruktionscode ist der Mikroprozessor unfähig zur
Betätigung
und das System verbleibt unbetätigbar
bis zu einer Zeit, zu der die Blitzspeichereinrichtung ersetzt wird
oder auf eine andere weniger geeignete Methode wieder programmiert
wird.
-
DE-A-4 332 499 beschreibt die Wiederprogrammierung
eines löschbaren,
nicht flüchtigen
Speichers, wie eines Blitzspeichers, welcher erste und zweite Speicherbereiche
einschließt,
die von gleicher Größe sind.
Die Wiederprogrammierung des Speichers weist die Schritte des Löschens des
zweiten Speicherbereiches, des Schreibens neuer Daten in den zweiten
Speicherbereich, des Schreibens eines neuen Programmiermoduls in
einen Speicherbereich des zweiten Speicherbereiches, des Löschens des ersten
Speicherbereiches, des Schreibens neuer Daten in den ersten Speicherbereich
und des Schreibens eines neuen Programmmoduls in einen Speicherbereich
des ersten Speicherbereiches auf.
-
Gemäß einem ersten Aspekt stellt
die Erfindung ein Verfahren zur Wiederprogrammierung eines Speichers
bereit, welcher einen Programminstruktionscode zur Steuerung der Betätigung eines
Mikroprozessors speichert, bei welchem neue Daten in den Speicher
vom Mikroprozessor nur in einem Schreibzyklus geschrieben und gespeicherte
Daten aus dem Speicher durch den Mikroprozessor nur in einem Lesezyklus
ausgelesen werden können,
wobei der Speicher den Ablauf des Lesezyklus und des Schreibzyklus
zur selben Zeit verhindert und wenigstens erste und zweite Sektoren
zur Speicherung des Programminstruktionscodes einschließt, wobei
das Verfahren folgende Schritte aufweist:
Löschen eines Programminstruktionscodes,
der in dem zweiten Sektor gespeichert ist;
Schreiben eines
neuen Programminstruktionscodes in den zweiten Sektor; und
Löschen des
ersten Sektors;
dadurch gekennzeichnet,
dass der Programminstruktionscode
in dem ersten Sektor einen Boot-Code zur Steuerung der Betätigung des
Mikroprozessors in einer Boot-Routine einschließt; wobei der neue Programminstruktionscode, der
in den zweiten Sektor geschrieben wird, den Boot-Code einschließt, wobei
der erste Sektor, wenn er gelöscht
wird, in einem Zustand ist, dass ein Zugang des ersten Sektors durch
den Mikroprozessor in Ausführung
der Boot-Routine dazu führt,
dass die Boot-Routine durch den in dem zweiten Sektor gespeicherten
Boot-Code läuft;
und wobei das Verfahren weiterhin die Schritte aufweist:
Schreiben
eines neuen Boot-Codes in den ersten Sektor und einer Sprunganweisung
zum Springen in den zweiten Sektor, wobei die Sprunganweisung im Vorlauf
zum neuen Boot-Code ausgeführt
wird, und
nachfolgendes Ineffektivmachen der Sprunganweisung,
wobei eine nächste
Boot-Routine des Mikroprozessors dazu führt, dass der Mikroprozessor durch
den neuen Boot-Code in dem ersten Sektor gesteuert wird.
-
Gemäß einem anderen Aspekt schlägt die Erfindung
eine elektronische Vorrichtung vor, welche einen Speicher einschließt, der
entsprechend dem vorbeschriebenen Verfahren wieder programmierbar ist.
Die elektronische Vorrichtung kann eine Postfrankiervorrichtung
sein.
-
In einem weiteren Aspekt schlägt die Erfindung
eine elektronische Vorrichtung vor, mit einem Speicher zum Speichern
eines Programminstruktionscodes; und
einen Mikroprozessor,
der unter der Steuerung des Programminstruktionscodes betätigbar ist;
wobei:
der Speicher für
den Mikroprozessor in einem Schreibzyklus zum Schreiben eines Programminstruktionscodes
in den Speicher und in einem Lesezyklus zum Lesen eines Programminstruktionscodes aus
dem Speicher zugänglich
ist, wobei der Speicher einen gleichzeitigen Lesezyklus und Schreibzyklus verhindert;
und
wobei der Speicher erste und zweite Sektoren einschließt, wobei
der erste Sektor eine Mehrzahl von Speicherorten, welche einen ersten
Programminstruktionscode speichern, und der zweite Sektor eine Mehrzahl
von Speicherorten aufweist, welche den zweiten Programminstruktionscode
speichern,
dadurch gekennzeichnet,
dass der erste Programminstruktionscode
einen ersten Boot-Code und der zweite Programminstruktionscode einen
zweiten Boot-Code einschließen,
und wobei der Mikroprozessor in einer Boot-Routine betätigbar ist,
um auf den ersten Sektor zuzugreifen und in einer Wiederprogrammierroutine
betätigbar
ist, um jeden Speicherort des ersten Sektors zu löschen, nachfolgend
in die ersten Orte der Speicherorte des ersten Sektors einen dritten
Programminstruktionscode einschließlich eines dritten Boot-Codes
zu schreiben und in einen zweiten Speicherort der Speicherort des
ersten Sektors eine Sprunganweisung zum Springen in den zweiten
Sektor zu schreiben, wobei auf die Speicherorte sequentiell durch
den Mikroprozessor zugegriffen wird, und wobei auf den zweiten Ort,
der die erste Sprunganweisung speichert, in dem sequentiellen Zugriff
vor den ersten Speicherorten, welche den dritten Boot-Code speichern,
zugegriffen wird, und wobei nachfolgend der Mikroprozessor die erste
Sprunganweisung inef fektiv macht, wobei in einer nächsten Boot-Routine
der Mikroprozessor auf den dritten Boot-Code zugreift und diesen
ausführt.
-
Eine Ausführungsform der Erfindung wird nun
beispielhaft mit Bezugnahme auf die Zeichnungen beschrieben, in
denen
-
1 ein
Blockdiagramm einer elektronischen Vorrichtung mit einer Frankiermaschine
ist,
-
2 einen
Blitzspeicher mit einer Mehrzahl von Sektoren zeigt,
-
3 ein
Flussdiagramm ist, welches die Schritte bei der Wiederprogrammierung
des Blitzspeichers illustriert und
-
4 ein
Flussdiagramm einer Prüfunterroutine
ist.
-
Mit Bezugnahme zuerst auf 1 schließt eine Postfrankiermaschine
elektronische Abrechnungs- und Steuermittel ein, welche einen Mikroprozessor 10 aufweisen,
der unter Programmroutinen arbeitet, die in einem Blitzspeicher 11 gespeichert sind.
Eine Tastatur 12 ist zur Eingabe von Befehlen und Daten
durch einen Nutzer vorgesehen und eine Anzeigeeinrichtung 13 ist
vorgesehen, um die Anzeige einer Information für den Nutzer zu ermöglichen. Ein
RAM-Speicher 14 ist
zur Verwendung als ein Arbeitsspeicher zur Speicherung temporärer Daten während der
Betätigung
der Frankiermaschine vorgesehen. Nicht flüchtige duplizierte Speicher 15, 16 sind
zur Speicherung kritischer Daten in Bezug auf die Verwendung der
Frankiermaschine vorgesehen, die aufrechterhalten werden müssen, selbst
wenn die Frankiermaschine nicht mit Energie versorgt wird. Der Mikroprozessor 10 führt Abrechnungsfunktionen in
Bezug auf die Verwendung der Frankiermaschine zur Frankierung von
Poststücken
mit Postfrankierwerten aus, die anwendbar sind auf das Handling
von Poststücken
durch die Postbehörde
oder einen anderen Beförderer.
Abrechnungsdaten, die sich auf die Verwendung der Frankiermaschine
zum Drucken von Frankierbildern beziehen, und andere kritische Daten,
die aufrechterhalten werden müssen,
werden in den nicht flüchtigen
Speichern 15, 16 gespeichert. Die Abrechnungsdaten
schließen
einen Kreditwert, der verfügbar
ist für
die Verwendung der Frankiermaschine bei der Frankierung von Poststücken, einen akkumulierten
Gesamtwert, der von der Frankiermaschine beim Frankieren von Poststücken verwendet worden
ist, einen Zählwert
der Anzahl der Poststücke,
die durch die Frankiermaschine frankiert worden sind, und einen
Zählwert
der Anzahl von Poststücken ein,
die von der Frankiermaschine mit einem Postwert größer als
ein vorbestimmter Wert frankiert wor den sind. Der Kreditwert ist
in einem absteigenden Kreditregister gespeichert, der akkumulierte
Gesamtwert ist in einem aufsteigenden Gesamtregister gespeichert,
der Zählwert
an Poststücken
ist in einem Poststückregister
und der Zählwert
an Poststücken mit
einem Postwert größer als
ein vorbestimmter Wert ist in einem Großstückregister gespeichert. Wie in
der Postfrankiermaschinentechnik bekannt, wird jedes der vorbeschriebenen
Register zur Speicherung der Abrechnungsdaten repliziert, um die
Integrität
der Abrechnungsdaten aufrechtzuerhalten, selbst im Falle eines Betruges
oder der Beendigung der Stromversorgung für die Frankiermaschine während einer
Frankieroperation. Zwei Replikationen jedes der Register sind in
jeder der Speichereinrichtungen 15, 16 vorgesehen.
-
Ein Motorcontroller 17 wird
durch den Mikroprozessor 10 gesteuert, um die Betätigung von
Motoren 18 zu steuern, welche Zuführmittel (nicht dargestellt)
zur Zuführung
eines Poststückes
hinter einen Digitaldruckkopf 19 antreiben. Sensoren 20 sind
vorgesehen, um die Zuführung
der Poststücke
zu erfassen und anzuzeigen. Ein Eingangs-/ Ausgangstor 21 ist
vorgesehen, um eine Kommunikation zwischen der Postfrankiermaschine
und einer externen Vorrichtung zu ermöglichen. Eine Stromversorgung 22, die
Strom aus einer Hauptelektrizitätsversorgung empfängt, stellt
einen Strom mit den erforderlichen Spannungen den Komponenten der
Frankiermaschine zur Verfügung.
-
Es wird unterstellt, dass es ausreichend
bekannt in der Postfrankiermaschinentechnik ist, dass die Frankiermaschine
in einer sicheren Weise arbeiten muss und geschützt werden muss vor Versuchen, die
Maschine betrügerisch
zu verwenden, z. B. durch Verwendung der Postfrankiermaschine zum
Drucken von Frankierbildern auf Poststücke, für welche keine entsprechende
Frankierladung durch die Abrechnungsmittel abgerechnet worden sind.
Dementsprechend sind solche Teile der Frankiermaschine in einem
Sicherheitsgehäuse 23 angeordnet,
die gegen einen unautorisierten Zugang geschützt werden müssen.
-
Mit Bezugnahme nun auf die 2 und 3 zeigt 2 die
sektorierte Architektur der Blitzspeichereinrichtung 11.
In der Darstellung der 2 ist der
Speicher beispielhaft mit acht Sektoren 30 gezeigt, die
mit 301 bis 308 bezeichnet
sind, wobei jedoch klar ist, dass die Blitzspeichereinrichtung eine andere
Anzahl von Sektoren haben kann. Wenn der Blitzspeicher 11 wieder
programmiert wird, können nur
vollständige
Sektoren 30 zur selben Zeit gelöscht werden. Anfangs ist der
Programminstruktions-Boot-Code
im Sektor 301 gespeichert und der
Mikroprozessor ist so ausgebildet, um auf diesen Sektor 301 zuzugreifen, wann immer der Mikroprozessor wieder
gestartet wird. Ein Pro gramminstruktionscode, ein anderer als der
Boot-Code, ist in einem oder mehreren der verbleibenden Sektoren 302 bis 308 gespeichert.
-
Wenn eine Wiederprogrammieroperation zum
Schreiben eines neuen Codes in den Blitzspeicher ausgeführt wird,
wird der in dem Sektor 301 gespeicherte
Boot-Code kopiert in den RAM-Speicher 14 und die Betätigung des
Mikroprozessors wird umgeschaltet, um durch den Boot-Code gesteuert
zu werden, der nun im RAM-Speicher 14 gespeichert ist. Dann
wird der in allen der Sektoren 302 bis 308 gespeicherte Code gelöscht, während der
verbleibende, den Boot-Code
enthaltende Sektor 301 ungelöscht verbleibt.
Eine Wiederprogrammierung der Sektoren 302 bis 308 mit einem neuen Programminstruktionscode
wird dann ausgeführt.
Der neue Programminstruktionscode schließt zur Speicherung am Anfang
des Sektors 302 eine Kopie des
Boot-Codes ein, der bereits im Sektor 301 gespeichert
ist. Wenn die Wiederprogrammierung vor Vervollständigung der Wiederprogrammierung
der Sektoren 302 bis 308 unterbrochen wird, wird der Code in
diesen Sektoren unvollständig
oder durcheinander sein. Wenn das System wieder gestartet wird und
der Mikroprozessor wieder gebootet wird, ist der Mikroprozessor
in der Lage, unter der Steuerung des Boot-Codes im Sektor 301 , der bis jetzt noch nicht gelöscht oder
wieder beschrieben worden ist, zu arbeiten. Als Teil der unter der Steuerung
des Boot-Codes ausgeführten
Routine führt
der Mikroprozessor eine Unterroutine zum Überprüfen des Codes in dem Blitzspeicher
aus, wie dies in 4 dargestellt
ist. Eine Prüfsumme
wird in Bezug auf den gespeicherten Code ausgeführt und wenn die Prüfsumme des
Codes in Ordnung ist, setzt der Mikroprozessor mit der normalen
Programmausführung
fort. Wenn die Prüfsumme
nicht in Ordnung ist und einen unvollständigen oder gestörten, in
den Sektoren 302 bis 308 des Blitzspeichers gespeicherten Code
anzeigt, tritt der Mikroprozessor wieder in die Wiederprogrammierungsroutine
ein und setzt die Ausführung
der Wiederprogrammierungssequenz fort.
-
Wenn die Wiederprogrammierung der
Sektoren 302 bis 308 erfolgreich vollendet worden ist,
wie durch die Prüfsummenunterroutine
nach 4 bestimmt worden
ist, wird die Wiederprogrammierung eines Sektors 301 begonnen.
Sektor 301 wird gelöscht. Wenn
eine Wiederprogrammierung eines Sektors 301 in
diesem Stadium unterbrochen wird, enthält der gesamte Sektor 301 einen Mikrocode FF(hex). Dies ist
der Mikrocode, der aus dem Löschen
der Speicherorte in dem Sektor resultiert. Deshalb wird nach einem
Re-Boot des Systems nach einer Unterbrechung der Mikroprozessor
den Sektor 301 , welcher den FF(hex)
enthält,
ausführen
und unschuldig fortsetzen, bis die Programmroutine in den Start
des Sektors 302 läuft, welche
den Boot-Code enthält.
-
Eine Ausführung des Boot-Codes wird eine Ausführung der
Püfsummenunterroutine
einschließen
und eine Entdeckung einer schlechten Code-Prüfsumme in Bezug auf den Sektor 301 wird entdeckt werden. Ein weiterer
Versuch zur Wiederprogrammierung des Sektors 301 wird
ausgeführt
werden.
-
Anfangs werden bei der Wiederprogrammierung
des Sektors 301 die ersten Bytes,
z. B. drei Bytes, in dem gelöschten
Zustand FF(hex) verbleiben. Die nächsten Bytes, z. B. drei Bytes,
werden mit einer Sprunganweisung "JMP-Boot 2" programmiert, damit das Programm in
den Boot-Code des Sektors 302 springt.
Der verbleibende Teil des Sektors 301 wird
mit dem Boot-Code wieder programmiert, gefolgt von einem anderen
Code oder anderen Daten, die in dem Sektor 301 angeordnet
werden sollen. Schließlich
werden, nachdem der nun in den Sektor 301 programmierte
Code durch Überprüfung der Prüfsummenunterroutine
nach 4 überprüft worden
ist, die ersten Bytes des Sektors 301 von
FF(hex) zu "JMP-Boot 1" programmiert. Folglich
wird nach einem Re-Boot des Systems eine Ausführung des Programmes zuerst
auf die Sprunganweisung "JMP-Boot 1" treffen und das
Programm wird zum Boot-Code springen, der im Sektor 301 angeordnet ist, sofort nach der Sprunganweisung "JMP-Boot 2" und dabei diese
letzteren Befehle passieren. Somit ist verständlich, dass, abgesehen von
einer relativ kurzen Zeitperiode in der Größenordnung von einigen ms,
wenn die Anweisung "JMP-Boot 2" in den Blitzspeicher
programmiert wird, und danach, während
einer ebenso kurzen Zeitperiode, wenn die Instruktionen "JMP-Boot 1" in den Speicher
programmiert wird, der Blitzspeicher einen voll ausführbaren Boot-Code
enthält
und das System sich von irgendeiner Unterbrechung der Wiederprogrammierung
des Blitzspeichers erholen kann.
-
Obwohl das vorbeschriebene System
sich auf die Wiederprogrammierung eines Blitzspeichers bezieht,
ist es offensichtlich, dass es auch anwendbar ist für andere
Formen von nicht flüchtigen
Speichern, bei denen der Speicher nicht erlaubt, neue Daten in den
Speicher zur selben Zeit zu schreiben, wenn Daten aus dem Speicher
gelesen werden.