DE102005031530B4 - Speichersystem, Einchip-Mikrocontroller und eingebettetes System - Google Patents

Speichersystem, Einchip-Mikrocontroller und eingebettetes System Download PDF

Info

Publication number
DE102005031530B4
DE102005031530B4 DE102005031530.5A DE102005031530A DE102005031530B4 DE 102005031530 B4 DE102005031530 B4 DE 102005031530B4 DE 102005031530 A DE102005031530 A DE 102005031530A DE 102005031530 B4 DE102005031530 B4 DE 102005031530B4
Authority
DE
Germany
Prior art keywords
memory
mode
signal
rom
boot
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.)
Active
Application number
DE102005031530.5A
Other languages
English (en)
Other versions
DE102005031530A1 (de
Inventor
Byeong-Hoon Lee
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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
Priority claimed from KR1020040051801A external-priority patent/KR100604877B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102005031530A1 publication Critical patent/DE102005031530A1/de
Application granted granted Critical
Publication of DE102005031530B4 publication Critical patent/DE102005031530B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

Speichersystem (200, 300, 800) mit:- einem Modusdekodierer (220, 320, 820),- einem ersten Speicher (230, 330, 830) in Signalverbindung mit dem Modusdekodierer (220, 320, 820),- einem zweiten Speicher (240, 340, 840) in Signalverbindung mit dem Modusdekodierer (220, 320, 820) und- einem Modusgenerator (250, 350, 850) in Signalverbindung mit dem Modusdekodierer (220, 320, 820) zum Erzeugen eines Signals (ROM SEL, FM_SEL), das zum Auswählen des ersten Speichers (230, 330, 830) oder des zweiten Speichers (240, 340, 840) als ein Bootspeicher dient,- wobei der Modusgenerator eine erste nichtflüchtige Speichereinheit (251) zum Speichern eines ersten Modus aufweist, wobei der Wert des ersten Modus zur Auswahl des ersten und/oder des zweiten Speichers dient, wobei der Modusgenerator ein erstes Signal (BootMem) erzeugt, dessen Zustand vom Wert des ersten Modus abhängt, und- wobei der Modusgenerator eine zweite nichtflüchtige Speichereinheit (252) zum Speichern eines zweiten Modus aufweist, wobei der Wert des zweiten Modus einen Zugriff auf den ersten Speicher unabhängig von dem in der ersten nichtflüchtigen Speichereinheit (251) gespeicherten Modus verhindert oder ermöglicht,- wobei der Modusgenerator ein zweites Signal (RomHidden) erzeugt, dessen Zustand vom Wert des zweiten Modus abhängt,- wobei der Modusdekodierer (220) das erste Signal (BootMem) und das zweite Signal (RomHidden) empfängt und bei einem ersten Zustand des zweiten Signals (RomHidden) unabhängig von einem Zustand des ersten Signals (BootMem) einen Zugriff auf den ersten Speicher verhindert, und bei einem zweiten Zustand des zweiten Signals (RomHidden) den ersten Speicher oder den zweiten Speicher in Abhängigkeit vom Zustand des ersten Signals (BootMem) auswählt.

Description

  • Die Erfindung betrifft ein Speichersystem, einen Einchip-Mikrocontroller und ein eingebettetes System.
  • Ein eingebettetes System („embedded system“) wird im Allgemeinen für einen spezifischen Zweck hergestellt. Ein derartiges System umfasst typischerweise eine Zentralprozessoreinheit (CPU), Speicher und Software, die Bootcode umfasst. Der Bootcode initialisiert den Speicher und Register der CPU und bestimmt den anfänglichen Betrieb der CPU.
  • Im Allgemeinen wird der Bootcode bei der Herstellung des Systems in einen Festwertspeicher (ROM) geschrieben und an einen Kunden zusammen mit dem System ausgeliefert. Wenn jedoch eine geringfügige Änderung des Bootcodes gewünscht ist, muss der ROM ausgetauscht werden, da der ROM nicht modifiziert werden kann. Weiterhin wollen manche Kunden ihren eigenen Bootcode zur Initialisierung des Systems verwenden, beispielsweise um Sicherheitsanforderungen gerecht zu werden.
  • In jüngerer Zeit wird der Bootcode häufiger in nichtflüchtigem Speicher (NVM) anstatt im ROM gespeichert, beispielsweise in einem EEPROM und/oder in einem Flashspeicher. Obwohl die Verwendung von NVM dem Kunden die Möglichkeit gibt, den Bootcode an seine Bedürfnisse anzupassen, weist die Verwendung von NVM einige spezifische Probleme auf. Beispielsweise kann ein Fehler während einer erneuten Flashprogrammierung, bei welcher der originale Bootcode mit kundenspezifischem Bootcode überschrieben werden soll, dazu führen, dass das eingebettete System nicht mehr bootfähig ist.
  • 1 zeigt eine herkömmliche Vorrichtung 100 zur Ausführung des Bootcodes eines eingebetteten Systems. Die Vorrichtung 100 umfasst eine CPU 110, einen mit der CPU verbundenen Adressdekodierer 120 und einen mit dem Adressdekodierer 120 verbundenen Flashspeicher 130.
  • Wenn ein Hersteller den Bootcode und Basisbibliotheksfunktionen in einem Flashspeicher wie dem Flashspeicher 130 speichert, wird das System initial bzw. anfänglich durch den vom Hersteller zur Verfügung gestellten Bootcode hochgefahren bzw. gebootet. Nach dem anfänglichen Booten kann ein Kunde durch Verwendung der durch den Hersteller zur Verfügung gestellten Basisbibliotheksfunktionen den vollständigen Bootcode oder Teile davon löschen und einen neuen Bootcode einprogrammieren. Danach sollte das System normalerweise dazu in der Lage sein, mit dem neuen Bootcode zu booten. Während des Löschvorgangs des alten Bootcodes ist der Flashspeicher jedoch anfällig für Beschädigungen. Wenn eine Beschädigung eintritt, kann das System aufgrund der Zerstörung des Bootcodes nicht mehr ordnungsgemäß arbeiten oder kann überhaupt nicht mehr booten.
  • Die US 5,388,267 zeigt ein System, welches zwei Boot-Speicher verwendet. Die Boot-Speicher werden mittels Hardwareschaltern ausgewählt.
  • Die EP 1 087 294 A2 zeigt ein Verfahren und eine Vorrichtung zum Aktualisieren von Firmware eines Kommunikationsgeräts, bei dem unterschiedliche Seiten eines Flashspeichers als Applikationslogik auswählbar sind.
  • Der Erfindung liegt daher die Aufgabe zugrunde, ein Speichersystem, einen Einchip-Mikrocontroller und ein eingebettetes System zur Verfügung zu stellen, die ein sicheres Ausführen von Bootcode auch nach einer von einem Benutzer vorgenommenen Programmierung eines benutzerspezifischen Bootcodes gewährleisten.
  • Die Erfindung löst diese Aufgabe durch Bereitstellung eines Speichersystems nach Anspruch 1, eines Einchip-Mikrocontrollers nach Anspruch 7 und eines eingebetteten Systems nach Anspruch 8.
  • Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
  • Vorteilhafte, nachfolgend beschriebene Ausführungsformen der Erfindung sowie das zu deren besserem Verständnis oben erläuterte herkömmliche Ausführungsbeispiel sind in den Zeichnungen dargestellt. Hierbei zeigen:
    • 1 ein schematisches Blockschaltbild einer herkömmlichen Vorrichtung zur Ausführung eines Bootcodes eines eingebetteten Systems,
    • 2 ein schematisches Blockschaltbild einer Vorrichtung zur Ausführung des Bootcodes eines eingebetteten Systems gemäß einer Ausführungsform der Erfindung,
    • 3 ein Logikschaltbild einer beispielhaften Ausführungsform eines Modusdekodierers von 2,
    • 4 ein Speicherabbild (Memory map) eines Speicherlayouts eines ROM- und eines Flashspeichers von 2 bei bestimmten Randbedingungen,
    • 5 ein schematisches Blockschaltbild einer Vorrichtung zur Ausführung des Bootcodes eines eingebetteten Systems gemäß einer weiteren Ausführungsform der Erfindung,
    • 6 ein Flussdiagramm eines Verfahrens zur Ausführung des Bootcodes eines eingebetteten Systems gemäß einer Ausführungsform der Erfindung,
    • 7 ein Logikschaltbild einer weiteren Ausführungsform des Modusdekodierers von 2 und
    • 8 ein schematisches Blockschaltbild einer Vorrichtung zur Ausführung des Bootcodes eines eingebetteten Systems gemäß einer weiteren Ausführungsform der Erfindung.
  • Ausführungsformen der vorliegenden Erfindung werden anfänglich unter Verwendung eines in einem ersten Speicher, beispielsweise einem Lesespeicher (ROM), gespeicherten Bootcodes hochgefahren bzw. gebootet, wenn das System an einen Kunden geliefert wird. Nach einem anfänglichen Booten kann der Kunde einen kundenspezifischen Code in einen zweiten Speicher schreiben, beispielsweise einen Flashspeicher. Danach kann das System unter Verwendung des im zweiten Speicher gespeicherten kundenspezifischen Bootcodes gebootet werden. Selbst wenn eine Beschädigung des zweiten Speichers den Bootcode zerstört oder löscht, kann das System unter Verwendung des noch im ersten Speicher gespeicherten Bootcodes gebootet werden. Beispielhafte Ausführungsformen zeigen verschiedene Optionen zur Steuerung eines Bootmodus, beispielsweise zwischen einem ROM und einem Flashspeicher.
  • In 2 ist eine beispielhafte Vorrichtung 200 zur Ausführung des Bootcodes gezeigt. Die Vorrichtung 200 umfasst eine CPU 210 zum Empfangen eines internen Rücksetzsignals und Ausgeben eines Adresssignals und eines Signals, das anzeigt, ob die Adresse als eine Befehlsadresse oder eine Datenadresse behandelt werden soll, einen mit der CPU 210 verbundenen Modusdekodierer 220 zum Erzeugen eines übersetzten Adresssignals und eines ROM-Auswahlsignals oder eines Flashspeicherauswahlsignals, einen mit dem Dekodierer 220 verbundenen Nurlesespeicher (ROM) 230 zum Empfangen der übersetzten Adresse und des ROM-Auswahlsignals, einen mit dem Dekodierer verbundenen Flashspeicher 240 zum Empfangen der übersetzten Adresse und des Flashspeicherauswahlsignals und einen mit dem Dekodierer 220 verbundenen Modusgenerator 250 zum Empfangen der übersetzten Adresse. Der Modusgenerator 250 umfasst eine erste Speichereinheit 251 mit nichtflüchtigem Speicher zum Speichern eines Werts, der anzeigt, ob der ROM 230 oder der Flashspeicher 240 als der Bootspeicher ausgewählt ist, und eine zweite NVM-Einheit 252 zum Speichern eines Werts, der anzeigt, ob der ROM 230 verborgen bzw. versteckt ist oder ob auf diesen zugegriffen werden kann. In einer alternativen Ausführungsform kann der Modusgenerator 250 in den Modusdekodierer 220 integriert sein.
  • Bezugnehmend auf 3 ist ein beispielhafter Modusdekodierteil 220 des Modusdekodierers von 2 gezeigt. Der Modusdekodierteil 220 umfasst ein erstes UND-Gatter 221 zum Empfangen eines Signals BootAdd, welches anzeigt, ob eine Adresse in einen Bereich von Bootadressen fällt, und eines Befehls-/Datensignals, das anzeigt, ob Adressinhalte als Befehle oder als Daten behandelt werden sollen. Ein Ausgangssignal des UND-Gatters 221 wird durch ein weiteres UND-Gatter 222 empfangen. Das UND-Gatter 222 empfängt auch ein Modussignal BootMem, das anzeigt, ob sich der zu verwendende Bootcode im ROM oder dem Flashspeicher befindet. Ein ODER-Gatter 223 empfängt ein Ausgangssignal des UND-Gatters 222 und ein Signal, das den Zustand von mindestens einem Bit der Eingangsadresse anzeigt, und liefert ein Ausgangssignal an ein UND-Gatter 224. Ein weiteres Eingangssignal des UND-Gatters 224 ist aus einem Modussignal RomHidden abgeleitet, das anzeigt, ob ein Zugriff auf den ROM verhindert ist, und über einen Inverter 225 angelegt wird. Ein Ausgangssignal des UND-Gatters 224 ist ein Signal ROM _SEL zum Auswählen des ROM als Ziel der Ausgabeadresse.
  • Das Signal addr1, das mindestens ein Bit der Eingangsadresse abbildet, wird auch an ein UND-Gatter 227 angelegt. Ein Ausgangssignal des UND-Gatters 222 wird an einen Inverter 226 angelegt, der das Signal an einen anderen Eingang des UND-Gatters 227 anlegt. Ein Ausgangssignal des UND-Gatters 227 ist ein Signal FM_SEL zum Auswählen des Flashspeichers als Ziel der Ausgabeadresse.
  • Zum Auslesen von Boot-Befehlen ist folglich das ROM-Auswahlsignal ROM_SEL zum Booten freigeschaltet, wenn der Modusgenerator anzeigt, dass der ROM nicht verborgen ist und den Bootspeicher bildet, während das Flashspeichersignal zum Booten freigeschaltet ist, wenn der Modusgenerator anzeigt, dass der ROM verborgen ist oder der Flashspeicher als Bootspeicher fungiert. Die Adressübersetzung von addr1 auf addr2 führt dazu, dass entweder der ROM oder der Flashspeicher mit Bereichen eines Bootadressenzeigers und von Vektorausnahmezeigern korrespondiert. Der Bootspeicher, unabhängig davon, ob ROM oder Flashspeicher, umfasst den Bootadressenzeiger und die Vektorausnahmezeiger. Zum Zugriff auf Befehle, die nicht zum Bootvorgang gehören, und zum Zugriff auf Daten ist der Flashspeicher freigeschaltet, während der ROM nur freigeschaltet ist, wenn er nicht verborgen ist.
  • Bezugnehmend auf 4 werden Speicherabbilder 400 der Vorrichtung 200 von 2 gezeigt. Ein Speicherabbild 410 des ROM umfasst einen ROM-Bootadressenzeiger 412, während ein Speicherabbild 420 des Flashspeichers einen nichtinitialisierten Bootadressenzeiger 422 umfasst. Während eines initialen Bootvorgangs unter Verwendung des Herstellercodes wird folglich das System unter Verwendung des im ROM gespeicherten Bootcodes gemäß dem Speicherabbild 410 gebootet.
  • Ein weiteres Speicherabbild 450 des ROM umfasst eine ROM-Bootadresse 452, während ein weiteres Speicherabbild 460 des Flashspeichers eine initialisierte Bootadresse 462 umfasst. Während des Bootens unter Verwendung von benutzerspezifischem Code wird folglich das System unter Verwendung des im Flashspeicher gespeicherten Bootcodes gemäß dem Speicherabbild 460 gebootet.
  • In 5 ist eine weitere erfindungsgemäße Vorrichtung 300 zum Ausführen des Bootcodes eines eingebetteten Systems gezeigt. Die Vorrichtung 300 umfasst eine CPU 310, einen mit der CPU 310 verbundenen Modusdekodierer 320, einen mit dem Dekodierer 320 verbundenen ROM 330, einen mit dem Dekodierer 320 verbundenen Flashspeicher 340 und einen mit dem Dekodierer verbundenen Modusgenerator 350. Der Modusgenerator 350 umfasst eine erste NVM-Einheit 351, eine zweite NVM-Einheit 352, eine dritte NVM-Einheit 353 und eine vierte NVM-Einheit 354.
  • In 6 ist ein Flussdiagramm eines Verfahrens 600 zum Ausführen des Bootcodes eines eingebetteten Systems gemäß einer beispielhaften Ausführungsform der Erfindung gezeigt. Das Verfahren 600 umfasst einen externen Rücksetzschritt 610, der beispielsweise bei einem Einschalten „power up“ ausgeführt wird und der die Steuerung an einen Modussignalleseschritt 612 weitergibt. Der Leseschritt 612 gibt die Steuerung an einen Dekodierereinstellungsschritt 614 weiter, der wiederum die Steuerung an einen internen Rücksetzschritt 616 weitergibt, der beispielsweise bei einem Anlaufen der CPU ausgeführt wird. Der Schritt 616 gibt die Steuerung an einen Ausgabeschritt 618 zum Ausgeben einer Bootadresse an einen Dekodierer weiter, wobei sich an den Ausgabeschritt 618 ein Entscheidungsschritt 620 anschließt.
  • Der Entscheidungsschritt 620 bestimmt, welchen Speicher ein Dekodierergebnis auswählt, wobei die Steuerung an einen Ausleseschritt 622 weitergegeben wird, bei dem die CPU einen Befehl aus dem ROM ausliest, wenn der ROM ausgewählt ist. Der Schritt 622 gibt die Steuerung an einen Schritt 624 weiter, der die Adresse an den ROM sendet und die Steuerung an einen Schritt 626 weitergibt. Der Schritt 626 fährt mit dem Booten unter Verwendung des Herstellercodes fort und gibt die Steuerung an einen Schreibschritt 628 weiter. Der Schreibschritt 628 schreibt benutzerspezifischen Code in den Flashspeicher und gibt die Steuerung an einen Entscheidungsblock 630 weiter. Der Entscheidungsblock 630 überprüft ein Modusrücksetzsignal darauf, ob ein Modus zurückgesetzt ist, beispielsweise die Modi RomHidden, UserLock und/oder RomHiddenLock.
  • Wenn der Entscheidungsschritt 620 im anderen Fall bestimmt, dass der Flashspeicher ausgewählt ist, gibt er die Steuerung an einen Ausleseschritt 632 weiter, bei dem die CPU einen Befehl aus dem Flashspeicher ausliest. Der Schritt 632 gibt die Steuerung an einen Schritt 634 weiter, der die Adresse an den Flashspeicher sendet und die Steuerung an einen Schritt 636 weitergibt. Der Schritt 636 fährt mit dem Booten unter Verwendung des benutzerspezifischen Codes fort und gibt die Steuerung an einen Entscheidungsblock 638 weiter. Der Entscheidungsblock 638 überprüft das Modusrücksetzsignal darauf, ob ein Modus zurückgesetzt ist, beispielsweise die Modi RomHidden, UserLock und/oder RomHiddenLock.
  • In 7 ist eine alternative Ausführungsform eines Modusdekodierteils 700 des Modusdekodierers von 2 gemäß der Speicherabbilder von 4 gezeigt. Der Modusdekodierteil 700 umfasst einen Inverter 710 zum Empfangen eines 20-höchstwertigen Bits der durch die CPU ausgegebenen Adresse, das mit einem Adressbit korrespondiert, das sich zwischen dem Flashspeicher und dem ROM unterscheidet, einen Inverter 712 zum Empfangen eines 21-höchstwertigen Bits der durch die CPU ausgegebenen Adresse, wobei anstatt des 21-ten Adressbits auch höherwertige Adressbits verwendet werden können, ein UND-Gatter 714 zum Empfangen von Ausgangssignalen der Inverter 710 und 712 und Ausgeben eines Signals, welches anzeigt, dass die Adresse eine Bootspeicheradresse ist, ein UND-Gatter 716 zum Empfangen eines Ausgangssignals des UND-Gatters 714 und des Befehls-/Datensignals von der CPU, welches einen High-Pegel für einen Befehl und einen Low-Pegel für Daten aufweist, ein UND-Gatter 718 zum Empfangen eines Ausgangssignals des UND-Gatters 716 und des Modussignals BootMem des Modusgenerators und ein UND-Gatter 720 zum Empfangen eines Ausgangssignals des UND-Gatters 718. Ein Inverter 722 empfängt das Modussignal RomHidden vom Modusgenerator und liefert das invertierte Signal RomHidden als ein zweites Eingangssignal an das UND-Gatter 720. Ein Ausgangssignal des UND-Gatters 720 bildet das ROM-Auswahlsignal ROM_SEL zum Freigeben des ROM. Ein Inverter 724 empfängt das Signal ROM_SEL und gibt ein invertiertes Signal als das Flashspeicherauswahlsignal FM_SEL zur Freigabe des Flashspeichers aus. Ein UND-Gatter 726 empfängt ein Ausgangssignal des Inverters 724 und ein Ausgangssignal des Inverters 710, während ein Inverter 728 ein Ausgangssignal des UND-Gatters 726 empfängt und ein übersetztes Adressbit zur Verfügung stellt, das dem 20-höchstwertigen Bit des als Bootspeicher zu verwendenden Speichers entspricht, das in diesem Fall für ROM-Adressen beginnend bei 0x80000 eins ist oder für Flashspeicheradressen beginnend bei 0x00000 null ist.
  • Zum Auslesen von Bootbefehlen ist das ROM-Auswahlsignal zum Booten freigeschaltet, wenn der Modusgenerator anzeigt, dass der ROM nicht verborgen und dass der ROM der Bootspeicher ist, während das Flashspeichersignal zum Booten freigeschaltet ist, wenn der Modusgenerator anzeigt, dass der ROM verborgen ist oder dass der Flashspeicher der Bootspeicher ist. Weiterhin stellt die Adressübersetzung des 20-ten Bits der durch die CPU ausgegebenen Adresse addr1 in das 20-te Bit der Bootspeicheradresse addr2 sicher, dass entweder der ROM oder der Flashspeicher mit Bereichen des Bootadresszeigers und der Vektorausnahmezeiger korrespondiert. Der Bootspeicher, entweder der ROM oder der Flashspeicher, beinhaltet den Bootadresszeiger und die Vektorausnahmezeiger. Zum Auslesen von Befehlen, die nicht zum Bootvorgang gehören, und zum Zugreifen auf Daten wird der Flashspeicher freigeschaltet, während der ROM nur freigeschaltet ist, wenn er nicht verborgen ist.
  • In 8 ist eine weitere exemplarische Vorrichtung 800 zur Ausführung des Bootcodes eines eingebetteten Systems gezeigt. Die Vorrichtung 800 umfasst eine CPU 810, einen mit der CPU verbundenen Modusdekodierer 820, einen mit dem Dekodierer 820 verbundenen ROM 830, einen mit dem Dekodierer 820 verbundenen Flashspeicher 840 und einen mit dem Dekodierer 820 verbundenen Modusgenerator 850. Der Modusgenerator 850 umfasst eine erste NVM-Einheit 851, eine zweite NVM-Einheit 852, eine dritte NVM-Einheit 853 und eine vierte NVM-Einheit 854.
  • Im Betrieb speichert der erste ROM-Speicher 230 von 2 den Bootcode zur Initialisierung der Register und der Speicher und die Basisbibliotheksfunktionen zum Löschen und Programmieren des zweiten Flashspeichers 240. Der Bootcode im ersten Speicher 230 wird durch den Hersteller während der Herstellung des System 200 geschrieben. Hierbei kann der erste Speicher, der ein Masken-ROM ist, nicht gelöscht oder erneut programmiert werden. Der zweite Speicher 240 ist ein löschbarer und programmierbarer NVM, im Allgemeinen ein Flashspeicher, und ist anfänglich leer.
  • Der Modusgenerator 250 umfasst zwei NVMs 251 und 252 zum Speichern von Modi, die bestimmen, ob der ROM 230 oder der Flashspeicher 240 ausgewählt wird. In der vorliegenden Ausführungsform ist der Adressbereich des Flashspeichers 0x00000 bis 0x4FFFF, der Adressbereich des ROM ist 0x80000 bis 0x83FFF und eine Bootadresse, die eine Indexadresse des Bootcodes ist, ist 0.
  • Die Bootadresse, welche die CPU 210 steuert, wird bei der Herstellung des Systems fest eingestellt. In diesem Fall könnte die CPU 210 versuchen, den Bootcode aus dem Flashspeicher zu lesen. Der Flashspeicher ist jedoch anfänglich leer und muss unter Verwendung des Bootcodes im ROM vor seiner Verwendung initialisiert werden.
  • Ein beispielhafter Betriebsablauf, wenn das System an den Kunden geliefert wird, läuft wie folgt ab:
    1. 1) Ein externes Rücksetzen EXT_RST tritt beim Einschalten oder beim Betätigen eines Rücksetzschalters auf.
    2. 2) Die Modussignale BootMem und RomHidden werden durch die beiden NVMs 251 und 252 des Modusgenerators gelesen.
    3. 3) Die Modussignale werden in den Dekodierer 220 eingegeben. Anfänglich weist das Signal BootMem einen logischen High-Pegel und das Signal RomHidden einen logischen Low-Pegel auf. Hierbei zeigt das Signal BootMem an, welcher Speicheradressbereich die Bootadresse umfasst. In diesem Beispiel ist das Signal BootMem bereits nach der Herstellung des Systems auf einem logischen High-Pegel, da die Bootadresse zu dem Bereich des Flashspeichers gehört. Das Signal RomHidden mit logischem High-Pegel verhindert, dass die CPU 210 auf den ROM zugreift. Aus Sicherheitsgründen wird der Code des Herstellers nicht im System verwendet, nachdem der kundenspezifische Code in den Flashspeicher geschrieben wird.
    4. 4) Die CPU 210 startet in Abhängigkeit von einem internen Rücksetzsignal INT RST.
    5. 5) Die CPU 210 sendet die Bootadresse an den Dekodierer 220.
    6. 6) Der Dekodierer 220 bestimmt, an welchen Speicher die Bootadresse gesendet bzw. angelegt wird. Die Bootadresse wird an den ROM 230 beim ersten Booten gesendet, selbst wenn die Bootadresse in den Flashspeicheradressbereich fällt.
    7. 7) Die CPU 210 liest einen Befehl aus, der in der zu der Bootadresse gehörenden ROM-Adresse gespeichert ist.
    8. 8) Die CPU 210 sendet eine Adresse addr1 an den Dekodierer 220, die zu dem Befehl gehört.
    9. 9) Der Dekodierer 220 sendet die Adresse addr2 an den ROM, die zu der Adresse addr1 gehört.
    10. 10) Die CPU 210 beginnt die Bootoperation gemäß einem Programm, auf das die Adresse addr2 zeigt.
    11. 11) Die Bootoperation wird beendet. Dies ist eine Bootoperation gemäß dem Herstellercode. Die Register und die Speicher, inklusive des ROM und des Flashspeichers, sind initialisiert und eine Kommunikation zwischen der CPU und einer externen Peripherie ist möglich.
    12. 12) Die CPU schreibt den kundenspezifischen Code, der in der externen Peripherie gespeichert ist, in den Flashspeicher 240.
    13. 13) Danach kann der Kunde die Werte der beiden NVMs 251 und 252 verändern. Wenn das Signal BootMem auf einen Low-Pegel verändert wird, wird das System durch den im Flashspeicher gespeicherten kundenspezifischen Code gebootet, anstatt mit dem im ROM gespeicherten Code. Wenn das Signal RomHidden auf einen logischen High-Pegel verändert wird, kann die CPU nicht auf den ROM zugreifen. Dies verhindert, dass der Herstellercode im System verwendet wird.
  • Als Folge des externen Rücksetzens werden die Signale BootMem und RomHidden gesetzt, bevor die CPU 210 startet. Anfänglich weist das Signal BootMem einen logischen High-Pegel und das Signal RomHidden einen logischen Low-Pegel auf. Die CPU 210 gibt eine Adresse addr1 und den Adresstyp, beispielsweise Bootadresse, Befehls- oder Datenadresse, an den Dekodierer aus. Wenn der Typ der Adresse addr1 vom Typ Bootadresse BootAdd und Befehl INST ist, aktiviert der Dekodierer das Signal ROM_SEL und deaktiviert das Signal FM_SEL.
  • Der Dekodierer sendet die Adresse addr1 der CPU zur Adresse addr2 des ROM 230. Das System wird unter Verwendung des im ROM 230 gespeicherten Bootcodes gebootet, der den Herstellercode beinhaltet. Nach einem anfänglichen Booten und Beschreiben des Flashspeichers 240 kann der Kunde das Signal BootMem auf einen logischen Low-Pegel verändern. Der Dekodierer deaktiviert folglich das Signal ROM_SEL und aktiviert das Signal FM_SEL. Der Dekodierer sendet die Adresse addr1 von der CPU an die Adresse addr2 des Flashspeichers 240. Das System wird unter Verwendung des im Flashspeicher 240 gespeicherten Bootcodes gebootet, der den kundenspezifischen Code beinhaltet.
  • Der Kunde kann das Signal RomHidden auf einen logischen High-Pegel verändern. Der Dekodierer deaktiviert das Signal ROM_SEL solange, bis das Signal RomHidden einen logischen Low-Pegel aufweist. Das System kann nicht auf den ROM zugreifen. Dies verhindert, dass der Herstellercode im System verwendet wird und kann das System vor einer sogenannten Hintertür schützen, die ein Hersteller absichtlich in das System einbaut, um ein Systemprogramm einfach aufrecht zu erhalten oder für andere Zwecke.
  • Der beispielhafte Modusgenerator 350 von 5 ist dem Modusgenerator 250 von 2 ähnlich, der Modusgenerator 350 umfasst jedoch zwei weitere Speicher 353 und 354 zum Speichern von Verriegelungsmodi. Die beiden Speicher 353 und 354 sind programmierbare Festwertspeicher (NVMs), im Allgemeinen PROMs. Einmal programmiert, beispielsweise auf einen logischen High-Pegel, können diese Speicher nicht mehr gelöscht werden, beispielsweise auf einen logischen Low-Pegel. Ein Signal UserLock bewirkt, dass das System nur unter Verwendung des Flashspeichers 340 bootet. Dies verhindert, dass das System durch fehlerhafte Änderungen des Signals BootMem unter Verwendung des ROM 330 gebootet wird. Der Kunde kann hierbei immer noch auf den ROM 330 zugreifen und Bibliotheken und Programme in den Flashspeicher kopieren.
  • Der Modusdekodierer 320 von 3 verwendet die Modi UserLock und RomHiddenLock des Modusgenerators 350, um einen schreibenden Zugriff auf die NVMs zu verhindern, welche die Modi BootMem bzw. RomHidden speichern.
  • Das Signal RomHiddenLock verhindert dauerhaft einen Zugriff der CPU 310 auf den ROM. Dies verhindert einen Zugriff des Systems auf den ROM 330 durch fehlerhafte Veränderung des Signals RomHidden. Der Kunde kann hierbei die durch den Hersteller zur Verfügung gestellten, nur im ROM gespeicherten Bibliotheken und Programme nicht verwenden.
  • Das System 800 von 8 arbeitet ähnlich wie das System 300 von 5, verwendet jedoch den Modusgenerator 850 zum Auswerten der Modi UserLock und RomHiddenLock, um einen schreibenden Zugriff auf die NVMs zu verhindern, welche die Modi BootMem bzw. RomHidden speichern.

