-
Copyright Hinweis gemäß 37 C.F.R.
1.71 (e)
-
Ein
Teil der Offenbarung dieser Patentschrift enthält Material, welches Gegenstand
eines Copyright-Schutzes ist. Der Inhaber des Copyrights hat keine
Einwände
gegen die Wiedergabe dieser Patentschrift oder der Patentoffenbarung
durch Kopien, so wie sie in der Patentakte des Patentamts oder in
dessen Aufzeichnungen erschienen, behält sich jedoch im übrigen jegliche
Rechte aufgrund von Copyright vor.
-
Hinweis auf verwandte
Anmeldungen
-
Die
vorliegende Erfindung bezieht sich auf die internationale Anmeldung
Nr. PCT/US96/17302 mit dem Titel PROCESSOR WITH EMBEDDED IN-CIRCUIT
PROGRAMMING STRUCTURES, eingereicht am 28. Oktober 1996 durch die
Anmelder Macronix International Co. Ltd. für sämtliche Staaten mit Ausnahme
der Vereinigten Staaten und Albert C. Sun, Chee H. Lee und Chang
L. Cheng für
die Vereinigten Staaten.
-
HINTERGRUND
-
Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf integrierte Schaltkreise,
welche nicht-flüchtigen
Speicher zum Speichern von Sequenzen von Befehlen bzw. Anweisungen
für die
Ausführung
durch einen Mikrocontroller des integrierten Schaltkreises haben,
und genauer gesagt auf Techniken, um zu erreichen, daß eine schaltkreisinterne
Programmierung aktualisiert wird und gespeicherte Sequenzen von
Befehlen modifiziert werdeb.
-
Verwandter Stand der Technik
-
Es
sind bereits Mikrocontroller von integrierten Schaltkreisen entwickelt
worden, die Arrays aus nicht-flüchtigem
Speicher auf dem integrierten Schaltkreis umfassen, um Befehlssequenzen
zu speichern, die durch den Mikrocontroller ausgeführt werden
sollen. Die Befehlssequenzen werden in einem Nur-Lese-Speicher (ROM)
gespeichert, der während
der Herstellung der Einrichtung programmiert werden muß und der
nicht aktualisiert werden kann. Nach einem alternativen Ansatz werden
die Befehle in einem EPROM-Array gespeichert. Diese Einrichtungen
erfordern jedoch eine spezielle Hardware, um das EPROM-Array zu
programmieren, bevor die Einrichtung in dem Schaltkreis angeordnet
wird. In anderen Systemen wird ein EEPROM-Speicher für das Speichern
von Befehlen verwendet. Ein EEPROM hat den Vorteil, daß er wesentlich
schneller als ein EPROM programmiert werden kann und daß er im
laufenden Betrieb modifiziert werden kann. Nach einem weiteren Ansatz
wird ein Flash-Speicher verwendet, um Befehle zu speichern, was
eine höhere
Dichte und höhere
Geschwindigkeit beim Neuprogrammieren des nicht-flüchtigen
Speichers ermöglicht.
Wenn eine Einrichtung einen wiederprogrammierbaren, nicht-flüchtigen
Speicher, wie zum Beispiel einen EEPROM oder einen Flash-Speicher
mit einem Mikrocontroller kombiniert, so kann die Einrichtung neu
programmiert werden, während
sie sich in einem Schaltkreis befindet, was eine schaltkreisinterne
Programmierung auf der Basis von interaktiven Algorithmen ermöglicht.
-
Die
Fähigkeit,
Befehlssätze
und Daten in eine entfernt gelegene Einrichtung interaktiv herunterzuladen,
kann in einer Netzwerkumgebung sehr wertvoll sein. Beispielsweise
kann eine Firma die Ausrüstung
eines Kunden warten bzw. pflegen, ohne daß es erforderlich ist, daß der Kunde
die Ausrüstung
zu einem Dienstleistungszentrum bringt. Statt dessen kann die Firma
Diagnosefunktionen ausführen,
indem sie die Fähigkeit der
schaltkreisinternen Programmierung der Ausrüstung des Kunden über einen
Kommunikationskanal, wie zum Beispiel das Internet oder Telefonleitungen,
hinweg nutzt. Auf diese Weise können
Softwarekorrekturen in die Ausrüstung
des Kunden heruntergeladen werden, und die Ausrüstung kann mit einem korrigierten
oder aktualisierten Code wieder aktiviert werden.
-
Beispielhafte
Einrichtungen nach dem Stand der Technik, welche diese Fähigkeit
aufweisen, umfassen den AT89S8252 Mikrocontroller, der von Atmel,
San Jose, Kalifornien hergestellt wird, und den P89CE558 Einzelchip-Mikrocontroller,
der von Philips Semiconductors in Eindhoven, Niederlande, hergestellt
wird. Gemäß der Architektur
des Philips P89CE558 Mikrocontrollers wird ein Masken-ROM für den schaltkreisintern programmierten
(ICP) Satz von Befehlen verwendet, welche durch den Mikrocontroller
benutzt werden, um den Flash-Speicher auf dem Chip zu aktualisieren.
Demnach erfordert der Philips Mikrocontroller ein spezielles Masken-ROM-Modul,
um festgelegten ICP-Code für
jede individuelle Umgebung zu speichern. Um den ICP-Code für eine spezielle
Umgebung anzupassen, muß die
Umgebung vor der Herstellung der Einrichtung vollständig bekannt
sein, so daß der
Masken-ROM in geeigneter Weise codiert werden kann. Weiterhin ist
der ICP-Kommunikationskanal
auf einen seriellen RS232-Anschluß in dem Philips Mikrocontroller
festgelegt. Dies begrenzt die Verwendung des Mikrocontrollers auf
einen relativ schmalen Anwendungsbereich und macht es schwierig,
die ICP-Funktion in einer dynamischen Kommunikationsumgebung zu
nutzen, in welcher der serielle Anschluß möglicherweise nicht gut zu dem
Kommunikationskanal paßt, über welchen
die aktualisierte Software bereitgestellt wird.
-
Gemäß der Architektur
des Atmel AT89S8252 Mikrocontrollers wird ein speziell darauf abgestimmter, serieller,
peripherer Schnittstellenanschluß (SPI-Anschluß) auf dem
Chip verwendet, um den Flash-Speicher zu aktualisieren. Dieser SPI-Anschluß hat den
Nachteil, daß er
mit einer unflexiblen Programmierlogik implementiert ist; eine Modifizierung
der schaltkreisinternen Programmiertechnik kann nicht erreicht werden
wegen der Unflexibilität
des SPI-Anschlusses. Der Atmel-Chip hat weitere Nachteile; dem Chip
muß komplizierte Hardware
hinzugefügt
werden für
den Handschlag mit dem ICP-Auslöser
und für
das Emulieren der Lösch-/Programmier-/Verifizier-Wellenformen für den Flash-Speicher.
Der SPI-Bus ist nicht immer die beste Wahl für diverse Systemanwendungen;
eine zusätzliche
Systemlogik ist erforderlich, um die ursprünglichen Reset(Rückstell-)Schaltkreise
zu modifizieren, die durch die schaltkreisinternen Programmieralgorith men
verwendet werden, und es muß eine
komplizierte SPI-Treiber- und -Empfängerlogik an bzw. auf dem Chip
angebracht werden.
-
Was
benötigt
wird, ist eine Architektur für
eine schaltkreisinterne Programmierung, welche die Flexibilität des schalkreisinternen
Programmierungsvorgangs beibehält,
während
sie den Aufwand bzw. die Menge an Siliziumplatz bzw. Chipplatz,
welcher durch den Flash-Speicher, der zum Implementieren der schaltkreisinternen
Programmierfunktionen besetzt wird, minimal macht.
-
Die
US-5,276,839 offenbart einen EEPROM-Programmierschaltkreis, welcher
einen Bootstrap-ROM, einen UART-Kommunikationsanschluß und ein
Eccles-Jordan Flip-Flop-Schaltsystem aufweist. Die Elemente des
Programmierschaltkreises sind elektrisch über einen zentralen Datenbus
mit dem EEPROM verbunden. Der Bootstrap-ROM speichert Bootstrap-Code,
der allgemein bzw. ursprünglich
und festgelegt ist. Der Bootstrap-ROM enthält Programmcode, der die Programme
bildet, welche verwendet werden, um den EEPROM zu programmieren.
-
ZUSAMMENFASSUNG
-
Ausführungsformen
der vorliegenden Erfindung stellen eine Architektur für ein Mikrocontrollersystem auf
einem integrierten Schaltkreis bereit, welches eine schaltkreisinterne
Programmierung unterstützt.
Dieses System behält
die Flexibilität
des schaltkreisinternen Programmierprozesses bei, indem es einiges
von dem schaltkreisinternen Programmier(ICP-)Code in einem Flash-Speicher
speichert, wo er leicht unter Verwendung des schaltkreisinternen
Programmiervorgangs verändert
werden kann und speichert Teile des IPC-Codes, die nicht modifiziert
werden müssen,
in hinsichtlich des Platzes effizienteren Masken-ROM-Zellen auf
dem integrierten Schaltkreis. Insbesondere wird ICP-Code, der die
Kommunikation behandelt, die bei dem schaltkreisinternen Programmiervorgang
involviert ist, in den Flash-Speicher gespeichert, so daß er leicht
modifiziert werden kann, um eine Anpassung an eine Anzahl unterschiedlicher
Kommunikationsformate und -protokolle vornehmen zu können. Codes
zur Implementieren der Lösch-,
Programmier- und Verifizierteile des schaltkreisinternen Programmiervorgangs
werden in den platzsparenden Masken-ROM-Zellen auf dem integrierten Schaltkreis
aufbewahrt.
-
Das
Flash-Speicherarray in Ausführungsformen
der vorliegenden Erfindung wird weiter vereinfacht durch Implementieren
der Zustandsmaschine (des endlichen Automaten) für die Lösch-, Programmier- und Verifiziertunktionen
auf dem Flash-Speicher in Form von Software, welche in dem Masken-ROM
gespeichert ist. Zeitablauffunktionen für die Lösch-, Programmier- und Verifizierfunktionen,
die typischerweise in Hardware implementiert sind, sind ebenfalls
in Software implementiert, die in dem Masken-ROM gespeichert ist.
Die Auslegung des Flash-Speichers in der vorliegenden Erfindung
wird dadurch vereinfacht und die Menge an Siliziummaterial bzw.
Platz, welcher durch den Flash-Speicher besetzt wird, wird entsprechend
vermindert. Auf diese Weise behält
die schaltkreisinterne Programmierarchitektur gemäß der vorliegenden
Erfindung in effektiver Weise eine Flexibilität in dem schaltkreisinternen
Programmiersystem, während
sie die Anforderung an Siliziummaterial, welches durch das schaltkreisinterne
Programmiersystem besetzt wird, reduziert.
-
Gemäß einem
ersten Aspekt stellt die Erfindung eine Vorrichtung für die schaltkreisinterne
Programmierung eines integrierten Schaltkreises bereit, welche aufweist:
einen Prozessor auf dem integrierten Schaltkreis, der Befehle ausführt, einen
externen Anschluß auf
dem integrierten Schaltkreis, über
welchen Daten von einer externen Quelle empfangen werden, ein erstes
Speicherarray, welches nicht-flüchtige
Speicherzellen auf dem integrierten Schaltkreis aufweist, die Anweisungen
bzw. Befehle für
die Ausführung
durch den Prozessor speichern, einschließlich eines Satzes von Befehlen
für die
Steuerung der Übertragung
von Befehlen in den integrierten Schaltkreis von der externen Quelle
durch den externen Anschluß,
und ein zweites Speicherarray auf dem integrierten Schaltkreis,
welches Befehle für
die Ausführung
durch den Prozessor speichert, einschließlich eines Satzes von Befehlen
zum Steuern der schaltkreisinternen Programmierschritte des Löschens,
Programmierens und Verifizierens der Befehlen in dem ersten Speicherarray.
-
Gemäß einer
Ausführungsform
weist das zweite Speicherarray eine Mehrzahl nicht-flüchtiger
Masken-ROM-Zellen auf.
-
Gemäß einer
weiteren Ausführungsform
werden die Lösch-,
Programmier- und Verifiziervorgänge während des
schaltkreisinternen Programmierprozesses durch Software bewirkt,
welche in den Masken-ROM-Zellen in dem zweiten Speicherarray gespeichert
ist.
-
Gemäß einer
weiteren Ausführungsform
wird der Zeitablauf der Lösch-,
Programmier- und Verifiziervorgänge
des schaltkreisinternen Programmierprozesses bewerkstelligt durch
den Prozessor, welcher Software ausführt, die in Masken-ROM-Zellen
in dem zweiten Speicherarray gespeichert ist.
-
Gemäß einer
weiteren Ausführungsform
steuert der Prozessor die Lösch-,
Programmier- und Verifiziervorgänge,
die in dem schaltkreisinternen Programmierprozeß involviert sind, durch Schreiben
von Befehlen in ein Steuerregister, welches mit dem ersten Speicherarray
verbunden ist.
-
Gemäß einer
weiteren Ausführungsform
enthält
die Vorrichtung für
die schaltkreisinterne Programmierung weiterhin einen Überwachungszeitgeber,
der mit dem Prozessor verbunden ist und welcher eine Wiedererholung
von Blockierungsfehlern während
der Ausführung
von schaltkreisinternen Programmierbefehlen durch den Prozessor
auslöst.
-
Gemäß einer
weiteren Ausführungsform
ist der externe Anschluß, über welchen
Daten von einer externen Quelle empfangen werden, so konfigurierbar,
daß er
entweder als paralleler oder als serieller Anschluß arbeitet.
-
Gemäß einer
weiteren Ausführungsform
weist das erste Speicherarray eine Mehrzahl von getrennt löschbaren
Blöcken
nicht-flüchtiger
Speicherzellen auf.
-
Gemäß noch einer
weiteren Ausführungsform
enthält
der integrierte Schaltkreis eine Mehrzahl von Anschlüssen an
externe Datenquellen, wie zum Beispiel einen oder mehrere serielle
Anschlüsse,
einen oder mehrere parallele Anschlüsse und potentiell einen oder
mehrere spezielle Kommunikationsanschlüsse. Der Anschluß in der
Mehrzahl von Anschlüssen,
der für
das Empfangen der schaltkreisinternen Programmierbefehle von einer
externen Quelle verwendet wird, wird durch Befehle in dem Code der
schaltkreisinternen Programmierung selbst festgelegt und kann demnach
dynamisch geändert
werden.
-
Gemäß einer
weiteren Ausführungsform
enthält
der integrierte Schaltkreis einen Datenpfad für das Programmieren und Verifizieren
des ersten Speicherarrays und optional auch des zweiten Speicherarrays,
unabhängig
von den schaltkreisinternen Programmierbefehlen. Demnach kann durch
Verwendung von I/O-Anschlüssen
oder dergleichen im Multiplex-Betrieb ursprüngliche Software während der
Herstellung oder vor dem Montieren des Chips in dem System in die
Einrichtung geladen werden.
-
Gemäß einem
zweiten Aspekt stellt die Erfindung ein Verfahren für die schaltkreisinterne
Programmierung eines integrierten Schaltkreises einschließlich eines
Prozessors und eines externen Anschlusses bereit, welches aufweist:
Bereitstellen eines ersten Speicherarrays, welches nichtflüchtige Speicherzellen
aufweist, sowie eines zweiten Speicherarrays auf dem integrierten
Schaltkreis bereit, Empfangen eines schaltkreisinternen Programmierbefehls
von einem Initiator bzw. Auslöser,
der außerhalb
des integrierten Schaltkreises liegt, in Reaktion auf den schaltkreisinternen
Programmierbefehl Verwenden des Prozessors, um einen Satz von Befehlen
auszuführen,
die in dem zweiten Speicherarray gespeichert sind, um die schaltkreisinternen
Programmierschritte des Löschens,
Programmierens und Verifizierens von Befehlen in dem ersten Speicherarray zu
steuern, und Verwenden des Prozessors, um einen Satz von Befehlen,
die in dem ersten Speicherarray gespeichert sind, auszuführen, um
die Übertragung
eines Satzes von Befehlen in den integrierten Schaltkreis aus der
externen Quelle durch den externen Anschluß zu steuern.
-
Andere
Aspekte und Vorteile der vorliegenden Erfindung kann man bei Betrachtung
der Figuren, der Beschreibung und der folgenden Ansprüche erkennen.
-
BESCHREIBUNG DER FIGUREN
-
1 ist
ein Blockdiagramm eines Systems für die schaltkreisinterne Programmierung
eines integrierten Schaltkreises gemäß einem Aspekt der vorliegenden
Erfindung.
-
2 ist
ein Diagramm des Adreßraums,
welcher Befehle enthält,
die durch den Mikrocontroller 100 gemäß einem Aspekt der vorliegenden
Erfindung ausgeführt
werden sollen.
-
3 ist
ein Diagramm, welches zeigt, wie die vorliegende Erfindung in ein
System integriert wird, welches einen Kommunikationskanal und einen
schaltkreisinternen Auslöser 340 für die Programmierung
gemäß einem
Aspekt der vorliegenden Erfindung enthält.
-
4A ist
der erste Teil eines Flußdiagramms
des schaltkreisinternen Programmiervorgangs gemäß einem Aspekt der vorliegenden
Erfindung.
-
4B ist
ein zweiter Abschnitt eines Flußdiagramms
des schaltkreisinternen Programmierprozesses gemäß einem Aspekt der vorliegenden
Erfindung.
-
4C ist
der dritte Teil eines Flußdiagramms
des schaltkreisinternen Programmierprozesses gemäß einem Aspekt der vorliegenden
Erfindung.
-
BESCHREIBUNG
-
Die
folgende Beschreibung wird präsentiert,
um irgendwelche Fachleute auf dem Gebiet in die Lage zu versetzen,
die Erfindung nachzuarbeiten und zu gebrauchen, und sie wird im
Kontext einer speziellen Anwendung und deren Erfordernisse gegeben.
Verschiedene Modifikationen der bevorzugten Ausführungsformen liegen für Fachleute
klar auf der Hand, und die generellen Prinzipien, die hier definiert
werden, können auf
andere Ausführungsformen
und Anwendungen angewendet werden, ohne vom Geist und Schutzumfang der
Erfindung abzuweichen. Demnach soll die vorliegende Erfindung nicht
auf die dargestellte Ausführungsform
beschränkt
werden, sondern ihr soll vielmehr der weitest mögliche Schutzumfang zugestanden
werden, der mit den Prinzipien und Merkmalen, die hier offenbart
werden, konsistent ist.
-
1 ist
ein Blockdiagramm eines Systems für die schaltkreisinterne Programmierung
gemäß einem Aspekt
der vorliegenden Erfindung. Alle Bestandteile, die in 1 dargestellt
sind, liegen auf einem integrierten Schaltkreis. Der Mikrocontroller 100 führt Befehle
aus dem Masken-ROM-Modul 160 und
dem mehrfach Zeitprogrammiermodul 140 aus. Das mehrfache
Zeitprogrammiermodul 140 ist ein vereinfachtes Flash-Speicherarray,
welches in eine Mehrzahl unabhängig
löschbarer
Blöcke
aus Flash-Speicherzellen aufgeteilt ist. Das mehrfache Zeitprogrammiermodul 140 enthält auch
Zustandsbits und einen Bootvektor 146, die direkt mit dem
Mikrocontroller 100 verbunden sind. Das mehrfache Zeitprogrammiermodul 140 enthält auch
Code, um das ICP-Kommunikationssteuerprogramm 142 zu
implementieren, ebenso wie Benutzercode 144, um benutzerdefinierte
Funktionen für
den Mikrocontroller 100 zu implementieren. Der Mikrocontroller 100 enthält Verbindungen
bzw. Anschlüsse
an Einrichtungen, die außerhalb
des integrierten Schaltkreises liegen, über I/O-Anschlüsse 120,
Interrupt-Leitungen 122 und andere Signale 124.
Die Interrupt-Leitungen 122 und
anderen Signale 124 werden allgemein verwendet, um Kommunikationen
durch I/O-Anschlüsse 120 zu
koordinieren und zu synchronisieren. Der Mikrocontroller 100 enthält zusätzlich einen
Zeitgeber 105, der Zeitablauffunktionen für den Mikrocontroller 100 implementiert.
Ein Überwachungszeitgeber 110 ist
mit dem Mikrocontroller 100 verbunden und wird verwendet,
um Blockierungen bzw. Sperren bei dem Betrieb des Mikrocontrollers 100 zu
erfassen.
-
Der
Mikrocontroller 100 gibt eine Befehlsadresse 125 aus,
die in die Adreßeingänge sowohl
des Masken-ROM-Moduls 160 als auch des mehrfachen Zeitprogrammiermoduls 140 eingegeben
wird. die Befehlsadresse 126 injiziert Befehle innerhalb
des Masken-ROMs 160 und des mehrfachen Zeitprogrammiermoduls 140.
Befehle aus dem Masken-ROM-Modul 160 und dem mehrfachen
Zeitprogrammiermodul 140 werden durch den Multiplexer (MUX) 130 zugeführt, welcher
wahlweise diese Befehle auf den Mikrocontroller 100 schaltet.
Zusätzlich
werden die Statusbits und der Bootvektor 146, der ein Teil
des mehrfachen Zeitprogrammiermoduls 140 ist, in den Mikrocontroller 100 eingegeben.
-
In
einer bevorzugten Ausführungsform
der vorliegenden Erfindung ist der Bootvektor kein Teil des Flash-Speicherarrays
innerhalb des mehrfachen Zeitprogrammiermoduls 140. Statt
dessen ist er ein separates Register innerhalb des mehrfachen Zeitprogrammiermoduls 140,
welches wahlweise von dem mehrfachen Zeitprogrammiermodul 140 ausgegeben
wird, wenn eine bestimmte Adresse und bestimmte Steuersignale in das
mehrfache Zeitprogrammiermodul 140 eingegeben werden.
-
Der
Mikrocontroller 100 steuert den Betrieb des mehrfachen
Zeitprogrammiermoduls 140 über Flash-Steuerregister 150.
Die Flash-Steuerregister 150 umfassen ein Steuerregister 152 und
ein Zeitablaufregister 154. Der Mikrocontroller 100 schreibt
Steuercodes in Flash-Steuerregister 150, um die Lösch-, Programmier-
und Verifizierfunktionen des schaltkreisinternen Programmiervorgangs
für Codes
innerhalb des mehrfachen Zeitprogrammiermoduls 140 zu steuern.
Steuercodes für
eine bevorzugte Ausführungsform
der vorliegenden Erfindung sind in den Tabellen 1 und 2 wiedergegeben.
-
Tabelle
1 enthält
eine Auflistung der Bitmuster, welche in die Steuerregister 152 eingegeben
werden, um Lösch-,
Programmier- und Verifizierfunktionen für das mehrfache Zeitprogrammiermodul 140 zu
steuern.
-
-
Tabelle
2 enthält
eine Auflistung der Funktionen, die durch verschiedene Bits in dem
Zeitablaufregister 154 implementiert werden. Durch Manipulieren
dieser Bits erzeugt der Mikrocontroller 100 die Wellenformen, die
für Lösch-, Programmier-,
Verifizier- und Lesevorgänge
des Flash-Speichers
erforderlich sind.
-
-
Das
Masken-ROM-Modul 160 enthält Codes zum Implementieren
des Steuerprogramms 162 für das Löschen, Programmieren und Verifizieren.
Dies umfaßt
Codes, um die Abfolge und den Zeitablauf der Lösch-, Programmier- und Verifiziervorgänge auszuführen, die
mit der schaltkreisinternen Programmierung verknüpft sind. Eine Auflistung dieses
Typs von Code für
eine bevorzugte Ausführungsform
der Erfindung erscheint in Tabelle 3. Tabelle 3 ist eine Code-Auflistung
des 8051-Aufbaus für
Unterprogramme, die in die Lösch-,
Programmier- und Verifizierfunktionen des schaltkreisinternen Programmiersystems
involviert sind.
-
-
-
-
-
Das
Schlüsselverständnis für die vorliegende
Erfindung liegt darin, daß der
schaltkreisinterne Programmiercode in zwei Teile aufgeteilt werden
kann. Teile des Codes, die üblicherweise
modifiziert werden, wie zum Beispiel das schaltkreisinterne Kommunikationssteuerprogramm
für die
Programmierung, das für
jedes unterschiedliche Kommunikationsprotokoll neu konfiguriert
werden muß,
werden in dem Flash-Speicher innerhalb des mehrfachen Zeitprogrammiermoduls 140 gespeichert.
Teile des ICP-Codes, die nicht modifiziert werden müssen, insbesondere
Lösch-,
Programmier- und Verifizierfunktionen, die für die Architektur des mehrfachen
Zeitprogrammiermoduls 140 maßgeschneidert sind, werden
in dem platzeffizienten bzw. platzsparenden Masken-ROM-Modul 160 gespeichert.
-
Gemäß 1 arbeitet
der schaltkreisinterne Programmiervorgang folgendermaßen: der
Mikrocontroller 100 führt
Code aus dem Steuerprogramm 142 der ICP-Kommunikation aus,
welches mit einem ICP-Auslöser
an einem entfernten Ort über
irgendeinen der I/O-Anschlüsse 120 kommuniziert.
Neue Befehle, die in den Benutzercodeabschnitt 144 des
mehrfachen Zeitprogrammiermoduls 140 geladen werden sollen,
werden durch einen der I/O-Anschlüsse 120 in den Mikrocontroller 100 übertragen.
Der Mikrocontroller 100 führt Code in dem Steuerprogramm 162 in
dem Masken-ROM-Modul 160 für das Löschen/Programmieren/Verifizieren aus,
welches weiterhin den neuen Code in den Benutzercodeabschnitt 144 des
mehrfachen Zeitprogrammiermoduls 140 lädt. Der Mikrocontroller 100 arbeitet
in Verbindung mit dem Überwachungszeitgeber 110,
der verwendet wird, um Blockaden bei der Ausführung des schaltkreisinternen
Programmiercodes durch den Mikrocontroller 100 zu erfassen.
Um die neuen Befehle in das mehrfache Zeitprogrammiermodul 140 einzuprogrammieren,
löscht
der Mikrocontroller 100 zuerst einen Teil des mehrfachen
Zeitprogrammiermoduls 140 durch eine Sequenz von Befehlen,
die in das Steuerregister 152 und das Zeitablaufregister 154 geschrieben
werden. Der Mikrocontroller 100 programmiert dann den neuen
Code in das mehrfache Zeitprogrammiermodul 140 über zusätzliche
Befehle, die in das Steuerregister 152 und das Zeitablaufregister 154 geschrieben
werden. Schließlich
verifiziert der Mikrocontroller 100 das Programmieren des
neuen Codes in dem mehrfachen Zeitprogrammiermodul 140 durch
eine Sequenz von Befehlen, die in das Steuerregister 152 und
das Zeitablaufregister 154 geschrieben werden.
-
2 veranschaulicht
den von dem Mikrocontroller 100 gesehenen Adreßraum 200.
Dieser Adreßraum
ist in eine Mehrzahl von unabhängig
löschbaren
Blöcken
des Flash-Speichers, ebenso wie in einen Block des Masken-ROM-Speichers
aufgeteilt. Der Benutzerblock #1 260 erstreckt sich von
der Adresse 0 bis zur Adresse 16K. Der Benutzerblock #2 250 erstreckt
sich von der Adresse 16K bis zur Adresse 32K, der Benutzerblock
#3 240 erstreckt sich von der Adresse 32K bis zur Adresse
48K. Der Benutzerblock #4 230 erstreckt sich von der Adresse
48K zur Adresse 56K. Primärer
Bootcode für
das Herunterladen neuer Benutzercodes 220 ist zwischen
den Adressen 56K und 63K angeordnet. Dieser primäre Bootcode wird während des
Herauffahrens des Systems (boot up) zum Herunterladen neuer Befehle
in den Benutzercodeabschnitt 144 des mehrfachen Zeitprogrammiermoduls 140 verwendet.
Wenn dieser Platz für
primären
Bootcode nicht ausreicht, kann der Benutzerblock #4 230 verwendet
werden, um sekundären
Bootcode zu speichern.
-
Der
Adreßraum
zwischen 63K und 64K enthält
Lösch-/Programmier-/Verifizierunterprogramme 210. Dieser
Abschnitt des Adreßraums 200 liegt
innerhalb des Masken-ROM-Moduls 160. Der andere Abschnitt
des Adreßraums 200 von
0 bis 63K liegt in den Flash-Speicherzellen in dem mehrfachen Zeitprogrammiermodul 140.
Auch wenn diese beiden Teile bzw. Abschnitte des Adreßraums 200 in
unterschiedlichen Speichermodulen residieren bzw. liegen, bilden
sie Teile eines einzelnen Adreßraums 200 für den Mikrocontroller 100.
Befehle aus dem Masken-ROM-Modul 160 und aus dem mehrfachen
Zeitprogrammiermodul 140 werden wahlweise über den
MUX 130 in den Mikrocontroller 100 geleitet bzw.
geschaltet.
-
In
der in 1 dargestellten Ausführungsform ist nur ein einziges
Masken-ROM-Modul 160 und ein einziges mehrfaches Zeitprogrammiermodul 140 dargestellt.
Alternative Systeme enthalten mehr als ein Masken-ROM-Modul und
mehr als ein Modul aus Flash-Speicherzellen, was eine noch größere Flexibilität in der Auslegung
und Implementierung der schaltkreisinternen Programmierbefehle ermöglicht.
-
3 veranschaulicht
die Anwendungsumgebung für
die vorliegende Erfindung. Die Erfindung wird auf einem integrierten
Schaltkreis 310 implementiert, der in dem System 300 angeordnet
ist. Das System 300 weist entweder eine gedruckte Schaltkreisplatine
oder irgendeine andere Systemimplementierung auf. Der integrierte
Schaltkreis 310 enthält
den Mikrocontroller 100, das Masken-ROM-Modul 160 und
das mehrfache Zeitprogrammiermodul 140, ebenso wie andere
Komponenten des in 1 dargestellten ICP-Systems.
Der Mikrocontroller 100 ist mit einer Mehrzahl integrierter
Schaltkreise (ICs) 312, 314 und 316 verbunden.
Eine Brücke 320 zu
dem Kommunikationskanal stellt einen Kanal bereit, über welchen
schaltkreisinterner Programmiercode übertragen wird. Die Brücke zu dem
Kommunikationskanal 320 kann einen einfachen Netzwerkanschluß aufweisen
bzw. aus einem solchen bestehen, oder kann eine zusätzliche
Verbindungslogik enthalten, um das ICP-System für Nicht-ICP-Code transparent
zu machen. Die Funktionalität
der Brücke 320 zu
dem Kommunikationskanal kann modifiziert werden, was es ermöglicht,
daß die
Brücke
zu dem Kommunikationskanal 320 mit diversen ICP-Kommunikationskanälen verbunden
wird, die unterschiedliche Niveaus von Datenraten, Fehlerraten und
Komplexität
haben. Beispielsweise weist in einer Ausführungsform der Kommunikationskanal 330 ein
Internet auf, das ein Internet-Kommunikationsprotokoll
ausführt.
-
Die
Brücke 320 zum
Kommunikationskanal wird über
den Kommunikationskanal 330 an einen ICP-Initiator 340 angeschlossen,
wie zum Beispiel einen Personal Computer oder eine Workstation.
Der ICP-Initiator 340 wird über einen Kommunikationskanal 345 mit
einer in großem
Maßstab
ausgelegten Speichereinrichtung 350 verbunden. Der ICP-Auslöser bzw.
-Initiator 340 kann in einer Vielfalt von Arten mit dem
Mikrocontroller 100 verbunden sein. In einer Ausführungsform
ist ein ICP-Initiator 340 an
der Seite des World Wide Web, auf welche über das Internet auf dem Kommunikationskanal 330 zugegriffen
wird. Alternativ wirkt der ICP-Initiator 340 als der Initiator über ein
Verbindungsglied eines Einwahlmodems. In noch einer anderen Ausführungsform ist
der Kommunikationskanal 330 ein Kommunikationsbus in einem
Personal Computersystem und die schaltkreisinterne Software wird über den
Bus 330 geladen. In dieser Ausführungsform können Aktualisierungen
des Systems 300 auf Floppy Disks an Endbenutzer verteilt
oder auf andere Weise durch den ICP-Initiator 340 geladen werden.
-
In
einigen Anwendungen ist die Brücke 320 zum
Kommunikationskanal nicht erforderlich. Gemäß 1 ist in
einigen Anwendungen die in dem ICP-Kommunikationssteuerprogramm 142 enthaltene
Software für
sich selbst ausreichend, um das ordnungsgemäße Protokoll für ICP-Kommunikationen durch
einen der I/O-Anschlüsse 120 über den
Kommunikationskanal 330 zu implementieren. Dies ermöglicht,
daß einer
der I/O-Anschlüsse 120 eine
direkte Verbindung zu dem Kommunikationskanal 330 herstellt
und damit das Erfordernis der Brücke 320 zum
Kommunikationskanal beseitigt.
-
Die 4A, 4B und 4C enthalten
ein Flußdiagramm
der Vorgänge,
die in den schaltkreisinternen Programmiervorgang involviert sind.
Jede der 4A, 4B und 4C ist
in vier Spalten aufgeteilt. Die erste Spalte, die mit "ICP-Initiator 340" überschrieben ist, gibt die
Aktivitäten
des schaltkreisinternen Programmierinitiators 340 aus,
der in 3 dargestellt ist. Der ICP-Initiator 340 ist
eine Einrichtung, die außerhalb des
integrierten Schaltkreises 320 liegt und die mit den schaltkreisinternen
Programmiersystemen 300 über einen Kommunikationskanal 330 verbunden
ist. Der ICP-Initiator 340 löst den schaltkreisinternen
Programmiervorgang aus und steuert ihn.
-
Die
verbleibenden drei Spalten der 4A, 4B und 4C geben
Aktionen des Mikrocontrollers 100 beim Ausführen unterschiedlicher
Teile des innerhalb des Masken-ROM-Moduls 160 und des mehrfachen Zeitprogrammiermoduls 140 gespeicherten
Codes aus. Die Spalte mit der Überschrift „Benutzercode 144" gibt Aktivitäten des
Mikrocontrollers 100 wieder, während der Benutzercode 144 in
dem mehrfachen Zeitprogrammiermodul 140 ausgeführt wird.
Die Spalte mit der Überschrift „ICP-Kommunikationssteuerprogramm 142" gibt Aktionen des
Mikrocontrollers 100 wieder, während das ICP-Kommunikationssteuerprogramm 142 in
dem mehrfachen Zeitprogrammiermodul 140 ausgeführt wird.
Die Spalte mit der Überschrift „Lösch-/Programmier-/Verifizierungssteuerprogramm 162" gibt die Aktionen
des Mikrocontrollers 100 wieder, während das Lösch-/Programmier-/Verifiziersteuerprogramm 162 in
dem Masken-ROM-Modul 160 ausgeführt wird.
-
Der
schaltkreisinterne Programmiervorgang, wie er in den 4A, 4B und 4C dargestellt
ist, läuft
folgendermaßen
ab. Nach einem System-Reset oder wenn der Überwachungszeitgeber 110 abgelaufen ist
bzw. einen Überlauf
aufweist, tritt der Mikrocontroller 110 in den Zustand 430 ein,
wobei ein Statusbit überprüft wird.
Wenn das Statusbit 0 ist, geht der Mikrocontroller 100 in
den Schritt 420 innerhalb des Benutzercodes 144 über. Wenn
das Statusbit auf 1 gesetzt ist, springt der Mikrocontroller 100 an
die Position, auf welche durch den Bootvektor gezeigt wird, und
führt den
Schritt 440 innerhalb des ICP-Kommunikationssteuerprogramms 142 aus.
-
In
Schritt 420 wartet der Mikrocontroller 100 darauf,
den nächsten
Befehl aus dem ICP-Initiator 340 zu erhalten.
Wenn der ICP-Initiator 340 den Schritt 400 ausführt, übermittelt
er einen Aktualisierungsbefehl an den Mikrocontroller 100.
Dieser Aktualisierungsbefehl wird durch den Mikrocontroller 100 empfangen,
was ihn veranlaßt,
zu Schritt 421 weiterzugehen. In Schritt 421 fragt
der Mikrocontroller 100, ob der empfangene Befehl ein Aktualisierungsbefehl
war. Falls nicht, geht der Mikrocontroller 100 zu Schritt 426 weiter,
in welchem der normale Ablauf des Mikrocontrollers 100 stattfindet
und der Mikrocontroller führt
Nicht-ICP-Benutzercode aus. Das System kehrt dann zu Schritt 420 zurück, um den
nächsten
Befehl aufzunehmen. Wenn der Befehl ein Aktualisierungsbefehl war,
so geht der Mikrocontroller 100 zu Schritt 422 weiter,
in welchem eine „Anforderung für Bestätigung" an den ICP-Initiator 340 gesendet
wird. Nach dem Ausführen
des Schritts 400 geht der ICP-Initiator 340 zu
Schritt 401 weiter, in welchem der ICP-Initiator 340 auf
die Bestätigung
einer Anforderung wartet. Wenn der Befehl für die Anforderung zur Bestätigung empfangen
worden ist, geht der ICP-Initiator weiter zu Schritt 402,
in welchem ein Bestätigungsbefehl
an den Mikrocontrol ler 100 gesendet wird. Der Mikrocontroller 100 empfängt diesen
Bestätigungsbefehl
bei Schritt 423 und geht weiter zu Schritt 445 innerhalb
des ICP-Kommunikationssteuerprogramms 142, in welchem der
Mikrocontroller einen ICP-Bereitschaftsbefehl an den ICP-Initiator 340 sendet.
Nach dem Ausgeben des Bestätigungsbefehls
geht der ICP-Initiator weiter zu Schritt 403, wo der ICP-Initiator 340 auf
den ICP-Bereitschaftsbefehl von dem Mikrocontroller 100 wartet.
-
Wenn
in Schritt 430 das Statusbit auf eins gesetzt war, führt der
Mikrocontroller 100 einen Satz von Schritten aus, um die
ICP-Anforderung in dem ICP-Kommunikationssteuerprogramm 142 zu
bestätigen.
Diese Schritte spiegeln nahezu exakt die Schritte wieder, die verwendet
werden, um die ICP-Anforderung innerhalb des Benutzercodes 144 zu
bestätigen,
wenn das Statusbit auf null gesetzt war. In Schritt 440 wartet
der Mikrocontroller 100 auf den nächsten Befehl von dem ICP-Initiator 340.
Wenn der ICP-Initiator 340 den Schritt 400 ausführt, so überträgt er einen
Aktualisierungsbefehl an den Mikrocontroller 100. Wenn
dieser Aktualisierungsbefehl in Schritt 440 von dem Mikrocontroller 100 empfangen
wird, geht der Mikrocontroller 100 weiter zu Schritt 441,
in welchem der Mikrocontroller 100 feststellt, ob der Befehl
ein Aktualisierungsbefehl war. Falls nicht, geht der Mikrocontroller 100 weiter
zu Schritt 442, in welchem keine Operation (NOOP) stattfindet.
Der Mikrocontroller 100 kehrt dann zu Schritt 440 zurück, um einen
weiteren Befehl zu empfangen.
-
Wenn
der Mikrocontroller 100 in Schritt 441 einen Aktualisierungsbefehl
empfangen hat, so geht er weiter zu Schritt 443, in welchem
der Mikrocontroller 100 einen Befehl einer Bestätigungsanforderung
an den ICP-Initiator 340 übermittelt. Wenn der ICP-Initiator 340 den
Schritt 400 ausgeführt
hat, so geht er weiter zu Schritt 401, wo er auf den Befehl
einer Bestätigungsanforderung
wartet. Nach dem Empfang des Befehls zur Bestätigungsanforderung von dem
Mikrocontroller 100 geht der ICP-Initiator 340 weiter
zu Schritt 402, wo er einen Bestätigungsbefehl an den Mikrocontroller 100 übermittelt.
Nach dem Ausführen
des Schritts 443 geht der Mikrocontroller 100 weiter
zu Schritt 444, wo er auf den Bestätigungsbefehl von dem ICP-Initiator 340 wartet.
Nach Empfang des Bestätigungsbefehls
geht der Mikrocontroller 100 weiter zu Schritt 445,
in welchem der Mikrocontroller 100 einen „ICP-Bereitschafts"-Befehl an den ICP-Initiator 340 übermittelt.
Nach dem Ausführen des
Schritts 402 geht der ICP-Initiator 340 weiter
zu Schritt 403, wo er auf einen ICP-Bereitschaftsbefehl
von dem Mikrocontroller 100 wartet.
-
An
diesem Punkt ist der Bestätigungsvorgang
für den
ICP-Befehl abgeschlossen, und das Herunterladen des neuen Benutzercodes
findet statt. Nach dem Ausführen
des Schrittes 403 geht der ICP-Initiator 340 weiter
zu Schritt 404, wo der ICP-Initiator 340 den neuen
Benutzercode in einem verschlüsselten
Format über den
Kommunikationskanal 330 in den Mikrocontroller 100 lädt. In Schritt 446 empfängt der
Mikrocontroller 100 den neuen Benutzercode und entschlüsselt das
Datenformat. Nach dem Ausführen
von 446 geht der Mikrocontroller 100 weiter zu
Schritt 447, in welchem er eine Prüfsumme an den ICP-Auslöser bzw.
-Initiator 340 sendet. Nach Ausführen des Schritts 404 geht
der ICP-Initiator 340 weiter zu Schritt 405, wo
er auf die Prüfsumme
wartet. Nach dem Empfangen der Prüfsumme geht der ICP-Initiator 340 weiter
zu Schritt 406, in welchem er verifiziert, ob die Prüfsumme mit
der Prüfsumme
des Codes übereinstimmt,
die an den Mikrocontroller 100 gesendet wurde. Wenn die
Prüfsumme
nicht übereinstimmt,
geht der ICP-Initiator 340 weiter zu Schritt 408,
welches ein Endzustand ist und es wird per Flag ein Fehler angezeigt.
Wenn die Prüfsumme übereinstimmt,
geht der ICP-Initiator 340 weiter zu Schritt 407,
in welchem er einen Fortführungsbefehl
ausgibt. Nach dem Senden der Prüfsumme
in Schritt 447 geht der Mikrocontroller 100 weiter
zu Schritt 448, in welchem er auf den Fortführungsbefehl
wartet.
-
Nach
dem Empfangen des Fortführungsbefehls
von dem ICP-Initiator 350 geht der Mikiocontroller 100 weiter
zu Schritt 449, in dem die schaltkreisinterne Programmierung
beginnt. In Schritt 449 programmiert der Mikrocontroller 100 den
Bootvektor und verifiziert ihn und setzt das Statusbit auf 1, was
anzeigt, daß eine ICP-Operation
stattfindet. Der Mikrocontroller 100 verifiziert dann,
daß das
Statusbit gesetzt ist und geht weiter, um den Überwachungszeitgeber 110 (watch
dog) einzustellen und zu starten. Der Mikrocontroller 100 geht dann
weiter zu Schritt 450, in welchem er das Lösch-Unterprogramm
aus dem Lösch-/Programmier-Verifizier-Steuerungsprogramm 162 aufruft.
Der Mikrocontroller 100 geht dann weiter zu Schritt 460 in
dem Lösch-Programm/Programmier-/Verifizier-Steuerprogramm 162,
in welchem der Mikrocontroller 100 die angegebenen Blöcke innerhalb
des mehrfachen Zeitprogrammiermoduls 140 löscht. Der
Mikrocontroller 100 geht dann weiter zu Schritt 451 innerhalb
des ICP-Kommunikationssteuerungsprogramms 142.
-
In
Schritt 451 ruft der Mikrocontroller 100 das Unterprogramm
für das
Verifizierungsbyte aus dem Lösch-/Programmier-/Verifizier-Steuerungsprogramm 162 auf.
Der Mikrocontroller geht dann weiter zu Schritt 461, in
welchem das Unterprogramm des Verifizierungsbytes ausgeführt wird.
Der Mikrocontroller 100 geht dann weiter zu Schritt 452 in
dem ICP-Kommunikationssteuerprogramm 142. In Schritt 452 stellt
der Mikrocontroller 100 fest, ob die Verifizierung des
Löschvorgangs
vollständig
ist oder nicht. Falls nicht, kehrt der Mikrocontroller 100 zu
Schritt 451 zurück,
um das nachfolgende Byte zu verifizieren. Wenn dies geschehen ist,
geht der Mikrocontroller 100 weiter zu Schritt 453,
in welchem der Mikrocontroller 100 einen Okay-Befehl an
den ICP-Initiator 340 übermittelt.
Nach dem Ausführen
des Schrittes 407 geht der ICP-Initiator 340 weiter
zu Schritt 409, in welchem der ICP-Initiator 340 auf
den Befehl wartet, daß das
Löschen
in Ordnung (okay) ist. Nach dem Empfangen des „Löschen Okay"-Befehls geht der ICP-Initiator 340 weiter
zu Schritt 410, wo der ICP-Initiator 340 auf einen „Programmieren
Okay"-Befehl von
dem Mikrocontroller 100 wartet.
-
Nachdem
in Schritt 453 der Befehl „Löschen okay" ausgegeben wurde, geht der Mikrocontroller 100 weiter
zu Schritt 454, in welchem der Mikrocontroller 100 das
Programmierbyteunterprogramm von dem Lösch-/Programmier-/Verifizier-Steuerungsprogramm 162 aufruft.
Der Mikrocontroller 100 geht dann weiter zu Schritt 462,
in welchem das Programmierbyteunterprogramm ausgeführt wird.
Als nächstes
geht der Mikrocontroller 100 weiter zu Schritt 455 innerhalb
des ICP-Kommunikationssteuerungsprogramms 142.
In Schritt 455 stellt der Mikrocontroller 100 fest,
ob die Programmierung beendet ist. Falls nicht, kehrt der Mikrocontroller 100 zu
Schritt 454 zurück,
um den Programmierbytebefehl für
das folgende zu programmierende Byte aufzurufen. Wenn die Programmierung
abgeschlossen ist, geht der Mikrocontroller 100 weiter
zu Schritt 456, in welchem das Unterprogramm des Verifizierens
von einem Byte aufgerufen wird. Der Mikrocontroller 100 geht
dann weiter in Schritt 463 zu dem Unterprogramm des Verifizierungsbytes
innerhalb des Lösch-/Programmier-/Verifizier-Steuerungsprogramms 162.
In Schritt 463 wird das Unterprogramm des Verifizierens
eines Bytes ausgeführt.
Der Mikrocontroller 100 geht dann weiter zu Schritt 457 innerhalb
des ICP-Kommunikationssteuerungsprogramms 142. In Schritt 457 stellt
der Mikrocontroller 100 fest, ob der Verifizierungsvorgang
abgeschlossen ist. Falls nicht, kehrt der Mikrocontroller 100 zu
Schritt 456 zurück,
wo das Unterprogramm der Byteverifizierung für ein nachfolgendes Byte, welches
zu verifizieren ist, aufgerufen wird. Wenn der Verifizierungsvorgang abgeschlossen
ist, geht der Mikrocontroller 100 weiter zu Schritt 458.
-
In
Schritt 458 sind die Lösch-,
Programmier- und Verifiziervorgänge
für die
schaltkreisinterne Programmierung abgeschlossen. Der Mikrocontroller 100 setzt
das Statusbit auf 0 und verifiziert, daß es auf 0 gesetzt ist. Dann
schaltet er den Überwachungszeitgeber
(watch dog) 110 ab. Der Mikrocontroller 100 geht
dann weiter zu Schritt 459, in welchem er einen Befehl „Programmierung
Okay" an den ICP-Initiator 340 ausgibt.
Der ICP-Initiator 340 empfängt dem Befehl „Programmierung
Okay" in Schritt 310 und
geht weiter zu Schritt 411, in welchem der ICP-Initiator 340 einen
Resetbefehl an den Mikrocontroller 100 sendet. Nach dem
Ausgeben des „Programmierung-Okay"-Befehls in Schritt 459 geht
der Mikrocontroller 100 weiter zu Schritt 424 innerhalb des
Benutzercodes 144, in welchem er auf einen Resetbefehl
wartet. Wenn ein Resetbefehl von dem ICP-Initiator 340 empfangen
wurde, geht der Mikrocontroller 100 weiter zu Schritt 425,
der ein Endzustand ist. Nach dem Ausgaben des Resetbefehls in Schritt 411 geht
der ICP-Initiator 340 weiter zu Schritt 412, der
ebenfalls ein Endzustand ist. An diesem Punkt ist der Vorgang der
schaltkreisinternen Programmierung abgeschlossen. Dieser Vorgang
wird wiederholt, wenn durch den ICP-Initiator 340 ein neuer
Prozeß der
schaltkreisinternen Programmierung initiiert wird.
-
Unter
Verwendung der in 1 dargestellten Architektur
können
Systementwickler den Code der schaltkreisinternen Programmierung
auf ihre spezielle Umgebung anpassen. Demnach wählt ein Hersteller einen integrierten
Schaltkreis, wie in 1 dargestellt, für die Implementierung
in seinem Schaltkreis aus. Wenn der Code für die schaltkreisinterne Programmierung
nicht vorliegt bzw. nicht bereit ist, wird der Mikrocontroller 100 verwendet,
und die Vielfalt der verfügbaren
Kommunikationsanschlüsse
auf dem Chip 300 wird verwendet, um die zusätzliche
Logik, die auf der Schaltkreisplatine erforderlich ist, um das System
an eine bestimmte Umgebung der schaltkreisinternen Programmierung
anzupassen, minimal zu machen. Als erstes werden die geeigneten
Verbindungen und das Protokoll für
die schaltkreisinterne Programmierung durch den Entwickler ausgewählt. Als
nächstes
wird der ICP-Code für
die ausgewählte
Umgebung entwickelt und verbessert. Der ICP-Code wird dann mit den
auszuführenden
Programmen während
des Normalbetriebs des Systems integriert. Als nächstes werden der integrierte
ICP-Code und der Benutzercode in dem Flash-Speicher des mehrfachen
Zeitprogrammiermoduls 140 gespeichert. Dann werden die
Lösch- und Programmiervorgänge verifiziert.
Der Mikrocontroller 110, einschließlich des integrierten ICP-Codes wird dann in
dem System angeordnet. Als nächstes
wird der ICP-Code ausgeführt
und getestet. Wenn das System gut arbeitet, wird das System in großen Mengen
hergestellt. Wenn der ICP-Code
modifiziert werden muß,
so wird der ICP-Vorgang wiederholt, um den ICP-Code zu optimieren.
In ähnlicher
Weise wird der Systemcode unter Verwendung derselben Programmiertechniken
optimiert. Der Endbenutzer des Systems erhält damit robusten, schaltkreisinternen
Programmiercode, der in den Mikrocontroller 100 eingebettet
ist und welcher während
des laufenden Betriebs aktualisiert und modifiziert werden kann,
indem die interaktiven Techniken der schaltkreisintemen Programmierung
gemäß der vorliegenden
Erfindung verwendet werden.
-
SCHLUSSFOLGERUNG
-
Dementsprechend
stellt die vorliegende Erfindung eine flexible Mikrocontrollerarchitektur
auf Flash-Speicherbasis bereit, die diverse Anwendungen der schaltkreisinternen
Programmierung ermöglicht. Beispielsweise
können
Fernsehgeräte
oder Videomonitore, digitale Videoplatten oder CD-ROMs, Fernsteuereinrichtungen
oder mobile Telefone Mikrocontroller enthalten, in welchen Strukturen
der schaltkreisinternen Programmierung gemäß der vorliegenden Erfindung
enthalten sind. Verschiedene Quellen für aktualisierten ICP-Code können dann
in die entsprechenden Einrichtungen geladen werden, wobei die flexible
Architektur der vorliegenden Erfindung verwendet wird. Die vorliegende
Erfindung kann daher für
eine bestimmte Anwendungsumgebung modifiziert oder angepaßt werden.
Es ist nur sehr wenig oder keine Verbindungslogik erforderlich,
um die Strukturen der schaltkreisinternen Programmierung zu unterstützen. Weiterhin
kann die Leistung des Mikrocontrollers, die mit der schaltkreisinternen
Programmierung verknüpft
ist, verstärkt
werden, um die Ausgestaltung des Flash-Speichers für das schaltkreisinterne
Programmiersystem zu vereinfachen.
-
Siliziumchipfläche auf
dem integrierten Schaltkreis wird eingespart, indem für den integrierten
Schaltkreis spezifische Abschnitte des ICP-Codes, die sich sehr
wahrscheinlich nicht ändern,
in platrsparenden Masken-ROM-Zellen gespeichert werden. Andere Teile
des ICP-Codes, wie zum Beispiel das Kommunikationssteuerprogramm,
die mit hoher Wahrscheinlichkeit häufig modifiziert werden, werden
in dem Flash-Speicher gehalten. Auf diese Weise kann Platz auf dem
Siliziumchip eingespart werden, während die Flexibilität für eine Maßschneiderung
des Systems der schaltkreisinternen Programmierung für eine breite
Vielfalt unterschiedlicher Anwendungen beibehalten wird.
-
Die
vorstehende Beschreibung der bevorzugten Ausführungsform der Erfindung ist
zu Zwecken der Veranschaulichung und Beschreibung vorgestellt worden.
Sie soll weder erschöpfend
sein, noch die Erfindung auf die speziell offenbarten Formen beschränken. Offensichtlich
liegen viele Modifikationen und Variationen für Praktiker auf diesem Gebiet
auf der Hand. Der Schutzumfang der Erfindung soll durch die folgenden
Ansprüche
und deren Äquivalente
definiert werden.