-
Die
Erfindung bezieht sich allgemein auf eine Initialisierung eines
Computersystems. Insbesondere bezieht sich die Erfindung auf eine
verbesserte Speicherarchitektur zum Booten eines Computersystems.
-
Viele
moderne elektronische Vorrichtungen, wie z. B. Mobiltelefone, PDAs,
tragbare Musikabspielgeräte,
Gerätschaften
usw. umfassen normalerweise ein eingebettetes Computersystem. Ein
eingebettetes Computersystem enthält normalerweise einen Computerprozessor
(der als Host bezeichnet wird), einen nicht flüchtigen Speicher (wie z. B.
einen Flash-Speicher
und/oder ROM-Speicher) und einen flüchtigen Speicher, wie z. B.
einen dynamischen Direktzugriffsspeicher (DRAM). Der Host kann eine zentrale
Verarbeitungseinheit (CPU), einen Digitalsignalprozessor (DSP),
eine Mikrosteuerungseinheit (MCU) oder eine Direktspeicherzugriff-(DMA-)Datenübertragungsvorrichtung
umfassen.
-
Während des
Betriebs führt
ein Host normalerweise ein Betriebssystem oder einen anderen Operationscode
aus. Da auf einen flüchtigen
Speicher normalerweise schneller zugegriffen werden kann als auf
einen nicht flüchtigen
Speicher, kann der Operationscode in dem flüchtigen Speicher gespeichert
sein und auf denselben kann durch den Host von dem flüchtigen
Speicher zugegriffen werden. Da jedoch ein flüchtiger Speicher eine Leistungsquelle erfordert,
um Daten aufrecht zu erhalten, die darin gespeichert sind, wird
der flüchtige
Speicher normalerweise gelöscht,
wenn das eingebettete System heruntergefahren wird. Dementsprechend
wird, wenn das eingebettete System hochgefahren wird (z. B. wenn
das eingebettete System in einen Rücksetzzustand eintritt), der
Operationscode, der von dem Hostsystem benötigt wird, normalerweise in
den flüchtigen
Speicher geladen. Normalerweise wird der Operationscode von dem
nicht flüchtigen
Speicher (z. B. einem ROM und/oder Flash-Speicher) geladen, der gespeicherte
Daten hält,
selbst wenn das eingebettete System nicht mit Leistung versorgt
wird. Der Prozess des Ladens von Code, der in einem nicht flüchtigen
Speicher gespeichert ist, in einen flüchtigen Speicher und des Ausführens des
Codes von dem flüchtigen
Speicher kann als Codeschattenverarbeitung bezeichnet werden.
-
Wenn
das eingebettete System hochgefahren wird, führt das eingebettete System
normalerweise eine Bootsequenz durch, um den Operationscode von
dem nicht flüchtigen
Speicher ordnungsgemäß in den
flüchtigen
Speicher zu laden und den Host mit dem Operationscode zu initialisieren.
Um die Bootsequenz durchzuführen,
greift der Host normalerweise auf Bootcode zu, der in einem vordefinierten
Bereich des nicht flüchtigen
Speichers gespeichert ist. Der Bootcode ist ein einfacher Code,
der durch den Host ausgeführt
werden kann, was es dem Host ermöglicht,
kompliziertere Aktionen durchzuführen,
die erforderlich sind, um den Operationscode in den flüchtigen
Speicher zu laden und die Ausführung
des Operationscodes zu beginnen.
-
In
einigen Fällen
kann der Host den Operationscode unter Verwendung von Direktspeicherzugriff (DMA)
von dem nicht flüchtigen
Speicher zu dem flüchtigen
Speicher übertragen.
DMA ermöglicht, dass
ein Teil eines Speichers rasch und automatisch von einem Speicherort
zu einem anderen Speicherort bewegt wird. Um die DMA-Übertragung
durchzuführen,
kann es sein, dass der Host die DMA-Maschine initialisieren muss.
In einigen Fällen
kann die DMA-Maschine in dem Host angeordnet sein. Um die DMA-Maschine
zu initialisieren, kann der Host Informationen und/oder Anweisungen
verwenden, die durch den Bootcode geliefert werden. Wenn die DMA-Maschine initialisiert
ist, kann der Host Befehle an die DMA-Maschine ausgeben, um Operationscode
von dem nicht flüchtigen
Speicher in den flüchtigen
Speicher zu laden.
-
Der
Host kann dann beginnen, den Operationscode und beliebigen anderen
Code, der zum ordnungsgemäßen Betrieb
des Host notwendig ist, auszuführen.
-
Ein
Booten eines eingebetteten Systems, wie dasselbe im Vorhergehenden
beschrieben ist, kann eine Vielzahl von speziellen Konfigurationen
für den
Host erfordern. Zum Beispiel benötigt
der Host normalerweise mehrere Schnittstellen, die konfiguriert
sind, um mit mehreren Speichertypen (Flash-, ROM- und DRAM-Speichertypen)
Schnittstellen zu bilden. Der Host ist normalerweise auch konfiguriert, um
den Bootcode automatisch zu laden, einen Steuerungscode für eine eingebettete
Mikrosteuerung zu laden und Fähigkeiten
zum Initialisieren und Verwalten von DMA-Übertragungen von dem nicht
flüchtigen
Speicher zu dem flüchtigen
Speicher als Teil der Bootsequenz zu liefern. Derartige Spezialkonfigurationen,
die von dem Host zum Booten des eingebetteten System benötigt werden,
verringern normalerweise die Flexibilität und erhöhen die Entwurfskosten des
Hosts und des eingebetteten Systems.
-
Dementsprechend
werden ein verbessertes System und ein verbessertes Verfahren zum
Booten eines eingebetteten Systems benötigt.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zum Initialisieren
eines Computersystems, ein Verfahren zum Laden von Initialisierungscode,
eine Dynamischer-Direktzugriffsspeicher-(DRAM-)Vorrichtung
und ein eingebettetes System mit verbesserten Charakteristika zu
schaffen.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 6, ein Verfahren
gemäß Anspruch
11, eine Vorrichtung gemäß Anspruch
16 oder 21 sowie ein eingebettetes System gemäß Anspruch 26 gelöst.
-
Ausführungsbeispiele
der Erfindung liefern ein Verfahren und eine Vorrichtung zum Initialisieren eines
Computersystems, wobei das Computersystem einen Prozessor, einen
flüchtigen
Speicher und einen nicht flüchtigen
Speicher umfasst. Bei einem Ausführungsbeispiel
umfasst das Verfahren, wenn das Computersystem initialisiert wird,
ein automatisches Kopieren von Initialisierungscode, der in dem nicht
flüchtigen
Speicher gespeichert ist, zu dem flüchtigen Speicher, wobei eine
Schaltungsanordung in dem flüchtigen
Speicher automatisch die Kopie erzeugt, und ein Ausführen der
Kopie des Initialisierungscodes von dem flüchtigen Speicher durch den Prozessor.
-
Damit
die obigen Ausführungen
der vorliegende Erfindung im Detail verstanden werden können, ist
eine genauere Beschreibung der Erfindung, die im Vorhergehenden
kurz zusammengefasst ist, unter Bezugnahme auf Ausführungsbeispiele
verfügbar,
von denen einige in den angehängten
Zeichnungen veranschaulicht sind. Es sei jedoch darauf hingewiesen,
dass die angehängten
Zeichnungen nur typische Ausführungsbeispiele
dieser Erfindung darstellen und deshalb nicht als ihren Schutzbereich
einschränkend
betrachtet werden sollen, da die Erfindung andere gleichermaßen wirksame
Ausführungsbeispiele
zulassen kann. Es zeigen:
-
1 ein
Blockdiagramm, das ein exemplarisches System gemäß einem Ausführungsbeispiel der
Erfindung zeigt;
-
2 ein
Blockdiagramm, das eine detaillierte Ansicht und einen Datenweg
einer exemplarischen DRAM-Vorrichtung
und eines NAND-Flash-Speichers zeigt.
-
3A und 3B Flussdiagramme,
die eine exemplarische Bootse quenz für ein eingebettetes System
gemäß einem
Ausführungsbeispiel
der Erfindung zeigen;
-
4 ein
Zustandsdiagramm, das eine exemplarische Zustandsmaschine zum Booten
eines eingebetteten Systems gemäß einem
Ausführungsbeispiel
der Erfindung zeigt;
-
5 ein
Blockdiagramm, das eine detaillierte Ansicht einer exemplarischen
DMA-Maschine/Parametereinstellung gemäß einem Ausführungsbeispiel
der Erfindung zeigt;
-
6 ein
Blockdiagramm, das eine Schaltungsanordnung zum Initialisieren der
DMA-Maschine unter Verwendung eines Erfassung-bei-Rücksetzung-Schemas
gemäß einem
Ausführungsbeispiel der
Erfindung zeigt; und
-
7 einen
kombinierten RAM-Speicher zum Speichern von Bootcodes und OS-Codes
gemäß einem
Ausführungsbeispiel
der Erfindung.
-
Ausführungsbeispiele
der Erfindung liefern ein verbessertes System und Verfahren zum
Booten eines eingebetteten Systems. Bei einem Ausführungsbeispiel
der Erfindung können
Bootcodes und Steuerungscodes, die in einem nicht flüchtigen
Speicher gespeichert sind, durch eine DMA-Maschine, die auf einem
Flüchtigspeicherchip
angeordnet sind, in einen Bootcodepuffer und einen Steuerungscodepuffer
geladen werden. Durch ein Verwenden der DMA-Maschine, die auf dem
Flüchtigspeicherchip angeordnet
ist, um Boot- und Steuerungscodes zu laden, kann die Verarbeitungsarbeitslast,
die notwendig ist, um das eingebettete System zu booten, von einem
Hostprozessor zu dem Flüchtigspeicherchip abgeladen
werden, wodurch die Komplexität
(und deshalb die Gesamtkosten) des Hostprozessors und des eingebetteten
Systems verringert werden.
-
Nachdem
die Bootcodes von dem nicht flüchtigen
Speicher in den Bootcodepuffer in dem flüchtigen Speicher geladen worden
sind, kann der Hostprozessor dann auf den Bootcode zugreifen, der in
dem Bootcodepuffer gespeichert ist. Wenn der Host auf den Bootcode
zugreift, der in dem Bootcodepuffer gespeichert ist, kann der Host
Bootoperationen durchführen.
Bei einem Ausführungsbeispiel können die
Bootoperationen ein Ausgeben von Befehlen an die DMA-Maschine umfassen,
einen Betriebssystemcode in dem flüchtigen Speicher zu laden.
Der Host kann dann den Betriebssystemcode, der in dem flüchtigen
Speicher gespeichert ist, ausführen.
Bei einem Ausführungsbeispiel
können
die Bootcodes und die Steuerungscodes ohne Wechselwirkung mit dem
Host durch die DMA-Maschine in den Flüchtigspeicherchip geladen werden.
-
Ausführungsbeispiele
der Erfindung sind im Folgenden bezüglich eines eingebetteten Systems beschrieben,
das einen Hostprozessor, einen flüchtigen Speicher und einen
nicht flüchtigen
Speicher umfasst. In einigen Fällen
kann das eingebettete System jedoch mehrere Hostprozessoren, mehrere
flüchtige Speicher
und mehrere nicht flüchtige
Speicher enthalten. Die flüchtigen
Speicher können
einen beliebigen Typ von DRAM, SRAM oder einen beliebigen anderen
Typ von flüchtigem
Speicher umfassen. Die nicht flüchtigen
Speicher können
einen beliebigen Typ von NAND-Flash-Speicher, NOR-Flash-Speicher, programmierbarem
Nur-Lese-Speicher (PROM), elektrisch löschbarem programmierbarem Nur-Lese-Speicher
(EE-PROM), Nur-Lese-Speicher (ROM) oder einen beliebigen anderen
Typ von nicht flüchtigem
Speicher umfassen. Der Hostprozessor kann einen beliebigen Typ von
Prozessor umfassen, einschließlich
einer zentralen Verarbeitungseinheit (CPU), einem Digitalsignalprozessor
(DSP), einer Mikrosteuerungseinheit (MCU) oder einer Direktspeicherzugriffs-(DMA-)Datenübertragungsvorrichtung. Auch
kann jeder Chip in dem System in einigen Fällen mehrere Typen von Prozessoren
und/oder Speichern enthalten. Zum Beispiel kann der Host eine CPU,
einen DSP und einen SRAM umfassen, Der nicht flüchtige Speicher kann in einigen
Fällen
einen ROM und einen Flash-Speicher umfassen. Andere exemplarische
Kombinationen, die bei Ausführungsbeispielen
der Erfindung verwendet werden können, sollten
für einen
Fachmann ohne Weiteres ersichtlich sein.
-
Ein exemplarisches
eingebettetes System
-
1 ist
ein Blockdiagramm, das ein exemplarisches System 100 gemäß einem
Ausführungsbeispiel
der Erfindung zeigt. Wie es gezeigt ist, kann das System 100 einen
Host 102, einen flüchtigen Speicher
(DRAM-Vorrichtung 110) und einen nicht flüchtigen
Speicher (NAND-Flash-Speicher 130) umfassen. Der Host kann über eine
DRAM-Verbindung 104 auf die DRAM-Vorrichtung 110 zugreifen.
Die DRAM-Vorrichtung 110 kann über eine Flash-Schnittstelle 122 und
eine Flash-Speicher-Verbindung 124 auf
den NAND-Flash-Speicher 130 zugreifen. In einigen Fällen kann
es sein, weil die Flash-Schnittstelle an
der DRAM-Vorrichtung 110 angeordnet ist, dass der Host 102 keine
Flash-Speicher-Schnittstelle oder -Verbindung benötigt, wodurch
der Entwurf und die Auswahl des Hosts 102 vereinfacht werden.
Optional kann der Host 102, wenn dies erwünscht ist,
eine Flash-Speicher-Schnittstelle
und -Verbindung umfassen.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann die DRAM-Vorrichtung 110 ein SDRAM-Speicherarray 108 umfassen.
Die DRAM-Vorrichtung kann auch einen Bootcode- und Datenpuffer 106,
eine DRAM-Schnittstelle 114, eine Flash-Verwaltungseinrichtung 112,
einen Steuerungscodepuffer 116, einen eingebetteten Mikrosteuerungskern 118 und
eine DMA-Maschine 120 enthalten.
Wie es im Folgenden beschrieben ist, kann die NAND-Flash-Schnittstelle 122 verwendet
werden, um auf Informationen zuzugreifen, die in dem NAND-Flash-Speicher 130 gespeichert
sind, einschließlich
Bootcodes 132, Steuerungscodes 134, Betriebssystem-
und Anwendungscode 136, Daten 138 und beliebige
andere Informationen, die in dem NAND-Flash-Speicher 130 gespeichert
sind.
-
2 ist
ein Blockdiagramm, das eine detaillierte Ansicht und einen Datenweg
der DRAM-Vorrichtung 110 und des NAND-Flash-Speichers 130 gemäß einem
Ausführungsbeispiel
der Erfindung zeigt. In einigen Fällen kann der NAND-Flash-Speicher 130 in
Blöcke
(blk0 bis blkm)
geteilt und partitioniert sein (z. B. in nicht überlappende Speicherbereiche
geteilt). Jeder der Typen von Code 132, 134, 136,
die in 1 gezeigt sind, kann als Bilder (z. B. Kopien,
die von einer einzigen Quelle gemacht wurden) in den Partitionen
gespeichert sein. Wie es in 2 gezeigt ist,
kann der NAND-Flash-Speicher 130 Steuerungscodebilder 234,
Bootbilder 232, Betriebssystem-, Anwendungs- und/oder DSP-Codebilder 236 enthalten. Der
NAND-Flash-Speicher 130 kann auch andere Daten 138 enthalten.
Auch kann, wie es im Vorhergehenden beschrieben ist, die DRAM-Speichervorrichtung 110 einen
Daten- und Bootcodepuffer 106 enthalten. In einigen Fällen können der
Datenpuffer 210 und der Bootcodepuffer 212 als
getrennte Puffer bereitgestellt sein, wie es gezeigt ist.
-
Wie
es im Folgenden bezüglich
der Bootsequenz beschrieben ist, kann die DMA-Maschinenschaltungsanordnung 120 verwendet
werden, um die Bootcodes 132 automatisch von den Bootcodebildern 232 in
den Bootcodepuffer 212 zu laden und die Steuerungscodes 134 von
den Steuerungscodebildern 234 zu laden. Nachdem die Bootcodes 132 und die
Steuerungscodes 134 in die DRAM-Speichervorrichtung 110 geladen
worden sind, können
Befehle, die an die DMA-Maschine 120 ausgegeben werden, verwendet
werden, um einen DMA-Zugriff einzuleiten, der einen gewünschten
Code von den OS-, Anwendungs- und
DSP-Codebildern 236 und andere Daten 138 in einen
Codeschatten 204 und andere Daten 202, die in
dem SDRAM-Array 108 gespeichert
sind, kopiert.
-
In
einigen Fällen
können
durch ein Abladen von Arbeit von dem Host 102 auf die DMA-Maschine 120 und
die eingebettete Mikrosteuerung 118 in der DRAM-Speichervorrichtung 110 der
Entwurf und der Betrieb des Hosts 102 und des eingebetteten Systems 100 vereinfacht
werden. Auch kann durch ein Speichern der Bootcodes 132,
der Steuerungscodes 134 und des OS/Anwendung/DSP-Codes 136 in
dem programmierbaren nicht flüchtigen
Speicher 130 Code, der zum Betrieb des eingebetteten Systems 100 benötigt wird,
auf eine flexiblere Weise gespeichert und wiedergewonnen werden.
Zum Beispiel können, um
die Bootcodes 132, die Steuerungscodes 134 und/oder
den OS/Anwendung/DSP-Code 136 zu aktualisieren, die neuen
Codes einfach neu über
die alten Codes in dem programmierbaren nicht flüchtigen Speicher 130 geschrieben
werden. Da Informationen über
die Speicherung und Wiedergewinnung der Codes auch in dem programmierbaren
nicht flüchtigen Speicher
gespeichert werden können,
können
neue Speicherungs- und Wiedergewinnungsinformationen auch in den
programmierbaren nicht flüchtigen
Speicher 130 programmiert werden, wenn irgendwelche der
Codes aktualisiert werden.
-
Exemplarische
Bootsequenz
-
Die 3A und 3B sind
Flussdiagramme, die eine exemplarische Bootsequenz für ein eingebettetes
System 100 gemäß einem
Ausführungsbeispiel
der Erfindung zeigen. Die Bootsequenz kann Informationen verwenden,
die in dem NAND-Flash-Speicher 130 gespeichert
sind. Die Informationen können
in dem NAND-Flash-Speicher 130 gespeichert werden, bevor
das System 100 anfänglich
gebootet wird, z. B. durch eine NAND-Programmiereinrichtung 302.
Die NAND-Programmiereinrichtung 302 kann Bootcodes 132 (Schritt 304), Steuerungscodes 134 (Schritt 306)
und OS-Codes 136 (Schritt 308) in den NAND-Flash-Speicher 130 brennen.
Entwurfsüberlegungen,
die Fachleuten bekannt sind, können
beim Auswählen
der relativen Speichergröße und Platzierung
jedes der Codes 132, 134 und 136 angestellt
werden.
-
Wenn
das System 100 bei Schritt 310 hochgefahren wird,
kann die Bootsequenz bei Schritt 312 durch ein Laden der
Bootcodes 132 beginnen. Bei einem Ausführungsbeispiel können die Bootcodes 132 von
dem NAND-Flash-Speicher 130 in den Bootcodepuffer 212 geladen
werden, wobei die DMA-Maschinenschaltungsanordnung 120 der
DRAM-Speichervorrichtung 110 verwendet wird. Wie es Fachleuten
bekannt ist, kann der DMA-Zugriff eine automatische Übertragung
des Bootcodes 132 von dem NAND-Flash-Speicher 130 zu
dem Bootcodepuffer 212 ohne externe Steuerung oder Eingabe
z. B. durch den Host 102 oder eine andere externe Steuerungsschaltungsanordnung
umfassen. Der DMA-Zugriff kann fortgeführt werden, bis das DMA-Laden
abgeschlossen ist (Schritt 314).
-
Die
DMA-Maschinenschaltungsanordnung 120 kann die NAND-Flash-Schnittstelle 122 der DRAM-Speichervorrichtung 110 verwenden,
um auf den NAND-Flash-Speicher 130 zuzugreifen. Bei einem
Ausführungsbeispiel
kann die DMA-Maschinenschaltungsanordnung 120 oder eine
andere geeignete Schaltungsanordnung in der DRAM-Vorrichtung automatisch
konfiguriert werden, um die Bootcodes 134 von einem vordefinierten
Bereich des NAND-Flash-Speichers 130 (z. B. beginnend bei Block
0, Speicheradresse 0 und fortfahrend für eine bestimmte Länge) zu
laden. Optional können
die Quellenadresse und die Größe des Bootcodes
durch eine externe Vorrichtung, durch Daten, die in einem Bereich
des Speichers gespeichert sind (z. B. in einem ROM oder in einem
vordefinierten Bereich des NAND-Flash-Speichers 130), oder
auf eine andere Weise, wie es im Folgenden beschrieben ist, geliefert werden.
-
Nachdem
die Bootcodes 132 bei den Schritten 312 und 314 geladen
worden sind, können
die Steuerungscodes 116, die durch den eingebetteten Mikrosteuerungskern 118 verwendet
werden, beginnend bei Schritt 316 geladen werden. In einigen
Fällen
kann das Laden der Steuerungscodes 134 automatisch eingeleitet
werden, nachdem die Bootcodes 132 fertig geladen sind.
Bei einem Ausführungsbeispiel
können
die Steuerungscodes 134 von dem NAND-Flash-Speicher 130 zu
dem Steuerungscodepuffer 116 geladen werden, wo auf die
Steue rungscodes 134 durch den eingebetteten Mikrosteuerungskern 118 zugegriffen
werden kann. In einigen Fällen
kann die DMA-Maschine 120 konfiguriert sein, um die Steuerungscodes 134 automatisch
zu laden, z. B. nach einem Laden der Bootcodes 132. Die Steuerungscodes 134 können von
einem vordefinierten Bereich des NAND-Flash-Speichers 130 geladen werden,
unter Verwendung von Anweisungen in den Bootcodes 132,
unter Verwendung von Anweisungen, die von einer externen Vorrichtung
ausgegeben werden, oder untere Verwendung von irgendeiner anderen
Art und Weise, die Fachleuten bekannt ist. Weitere Ausführungsbeispiele
zum Laden der Boot- und Steuerungscodes 132, 134 sind
ebenfalls im Folgenden genauer beschrieben. Der DMA-Zugriff, der verwendet
wird, um die Steuerungscodes 134 zu laden, kann fortgeführt werden,
bis das Laden bei Schritt 138 abgeschlossen ist.
-
Nachdem
die Bootcodes 132 und die Steuerungscodes 134 in
den Bootcodepuffer 212 bzw. den Steuerungscodepuffer 116 geladen
worden sind, kann die eingebettete Mikrosteuerung 118 aktiviert werden,
und die NAND-Flash-Verwaltungseinrichtung 112, der Fehlerkorrekturcode
(ECC) und Codedekomprimierungshilfsprogramme könnten bei Schritt 320 eingerichtet
werden. Die eingebettete Mikrosteuerung 118 kann verwendet
werden, um eine NAND-Flash-Verwaltungsfunktionalität für den NAND-Flash-Speicher 130 zu
liefern (wodurch z. B. eine solche Flash-Speicher-Verwaltung von
dem Host 102 abgeladen wird). Die NAND-Flash-Verwaltungseinrichtung 112 kann
auch durch die eingebettete Mikrosteuerung 118 verwendet
werden, um auf den NAND-Flash-Speicher 130 zuzugreifen
(z. B. durch ein Liefern einer Unterstützung zum Lesen von dem NAND-Flash-Speicher 130 und
zum Schreiben in denselben). Die ECC-Hilfsprogramme können verwendet
werden, um sicherzustellen, dass Daten, die von dem NAND-Flash-Speicher 130 empfangen
werden, korrekt übertragen
worden sind, und möglicherweise
gegebenenfalls Fehler bei der Übertragung korrigieren.
Die Codedekomprimierungshilfsprogramme können verwendet werden, um Code
zu dekomprimieren, der in einem komprimierten Format gespeichert ist
(z. B. den OS/Anwendungscode 136), der von dem NAND-Flash-Speicher 130 wiedergewonnen
wird.
-
Nachdem
die eingebettete Mikrosteuerung 118 aktiviert worden ist,
und nachdem die damit in Beziehung stehende Unterstützungsschaltungsanordnung
initialisiert worden ist, kann der Host 102 von dem Bootpuffer 212 gebootet
werden. Bei einem Ausführungsbeispiel
der Erfindung kann auf den Bootpuffer 212 über die
DRAM-Verbindung 104 durch den Host 102 zugegriffen
werden. Auf den Bootpuffer 212 kann durch den Host 102 z.
B. durch ein Anfordern von Daten von einer spezifischen, vordefinierten
Speicheradresse innerhalb der DRAM-Speichervorrichtung 110 zugegriffen
werden. Optional können
spezielle Befehle, die an die Speichervorrichtung 110 ausgegeben
werden, verwendet werden, um auf den Bootpuffer 212 zuzugreifen.
Der Host 102 kann den Bootcode 132, der in dem
Bootpuffer 212 gespeichert ist, verwenden, um kompliziertere
Aktionen durchzuführen,
die benötigt
werden, um den Betriebssystemcode 136 in die DRAM-Speichervorrichtung 110 zu
laden und die Ausführung
des Betriebssystemcodes 136 und anderer Hardwarevorrichtungen
in dem Hostsystem usw. zu beginnen. Zum Beispiel kann der Bootcode 132 Unterbrechungen
deaktivieren, Modusregister in dem Host 102 initialisieren
und Befehle an die Speichervorrichtung 110 ausgeben, um
eine Codeschattenverarbeitung des Betriebssystemcodes 136 zu beginnen.
Der Bootcode 132 kann auch Informationen liefern, die anzeigen,
welche Befehle an die Speichervorrichtung 110 ausgegeben
werden sollten, um Codeschattenverarbeitungsoperationen durchzuführen, sowie
den Ort des Betriebssystemcodes 132 innerhalb des NAND-Flash-Speichers 130.
-
Nachdem
der Host 102 die Hardware bei Schritt 322 gebootet
und initialisiert hat, können
die OS/Anw/DSP-Bilder 236 bei Schritt 328 geladen
werden. Bei einem Ausführungsbeispiel
der Erfindung kann der Host 102 Befehle an die DMA-Maschine 120 ausgeben,
um das Laden der OS/Anw/DSP-Bilder 236 von dem NAND-Flash-Speicher 130 zu
dem SDRAM-Array 108 über eine
DMA-Übertragung
einzuleiten. In einigen Fällen
kann der Host 102 den Bootcode 132 verwenden,
um die geeigneten Befehle an die DMA-Maschine 120 und/oder
die Steuerung 118 auszugeben. Wenn die Befehle an die DMA-Maschine 120 ausgegeben
worden sind, kann die DMA-Maschine 120 automatisch und
eigenständig die
DMA-Übertragung
ohne Wechselwirkung von dem Host 102 durchführen. In
der Zwischenzeit kann der Host 102 mit einigen anderen
Aufgaben (die ein Warten in einem Wartezustand umfassen können) aktiv
bleiben, bis die Speichervorrichtung 110 und/oder die DMA-Maschine 120 anzeigen,
dass die Schattenverarbeitung abgeschlossen ist (Schritt 324).
-
Während die
OS/Anw/DSP-Bilder 236 geladen werden, kann der Code, der
geladen wird, bei Schritt 330 unter Verwendung eines eingebetteten ECC
geprüft
und dekomprimiert werden (falls der Code 236 in einem komprimierten
Format gespeichert ist). Bei einem Ausführungsbeispiel können der eingebettete
Mikrosteuerungskern 118 und/oder andere Komponenten (z.
B. die DMA-Maschinenschaltungsanordnung 120 und die NAND-Flash-Verwaltungseinrichtung 112)
den übertragenen
Code unter Verwendung von ECC prüfen
und die Dekomprimierung durchführen.
Die DMA-Übertragung
kann fortgeführt
werden, bis das DMA-Laden des Codeschattens 204 abgeschlossen
ist (Schritt 332).
-
Nachdem
der Host 102 bestimmt hat, dass die Schattenverarbeitung
abgeschlossen ist (Schritt 324), kann der Host den Betriebssystemcode 136 (und
jeden beliebigen anderen Code, der durch den Host 102 verwendet
wird) von dem Codeschatten 204, der in dem SDRAM-Array 108 angeordnet
ist, starten. Bei einem Ausführungsbeispiel
können
ein Signal oder Befehl, die durch die DMA-Maschine 120 ausgegeben
werden, nachdem die DMA-Übertragung
der OS/Anw/DSP-Codes 136 abgeschlossen ist, verwendet werden,
um dem Host 102 anzuzeigen, dass die Codeschattenverarbeitung
abgeschlossen worden ist. Wenn der Host 102 den Operationscode
von der DRAM-Speichervorrichtung 110 startet,
können
normale Operationen des eingebetteten Systems 100 beginnen,
wobei die Bootsequenz 300 erfolgreich abgeschlossen wird.
-
Die
im Vorhergehenden beschriebene Bootsequenz kann aus mehreren Gründen dabei
behilflich sein, den Entwurf des eingebetteten Systems zu verbessern.
Zum Beispiel kann es in einigen Fällen sein, dass der Host 102 nicht
zur Bootvorbereitung, wie z. B. Laden der Bootcodes 132,
verwendet wird, wodurch die Notwendigkeit beseitigt wird, eine vorherige
Initialisierung des Hosts 132 zu ermöglichen, bevor die Bootcodes 132 geladen
werden. Auch kann es sein, dass der Host 102 nicht an der
Initialisierung des NAND-Flash-Speichers 130 beteiligt
ist, was erneut die Notwendigkeit einer vorherigen Initialisierung
des Hosts 102 verringert. Ferner muss, da die DRAM-Speichervorrichtung 110 die
DMA-Maschine 120 und
den eingebetteten Mikrosteuerungskern 118 enthalten kann,
der Host 102 keine umfassende Unterstützung für die DMA-Übertragungen und Codeschattenverarbeitung
liefern. Stattdessen kann der Host 102 nur Befehle an die
DRAM-Speichervorrichtung 110 ausgeben und ermöglichen,
dass die DRAM-Speichervorrichtung 110 die notwendigen DMA-Übertragungen durchführt.
-
4 ist
ein Zustandsdiagramm, das eine exemplarische Zustandsmaschine 400 zum
Booten eines eingebetteten Systems 100 gemäß einem
Ausführungsbeispiel
der Erfindung zeigt. Wenn das System 100 anfangs hochgefahren
wird, kann jede der Systemkomponenten in einen Rücksetzzustand 402 eintreten.
In dem nächsten
Zustand (dem DMA-Parameterzustand 404) kann die DMA-Maschinenschaltungsanordnung 120 mit
DMA-Parametern (z.
B. einer Quellenadresse, einer Bestimmungsadresse und einer Größe des zu
bewegenden Codes) zum Laden der Bootcodes 132 initialisiert
werden. Bei einem Ausführungsbeispiel
der Erfindung können
die DMA-Parameter für
die Bootcodes 132 unter Verwendung einer Erfassung-bei-Rücksetzung-Konfiguration (SOR)
in einem Register (Reg0) in der DMA-Maschine 120 platziert
werden. Die DMA- Maschinenregister
und die SOR-Konfiguration sind im Folgenden genauer beschrieben.
-
Nachdem
die DMA-Parameter für
den Bootcode 132 gespeichert worden sind, kann das DMA-Laden
in dem DMA-Ladezustand 406 durchgeführt werden. Bei einem Ausführungsbeispiel
kann die DMA-Maschine 120 einen automatischen Zähler verwenden,
um die Bootcodes 132 von der Quellenadresse zu der Bestimmungsadresse
zu übertragen, bis
der Bootcode 132, der durch den Größenparameter bestimmt ist,
bewegt worden ist. Jedes Mal, wenn eine Leseanforderung an den NAND-Flash-Speicher 130 gesendet
wird, kann ein Signal von dem NAND-Flash-Speicher (R/B#, das aktiviert wird, wenn
der NAND-Speicher bereit ist, und gesenkt wird, wenn der NAND-Speicher
besetzt ist) niedrig bleiben, was anzeigt, dass eine Seite von dem NAND-Flash-Speicher 130 geladen
wird (z. B. dass sich der NAND-Flash-Speicher 130 in einem
besetzten Zustand befindet). Wenn das R/B#-Signal aktiviert ist,
was anzeigt, dass die Seite geladen worden ist, kann die DMA-Maschine 120 entweder
mit der DMA-Übertragung
durch ein Laden einer weiteren Seite von dem NAND-Flash-Speicher 130 fortfahren (abhängig von
dem Zählerwert
und Größenparameter)
oder das Laden abschließen
und zu dem nächsten
Zustand übergehen.
-
Nachdem
die Bootcodes 132 das Laden über die DMA-Maschine 120 abgeschlossen
haben, kann ein automatischer Auslöser bewirken, dass der Zustand
zurück
zu dem DMA-Parameterzustand 404 übergeht,
wo die DMA-Parameter zum Übertragen der
Steuerungscodes 134 initialisiert werden. Bei einem Ausführungsbeispiel
können
die DMA-Parameter durch ein Laden einer Quellenadresse, einer Bestimmungsadresse
und einer Größe für die Steuerungscodes 134 in
ein Register (Reg1) der DMA-Maschine 120 initialisiert
werden. Nachdem die DMA-Parameter für die Steuerungscodes 134 gespeichert
worden sind, kann der Zustand zu dem DMA-Ladezustand 406 übergehen,
wo das DMA-Laden der Steuerungscodes 134 durch ein Übertragen der
Codes 134 von der Quellenadresse zu der Bestimmungsadresse
durchgeführt
wird, während
ein Zähler
die Größe des übertragenen
Codes verfolgt, wie es im Vorhergehenden beschrieben ist.
-
Nachdem
die Steuerungscodes 134 geladen worden sind und die Anfangs-DMA-Übertragungen abgeschlossen
sind, kann der Zustand zu dem DMA-Ruhezustand 408 übergehen,
wo die DMA-Maschine 120 in
dem Ruhezustand 408 bleibt. Gleichzeitig kann die eingebettete
Mikrosteuerung 118 bei einem Steuerungsstartzustand 410 beginnen
und eine Unterstützung
zum Zugreifen auf den NAND-Flash-Speicher 130 initialisieren,
wie z. B. die NAND-Flash-Verwaltungseinrichtung 112, ECC
und Codedekomprimierungsfunktionalität. Wie es im Vorhergehenden
beschrieben ist, kann der eingebettete Mikrosteuerungskern 118 Steuerungscodes 134 verwenden,
die in dem Steuerungsscodepuffer 116 gespeichert sind,
um die Initialisierung durchzuführen. Nachdem
die eingebettete Mikrosteuerung begonnen hat und der NAND-Flash-Speicher 130 wirksam ist,
kann der Zustand zu einem Hostbootzustand 412 übergehen,
wo der Host 102 gebootet wird, z. B. unter Verwendung der
Bootcodes 132, die in dem Bootcodepuffer 212 gespeichert
sind.
-
Wenn
der Host 102 bootet und eine beliebige Hardwareinitalisierung
abschließt,
kann der Host Befehle an die DMA-Maschine 120 ausgeben
(z. B. unter Verwendung von Befehlen, die durch den Bootcode 132 geliefert
werden), um zu bewirken, dass die DMA-Maschine 120 von
dem DMA-Ruhezustand 408 zu dem DMA-Parameterzustand 404 übergeht,
wo der Host 102 die DMA-Parameter der DMA-Maschine 120 initialisiert,
um die Codeschattenverarbeitung der OS/Anw/DSP-Bilder 236 von
dem NAND-Flash-Speicher 130 in das SDRAM-Array 108 durchzuführen. Der
Host 102 kann die DMA-Maschine 120 z. B. durch
ein Liefern von DMA-Parametern für
die Quellenadresse, Bestimmungsadresse und Größe der OS/Anw/DSP-Bilder 236 initialisieren.
Die Parameter für
die OS/Anw/DSP-Bilder 236 können z. B. in einem DMA-Maschinenregister
(Reg2) gespeichert sein. Nachdem die DMA-Parameter für die OS/Anw/DSP-Bilder 236 gespeichert
worden sind, kann der Zustand zu dem DMA-Ladezustand 406 übergehen,
wo das DMA-Laden der OS/Anw/DSP-Bilder 236 durch ein Übertragen
der OS/Anw/DSP-Codes 136 von
der Quellenadresse zu der Bestimmungsadresse durchgeführt wird,
während
ein Zähler
die Größe des übertragenen
Codes verfolgt, wie es im Vorhergehenden beschrieben ist.
-
Nachdem
die OS/Anw/DSP-Codes 136 über die DMA-Übertragung
in den SDRAM 108 geladen worden sind, kann die DMA-Maschine 120 zu
einem DMA-Ruhezustand 408 zurückkehren, während der Host 102 das
Betriebssystem unter Verwendung des Codeschattens 204 startet
(Host startet OS-Zustand 414). Nachdem der Host 102 normale
Operationen begonnen hat, können
der Host 102 oder andere Komponenten in dem eingebetteten
System 100 weitere DMA-Datenübertragungen beginnend bei
dem Datenübertragungszustand 416 initialisieren.
-
Steuerung
der DMA-Maschine
-
5 ist
ein Blockdiagramm, das eine detaillierte Ansicht einer exemplarischen
DMA-Maschine 120 und Parametereinstellungen gemäß einem
Ausführungsbeispiel
der Erfindung zeigt. Wie es gezeigt ist, kann die DMA-Maschine 120 mehrere
Register 5020 , 5021 , 5022 , 5023 ,
einen Adressgenerator und Zähler 504,
eine NAND-Zugriffssteuerung 506 und eine DMA-Endlichzustandsmaschine
(FSM) 508 enthalten. Die DMA-Maschine 120 kann auch eine Boot/OS/Daten-Herunterladesteuerung 510,
eine Steuerungscodeherunterladesteuerung 512 und eine Datenhochladesteuerung 514 enthalten.
Jede der Komponenten ist im Folgenden genauer beschrieben.
-
Bei
einem Ausführungsbeispiel
der Erfindung können
die DMA-Maschinenregister 5020 , 5021 , 5022 , 5023 verwendet
werden, um zu steuern, welche Daten von dem NAND-Flash-Speicher 130 in
den SDRAM 108 geladen werden, und umgekehrt. Wie es gezeigt
ist, können
Werte in den Registern gespeichert sein, die eine Quellenadresse
(SA), eine Bestimmungsadresse (DA) und eine Größe von zu übertragenden Daten anzeigen.
-
Um
eine DMA-Übertragung
durchzuführen, können die
Register 5020 , 5021 , 5022 , 5023 in
Adressgenerator und Zähler 504 eingegeben
werden, die durch die DMA-FSM 508 gesteuert werden können. Adressgenerator
und Zähler 504 können jeden
Quellenadressen-, Bestimmungsadressen- und Größeneintrag verwenden, um die
Quellenadresse und Bestimmungsadresse zu erzeugen. Adressgenerator und
Zähler 504 können auch
Zähler
unterhalten, die den Fortschritt einer DMA-Übertragung überwachen. Wenn z. B. eine
DMA-Übertragung
eingeleitet wird, können
Adressgenerator und Zähler 504 einen
Zähler
initialisieren und Quellen- und Bestimmungsadressen an den NAND-Flash-Speicher 130 (über die NAND-Flash-Schnittstelle 122)
und an das SDRAM-Array 108 (über die SDRAM-Schnittstelle 114 oder
andere Schnittstellen, z. B. für
den Bootcodepuffer 212) liefern.
-
Nachdem
Adressgenerator und Zähler
die Quellen- und Bestimmungsadressen geliefert haben, kann die DMA-FSM 508 Befehle
an die NAND-Zugriffssteuerung 506 ausgeben, die anfordern,
dass Daten von der Quellenadresse gelesen und in die Bestimmungsadresse
geschrieben werden. Abhängig von
den Daten, die übertragen
werden, kann die DMA-Maschine 120 die Boot/OS/Datenherunterladesteuerung 510,
die Steuerungscodeherunterladesteuerung 512 oder die Datenhochladesteuerung 514 verwenden,
um die Übertragung
durchzuführen. Nachdem
die Übertragung
durchgeführt
worden ist, können
Adressgenerator und Zähler 504 einen
Zähler
inkrementieren oder dekrementieren und die nächste Quellen- und Bestimmungsadresse
für die DMA-Übertragung
berechnen. Die DMA-Übertragung
kann fortgeführt
werden, bis eine Datenmenge, die dem Größenparameter gleich ist (z.
B. verfolgt unter Verwendung der Zähler bei Adressgenerator und
Zählern 504), übertragen
worden ist.
-
Initialisierung
der DMA-Maschine
-
Wie
es im Vorhergehenden beschrieben ist, kann bei einem Ausführungsbeispiel
der Erfindung, wenn das eingebettete System hochgefahren wird und
die DMA-Maschine 120 initialisiert wird, die DMA-Maschine 120 automatisch
Bootcodes 132 und Steuerungscodes 134 von dem
NAND-Flash-Speicher 130 zu den Puffern 106, 116 in
der DRAM-Vorrichtung 110 zur Verwendung beim Initialisieren
und Betreiben des Hosts 102 und der eingebetteten Mikrosteuerung 118 übertragen.
Befehle können
dann an die DRAM-Vorrichtung 110 (z. B. durch den Host 102)
ausgegeben werden, was bewirkt, dass die OS/Anw/DSP-Codes 136 über eine
DMA-Übertragung
von dem NAND-Flash-Speicher 130 zu dem SDRAM-Array 108 geladen
werden, wo auf die Codes 136 dann durch den Host 102 zugegriffen
werden kann.
-
Bei
einem Ausführungsbeispiel
können
das Hochfahr Auslöser-Signal und das Host
Auslöser-Signal,
die an die DMA-Maschine 120 (z.
B. an die DMA-FSM 508) ausgegeben werden, verwendet werden,
um die DMA-FSM in den richtigen Zustand zum Laden der Boot-, Steuerungs-
und/oder OS/Anw/DSP-Codes 132, 134, 136 zu
versetzen. Wenn z. B. das Hochfahr Auslöser-Signal empfangen wird,
kann die DMA-Maschine 120 automatisch die Boot- und Steuerungscodes 132, 134 laden.
Später, wenn
das Host Auslöser-Signal
empfangen wird, kann die DMA-Maschine 120 automatisch die OS/Anw/DSP-Codes 136 laden.
-
Bei
einem Ausführungsbeispiel
der Erfindung kann, um die Anfangsübertragung der Bootcodes 132 von
dem NAND-Flash-Speicher 130 zu dem
Bootcodepuffer 212 durchzuführen, das erste Register 5020 der DMA-Maschine 120 initialisiert
werden, wobei eine Quellenadresse SA und eine Bestimmungsadresse
DA und eine Größe der Bootcodes 132 übertragen
werden. In einigen Fällen
können
die Initialisierungsinformationen in der DMA-Maschine 120 voreingestellt
sein (z. B. in einem ROM gespeichert oder festverdrahtet). Optional können die
Initialisierungsinformationen in einem vordefinierten Bereich des
NAND-Flash-Speichers 130 gespeichert sein. Die Initialisierungsinformationen
können
auch von irgendeiner praktischen externen Quelle empfangen werden.
In einigen Fällen
kann eine Kombination von Quellen (vordefiniert, ROM, NAND-Flash-Speicher 130 und/oder
externe Quellen) verwendet werden, um die Initialisierungsinformationen
für die DMA-Maschine 120 zu
erhalten. Initialisierungsinformationen für die Steuerungscodes und OS/Anw/DSP-Codes 136 können auch
von solchen Quellen oder einer Kombination solcher Quellen empfangen
werden.
-
6 ist
ein Blockdiagramm, das eine Schaltungsanordnung 600 zum
Initialisieren der DMA-Maschine 120 unter Verwendung eines
Erfassung-bei-Rücksetzung-Schemas
gemäß einem
Ausführungsbeispiel
der Erfindung zeigt. In dem gezeigten Fall können Signale, die an Konfigurationsanschlussstifte 614 angelegt
werden, verwendet werden, um eine Quellenadresse SA und eine Größe für die zu
ladenden Bootcodes 132 auszuwählen. Wie es im Vorhergehenden
beschrieben ist, können
die Bootcodes 132 an einem vordefinierten Ort in einen Bootcodepuffer
geladen werden, derart, dass eine Bestimmungsadresse DA für die Bootcodes 132 eventuell
nicht verwendet oder über
die Konfigurationsanschlussstifte 614 geliefert wird. Weil
die Konfigurationsanschlussstifte 614 für reguläre Operationen während eines
Nicht-RÜCKSETZ-Modus
bei einigen Typen von Vorrichtungen, wie z. B. der DRAM-Vorrichtung 110,
gemeinschaftlich verwendet werden können (z. B. können die
Konfigurationsanschlussstifte 614 als Adressanschlussstifte
oder Steueranschlussstifte während
eines Nicht-RÜCKSETZ-Modus
verwendet werden), kann es in einigen Fällen sein, dass zusätzliche
Anschlussstifte nicht benötigt
werden oder zu der DRAM-Vorrichtung 100 hinzugefügt werden,
um die Quellenadresse und die Größe zur Initialisierung
der DMA-Maschine 120 zu liefern.
-
Bei
einem Ausführungsbeispiel
der Erfindung können
die Daten, die an den Konfigurationsanschlussstiften 614 plat ziert
sind, unter Verwendung von Latches 604 gelatcht werden,
z. B. während
einer Erfassung-bei-Rücksetzung-(SOR-)Operation. Während der
SOR-Operation kann ein Rücksetzsignal
intern erzeugt werden oder über
den Rücksetzanschlussstift 602 (RESET#)
durch die DRAM-Vorrichtung 110 empfangen werden, was anzeigt,
dass das System 100 rückgesetzt
oder hochgefahren worden ist. Wenn das System 100 z. B.
hochgefahren wird, kann das Hochfahr Auslöser-Signal durch die DRAM-Vorrichtung 110 erzeugt
werden. Wenn das Rücksetzsignal
erfasst wird, können
die Latches 604 die Daten latchen, die über die Konfigurationsanschlussstifte 614 geliefert
werden. Bei einem Ausführungsbeispiel
der Erfindung können
die Initialisierungsdaten an den Konfigurationsanschlussstiften 614 durch
eine externe Vorrichtung, wie z. B. den Host 102 oder eine
beliebige andere zweckmäßige Vorrichtung,
geliefert werden. Optional können
die Initialisierungsdaten an den Konfigurationsanschlussstiften 614 über eine
festverdrahtete Verbindung zu gewünschten Spannungspegeln geliefert
werden (z. B. über
Pull-up- oder Pull-down-Widerstände),
falls dies gewünscht
wird.
-
Nachdem
das Rücksetzsignal
empfangen worden ist und die Initialisierungsdaten, die an den Konfigurationsanschlussstiften 614 geliefert
werden, durch Latches 604 gelatcht worden sind, können die Initialisierungsdaten
in den geeigneten Registern platziert werden. Bei einem Ausführungsbeispiel
der Erfindung können
die Initialisierungsdaten verwendet werden, um eine Quellenadresse
und die Größe für die Bootcodes 132 in
einer Quellenadresstabelle 608 und einer Größentabelle 606 nachzuschlagen.
Wie es gezeigt ist, kann die Nachschlagetabelle 608, falls vier
Rücksetzanschlussstifte
für die
Quellenadresse verwendet werden, 16 unterschiedliche Einträge für die Quellenadresse
liefern. Zum Beispiel kann die Quellenadresse als eine Blockzahl
innerhalb des NAND-Flash-Speichers 130 geliefert werden.
Optional können
mehr Anschlussstifte bereitgestellt werden, und direktes Adressieren
kann für
die Quellenadresse verwendet werden. Bezüglich des Größenwertes
kann, wenn vier Rück setzanschlussstifte
für den
Größenwert
verwendet werden, die Größentabelle 606 16
mögliche
Einträge
enthalten, von denen eine Größe des Bootcodes 132 ausgewählt werden kann.
Zum Beispiels kann der Größenwert
als eine Anzahl von Kilobytes (KB) geliefert werden. Wie es gezeigt
ist, kann jede der Tabellen 606, 608 Voreinstellungswerte
aufweisen, die entweder durch ein Anlegen von geeigneten Spannungen
an die Konfigurationsanschlussstifte 614 oder durch ein
Getrenntlassen der Konfigurationsanschlussstifte 614 angelegt
werden können.
-
Nachdem
die Quellenadresse und die Größe bestimmt
worden sind, können
die Quellenadresse und die Größe z. B.
in dem ersten Register 5020 der DMA-Maschine 120 gespeichert
werden. Wenn die Bootcodes 132 von dem Bootcodebild 232 in
dem NAND-Flash-Speicher 130 über eine DMA-Übertragung
zu dem SDRAM-Array 108 geladen worden sind, kann die DMA-Maschine 120 fortfahren,
die Steuerungscodes 134 zu laden.
-
Bei
einem Ausführungsbeispiel
der Erfindung können
die Steuerungscodes 134 unter Verwendung von Daten, die
in den Bootcodes 132 gespeichert sind, geladen werden,
entweder indem Anweisungen in den Bootcodes 132 verwendet
werden, um Befehle an die DRAM-Vorrichtung 110 auszugeben,
um zu bewirken, dass die Steuerungscodes 134 geladen werden,
oder indem die Daten in den Bootcodes 132 direkt in ein
Register in der DMA-Maschine 120 geladen werden. Wie es
ebenfalls im Vorhergehenden beschrieben ist, können andere Quellen zum Erhalten
von Informationen verwendet werden, die verwendet werden, um die
Steuerungscodes 134 zu laden.
-
Wie
es in 6 gezeigt ist, können bei einem Ausführungsbeispiel
die Steuerungscode-DMA-Registereinstellungen unter Verwendung von
Daten von den Bootcode-DMA-Registereinstellungen und von Daten in
den Bootcodes 132 selbst erhalten werden. Zum Beispiel
kann in einigen Fällen das
Steuerungscodebild 234 zusammenhängend (z. B. in dem nächsten verfügbaren Speicherraum)
in dem NAND-Flash-Speicher 130 mit dem Bootcodebild 232 gespeichert
werden. Somit kann die Quellenadresse des Bootcodebildes 232,
um die Quellenadresse für
das Steuerungscodebild 234 zu bestimmen, zu der Größe 610 des
Bootcodebildes 232 hinzugefügt werden. Die resultierende
Adresse kann auf den Beginn des Steuerungscodebildes 134 zeigen. Bezüglich der
Bestimmungsadresse für
die Steuerungscodes 134 kann, wie es im Vorhergehenden
beschrieben ist, die Adresse vorbestimmt sein, da die Steuerungscodes
in dem Steuercodepuffer 116 gespeichert sein können.
-
Bei
einem Ausführungsbeispiel
kann die Größe der zu übertragenden
Steuerungscodes 134 aus Daten erhalten werden, die in dem
Bootcodebild 232 oder an dessen Ende gespeichert sind.
Zum Beispiel kann die Größe der vordefinierten
Steuerungscodegrößeninformationen
von dem Ende des Bootcodebildes 232 in das Register 5021 für
die Steuerungscodeeinstellungen geladen werden. Wenn das Register
initialisiert worden ist, kann die DMA-Maschine 120 eine
DMA-Übertragung
der Steuerungscodes 134 von dem NAND-Flash-Speicher 130 zu dem
Steuerungscodepuffer 116 durchführen.
-
Bei
einem Ausführungsbeispiel
können
die DMA-Maschinenregister 5022 , 5023 für
nachfolgende Übertragungen
z. B. der OS/Anw/DSP-Codes 136 oder für beliebige andere Übertragungen
verwendet werden. Optional können
anstatt eines Verwendens von mehreren Registern die Register für die Übertragungen
des Bootcodes 132 und des Steuerungscodes 134 wieder
verwendet werden. Optional kann in einigen Fällen ein einziges Register
zum Initialisieren jeder DMA-Übertragung
verwendet werden.
-
Um
die DMA-Maschinenregister 5022 , 5023 zum Übertragen der OS/Anw/DSP-Codes 136 zu
initialisieren, kann ein beliebiges der Verfahren, die im Vorhergehenden
beschrieben sind, verwendet werden. Bei einem Ausführungsbeispiel
kann der Host 102 auf den Bootcodepuffer 212 zugreifen
und Anweisungen in dem Bootcode 132 verwenden, um die DMA- Maschinenregister 5022 , 5023 zu
initialisieren. Die DMA-Maschine 120 kann
dann automatisch die Codeschattenverarbeitung der OS/Anw/DSP-Codes 136 ohne
Wechselwirkung mit dem Host 102 durchführen. Nachdem der Codeschatten 204 erzeugt
worden ist, kann der Host 102 die OS/Anw/DSP-Codes 136 von
dem SDRAM-Array 108 ausführen und damit beginnen, das
eingebettete System 100 regulär zu betreiben.
-
Obwohl
die vorhergehende Beschreibung bezüglich einer DRAM-Speichervorrichtung 110 ein SDRAM-Array 108,
einen Datenpuffer 210, einen Bootcodepuffer 212 und
einen Steuerungscodepuffer 216 aufweist, kann einen beliebige
zweckmäßige Konfiguration
von Puffern und Speicherarrays für
die im Vorhergehenden beschriebenen Operationen verwendet werden.
Zum Beispiel kann bei einem Ausführungsbeispiel
jede DMA-Übertragung
zwischen dem NAND-Flash-Speicher 130 und dem SDRAM-Array 108 ohne
ein Speichern von Code in getrennten Spezialzweckpuffern erfolgen.
Optional kann in einigen Fällen
Code anfangs in das SDRAM-Array 108 geladen werden und
dann an Puffer Übertragen
werden, bevor auf denselben durch andere Vorrichtungen und/oder
eine andere Schaltungsanordung zugegriffen wird.
-
Als
ein weiteres Beispiel zeigt 7 einen kombinierten
RAM-Speicher 702 (der auch als ein gemeinschaftlich verwendeter
Puffer 702 bezeichnet werden kann) zum Speichern von Bootcodes 132 und
OS-Codes 136 gemäß einem
Ausführungsbeispiel
der Erfindung. Wie es gezeigt ist, können die Bootcodes 132,
die OS/Anw/DSP-Codes 136 und andere Daten 138,
wie es im Vorhergehenden beschrieben ist, von dem NAND-Flash-Speicher 130 in den
gemeinschaftlich verwendeten Puffer 702 übertragen
werden. Optional können
die anderen Daten direkt zu dem SDRAM-Array 108 übertragen
werden. Die Steuerungscodes 134 können z. B. in dem Steuerungscodepuffer 116 gespeichert
werden.
-
Bei
einem Ausführungsbeispiel
können,
um ein Überschreiben
anderer Daten in dem kombinierten Speicher 702 zu vermei den,
die Bootcodes 132 in einem Bootcodebereich 704 in
dem kombinierten Speicher 702 gespeichert werden, und die
OS-Codes, andere
Codes und Daten können
in einem OS-Code/Daten-Bereich 706 in
dem kombinierten Speicher 702 gespeichert werden. Um Daten
effizient in dem kombinierten Speicher 702 zu speichern, kann
der Bootcodebereich 704 am Beginn des kombinierten Speichers 702 gespeichert
werden, während
der OS-Code/Daten-Bereich 706 am Ende des kombinierten
Speichers 702 gespeichert werden kann. Wenn Daten und Code
in den kombinierten Speicher 702 übertragen werden, kann der
Speicher 702 von der unteren Speicheradresse nach oben
und von den hohen Speicheradressen nach unten gefüllt werden.
Bei einem Ausführungsbeispiel
kann eine Steuerschaltungsanordnung verwendet werden, um sicherzustellen,
dass keine Kollision des Bootcodebereichs 704 und des OS-Code/Daten-Bereichs 706 erfolgt.
Optional kann in einigen Fällen
der Bootcode 132, der in dem gemeinschaftlich verwendeten
Speicher 702 gespeichert ist, verwendet werden, um den Host 102 zu
initialisieren, und dann überschrieben werden,
nachdem der Host 102 gebootet hat.
-
Wie
es im Vorhergehenden beschrieben ist, liefern Ausführungsbeispiele
der Erfindung eine DRAM-Vorrichtung 110 mit einer DMA-Maschine 120,
die verwendet werden kann, um automatisch Bootcodes 132 und
Steuerungscodes 134 von einem NAND-Flash-Speicher 130 zu
der DRAM-Speichervorrichtung 110 zu übertragen. Die DMA-Maschine 120 kann
auch Befehle direkt oder indirekt von externen Vorrichtungen empfangen,
was es ermöglicht, dass
OS/Anw/DSP-Codes 136 in der DRAM-Vorrichtung 110 schattenverarbeitet
werden. In einigen Fällen
kann die DMA-Maschine 120 Anfangsbootvorgänge ohne
die Eingabe der eingebetteten Mikrosteuerung 118 oder des
Hosts 102 durchführen
und kann für
Boot/Steuerungscodespeicherorte, die neu angeordnet werden können, anpassbar
sein. Auch kann es in einigen Fällen
möglich
sein, einen gemeinschaftlich verwendeten Puffer 702 zum
Speichern von Bootcodes 132 und OS- oder anderen Codes 136 zu
verwenden.
-
Obwohl
sich die vorhergehenden Ausführungen
auf Ausführungsbeispiele
der vorliegenden Erfindung richten, können andere und weitergehende Ausführungsbeispiele
der Erfindung ohne ein Abweichen von dem Grundschutzbereich derselben
entwickelt werden, und der Schutzbereich derselben wird durch die
folgenden Ansprüche
bestimmt.