Claims (8)

  1. Speichersystem (200, 300, 800) mit: - einem Modusdekodierer (220, 320, 820), - einem ersten Speicher (230, 330, 830) in Signalverbindung mit dem Modusdekodierer (220, 320, 820), - einem zweiten Speicher (240, 340, 840) in Signalverbindung mit dem Modusdekodierer (220, 320, 820) und - einem Modusgenerator (250, 350, 850) in Signalverbindung mit dem Modusdekodierer (220, 320, 820) zum Erzeugen eines Signals (ROM SEL, FM_SEL), das zum Auswählen des ersten Speichers (230, 330, 830) oder des zweiten Speichers (240, 340, 840) als ein Bootspeicher dient, - wobei der Modusgenerator eine erste nichtflüchtige Speichereinheit (251) zum Speichern eines ersten Modus aufweist, wobei der Wert des ersten Modus zur Auswahl des ersten und/oder des zweiten Speichers dient, wobei der Modusgenerator ein erstes Signal (BootMem) erzeugt, dessen Zustand vom Wert des ersten Modus abhängt, und - wobei der Modusgenerator eine zweite nichtflüchtige Speichereinheit (252) zum Speichern eines zweiten Modus aufweist, wobei der Wert des zweiten Modus einen Zugriff auf den ersten Speicher unabhängig von dem in der ersten nichtflüchtigen Speichereinheit (251) gespeicherten Modus verhindert oder ermöglicht, - wobei der Modusgenerator ein zweites Signal (RomHidden) erzeugt, dessen Zustand vom Wert des zweiten Modus abhängt, - wobei der Modusdekodierer (220) das erste Signal (BootMem) und das zweite Signal (RomHidden) empfängt und bei einem ersten Zustand des zweiten Signals (RomHidden) unabhängig von einem Zustand des ersten Signals (BootMem) einen Zugriff auf den ersten Speicher verhindert, und bei einem zweiten Zustand des zweiten Signals (RomHidden) den ersten Speicher oder den zweiten Speicher in Abhängigkeit vom Zustand des ersten Signals (BootMem) auswählt.
  2. Speichersystem nach Anspruch 1, dadurch gekennzeichnet, dass der erste Speicher ein nicht löschbarer Speicher ist.
  3. Speichersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der zweite Speicher ein löschbarer und programmierbarer Speicher ist.
  4. Speichersystem nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass der erste und/oder der zweite Speicher einen internen Adressdekodierer umfasst.
  5. Speichersystem nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der erste Speicher ein Masken-ROM und der zweite Speicher ein Flashspeicher ist.
  6. Speichersystem nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der erste Speicher Bootcode und Bibliotheksfunktionen umfasst.
  7. Einchip-Mikrocontroller, dadurch gekennzeichnet, dass er ein Speichersystem nach einem der Ansprüche 1 bis 6 umfasst.
  8. Eingebettetes System, dadurch gekennzeichnet, dass es ein Speichersystem (200, 300, 800) nach einem der Ansprüche 1 bis 6 umfasst.
