DE69736791T2 - In-Circuit-Programmierungsarchitektur mit Rom und Flash-Speicher - Google Patents

In-Circuit-Programmierungsarchitektur mit Rom und Flash-Speicher Download PDF

Info

Publication number
DE69736791T2
DE69736791T2 DE69736791T DE69736791T DE69736791T2 DE 69736791 T2 DE69736791 T2 DE 69736791T2 DE 69736791 T DE69736791 T DE 69736791T DE 69736791 T DE69736791 T DE 69736791T DE 69736791 T2 DE69736791 T2 DE 69736791T2
Authority
DE
Germany
Prior art keywords
circuit
programming
memory array
instructions
integrated circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69736791T
Other languages
English (en)
Other versions
DE69736791D1 (de
Inventor
C. Albert Neihu SUN
Chee-Horng Lee
Chang-Lun Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Macronix International Co Ltd
Original Assignee
Macronix International Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Macronix International Co Ltd filed Critical Macronix International Co Ltd
Application granted granted Critical
Publication of DE69736791D1 publication Critical patent/DE69736791D1/de
Publication of DE69736791T2 publication Critical patent/DE69736791T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data

Description

  • 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.
  • Figure 00070001
  • 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.
  • Figure 00080001
  • 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.
  • Figure 00080002
  • Figure 00090001
  • Figure 00100001
  • Figure 00110001
  • 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.

Claims (34)

  1. Vorrichtung für die schaltkreisinterne Programmierung eines integrierten Schaltkreises, welche aufweist: einen Prozessor (100) auf dem integrierten Schaltkreis, welcher Befehle ausführt, einen externen Anschluß (120) des integrierten Schaltkreises, über welchen Daten von einer externen Quelle empfangen werden ein erstes Speicherarray (140), welches nicht-flüchtige Speicherzellen auf dem integrierten Schaltkreis aufweist und welches Befehle für die Ausführung durch den Prozessor speichert, einschließlich eines Satzes von Befehlen zum Steuern der Übertragung von Befehlen in den integrierten Schaltkreis aus der externen Quelle über den externen Anschluß, und ein zweites Speicherarray (160) auf dem integrierten Schaltkreis, welches Befehle für Ausführung durch den Prozessor speichert, einschließlich eines Satzes von Befehlen für das Steuern der schaltkreisinternen Programmierschritte des Löschens, Programmierens und Verifizierens der Befehle in dem ersten Speicherarray (140).
  2. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei die nicht-flüchtigen Speicherzellen in dem ersten Speicherarray (140) eine Mehrzahl aus Speicherzellen mit Floating gates („schwebendes bzw. potentialfreies Gate") aufweist.
  3. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei das zweite Speicherarray (160) eine Mehrzahl von nicht-flüchtigen Speicherzellen aufweist.
  4. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei das zweite Speicherarray (160) eine Mehrzahl von MaskenROM-Zellen aufweist.
  5. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei das zweite Speicherarray (160) eine Mehrzahl von Speicherzellen mit Floating gate aufweist.
  6. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei die Abfolge der Vorgänge des Löschens, Programmierens und Verifizierens für das erste Speicherarray (140) durch einen Satz von durch den Prozessor ausgeführten Befehlen gesteuert wird.
  7. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei die Abfolge der Vorgänge des Löschens, Programmierens und Verifizierens für das erste Speicherarray (140) durch einen Satz von Befehlen gesteuert wird, der durch den Prozessor ausgeführt und in MaskenROM-Zellen in dem zweiten Speicherarray (160) gespeichert ist.
  8. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 6, wobei der Prozessor (100) die Vorgänge des Löschens, Programmierens und Verifizierens für das erste Speicherarray (140) über ein Steuerregister (150) steuert, das mit dem ersten Speicherarray verbunden ist.
  9. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei der Zeitablauf der Vorgänge der Löschens, des Programmierens und des Verifizierens für das erste Speicherarray durch eine Zeitgeberfunktion (105) gesteuert wird, die in dem Prozessor (100) enthalten ist.
  10. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei der Zeitablauf des Löschens, Programmierens und Verifizierens für das erste Speicherarray (140) durch einen Satz von durch den Prozessor (100) ausgeführten Befehlen gesteuert wird.
  11. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei der Zeitablauf der Lösch-, Programmier- und Verifiziervorgänge für das erste Speicherarray (140) durch einen Satz von Befehlen gesteuert wird, der durch den Prozessor ausgeführt wird und der in MaskenROM-Zellen in dem zweiten Speicherarray (160) gespeichert ist.
  12. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1, wobei das erste Speicherarray (140) Speicherzellen mit Floating gate aufweist, das zweite Speicherarray (160) Speicherzellen mit MaskenROM-Zellen aufweist, und wobei die Befehle, die durch das zweite Speicherarray gespeichert werden, die Reihenfolge und den Zeitablauf der schaltkreisinternen Programmierschritte des Löschens, Programmierens und Verifizierens der Befehle in dem ersten Speicherarray steuern, und wobei die Vorrichtung weiter ein Steuerregister (150) aufweist, welches mit dem ersten Speicherarray (140) verbunden ist und, über welches der Prozessor das Löschen, Programmieren und Verifizieren in dem ersten Speicherarray steuert.
  13. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1 oder 12, welche weiterhin einen Überwachungszeitgeber (Watchdog – 110) aufweist, der mit dem Prozessor verbunden ist und der eine Wiederherstellung im Falle von Fehlern auslöst, die während der Ausführung der schaltkreisinternen Programmierbefehle durch den Prozessor auftreten.
  14. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1 oder 12, wobei das erste Speicherarray (140) eine Mehrzahl von getrennt löschbaren nichtflüchtigen Speicherzellen aufweist.
  15. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1 oder 12, wobei der externe Anschluß (120) einen seriellen Anschluß aufweist.
  16. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1 oder 12, wobei der externe Einfluß (120) einen parallelen Anschluß aufweist.
  17. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1 oder 12, wobei der externe Anschluß (120) derart konfigurierbar ist, daß er als paralleler Anschluß oder als serieller Anschluß arbeitet.
  18. Vorrichtung für die schaltkreisinterne Programmierung nach Anspruch 1 oder 12 einschließlich einer Mehrzahl von Anschlüssen zu externen Datenquellen, wobei derjenige Anschluß in der Mehrzahl von Anschlüssen, der als der externe Anschluß (120) verwendet wird, durch Befehle in dem Satz von Befehlen zur Steuerung der schaltkreisinternen Programmierschritte bestimmt wird.
  19. Verfahren zur schaltkreisinternen Programmierung eines integrierten Schaltkreises, welcher einen Prozessor (100) und einen externen Anschluß (120) umfaßt, welches aufweist: Bereitstellen eines ersten Speicherarrays (140), welches nicht-flüchtige Speicherzellen aufweist, und eines zweiten Speicherarrays (160) auf dem integrierten Schaltkreis, Empfangen eines schaltkreisinternen Programmierbefehls von einem Auslöser, der außerhalb des integrierten Schaltkreises liegt, Verwenden des Prozessors (100) in Reaktion auf den schaltkreisinternen Programmierbefehl, um einen Satz von Befehlen auszuführen, die in dem zweiten Speicherarray gespeichert sind für die Steuerung der schaltkreisinternen Programmierung des Löschens, Programmierens und Verifizierens von Befehlen in dem ersten Speicherarray (140), und Verwenden des Prozessors (100) für das Ausführen eines Satzes von Befehlen, die in dem ersten Speicherarray gespeichert sind, um die Übertragung eines Satzes von Befehlen in den integrierten Schaltkreis von einer externen Quelle über den externen Anschluß (120) zu steuern.
  20. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der Satz von Befehlen zum Steuern an der schaltkreisinternen Programmierschritte des Löschens, Programmierens und Verifizierens von Befehlen in dem ersten Speicherarray in dem zweiten Speicherarray (160) gespeichert wird.
  21. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei die nicht flüchtigen Speicherzellen in dem ersten Speicherarray (140) Speicherzellen mit Floating gate aufweisen.
  22. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei das zweite Speicherarray (160) eine Mehrzahl von Masken-ROM-Zellen aufweist.
  23. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei das zweite Speicherarray (160) eine Mehrzahl von nicht-flüchtigen Speicherzellen aufweist.
  24. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei das zweite Speicherarray (160) eine Mehrzahl von Speicherzellen mit Floating Gate aufweist.
  25. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der Schritt des Verwendens des Prozessors (100) für die Ausführung eines Satzes von Befehlen zum Steuern der schaltkreisinternen Programmierschritte zum Löschen, Programmieren und Verifizieren von Befehlen das Steuern der Abfolge der Lösch-, Programmier- und Verifiziervorgänge umfaßt.
  26. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der Prozessor (100) die Lösch-, Programmier- und Verifiziervorgänge für das erste Speicherarray (140) durch ein Steuerregister steuert, welches mit dem ersten Speicherarray (140) verbunden ist.
  27. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises 19, wobei der Zeitablauf der Lösch-, Programmier- und Verifiziervorgänge für das erste Speicherarray (140) durch eine Zeitgeberfunktion (105) gesteuert wird, die in dem Prozessor enthalten ist.
  28. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der Schritt des Verwendens des Prozessors (100) für die Ausführung eines Satzes von Befehlen für das Steuern der schaltkreisinternen Schritte zum Löschen, Programmieren und Verifizieren von Befehlen das Steuern des Zeitablaufs der Lösch-, Programmier- und Verifiziervorgänge umfaßt.
  29. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, einschließlich des Schrittes der Bereitstellung eines Überwachungszeitgebers (110), der mit dem Prozessor (100) verbunden ist und welcher eine Erholung bzw. eine Wiederherstellung im Falle von Fehlern auslöst, die während der Ausführung der schaltkreisinternen Programmierbefehle durch den Prozessor auftreten.
  30. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei das erste Speicherarray (140) eine Mehrzahl von getrennt löschbaren Blöcken nicht flüchtiger Speicherzellen aufweist.
  31. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der externe Anschluß (120) einen seriellen Anschluß aufweist.
  32. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der externe Anschluß (120) einen parallelen Anschluß aufweist.
  33. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der externe Anschluß (120) so konfigurierbar ist, daß er als paralleler Anschluß oder als serieller Anschluß arbeitet.
  34. Verfahren für die schaltkreisinterne Programmierung eines integrierten Schaltkreises nach Anspruch 19, wobei der integrierte Schaltkreis weiterhin eine Mehrzahl von Anschlüssen an externe Datenquellen umfaßt, und weiterhin den Schritt des Festlegens des jenigen Anschlusses in der Mehrzahl von Anschlüssen umfaßt, der als der externe Anschluß (120) verwendet wird, indem der Prozessor verwendet wird, um Befehle in dem Satz von Befehlen zur Steuerung der schaltkreisinternen Programmierschritte verwendet wird.
DE69736791T 1997-03-13 1997-04-03 In-Circuit-Programmierungsarchitektur mit Rom und Flash-Speicher Expired - Lifetime DE69736791T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US818389 1997-03-13
US08/818,389 US5901330A (en) 1997-03-13 1997-03-13 In-circuit programming architecture with ROM and flash memory
PCT/US1997/005622 WO1998040818A1 (en) 1997-03-13 1997-04-03 In-circuit programming architecture with rom and flash memory

Publications (2)

Publication Number Publication Date
DE69736791D1 DE69736791D1 (de) 2006-11-16
DE69736791T2 true DE69736791T2 (de) 2007-01-11

Family

ID=25225435

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69736791T Expired - Lifetime DE69736791T2 (de) 1997-03-13 1997-04-03 In-Circuit-Programmierungsarchitektur mit Rom und Flash-Speicher

Country Status (5)

Country Link
US (1) US5901330A (de)
EP (1) EP0974089B1 (de)
JP (1) JP4051091B2 (de)
DE (1) DE69736791T2 (de)
WO (1) WO1998040818A1 (de)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2748134B1 (fr) * 1996-04-30 1998-06-26 Bull Cp8 Procede et dispositif permettant a un programme fige de pouvoir evoluer
US6282675B1 (en) 1997-08-06 2001-08-28 Macronix International Co., Ltd. Fault-tolerant architecture for in-circuit programming
US6493788B1 (en) 1996-10-28 2002-12-10 Macronix International Co., Ltd. Processor with embedded in-circuit programming structures
US6842820B2 (en) 1997-10-03 2005-01-11 Macronix International Co., Ltd. Processor with embedded in-circuit programming structures
WO1998034169A1 (fr) 1997-01-31 1998-08-06 Sony Corporation Appareil et procede de traitement d'informations
US6009496A (en) * 1997-10-30 1999-12-28 Winbond Electronics Corp. Microcontroller with programmable embedded flash memory
US6385689B1 (en) * 1998-02-06 2002-05-07 Analog Devices, Inc. Memory and a data processor including a memory
EP0935195A2 (de) 1998-02-06 1999-08-11 Analog Devices, Inc. Integrierte Schaltung mit hochauflösendem Analog-Digital-Wandler, einem Mikrokontroller und hochdichtem Speicher und einem Emulator dafür
US6701395B1 (en) 1998-02-06 2004-03-02 Analog Devices, Inc. Analog-to-digital converter that preseeds memory with channel identifier data and makes conversions at fixed rate with direct memory access
US6289300B1 (en) 1998-02-06 2001-09-11 Analog Devices, Inc. Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit
US6594284B1 (en) * 1998-09-16 2003-07-15 Cirrus Logic, Inc. Network synchronization
US6547150B1 (en) 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
US6938244B1 (en) 1999-05-11 2005-08-30 Microsoft Corp. Interlaced protocol for smart card application development
US6845498B1 (en) 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
GB9925227D0 (en) * 1999-10-25 1999-12-22 Internet Limited Data storage retrieval and access system
TW460786B (en) * 1999-12-09 2001-10-21 Via Tech Inc System to reprogram the content value of the flash memory of the peripheral device and the method thereof
AU7939800A (en) * 1999-12-29 2001-07-16 Sun Microsystems, Inc. Updating non volatile memory in a data processing system
DE10002306A1 (de) * 2000-01-20 2001-07-26 Zahnradfabrik Friedrichshafen Verfahren und Vorrichtung zum funktionssicheren Betreiben einer elektronischen Motor- und insbesondere Getriebesteuerung für Kraftfahrzeuge
US6434660B1 (en) * 2000-05-23 2002-08-13 Centennial Technologies, Inc. Emulating one tape protocol of flash memory to a different type protocol of flash memory
US6550027B1 (en) 2000-05-26 2003-04-15 Oak Technology, Inc. Method and article of manufacture for differentiating between a non-volatile memory device and an emulator for purposes of in-circuit programming
US6834331B1 (en) 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
JP4162863B2 (ja) * 2001-03-30 2008-10-08 株式会社ルネサステクノロジ マイクロコンピュータ
US20040015939A1 (en) * 2001-05-16 2004-01-22 Cheah Jonathon Y. Updateable memory module
US6577161B2 (en) 2001-06-01 2003-06-10 Macronix International Co., Ltd. One cell programmable switch using non-volatile cell with unidirectional and bidirectional states
US6531887B2 (en) 2001-06-01 2003-03-11 Macronix International Co., Ltd. One cell programmable switch using non-volatile cell
US6545504B2 (en) 2001-06-01 2003-04-08 Macronix International Co., Ltd. Four state programmable interconnect device for bus line and I/O pad
AU2003242930A1 (en) * 2002-06-28 2004-01-19 Koninklijke Philips Electronics N.V. Software download into a receiver
TWI278750B (en) * 2002-09-05 2007-04-11 Mediatek Inc System and method which updates firmware in a non-volatile memory without using a processor
DE10310290A1 (de) * 2003-03-10 2004-09-23 Robert Bosch Gmbh Rechenvorrichtung
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US20050093572A1 (en) * 2003-11-03 2005-05-05 Macronix International Co., Ltd. In-circuit configuration architecture with configuration on initialization function for embedded configurable logic array
US20050102573A1 (en) * 2003-11-03 2005-05-12 Macronix International Co., Ltd. In-circuit configuration architecture for embedded configurable logic array
US20050097499A1 (en) * 2003-11-03 2005-05-05 Macronix International Co., Ltd. In-circuit configuration architecture with non-volatile configuration store for embedded configurable logic array
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US8090916B2 (en) * 2004-06-29 2012-01-03 Macronix International Co., Ltd. In-circuit programming architecture with processor and delegable flash controller
US7258100B2 (en) * 2004-08-03 2007-08-21 Bruce Pinkston Internal combustion engine control
US20060036803A1 (en) * 2004-08-16 2006-02-16 Mori Edan Non-volatile memory device controlled by a micro-controller
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7406559B2 (en) * 2004-08-23 2008-07-29 Macronix International Co., Ltd. In-circuit programming architecture with processor, delegable flash controller, and code generator
EP2025095A2 (de) 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Geräteverwaltung in einem netzwerk
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
CN100507849C (zh) * 2006-12-13 2009-07-01 北京中星微电子有限公司 软件在线更新方法及软件在线更新系统
US20110019459A1 (en) * 2007-01-11 2011-01-27 Guobiao Zhang Three-Dimensional Mask-Programmable Read-Only Memory with Reserved Space
US8885384B2 (en) 2007-01-11 2014-11-11 Chengdu Haicun Ip Technology Llc Mask-programmed read-only memory with reserved space
US9141418B2 (en) * 2010-07-23 2015-09-22 Hewlett-Packard Development Company, L.P. Systems and methods for implementing a guest operating system on a host operating system
US20120246384A1 (en) * 2011-03-21 2012-09-27 Winbond Electronics Corp. Flash memory and flash memory accessing method
US9430220B2 (en) * 2014-07-22 2016-08-30 GM Global Technology Operations LLC Method, medium, and apparatus for re-programming flash memory of a computing device
TW201612792A (en) * 2014-09-22 2016-04-01 Hon Hai Prec Ind Co Ltd Protect writing device and method for flash memory with mask rom
US11281530B2 (en) * 2020-08-10 2022-03-22 Samsung Electronics Co., Ltd. Method and system for validating a memory device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01175057A (ja) * 1987-12-28 1989-07-11 Toshiba Corp セキュリティの動的管理方法
JPH0388052A (ja) * 1989-08-31 1991-04-12 Toshiba Corp 機密保護処理方式
US5278976A (en) * 1990-04-16 1994-01-11 Rolm Company Method for detecting infinite loops by setting a flag indicating execution of an idle task having lower priority than executing application tasks
EP0464433A3 (en) * 1990-06-29 1994-05-18 Nat Semiconductor Corp Microcontroller device having remotely programmable eprom & method of programming
US5276839A (en) * 1991-03-07 1994-01-04 United States Of America As Represented By The Secretary Of The Air Force System for programming EEPROM with data loaded in ROM by sending switch signal to isolate EEPROM from host system
US5319751A (en) * 1991-12-27 1994-06-07 Intel Corporation Device driver configuration in a computer system
US5444861A (en) * 1992-06-01 1995-08-22 United Technologies Corporation System for downloading software
JPH06161867A (ja) * 1992-11-20 1994-06-10 Fujitsu Ltd 電子機器に設けられたメモリユニットの制御装置
US5581723A (en) * 1993-02-19 1996-12-03 Intel Corporation Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
US5574926A (en) * 1993-03-11 1996-11-12 Olympus Optical Co., Ltd. One-chip microcomputer system having function for substantially correcting contents of program
JPH0729386A (ja) * 1993-07-13 1995-01-31 Hitachi Ltd フラッシュメモリ及びマイクロコンピュータ
JP3310060B2 (ja) * 1993-09-13 2002-07-29 株式会社東芝 記憶装置および同装置の制御プログラム書換え方法
US5467286A (en) * 1993-11-03 1995-11-14 Square D Company Metering unit with downloadable firmware
US5579479A (en) * 1994-10-03 1996-11-26 Plum Hall Inc. Computer software licensing authentication method and apparatus

Also Published As

Publication number Publication date
JP4051091B2 (ja) 2008-02-20
JP2002516005A (ja) 2002-05-28
EP0974089B1 (de) 2005-12-07
EP0974089A1 (de) 2000-01-26
DE69736791D1 (de) 2006-11-16
US5901330A (en) 1999-05-04
EP0974089A4 (de) 2004-04-28
WO1998040818A1 (en) 1998-09-17

Similar Documents

Publication Publication Date Title
DE69736791T2 (de) In-Circuit-Programmierungsarchitektur mit Rom und Flash-Speicher
EP1701478B1 (de) Anordnung und Verfahren zur automatischen Konfiguration von Schnittstellen einer drahtlosen Verbindung zur Datenübertragung
DE60200210T2 (de) Über das World-Wide-Web zugängliche, eingebettete Programmier-Software
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE60217157T2 (de) Verfahren und vorrichtung zum binden von shadow-registern an vektorisierte interrupts
DE60027748T2 (de) Busarchitektur und verteiltes busarbitrierungsverfahren für einen kommunikationsprozessor
DE4418892C2 (de) Mikrocomputer
DE2209282A1 (de) Datenverarbeitungsanlage
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
WO1995008824A1 (de) Verfahren zur vollständigen neuprogrammierung eines löschbaren, nichtflüchtigen speichers
WO1997001147A2 (de) Verfahren zur vereinfachung der kommunikation mit chipkarten
DE60313787T2 (de) Verfahren und Mechanismus zum Übertragen von Nachrichten
DE19518529A1 (de) Vorrichtung und Verfahren zum Rekonfigurieren eines eine inkompatible CPU enthaltenden Computersystems
DE10115729B4 (de) Vielseitiges Boot-Verfahren für eine Anwendungs-Software eines Mikrocontrollers
EP1744236A1 (de) Konfiguration von Bauelementen bei einem Übergang von einem Niedrigleistungs-Betriebsmodus in einen Normalleistungs-Betriebsmodus
DE4220698A1 (de) System zur dynamischen verknuepfung modularer abschnitte von computersoftware
DE102006029690A1 (de) Beibehaltung einer Identifikation einer elektronischen Steuereinheit bei Umprogrammierungsereignissen
DE4010311C2 (de) Datenprozessor
DE102008030397A1 (de) Vorrichtung und Verfahren zum drahtlosen Programmieren
EP0500973A1 (de) Initialisierungsroutine im EEPROM
DE60128598T2 (de) Verfahren und system zur sicheren rekonfigurierung eines gerätes
DE10344626A1 (de) Systeme und Verfahren zum Zugreifen auf busmastergesteuerte Systembetriebsmittel
DE3342354A1 (de) Weich programmierbare logikanordnung
DE102005008778B4 (de) System und Verfahren zum Verändern einer Buskonfiguration
DE69635060T2 (de) Prozessor mit eingebetteten in-circuit programmierungsstrukturen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition