-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft
einen Einzelchip-Mikrocomputer mit einer CPU und einem nichtflüchtigen
Speicher, und, genauer ausgedrückt, ein
Verfahren zum Umschalten eines Boot-Bereichs, wenn ein bestimmter
Bereich eines nichtflüchtigen Speichers
als ein Boot-Bereich bezeichnet ist, wo ein Boot-Programm gespeichert
ist, Umschalten eines anderen Bereichs, um ein neuer Boot-Bereich
zu sein.
-
2. Beschreibung der verwandten
Technik
-
Ein Einzelchip-Mikrocomputer (oder
Einzelchip-Mikro) ist eine Halbleitervorrichtung, in der ein Speicherbereich,
wo ein Steuerprogramm gespeichert ist, und eine CPU (central processing
unit, zentrale Verarbeitungseinheit) zum Ausführen von Operationen basierend
auf dem Steuerprogramm auf einem Halbleiterchip ausgebildet sind.
-
Zum Vereinfachen der Modifikation
eines Steuerprogramms, verwenden einige solcher Einzelchip-Mikrocomputer
nichtflüchtige
Speicher, die einen Flash-Speicher als einen Speicher zum Speichern
des Steuerprogramms einschließen.
-
Ein mit einem solchen Flash-Speicher
versehener Einzelchip-Mikrocomputer ermöglicht Neueinschreiben des
einmal gespeicherten Steuerprogramms, sogar wenn ein in dem Flash-Speicher
gespeichertes Steuerprogramm zu modifizieren ist.
-
Unter den Verfahren zum Neueinschreiben eines
solchen Steuerprogramms gibt es eine Schreiberneueinschreibbetriebsart
zum Neueinschreiben eines Steuerprogramms unter Verwendung eines Flash-Schreibers
und eine Selbstprogrammierbetriebsart zum Neueinschreiben eines
nichtflüchtigen Speichers
an der Stufe der Benutzerverwendung. Die Schreiberneueinschreibbetriebsart
ist eine Betriebsart zum Steuern des Neueinschreibens eines Flash-Speichers
durch Starten von Anweisungsausführung
von einem BootSpeicher zum Kommunizieren mit der Außenseite,
während
eine Benutzerbetriebsart eine Betriebsam der Ausführung eines
Benutzerbereichs durch ähnliches
Starten von einem Boot-Speicher und anschließendes Wählen einer Startadresse ist.
In der Selbstprogrammierbetriebsart werden ein Boot-Programm und
andere zum Neueinschreiben benötigte
Anweisungen von einem nichtflüchtigen
Speicher oder von außerhalb
zu einem RAM übertragen,
um in den nichtflüchtigen
Speicher basierend auf den von dem RAM ausgelesenen Anweisungen
neu einzuschreiben. In der Selbstprogrammierbetriebsart ist nur
beim Neueinschreiben in einen Bereich, der einen Boot-Block enthält, ein Boot-Programm
als Schreibdaten erforderlich. Das Boot-Programm stellt hier ein
Programm zum Starten dar, welches ein Programm ist, das zuerst zum
Zeitpunkts des Systemstarts ausgeführt wird, nachdem das System
zurückgestellt
wurde.
-
Zum Zeitpunkt des Neueinschreibens
in einen bestimmten Speicherblock eines nichtflüchtigen Speichers durch die
Selbstprogrammierbetriebsart wie oben beschrieben oder zum Zeitpunkt
der Ersetzung eines Boot-Programms durch ein neues Boot-Programm,
wird Boot-Bereichumschaltungsverarbeitung zum Neueinschreiben eines
in dem betreffenden Speicherblock gespeicherten Boot-Programms in
einen anderen Speicherblock oder Speicher eines neuen Boot-Programms
in einem anderen Speicherblock ausgeführt, um den Bereich, in dem das
Boot-Programm gespeichert ist, auf einen neuen Boot-Bereich umzuschalten.
-
Einfaches Speichern eines Boot-Programms,
das in einem Benutzerbereich eines bestimmten Speicherblocks gespeichert
ist, in einem RAM, wobei das originale Boot-Programm gelöscht und
das von dem RAM ausgelesene Boot-Programm in einem Benutzerbereich
eines anderen Speicherblocks gespeichert wird, kann jedoch dazu
führen, dass
ein Einzelchip-Mikrocomputersystem keinen Normalbetrieb aufgrund
des Auftretens von augenblicklichem Stromabschalten oder dergleichen
während
der Löschung
eines Benutzerbereichs eines nichtflüchtigen Speichers fortsetzen
kann, in dem Programme einschließlich eines Boot-Programms (im
folgenden als ein Boot-Programm bezeichnet) gespeichert sind. In
einem anderen Fall kann augenblickliches Abschalten von Strom während dem
Einschreiben des neues Programms nach Löschung auftreten, um zu unvollständigem Einschreiben
zu führen.
In solchen Fällen
gibt es sogar bei Rückstellung
des Systems für
erneutes Starten Fälle,
in denen ein Boot-Programm nicht normal neu eingeschrieben wurde,
um erneutes Starten zu sperren. Deshalb birgt die Selbstprogrammierbetriebsart
zum Neueinschreiben in einen nichtflüchtigen Speicher an einer Stufe
von Benutzerverwendung ein Problem, dass ein Benutzerbereich, in
dem ein Boot-Programm gespeichert ist, nicht sicher gelöscht werden kann.
-
Als eine Gegenmaßnahme, die das Problem beseitigt,
sind Techniken zum sicheren Neueinschreiben in einen Benutzerbereich,
in dem ein Boot-Programm gespeichert ist, in dem japanischen offengelegten
Patent (Kokai) Nr. Heisei 8-255084 und dem japanischen offengelegten
Patent (Kokai) Nr. Heisei 10-149282 offenbart. Hier wird zum Zeitpunkt
der Neueinschreibung eines Programms in einen Boot-Bereich ein altes
Boot-Programm in
einen freien Benutzerbereich kopiert, um dasselbe zu sichern, wobei
Speicherinhalte des betreffenden Boot-Bereichs gelöscht werden
und dann ein neues Boot-Programm
in den Bereich eingeschrieben wird, und nach Bestätigung des
Einschreibendes, das in den freien Benutzerbereich kopierte alte
Boot-Programm gelöscht
wird. Selbst wenn eine Situation auftritt, in der Einschreiben eines
neuen Programms aufgrund von augenblicklichem Abschalten von Strom oder
dergleichen nicht vollständig
ausgeführt
werden kann, kann das System daher durch das alte Boot-Programm
neu gestartet werden, zum Verhindern, dass das System in einen irreparablen
Zustand gebracht wird.
-
Bei den oben beschriebenen Verfahren
ist jedoch die Anzahl von Tätigkeiten
groß,
wie zum Beispiel das Kopieren eines alten Boot-Frogramms in einen
freien Bereich und Löschen
eines alten Boot-Programms, wenn es nicht mehr benötigt wird, was
dazu führt,
dass Vorgehensweisen kompliziert und zeitaufwendig werden.
-
Ein konventioneller Einzelchip-Mikrocomputer,
der das oben aufgeführte
Problem löst,
ist in dem offengelegten japanischen Patent (Kokai) Nr. 2001-195241
offenbart.
-
Der konventionelle Einzelchip-Mikrocomputer
ist ausgelegt, um einen Boot-Bereichbezeichnungsflag aufzuweisen,
der für
jeden Benutzerbereich vorgesehen ist, um sicheres Neueinschreiben eines
in einem nichtflüchtigen
Speicher gespeicherten Boot-Programms in einer Bordbetriebsart an
einer Stufe von Benutzerverwendung durch eine kleinere Anzahl von
Tätigkeiten
zu ermöglichen.
Die Struktur des konventionellen Einzelchip-Mikrocomputers ist in 4 gezeigt.
-
Der Boot-Bereichbezeichnungsflag,
der für jeden
Speicherblock vorgesehen wird, ist ein Flag zum Anzeigen, dass ein
Boot-Programm in einem Benutzerbereich des betreffenden Speicherblocks gespeichert
ist.
-
Der konventionelle Einzelchip-Mikrocomputer
umfasst, wie in 4 dargestellt
ist, einen nichtflüchtigen
Speicher 41, eine CPU 2, einen Boot-Speicher 3,
einen Bereichsumschaltflag 4 und einen RAM 5.
-
Der nichtflüchtige Speicher 41,
in dem Programme einschließlich
eines Boot-Programms gespeichert sind, ist in zwei Speicherblöcke 161 und 162 unterteilt.
Der Speicherblock 161 wird durch einen Benutzerbereich
A zum Einschreiben von Daten wie zum Beispiel eines Programmcodes
durch einen Benutzer und einen Bereich zum Speichern eines diesem
entsprechenden Boot-Bereichbezeichnungsflags A gebildet, und der
Speicherblock 162 wird von einem Benutzerbereich B und
einem Bereich zum Speichern eines diesem entsprechenden Boot-Bereichbezeichnungsflags
B gebildet.
-
Die CPU 2 ist ein Hauptprozessor,
der Steuerung und Operation gemäß einem
in dem nichtflüchtigen
Speicher 41 gespeicherten Programm ausführt. Die CPU 2 führt Setzen
des Bereichsumschaltflags 4 basierend auf dem Inhalt eines
Boot-Bereichbezeichnungsflags durch. Der Boot-Speicher 3 hat
eine Funktion zum Starten des Systems gemäß einer bestimmten Steuerbetriebsart.
Nachdem das System gestartet ist, wird unter den in dem nichtflüchtigen Speicher 41 gespeicherten
Programmen das Boot-Programm zuerst verarbeitet. Neueinschreiben des
Boot-Programms wird durch einen Flash-Schreiber durchgeführt, wenn
der Computer einzeln durch eine Fabrik gehandhabt wird, und wird
in einer Selbstprogrammierbetriebsart ausgeführt, wenn in einer Bordbetriebsart
an einer Stufe von Benutzerverwendung. Der Bereichsumschaltflag 4 hat
eine Funktion zum Bezeichnen eines Benutzerbereichs, in dem das
Boot-Programm zum Zeitpunkt von Systemstart gespeichert ist. Der
RAM 5 speichert zeitweilig erforderliche Daten als Reaktion
auf eine Anweisung von der CPU 2.
-
Unter Bezugnahme auf das Ablaufdiagramm von 5, soll eine Verfahrensweise
zum Neueinschreiben von Programmen einschließlich eines Boot-Programms
in einem Benutzerbereich in einer Selbstprogrammierbetriebsart in
einem so strukturierten konventionellen Einzelchip-Mikrocomputer beschrieben
werden, wenn der Benutzerbereich A des Speicherblocks 161 für Starten
bezeichnet ist (Boot-Bereichbezeichnungsflag A = "0", der Boot-Bereichbezeichnungsflag
B = "1"). Der nichtflüchtige Speicher 41 ist
so ausgelegt, dass, wenn Dateninhalte gelöscht werden, "1" in allen der
gelöschten
Bits gespeichert wird.
-
Hier sind der Benutzerbereich und
der Boot-Bereichbezeichnungsflag des Speicherblocks 161 als
der Benutzerbereich A bzw. der Boot-Bereichbezeichnungsflag A, und
der Benutzerbereich und der Boot-Bereichbezeichnungsflag des Speicherblocks 162 als
der Benutzerbereich B bzw. der Boot-Bereichbezeichnungsflag B dargestellt.
-
Zuerst ist der Speicherinhalt des
Benutzerbereichs B und des Boot-Bereichbezeichnungsflags B zu löschen, in
den ein Boot-Programm neu eingeschrieben wird (Schritt 201). Dann
ist das neue Boot-Programm in den Benutzerbereich B (Schritt 202)
einzuschreiben. Als nächstes
sind Daten so zu schreiben, dass der Boot-Bereichbezeichnungsflag
B Bootbezeichnung (Datum"0") aufweist (Schritt 203).
-
Anschließend ist der Speicherinhalt
des Benutzerbereichs A und des Boot-Bereichbezeichnungsflags A (Schritt
204) zu löschen.
Zu diesem Zeitpunkt wird kein Einschreiben in den Boot-Bereichbezeichnungsflag
A durchgeführt,
um das Datum "1" das gleiche bleiben zu lassen. Als nächstes ist
ein anderes Programm als das Boot-Programm in den gelöschten Benutzerbereich
A entsprechend der Notwendigkeit einzuschreiben.
-
Wenn in der Benutzerbetriebsart das
System durch Rückstellen
gestartet wird, wird das Programm von dem Boot-Speicher 3 basierend
darauf ausgeführt,
welche Programmwerte des Boot-Bereichbezeichnungsflags A und des
Boot-Bereichbezeichnungsflags B gelesen werden, zur Bestimmung,
welcher des Benutzerbereichs A und des Benutzerbereichs B ein Bereich
ist, der das neue Boot-Programm einschließt, und Daten des relevanten
Benutzerbereichs sind in den Bereichsumschaltflag 4 zu schreiben.
Das Bestimmungsergebnis ist an dem Bereichsumschaltflag 4 zu
setzen, um Speicherinhalte zu lesen, die in die Benutzerbereiche
verzweigt sind, in denen das neue Boot-Programm zum Zeitpunkt von
Systemstart gespeichert ist.
-
Wenn ein augenblickliches Abschalten
von Strom nach dem Ende von Schritt 203 und vor Ende von Schritt
204 auftritt, kann eine Mehrzahl von Benutzerbereichen als ein Boot-Bereich
bezeichnet sein. In einem solchen Fall sollte einer der Benutzerbereiche,
zum Beispiel der Benutzerbereich A, bevorzugt als ein Boot-Bereich
bezeichnet werden.
-
Da in dem konventionellen Einzelchip-Mikrocomputer
Setzen eines Boot-Bereichbezeichnungsflags und eines Bereichsumschaltflags
Umschalten eines Benutzerbereichs ermöglicht, der ein Boot-Programm
zum Starten des Systems einschließt, wodurch Ausführung von
Boot-Programm-Neueinschreiben in einen nichtflüchtigen Speicher ermöglicht wird,
während
das alte Boot-Programm immer vorhanden ist, selbst wenn auf grund
eines augenblicklichen Stromabschaltens oder dergleichen zum Zeitpunkt
des Neueinschreibens in der Selbstprogrammierbetriebsart das Neueinschreiben
nicht abgeschlossen werden kann, ist Wiederherstellung durch weiteres
Neueinschreiben möglich
und Neueinschreiben wird mit einer geringeren Anzahl von Tätigkeiten
in einer kurzen Zeitspanne ermöglicht.
-
Wenn in einem solchen konventionellen
Einzelchip-Mikrocomputer jedoch augenblickliches Stromabschalten
während
Löschung
des Benutzerbereichs B erfolgt, das heißt, während Verarbeitung von Schritt
201 in 5, wird der Wert
des Boot-Bereichsbezeichnungsflags B unbestimmt, um einen gültigen Wert
abhängig
von Situationen aufzuweisen. In diesem Stadium ist die Verarbeitung
von Schritt 202 zum Einschreiben des neuen Boot-Programms in den
Benutzerbereich B noch abzuschließen. Wenn das System für Starten
zurückgestellt
wird, werden daher beide der Boot-Bereichsbezeichnungsflag A und
B gültig,
und wenn hier eine Einstellung vorgenommen wird, um bevorzugt den
Benutzerbereich B als einen Boot-Bereich zu bezeichnen, tritt ein
solches Problem auf, dass ein Benutzerbereich, in dem kein Boot-Programm
gespeichert ist, als ein Boot-Bereich bezeichnet werden kann.
-
In einem Flash-Speicher wird insbesondere Voreinschreiben
durchgeführt,
bevor geschriebene Daten gelöscht
werden, wenn Schreiben ausgeführt wird,
um den in allen Speicherzellen gehaltenen Spannungspegel auf dem
gleichen Pegel zu halten. Wenn augenblickliches Stromabschalten
oder dergleichen während
Voreinschreiben eines bestimmten Speicherblocks erfolgt, kann daher
ein Boot-Bereichsbezeichnungsflag des Speicherblocks "1" erhalten
werden, welches usprüngliche
"0" sein sollte, oder "0" erhalten werden, welches ursprünglich "1" sein
sollte.
-
Infolgedessen tritt auch in dem in 4 gezeigten konventionellen
Einzelchip-Mikrocomputer möglicherweise
ein solches Problem auf, dass ein Speicherblock, in dem ein Boot-Programm
gespeichert ist, nicht abhängig
von der Zeitabstimmung spezifiziert werden kann, wenn ein augenblickliches Stromabschalten
erfolgt, welches Starten von dem Boot-Programm sperrt. Wenn Starten
von dem Boot-Programm nicht ausgeführt wird, kann dann der Systembetrieb
nicht normal durchgeführt
werden, was zu fehlerhaftem Betrieb führt.
-
Die oben beschriebenen konventionellen Einzelchip-Mikrocomputer
weisen Mängel
darin auf, dass augenblickliches Stromabschalten oder dergleichen,
das während
Boot-Programmneueinschreibverarbeitung
in der Selbstprogrammierbetriebsart erfolgt, Starten von dem Boot-Programm
unmöglich macht,
wodurch fehlerhafter Betrieb erhalten wird.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Eine Aufgabe der vorliegenden Erfindung besteht
in der Schaffung eines Einzelchip-Mikrocomputers, der von einem Boot-Programm
ohne Fehler starten kann, selbst wenn augenblickliches Stromabschalten
oder dergleichen während
der Boot-Bereichumschaltverarbeitung bei Selbstprogrammierung erfolgt.
-
Dem ersten Aspekt der Erfindung zufolge, umfasst
ein Einzelchip-Mikrocomputer einen nichtflüchtigen Speicher mit einer
Mehrzahl von Speicherblockpaaren als eine Kombination aus einer
Mehrzahl von Speicherblöcken,
die jeweils aus einem Benutzerbereich zum Speichern eines Programmcodes durch
einen Benutzer und einem Bereich zum Speichern eines Boot-Bereichsbezeichnungsflags
bestehen, welcher anzeigt, dass ein zuerst zum Zeitpunkt von Systemstart
auszuführendes
Boot-Programm in dem Benutzerbereich gespeichert ist, wobei das Boot-Programm
in einem Benutzerbereich eines Speicherbereichs eines speziellen
Paars von Speicherblöcken
in einem Anfangszustand gespeichert ist, wo keine Boot-Bereichumschaltverarbeitung
durchgeführt
wird, einen Bereichsumschaltflag zum Anzeigen, in welchem Speicherblockpaar
das Boot-Programm in dem Benutzerbereich unter der Mehrzahl von
Speicherblockpaaren gespeichert ist, und ein Steuerelement, um,
wenn ein anderes, nicht als Boot-Bereich bezeichnetes Paar von Speicherblöcken als
ein neuer Boot-Bereich bezeichnet wird, einen Wert zu speichern,
der durch Subtrahieren eines vorbestimmten Werts von einem Anfangswert
erhalten wird, welcher an dem Boot-Bereichsbezeichnungsflag des
Speicherblocks aller der Speicherblockpaare in dem Boot-Bereichsbezeichnungsflag jedes
Speicherblocks des anderen Speicherblockpaars gesetzt wird, und
zum Zeitpunkt des Startens des Systems, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, zu bestimmen, dass das Boot-Programm in dem anderen Speicherblockpaar gespeichert
ist, um den Bereichsumschaltflag zu setzen.
-
In dem bevorzugten Aufbau bestimmt
das Steuerelement, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars verschieden sind oder den Anfangswert
aufweisen, dass der betreffende Boot-Bereichsbezeichnungsflag ungültig ist,
zur Bestimmung, dass das Boot-Programm in dem Benutzerbereich des
Speicherblocks des speziellen Speicherblockpaars gespeichert ist.
-
In einem anderen bevorzugten Aufbau
bestimmt das Steuerelement, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, wenn Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars verschieden sind, dass der Boot-Bereichsbezeichnungsflag
in dem Speicherblock des speziellen Speicherblockpaars ungültig ist,
zur Bestimmung, dass das Boot-Programm in dem anderen Speicherblockpaar gespeichert
ist.
-
In einem anderen bevorzugten Aufbau
bestimmt das Steuerelement, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, wenn Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars gleich sind, dass das Boot-Programm
in einem Speicherblock eines Speicherblockpaars gespeichert ist,
das einen Boot-Bereichsbezeichnungsflag speichert, dessen Wert kleiner
ist.
-
In einem anderen bevorzugten Aufbau
bestimmt das Steuerelement, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblock paars gleich sind und nicht den Anfangswert
oder "0" aufweisen, dass das Boot-Programm in dem anderen Speicherblockpaar
gespeichert ist.
-
In einem anderen bevorzugten Aufbau
werden zum Zeitpunkt von Löschung
des Benutzerbereichs und der Boot-Bereichsbezeichnungsflag jedes Speicherblocks
der Speicherblockpaare des nichtflüchtigen Speichers gleichzeitig
gelöscht.
-
Dem zweiten Aspekt der Erfindung
zufolge, umfasst ein Einzelchip-Mikrocomputer einen nichtflüchtigen
Speicher mit einer Mehrzahl von Speicherblockpaaren als eine Kombination
einer Mehrzahl von Speicherblöcken,
die jeweils aus einem Benutzerbereich zum Speichern eines Programmcodes durch
einen Benutzer und einem Bereich zum Speichern eines Boot-Bereichsbezeichnungsflags
bestehen, der anzeigt, dass ein Boot-Programm, das zuerst zum Zeitpunkt
von Systemstart auszuführen
ist, in dem Benutzerbereich gespeichert ist, wobei das Boot-Programm
in einem Benutzerbereich eines Speicherblocks eines speziellen Speicherblockpaars in
einem Anfangszustand gespeichert ist, wo keine Boot-Bereichumschaltverarbeitung
durchgeführt wird,
einen Bereichsumschaltflag zum Anzeigen, in welchem Speicherblockpaar
das Boot-Programm in dem Benutzerbereich unter der Mehrzahl von
Paaren von Speicherblöcken
gespeichert ist, und ein Steuerelement zum Setzen des Bereichsumschaltflags,
wobei das Steuerelement, wenn es ein anderes, nicht als ein Boot-Bereich
bezeichnetes Speicherblockpaar als einen neuen Boot-Bereich bezeichnet,
einen Wert speichert, der durch Subtrahieren eines vorbestimmten
Werts von einem Anfangswert erhalten wird, welcher an dem Boot-Bereichsbezeichnungsflag
des Speicherblocks aller der Speicherblockpaare in dem Boot-Bereichsbezeichnungsflag
jedes Speicherblocks des anderen Speicherblockpaars gesetzt wird,
und zum Zeitpunkt des Startens des Systems, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, bestimmt, dass das Boot-Programm in dem anderen Speicherblockpaar
gespeichert ist, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars verschieden sind, oder den Anfangswert
aufweisen, bestimmt, dass der betreffende Boot-Bereichsbezeichnungsflag
ungültig
ist, zur Bestimmung, dass das Boot-Programm in dem Benutzerbereich
des Speicherblocks des speziellen Speicherblockpaars gespeichert
ist, wenn die Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, wenn Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars verschieden sind, bestimmt, dass der
Boot-Bereichsbezeichnungsflag
in dem Speicherblock des speziellen Speicherblockpaars ungültig ist,
zur Bestimmung, dass das Boot-Programm in dem anderen Speicherblockpaar
gespeichert ist, und wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, wenn die Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars gleich sind, bestimmt, dass das Boot-Programm
in einem Speicherblock eines Speicherblockpaars gespeichert ist,
dass einen Boot-Bereichsbezeichnungsflag speichert, dessen Wert
kleiner ist.
-
Einem anderen Aspekt der Erfindung
zufolge, weist in einem Einzelchip-Mikrocomputer, der einen nichtflüchtigen
Speicher mit einer Mehrzahl von Speicherblockpaaren als eine Kombination
aus einer Mehrzahl von Speicherblöcken, die jeweils aus einem
Benutzerbereich zum Speichern eines Programmcodes durch einen Benutzer
und einem Bereich zum Speichern eines Boot-Bereichsbezeichnungsflags
besteht, der anzeigt, dass ein Boot-Programm, das zuerst zum Zeitpunkt
des Systemstarts auszuführen
ist, in dem Benutzerbereich gespeichert ist, wobei das Boot-Programm
in einem Benutzerbereich eines Speicherblocks eines speziellen Paars von
Speicherblöcken
in einem Anfangszustand gespeichert ist, wo keine Bereichsumschaltverarbeitung
durchgeführt
wird, und eine CPU einschließt,
ein Boot-Bereichbezeichnungsverfahren des Einzelchip-Mikrocomputers
zum Umschalten eines Bereichs des anderen Speicherblockpaars als
einen neuen Boot-Bereich, wenn ein Benutzerbereich eines Speicherblocks
eines speziellen Speicherblockpaars als ein Boot-Bereich bezeichnet
wird, in dem das Boot-Programm gespeichert ist, die folgenden Schritte
auf: wenn ein anderes, nicht als ein Boot-Bereich bezeichnetes,
Speicherblockpaar als ein neuer Boot-Bereich bezeichnet wird, einen
Wert zu speichern, der durch Subtrahieren eines vorbestimmten Werts
von einem Anfangswert erhalten wird, welcher an dem Boot-Bereichsbezeichnungsflag
des Speicherblocks aller der Speicherblockpaare in dem Boot-Bereichsbezeichnungsflag
jedes Speicherblocks des anderen Speicherblockpaars eingestellt wird,
und
zum Zeitpunkts des Systemstarts, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, zu bestimmen, dass das Boot-Programm ist dem anderen Speicherblockpaar
gespeichert ist.
-
In dem bevorzugten Aufbau weist das Boot-Bereichbezeichnungsverfahren
des Einzelchip-Mikrocomputers den Schritt auf, wenn die Werte der
Boot-Bereichsbezeichnungsflag in den Speicherblöcken des anderen Speicherblockpaars
verschieden sind oder den Anfangswert aufweisen, zu bestimmen, dass
der betreffende Boot-Bereichsbezeichnungsflag ungültig ist,
zur Bestimmung, dass das Boot-Programm in dem Benutzerbereich des Speicherblocks
des speziellen Speicherblockpaars gespeichert ist.
-
In einem anderen bevorzugten Aufbau
weist das Boot-Bereichbezeichnungsverfahren des Einzelchip-Mikrocomputers
den Schritt auf, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, wenn Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars verschieden sind, zu bestimmen, dass
der Boot-Bereichsbezeichnungsflag in dem Speicherblock des speziellen Speicherblockpaars
ungültig
ist, zur Bestimmung, dass das Boot-Programm in dem anderen Speicherblockpaar
gespeichert ist.
-
In einem anderen bevorzugten Aufbau
weist das Boot-Bereichsbezeichnungsverfahren des Einzelchip-Mikrocomputers
den Schritt auf, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, wenn Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars gleich sind, zu bestimmen, dass das
Boot-Programm in einem Speicherblock eines Speicherblockpaars gespeichert
ist, welcher einen Boot-Bereichsbezeichnungsflag speichert, dessen
Wert kleiner ist.
-
In einem anderen bevorzugten Aufbau
weist das Boot-Bereichsbezeichnungsverfahren des Einzelchip-Mikrocomputers
den Schritt auf, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
oder "0" aufweisen, zu bestimmen, dass das Boot-Programm in dem
anderen Speicherblockpaar gespeichert ist.
-
Einem anderen Aspekt der Erfindung
zufolge, weist in einem Einzelchip-Mikrocomputer, der einen nichtflüchtigen
Speicher mit einer Mehrzahl von Speicherblockpaaren als eine Kombination
einer Mehrzahl von Speicherblöcken,
die jeweils aus einem Benutzerbereich zum Speichern eines Programmcodes
durch einen Benutzer und einem Bereich zum Speichern eines Boot-Bereichsbezeichnungsflags
bestehen, der anzeigt, dass ein zuerst zum Zeitpunkt von Systemstarten
auszuführendes Boot-Programm
in dem Benutzerbereich gespeichert ist, wobei das Boot-Programm
in einem Benutzerbereich eines Speicherblocks eines speziellen Paars von
Speicherblöcken
in einem Anfangszustand gespeichert ist, wo keine Boot-Bereichumschaltverarbeitung
durchgeführt
wird, und eine CPU umfasst, ein Boot-Bereichsbezeichnungsverfahren
des Einzelchip-Mikrocomputers zum Umschalten eines Bereichs eines
anderen Speicherblockpaars als einen neuen Bootbereich, wenn ein
Benutzerbereich eines Speicherblocks eines speziellen Speicherblockpaars als
ein Boot-Bereich bezeichnet wird, in dem das Boot-Programm gespeichert
ist, die Schritte auf, wenn ein anderes, nicht als ein Boot-Bereich
bezeichnetes Speicherblockpaar als ein neuer Boot-Bereich bezeichnet
wird, einen Wert zu speichern, der durch Subtrahieren eines vorbestimmten
Werts von einem Anfangswert erhalten wird, der bei dem Boot-Bereichsbezeichnungsflag
des Speicherblocks aller der Speicherblockpaare in dem Boot-Bereichsbezeichnungsflag
jedes Speicherblocks des anderen Speicherblockpaars gesetzt wird,
zum Zeitpunkt von Starten des Systems, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, zu bestimmen, dass das Boot-Programm in dem anderen Speicherblockpaar gespeichert
ist, wenn die Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
anderen Speicherblockpaars verschieden sind oder den Anfangswert
aufweisen, zu bestimmen, dass der betreffende Boot-Bereichsbezeichnungsflag
ungültig
ist, zur Bestimmung, dass das Boot-Programm in dem Benutzerbereich
des Speicherblocks des speziellen Speicherblockpaars ist, wenn die
Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des anderen
Speicherblockpaars gleich sind und nicht den Anfangswert aufweisen,
wenn Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars verschieden sind, zu bestimmen, dass
der Boot-Bereichsbezeichnungsflag in dem Speicherblock des speziellen Speicherblockpaars
ungültig
ist, zur Bestimmung, dass das Boot-Programm in dem anderen Speicherblockpaar
gespeichert ist, und, wenn die Werte der Boot-Bereichsbezeichnungsflag
in den Speicherblöcken
des anderen Speicherblockpaars gleich sind und nicht den Anfangswert
aufweisen, wenn Werte der Boot-Bereichsbezeichnungsflag in den Speicherblöcken des
speziellen Speicherblockpaars gleich sind, zu bestimmen, dass das
Boot-Programm in einem Speicherblock eines Speicherblockpaars gespeichert
ist, welches einen Boot-Bereichsbezeichnungsflag speichert, dessen
Wert kleiner ist.
-
Einem anderen Aspekt der Erfindung
zufolge, weist ein Boot-Bereichsumschaltverfahren eines Mikrocomputers,
der einen nichtflüchtigen
Speicher mit einem ersten Speicherblock und einem zweiten Speicherblock
einschließt,
die aus einem Programmbereich und einem Boot-Bereichsbezeichnungsflagbereich
des Mikrocomputers gebildet werden, die folgenden Schritte auf:
wenn
ein neues Boot-Programm in dem nichtflüchtigen Speicher anstelle des
Boot-Programms gespeichert wird, Daten des zweiten Speicherblocks
zu löschen,
das neue Boot-Programm
in dem Programmbereich des zweiten Speicherblocks zu speichern, Daten,
die sich von den Daten unterscheiden, die in dem Boot-Bereichsbezeichnungsflagbereich
des ersten Speicherblocks gespeichert sind, in dem Boot-Bereichsbezeichnungs flagbereich
des zweiten Speicherblocks zu speichern, und Daten des ersten Speicherblocks
zu löschen.
-
In dem bevorzugten Aufbau wird beim
Lesen des Boot-Programms der Boot-Bereichsbezeichnungsflag aus dem
ersten Speicherblock und dem zweiten Speicherblock gelesen, und
das in dem ersten Speicherblock gespeicherte Boot-Programm oder
das in dem zweiten Speicherblocks gespeicherte neue Boot-Programm
basierend auf einem Vergleichsergebnis des Boot-Bereichsbezeichnungsflags
ausgeführt.
-
In einem anderen bevorzugten Aufbau,
in dem der Boot-Bereichsbezeichnungsflagbereich des zweiten Speicherblocks
einen ersten Boot-Bereichsbezeichnungsflagbereich und einen zweiten Boot-Bereichsbezeichnungsflagbereich
umfasst, werden anstelle des Schritts, Daten, die sich von Daten
unterscheiden, welche in dem Boot-Bereichsbezeichnungsflagbereich
des ersten Speicherblocks gespeichert sind, in dem Boot-Bereichsbezeichnungsflagbereich
des zweiten Speicherblocks zu speichern, Daten, die sich von Daten
unterscheiden, welche in dem Boot-Bereichsbezeichnungsflagbereich
des ersten Speicherblocks gespeichert sind, in dem ersten Boot-Bereichsbezeichnungsflagbereich des
zweiten Speicherblocks zu speichern, die gleichen Daten, wie Daten
des Boot-Bereichsbezeichnungsflagbereichs des ersten Speicherblocks
in dem zweiten Boot-Bereichsbezeichnungsflagbereich des zweiten
Speicherblocks gespeichert.
-
Da der vorliegenden Erfindung zufolge Boot-Bereichsbezeichnungsflag
des gleichen Inhalts in einer Mehrzahl von Bereichen gespeichert
sind, die nicht gleichzeitig gelöscht
werden können,
selbst wenn ein augenblickliches Stromabschalten erfolgt, das bewirkt,
dass ein Boot-Bereichsbezeichnungsflag einen unbestimmten Wert aufweist,
wird ein Wert des anderen Boot-Bereichsbezeichnungsflags als normal
aufrechterhalten. Deshalb führt
die Ermittelung, ob die beiden Boot-Bereichsbezeichnungsflag mit
einander übereinstimmen
oder nicht, zur Bestimmung, ob die Boot-Bereichsbezeichnungsflag
gültig oder
ungültig
sind, so dass fehlerhafter Betrieb verhindert werden kann, einen
Speicherblock, in dem kein Boot-Programm tatsächlich gespeichert ist, als einen
Boot-Bereich zu bezeichnen.
-
Andere Aufgaben, Merkmale und Vorteile der
vorliegenden Erfindung werden aus der hier im folgenden angeführten ausführlichen
Beschreibung deutlich werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die vorliegende Erfindung wird vollständiger anhand
der im folgenden angeführten
ausführlichen Beschreibung
und von den beigefügten
Zeichnungen der bevorzugten Ausführungsform
der Erfindung verstanden werden, welche jedoch nicht als die Erfindung
begrenzend aufgefasst werden sollten, sondern nur zur Erklärung und
zum Verständnis
vorgesehen sind.
-
In den Zeichnungen ist:
-
1 ein
Blockdiagramm, das eine Struktur eines Einzelchip-Mikrocomputers
gemäß einer
ersten Ausführungsform
der vorliegenden Erfindung zeigt;
-
2A ein
Diagramm zum Gebrauch beim Erklären
von Boot-Bereichumschaltverarbeitung in dem Einzelchip-Mikrocomputer
gemäß der ersten Ausführungsform
der vorliegenden Erfindung;
-
2B ein
Diagramm zum Gebrauch beim Erklären
von Boot-Bereichumschaltverarbeitung in dem Einzelchip-Mikrocomputer
gemäß der ersten Ausführungsform
der vorliegenden Erfindung;
-
2C ein
Diagramm zum Gebrauch beim Erklären
von Boot-Bereichumschaltverarbeitung in dem Einzelchip-Mikrocomputer
der ersten Ausführungsform
der vorliegenden Erfindung;
-
2D ein
Diagramm zum Gebrauch beim Erklären
von Boot-Bereichumschaltverarbeitung in dem Einzelchip-Mikrocomputer
gemäß der ersten Ausführungsform
der vorliegenden Erfindung;
-
2E ein
Diagramm zum Gebrauch beim Erklären
von Boot-Bereichumschaltverarbeitung in dem Einzelchip-Mikrocomputer
gemäß der ersten Ausführungsform
der vorliegenden Erfindung;
-
2F ein
Diagramm zum Gebrauch beim Erklären
von Boot-Bereichumschaltverarbeitung in dem Einzelchip-Mikrocomputer
gemäß der ersten Ausführungsform
der vorliegenden Erfindung;
-
3 ein
Ablaufdiagramm, das den Betrieb des in 1 dargestellten Einzelchip-Mikrocomputers zeigt;
-
4 ein
Blockdiagramm, das eine Struktur eines konventionellen Einzelchip-Mikrocomputers zeigt;
und
-
5 ein
Ablaufdiagramm, das den Betrieb des in 4 dargestellten konventionellen Einzelchip-Mikrocomputers
zeigt.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
Die bevorzugte Ausführungsform
der vorliegenden Erfindung soll im folgenden ausführlich unter Bezugnahme
auf die beigefügten
Zeichnungen erörtert
werden. In der folgenden Beschreibung sind zahlreiche spezielle
Details aufgeführt,
um ein gründliches
Verständnis
der vorliegenden Erfindung zu schaffen. Es wird jedoch den Fachleuten
in diesem Gebiet offensichtlich sein, dass die vorliegende Erfindung
ohne diese speziellen Details praktiziert werden kann. Im anderen
Fall sind gut bekannte Strukturen nicht detailliert gezeigt, um
die vorliegende Erfindung nicht unnötig zu verkomplizieren.
-
Als nächstes soll eine Ausführungsform
der vorliegenden Erfindung unter Bezugnahme auf die Zeichnungen
beschrieben werden. 1 ist
ein Blockdiagramm, das eine Struktur eines Einzelchip-Mikrocomputers
gemäß einer
ersten Ausführungsform
der vorliegenden Erfindung zeigt. In 1 sind
die gleichen Komponenten wie die in 4 mit den
gleichen Bezugsziffern versehen worden, um ihre Beschreibung wegzulassen.
-
Der Einzelchip-Mikrocomputer gemäß der vorliegenden
Endung unterscheidet sich von dem in 4 gezeigten
konventionellen Einzelchip-Mikrocomputer darin, dass der nichtflüchtige Speicher 41 durch
einen nichtflüchtigen
Speicher 1 ersetzt ist. In der vorliegenden Ausführungsform
soll ein Fall beschrieben werden, in dem ein Flash-Speicher als
ein nichtflüchtiger
Speicher verwendet wird.
-
Der nichtflüchtige Speicher 1 in
der vorliegenden Ausführungsform
ist in vier Speicherblöcke 61 bis 64 unterteilt.
Dann ist jeder der vier Speicherblöcke 61 bis 64 in
einen Benutzerbereich zum Schreiben von Daten wie zum Beispiel einen
Programmcode durch einen Benutzer und einen Bereich zum Speichern
eines Boot-Bereichsbezeichnungsflags unterteilt. In der vorliegenden
Ausführungsform soll
eine Beschreibung unter der Annahme vorgenommen werden, dass der
Boot-Bereichsbezeichnungsflag als ein Beispiel aus 32 Bits gebildet
ist.
-
Außerdem wird unter der Annahme,
dass Boot-Bezeichnung, die einen Speicherblock anzeigt, in dem ein
Boot-Programm gespeichert ist, für
jede zwei Speicherblöcke
durchgeführt
wird, Boot-Bezeichnung hier durch Bezeichnen eines Paars von Speicherblöcken, den
beiden Speicherblöcken 61 und 62 oder
den Speicherblöcken 63 und 64 durchgeführt.
-
Während
in einem konventionellen Mikrocomputer der Boot-Bereichsbezeichnungsflag
nur anzeigt, ob ein Boot-Programm in einem betreffenden Blockspeicher
gespeichert ist oder nicht, wird in dem Einzelchip-Mikrocomputer
der vorliegenden Ausführungsform
basierend auf einem Wert des Boot-Bereichsbezeichnungsflags bestimmt,
in welchem des Speicherblockpaars das Boot-Programm gespeichert
ist, den Speicherblöcken 61 und 62 oder den
Speicherblöcken 63 und 64.
-
Der Flash-Speicher ist derart ausgelegt, dass,
wenn ein bestimmter Speicherblock gelöscht wird, ein Boot-Bereichsbezeichnungsflag
und in einem Benutzerbereich in dem Speicherblock gespeicherte Daten
gleichzeitig gelöscht
werden, um es unmöglich
zu machen, dass nur die in einem der Bereiche gespeicherten Daten
verbleiben. Außerdem
wird in einem jeglichen Löschverfahren
Löschung
intern für
jeden einen Speicherblock ohne Fehler durchgeführt.
-
Eine CPU 2 bestimmt in der
vorliegenden Ausführungsform,
in welchem der Speicherblockpaare, den Speicherblöcken 61 und 62 oder
den Speicherblöcken 63 und 64,
ein Boot-Programm gespeichert ist, welches auszuführen ist,
wenn ein System als nächstes
zurückgestellt
wird, basierend auf den Werten der Boot-Bereichsbezeichnungsflag,
die in den jeweiligen Speicherblöcken 61-64 gespeichert sind,
und setzt das Bestimmungsergebnis an dem Flagbereichumschaltflag 4.
-
Als nächstes soll Umschaltverarbeitung
eines Boot-Bereichs, die in dem Einzelchip-Mikrocomputer gemäß der vorliegenden Ausführungsform durchgeführt wird,
unter Bezugnahme auf die 2A, 2B, 2C, 2D, 2E und 2F beschrieben werden. In den 2A bis 2F ist der Wert des Boot-Bereichsbezeichnungsflags
"FFFFFFFF (H: hexadezimale Schreibweise)" einfach als "FF", "FFFFFFFE
(H)" einfach als "FE" und "00000000(H)" einfach als "00" dargestellt.
Dann wird die Boot-Bereichumschaltverarbeitung durch die CPU 2 durchgeführt.
-
Hier soll eine Beschreibung in Bezug
zu einem Fall angeführt
werden, in dem ein in dem Benutzerbereich des Speicherblocks 61 gespeichertes Boot-Programm
neu in den Benutzerbereich des Speicherblocks 63 eingeschrieben
wird. Ein Anfangswert des Boot-Bereichsbezeichnungsflags (Wert bei
dem gelöschten
Zustand) ist "FFFFFFFF(H)".
-
Der Zustand des nichtflüchtigen
Speichers 1 vor Durchführung
der Boot-Bereichumschaltverarbeitung ist in 2A gezeigt. In 2A ist das Boot-Programm in dem Benutzerbereich
des Speicherblocks 61 gespeichert und jeder Boot-Bereichsbezeichnungsflag
der Speicherblöcke 61 bis 64 zeigt
"FFFFFFFF(H)" an.
-
Die Boot-Bereichumschaltverarbeitung
wird von dem in 2A gezeigten
Zustand in der folgenden Weise durchgeführt.
-
- (1) Lösche
zuerst die Speicherblöcke 63 und 64 (2B) zum Schreiben eines
neues Boot-Programms in den Benutzerbereich des Speicherblocks 63 (2C), Der Wert des Boot-Bereichsbezeichnungsflags,
der bei Durchführung
von Löschung
erhalten wird, ändert
sich von "FFFFFFFF" auf "00000000" und dann erneut auf "FFFFFFFF".
- (2) Schreibe als nächstes
als den Boot-Bereichsbezeichnungsflag des Speicherblocks 63" FFFFFFFE", welches
ein Wert ist, der durch Zurückzählen von "FFFFFFFF"
um 1 erhalten wird (2D),
und Schreibe danach als den Boot-Bereichsbezeichnungsflag des Speicherblocks 64,
ebenso "FFFFFFFE", welches ein Wert ist, der durch Zurückzählen von
"FFFFFFFF" um eins erhalten wird.
- (3) Lösche
dann zuletzt die Speicherblöcke 61 und 62,
um die Daten in der gleichen Weise wie der konventionellen neu einzuschreiben.
In dieser Verarbeitung erfolgt kein Neueinschreiben der Boot-Bereichsbezeichnungsflag
der Speicherblöcke 61 und 62.
-
Als nächstes soll unter Bezugnahme
auf das in 3 gezeigte
Ablaufdiagramm Boot-Bereichbestimmungverarbeitung
beschrieben werden, bei der die CPU 2 ein Paar von Speicherblöcken, wo
ein Boot-Programm gespeichert ist, basierend auf einem Boot-Bereichsbezeichnungsflagwert
bestimmt, welche Verarbeitung durchgeführt wird, nachdem so die Boot-Bereichumschaltverarbeitung
ausgeführt
wurde. Hier sind die Boot-Bereichsbezeichnungsflag
der Speicherblöcke 61 bis 64 jeweils
als Boot-Bereichsbezeichnungsflag A bis D dargestellt.
-
Nachdem die Boot-Bereichumschaltverarbeitung
abgeschlossen ist, liest die CPU 2 zuerst die Werte der
Boot-Bereichsbezeichnungsflag A bis D aus den Speicherblöcken 61 bis 64 aus
(Schritt 101). Dann wird bestimmt, ob der Wert des Boot-Bereichsbezeichnungsflags
C und der des Boot-Bereichsbezeichnungsflags D gleich sind (Schritt
102). Wenn bei Schritt 102 die Werte des Boot-Bereichsbezeichnungsflags
C und des Boot-Bereichsbezeichnungsflags
D nicht gleich sind, was bedeutet, dass die Verarbeitung der Umschaltung
des Boot-Bereichs zu den Speicherblöcken 63 und 64 nicht
normal beendet werden kann, wird bestimmt, dass ein normales Boot-Programm
in den Boot-Bereichen der Speicherblöcke 61 und 62 gespeichert
ist, um Boot-Bezeichnung der Speicherblöcke 61 und 62 durchzuführen (Schritt
107).
-
Wenn bei Schritt 102 bestimmt wird,
dass die Werte des Boot-Bereichsbezeichnungsflags C und des Boot-Bereichsbezeichnungsflags
D die gleichen sind, wird als nächstes
bestimmt, ob die Werte der Boot-Bereichsbezeichnungsflag C und D
"00000000" oder "FFFFFFFF" sind (Schritt 103). Wenn bei Schritt 103
die Werte der Boot-Bereichsbezeichnungsflag C und D "00000000" oder
"FFFFFFFF" sind, wird bestimmt, dass eine Anomalität oder eine
andere in den Speicherblöcken 63 und 64 auftritt,
um Boot-Bezeichnung der Speicherblöcke 61 und 62 durchzuführen (Schritt
107).
-
Hier ist der Grund, warum bestimmt
werden kann, dass eine Anomalität
oder eine andere auftritt, wenn die Werte der Boot-Bereichsbezeichnungsflag C
und D "00000000" oder "FFFFFFFF" sind, dass, wenn augenblickliches
Stromabschalten während Löschverarbeitung
eines bestimmten Speicherblocks auftritt, es äußerst wahrscheinlich ist, dass
gelöschte Daten
"FFFFFFFF" sein werden, und wenn augenblickliches Stromabschalten
während
Voreinschreiben im Verlauf von Löschverarbeitung
auftritt, es äußerst wahrscheinlich
ist, dass gelöschte
Daten "00000000" sein werden.
-
Wenn normale Verarbeitung durchgeführt wird,
ist es aus den folgenden Gründen
dann kaum möglich,
dass die Werte der Boot-Bereichsbezeichnungsflag C und D "00000000"
oder "FFFFFFFF" annehmen.
-
Zuerst soll ein Fall beschrieben
werden, in dem die Werte der Boot-Bereichsbezeichnungsflag C und
D "FFFFFFFF" sind. In einem Fall, wenn das Boot-Programm in einem
Anfangszustand in irgendeinem der Speicherblöcke 61 und 62 gespeichert
ist, und das Boot-Programm in den Speicherblöcken 63 und 64 gespeichert
ist, bedeutet dies, dass die Boot-Bereichumschaltverarbeitung wenigstens
einmal durchgeführt
worden ist, wodurch die Werte der Boot-Bereichsbezeichnungsflag
C und D nicht "FFFFFFFF" bleiben können. Umgekehrt bedeutet, wenn
die Werte der Boot-Bereichsbezeichnungsflag C und D "FFFFFFFF" sind,
dass keine Boot-Bereichumschaltverarbeitung durchgeführt worden
ist, wodurch bestimmt werden kann, dass das Boot-Programm in den
Speicherblöcken 61 und 62 gespeichert
ist.
-
Als nächstes soll ein Fall beschrieben
werden, in dem die Werte der Boot-Bereichsbezeichnungsflag C und
D "00000000" sind. Obwohl es, da der Wert des Boot-Bereichsbezeichnungsflags
um eins jeweils von dem Anfangswert "FFFFFFFF" bei jeder Durchführung der
Boot-Bereichumschaltverarbeitung zurückgezählt wird, zum Beispiel in einem Fall
möglich
ist, dass er zuletzt "00000000" ist, in dem der Boot-Bereichsbezeichnungsflag 32 Bits
aufweist, kann "00000000" nicht erhalten werden, außer wenn
Boot-Bereichumschaltverarbeitung 232 Mal durchgeführt wird,
so dass es in der Praxis unmöglich ist,
"00000000" zu erhalten. Infolgedessen kann, wenn der Wert des Boot-Bereichsbezeichnungsflags "00000000"
ist, bestimmt werden, dass eine Anomalität oder eine andere auftritt.
-
Mit anderen Worten, wenn alle die
den Boot-Bereichsbezeichnungsflag bildenden Bits "0" oder "1" sind,
selbst wenn die Werte von zwei in einer Mehrzahl von Speicherblöcken gespeicherten Boot-Bereichsbezeichnungsflagn
miteinander übereinstimmen,
bestimmt die CPU, dass sie ungültig sind.
-
Wenn bei Schritt 103 die Werte der
Boot-Bereichsbezeichnungsflag C und D weder "00000000" noch "FFFFFFFF"
sind, wird bestimmt, ob der Wert des Boot-Bereichsbezeichnungsflags
A und der des Boot-Bereichsbezeichnungsflags B miteinander übereinstimmen
(Schritt 104). Wenn bei Schritt 104 der Wert des Boot-Bereichsbezeichnungsflags
A und der des Boot-Bereichsbezeichnungsflags B nicht miteinander übereinstimmen,
da die Verarbeitung der Umschaltung eines Boot-Bereichs zu den Speicherblöcken 61 und 62 nicht
normal beendet wird, wird bestimmt, dass ein normales Boot-Programm
in den Benutzerbereichen der Speicherblöcke 61 und 62 gespeichert
ist, um Boot-Bezeichnung der Speicherblöcke 63 und 64 durchzuführen (Schritt
108).
-
Wenn bei Schritt 104 bestimmt wird,
dass der Wert des Boot-Bereichsbezeichnungsflags A und der des Boot-Bereichsbezeichnungsflags
B miteinander übereinstimmen,
wird als nächstes
bestimmt, ob die Werte des Boot-Bereichsbezeichnungsflags A und des
Boot-Bereichsbezeichnungsflags B "00000000" sind oder nicht (Schritt
105). Wenn bei Schritt 105 die Werte der Boot-Bereichsbezeichnungsflag
A und B "00000000" sind, wird bestimmt, dass eine Anomalität oder eine
andere in den Speicherblöcken 61 und 62 aus
dem selben Grunde wie oben beschrieben auftritt, wodurch Boot-Bezeichnung
der Speicherblöcke 63 und 64 (Schritt
108) durchgeführt
wird.
-
Wenn bei Schritt 105 die Werte der
Boot-Bereichsbezeichnungsflag A und B nicht "00000000" sind, wird
dann bestimmt, ob die Werte der Boot-Bereichsbezeichnungsflag A
und B größer als
die Werte der Boot-Bereichsbezeichnungsflag C und D (Schritt 105)
sind. Wenn bei Schritt 105 die Werte der Boot-Bereichsbezeichnungsflag
A und B größer als die
Werte der Boot-Bereichsbezeichnungsflag C und D sind, wird bestimmt,
dass das Boot-Programm in den Benutzerbereichen der Speicherblöcke 63 und 64 gespeichert
ist, um Boot-Bezeichnung der Speicherblöcke 63 und 64 durchzuführen (Schritt 108).
Wenn umgekehrt bei Schritt 105 die Werte der Boot-Bereichsbezeichnungsflag
A und B kleiner als die Werte der Boot-Bereichsbezeichnungsflag
C und D sind, wird bestimmt, dass das Boot-Programm in den Benutzerbereichen
der Speicherblöcke 61 und 62 gespeichert
ist, wodurch Boot-Bezeichnung der Speicherblöcke 61 und 62 durchgeführt wird
(Schritt 107).
-
Die vorhergehend beschriebene Verarbeitung
versetzt den Einzelchip-Mikrocomputer der vorliegenden Ausführungsform
in die Lage, einen Speicherblock zu spezifizieren, in dem ein Boot-Programm
gespeichert ist, um das System von dem Boot-Programm ohne Fehler
zu starten, selbst wenn augenblickliches Stromabschalten zu irgendeiner Zeit
während
Selbstprogrammierung erfolgt.
-
In dem in 3 gezeigten Ablaufdiagramm wird der Vergleich
zwischen dem Wert des Boot-Bereichsbezeichnungsflags und "00000000"
oder "FFFFFFFF" durchgeführt,
welche Vergleichsverarbeitung die Möglichkeit reduziert, dass die
Werte der beiden Boot-Bereichsbezeichnungsflag
unbestimmt werden, um miteinander zufällig aufgrund von augenblicklichem
Stromabschalten oder dergleichen überein zu stimmen.
-
Es soll eine Beschreibung in Bezug
zu einem Fall angeführt
werden, zum Beispiel, in dem im Anfangszustand des in 1 gezeigten Einzelchip-Mikrocomputers
das Boot- Programm
nur in dem Benutzerbereich des Speicherblocks 61 getrennt
von dem Benutzerbereich des Speicherblocks 62 gespeichert ist.
Wenn in einem solchen Fall die Boot-Bereichumschaltverarbeitung nie durchgeführt worden
ist, weisen alle Werte der Boot-Bereichsbezeichnungsflag
A bis D den Anfangswert "FFFFFFFF" auf. Wenn Selbstprogrammierverarbeitung
von diesem Zustand durchgeführt
wird, um den Inhalt des Speicherblocks 62 neu einzuschreiben,
wird, wenn augenblickliches Stromabschalten auftritt, bevor das
Neueinschreiben des Speicherblocks 62 abgeschlossen ist,
der Wert des Boot-Bereichsbezeichnungsflags B des Speicherblocks 62 ein
unbestimmter Wert.
-
In diesem Fall fördert die Bezeichnung der Speicherblöcke 63 und 64 als
einen Boot-Bereich aus
dem Grunde, dass die Werte der Boot-Bereichsbezeichnungsflag C und
D gemeinsam "FFFFFFFF" sind, fehlerhaften Betrieb, da das Boot-Programm
in der Praxis in dem Benutzerbereich des Speicherblocks 61 gespeichert
ist. Zum Verhindern einer solchen Situation werden die Werte der
Boot-Bereichsbezeichnungsflag C und D und "FFFFFFFF" verglichen,
um die Speicherblöcke 61 und 62 sogar
in einem solchen Fall als einen Boot-Bereich zu bezeichnen.
-
Da in dem Einzelchip-Mikrocomputer
der vorliegenden Ausführungsform
die Boot-Bereichsbezeichnungsflag des gleichen Inhalts in einer
Mehrzahl von Bereichen gespeichert sind, die nicht gleichzeitig
gelöscht
werden können,
selbst wenn augenblickliches Stromabschalten auftritt und dazu führt, dass
einer der Boot-Bereichsbezeichnungsflag einen unbestimmten Wert
aufweist, wird der Wert des anderen Boot-Bereichsbezeichnungsflags
auf einem normalen Wert gehalten. Deshalb führt die Bestimmung, ob zwei
Boot-Bereichsbezeichnungsflag übereinstimmen
oder nicht, zur Bestimmung, ob der Boot-Bereichsbezeichnungsflag
gültig
ist oder nicht, wodurch fehlerhafter Betrieb der Bezeichnung eines Speicherblocks
als einen Boot-Bereich verhindert wird, in dem tatsächlich kein
Boot-Programm gespeichert ist.
-
Es soll zum Beispiel betrachtet werden, wenn
während
Löschverarbeitung
der Speicherblöcke 63 und 64 augenblickliches
Stromabschalten auftritt, wodurch die Daten in den Speicherblöcken 63 und 64 unbestimmt
werden. Selbst wenn in diesem Fall einer der Boot-Bereichsbezeichnungsflag
der Speicherblöcke 63 und 64 einen
kleineren Wert als "FFFFFFFF" aufweist, außer wenn der Wert des anderen
Boot-Bereichsbezeichnungsflags den gleichen Wert aufweist, wird
keiner der Speicherblöcke 63 und 64 fehlerhaft
als ein Boot-Bereich bezeichnet. Die Wahrscheinlichkeit, dass die
Werte der beiden Boot-Bereichsbezeichnungsflag zufällig miteinander übereinstimmen,
beträgt
1/232 in einem Fall, in dem der Boot-Bereichsbezeichnungsflag 32 Bits
aufweist, was zu gering ist, um tatsächlich aufzutreten.
-
Ferner, auch wenn augenblickliches
Stromabschalten während
Löschverarbeitung
der Speicherblöcke 61 und 62 erfolgt,
wodurch die Daten in den Speicherblöcken 61 und 62 wie
in 2F gezeigt unbestimmt
werden, kann fehlerhafter Betrieb in der Praxis aus dem selben Grunde
nicht auftreten.
-
Obwohl die vorliegende Ausführungsform unter
Bezugnahme auf einen Fall beschrieben wurde, in dem die Anzahl von
Speicherblöcken
zur Vereinfachung der Beschreibung vier ist, ist die vorliegende
Erfindung nicht darauf begrenzt und die Anzahl von Speicherblöcken sollte
wenigstens nicht weniger als vier sein, damit die vorliegende Erfindung angewendet
werden kann. In diesem Fall ist es erforderlich, dass Boot-Bereichsbezeichnungsflag
des gleichen Inhalts in einer Mehrzahl von Speicherblöcken gespeichert
werden.
-
Außerdem, obwohl in der vorliegenden
Ausführungsform
ein Speicherbereich in vier Speicherblöcke unterteilt ist, von denen
jeder Speicherblock weiter in einem Bereich zum Speichern eines Boot-Bereichsbezeichnungsflags
und einen Benutzerbereich zum Speichern von Boot-Bereichsbezeichnungsflagn
des gleichen Inhalts in zwei verschiedenen Bereichen unterteilt
ist, kann der gleiche Effekt durch eine jegliche Anordnung zum Speichern
von Boot-Bereichsbezeichnungsflagn des gleichen Inhalts in nicht
weniger als zwei Bereichen erhalten werden, die nicht gleichzeitig
gelöscht
werden können.
-
Wie im vorhergehenden beschrieben
ist, kann gemäß der vorliegenden
Erfindung, da Boot-Bereichsbezeichnungsflag des gleichen Inhalts in
einer Mehrzahl von Speicher blöcken
gespeichert sind, die nicht gleichzeitig gelöscht werden können, selbst
wenn ein augenblickliches Stromabschalten während der Boot-Bereichumschaltverarbeitung
bei Selbstprogrammierung auftritt, ein Speicherblock spezifiziert
werden, in dem ein Boot-Programm
gespeichert ist, um das System von dem Boot-Programm zu starten.
-
Obwohl die Erfindung unter Bezugnahme
auf eine exemplarische Ausführungsform
derselben beschrieben wurde, sollte durch die Fachleute verstanden
werden, dass das Vorhergehende und zahlreiche andere Änderungen,
Weglassungen und Hinzufügungen
darin und daran vorgenommen werden können, ohne vom Geist und Umfang
der vorliegenden Erfindung abzuweichen. Deshalb sollte die vorliegende
Erfindung nicht als auf die oben ausgeführte spezielle Ausführungsform
begrenzt verstanden werden, sondern soll alle möglichen Ausführungsformen, die
innerhalb eines eingeschlossenen Umfangs realisiert werden, und Äquivalente
derselben in Bezug zu dem in den anliegenden Ansprüchen ausgeführten Merkmal
einschließen.