DE102005031530.5A 2004-07-03 2005-07-01 Speichersystem, Einchip-Mikrocontroller und eingebettetes System Active DE102005031530B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020040051801A KR100604877B1 (ko) 2004-07-03 2004-07-03 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법
KR10-2004-0051801 2004-07-03
US11/050,477 2005-02-03
US11/050,477 US7493484B2 (en) 2004-07-03 2005-02-03 Method and apparatus for executing the boot code of embedded systems

Publications (2)

Publication Number Publication Date
DE102005031530A1 DE102005031530A1 (de) 2006-01-26
DE102005031530B4 true DE102005031530B4 (de) 2019-10-24

Family

ID=35511094

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005031530.5A Active DE102005031530B4 (de) 2004-07-03 2005-07-01 Speichersystem, Einchip-Mikrocontroller und eingebettetes System

Country Status (2)

Country Link
DE (1) DE102005031530B4 (de)
FR (1) FR2872603B1 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388267A (en) 1991-05-29 1995-02-07 Dell Usa, L.P. Method and apparatus for updating and restoring system BIOS functions while maintaining BIOS integrity
EP1087294A2 (de) 1999-09-27 2001-03-28 Nortel Networks Limited Verfahren und Gerät zur Fernaktualisierung der Firmware eines Kommunikationsgerät

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634079A (en) * 1992-05-15 1997-05-27 Zenith Data Systems Corporation System for providing for a parallel port with standard signals and a flash recovery mode with second predetermined signals redefining parallel port with alternate functions
US6182187B1 (en) * 1993-04-07 2001-01-30 Compaq Computer Corporation System ROM including a flash EPROM and a ROM for storing primary boot code replacing a block flash EPROM
JP3727485B2 (ja) * 1999-04-02 2005-12-14 シャープ株式会社 不揮発性メモリ内蔵マイクロコンピュータ

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388267A (en) 1991-05-29 1995-02-07 Dell Usa, L.P. Method and apparatus for updating and restoring system BIOS functions while maintaining BIOS integrity
EP1087294A2 (de) 1999-09-27 2001-03-28 Nortel Networks Limited Verfahren und Gerät zur Fernaktualisierung der Firmware eines Kommunikationsgerät

Also Published As

Publication number Publication date
FR2872603B1 (fr) 2007-02-09
DE102005031530A1 (de) 2006-01-26
FR2872603A1 (fr) 2006-01-06

Similar Documents

Publication Publication Date Title
US6205548B1 (en) Methods and apparatus for updating a nonvolatile memory
DE4329336C2 (de) Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors
US20060005005A1 (en) Method and apparatus for executing the boot code of embedded systems
DE60005563T2 (de) Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code
DE10297281B4 (de) Verfahren zum elementaren Aktualisieren einer Vielzahl von Dateien
US6505279B1 (en) Microcontroller system having security circuitry to selectively lock portions of a program memory address space
DE2416609C2 (de) Datenverarbeitungsanlage mit einer zentralen Verarbeitungseinheit und Multiprogrammierung mit mehreren Programmunterbrechungs-Prioritätsstufen
DE10296986T5 (de) Automatischer Austausch einer detekten BIOS-Abbildung
DE10159901B4 (de) Mikrocomputer mit eingebautem programmierbarem, nichtflüchtigem Speicher
US20020091919A1 (en) Method, system, and program for selecting one of multiple code images to execute following a reboot operation
DE602005003778T2 (de) Verfahren und Vorrichtung zum Wiederbeschreiben eines Sektors mit Bootloader-Software in einem sektor-löschbaren nichtflüchtigen Halbleiterspeicher
KR920022093A (ko) 복구가능한 베이식 펌웨어를 가진 컴퓨터시스템 동작방법
DE102010006139A1 (de) System und Verfahren zur Finalisierung eines Halbleiterspeichers
DE69831985T2 (de) Mikrocomputer mit Flash-EEPROM
DE102015209502A1 (de) Markierungsprogrammierung in nichtflüchtigen Speichern
DE4238099C2 (de) Mikroprozessor mit mehreren Betriebsmoden
DE102006009214B4 (de) Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers
DE10330607A1 (de) Einzelchip-Mikrocomputer und Verfahren zu dessen Boot-Region-Schaltern
EP1611517A2 (de) Programmgesteuerte einheit
DE102005031530B4 (de) Speichersystem, Einchip-Mikrocontroller und eingebettetes System
DE60226276T2 (de) Verfahren und anordnung zum modifizieren des inhalts eines korrekturidentifikationsregisters
EP1032871B1 (de) Verfahren und anordnung zum laden von daten für grundlegende systemroutinen eines datenverarbeitungssystems
DE10315726A1 (de) Programmgesteuerte Einheit
DE10064025B4 (de) Verfahren zum Booten eines Mikroprozessors sowie Mikroprozessor mit einem bedingten deterministischen Rücksetzvektor
EP1611515B1 (de) Programmgesteuerte einheit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R008 Case pending at federal patent court
R009 Remittal by federal patent court to dpma for new decision or registration
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009445000

Ipc: G06F0009440100

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final