DE102007003179A1 - Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur - Google Patents

Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur Download PDF

Info

Publication number
DE102007003179A1
DE102007003179A1 DE102007003179A DE102007003179A DE102007003179A1 DE 102007003179 A1 DE102007003179 A1 DE 102007003179A1 DE 102007003179 A DE102007003179 A DE 102007003179A DE 102007003179 A DE102007003179 A DE 102007003179A DE 102007003179 A1 DE102007003179 A1 DE 102007003179A1
Authority
DE
Germany
Prior art keywords
memory
code
boot
volatile memory
dram
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.)
Withdrawn
Application number
DE102007003179A
Other languages
English (en)
Inventor
Rom-Shen Kao
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.)
Qimonda AG
Original Assignee
Qimonda AG
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 Qimonda AG filed Critical Qimonda AG
Publication of DE102007003179A1 publication Critical patent/DE102007003179A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • G06F8/751Code clone detection
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Abstract

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 Schaltungsanordnung 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.

Description

  • 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.

Claims (29)

  1. Verfahren zum Initialisieren eines Computersystems, wobei das Computersystem einen Prozessor, einen flüchtigen Speicher (110) und einen nicht flüchtigen Speicher (130) umfasst, wobei das Verfahren folgende Schritte aufweist: wenn das Computersystem initialisiert wird, automatisches Kopieren von Initialisierungscode, der in dem nicht flüchtigen Speicher (130) gespeichert ist, in den flüchtigen Speicher (110), wobei eine Schaltungsanordnung in dem flüchtigen Speicher automatisch die Kopie erzeugt; und Ausführen der Kopie des Initialisierungscodes von dem flüchtigen Speicher durch den Prozessor.
  2. Verfahren gemäß Anspruch 1, bei dem das automatische Erzeugen der Kopie des Initialisierungscodes folgenden Schritt aufweist: Durchführen eines Direktspeicherzugriffs, um den Initialisierungscode von dem nicht flüchtigen Speicher (130) zu dem flüchtigen Speicher (110) zu übertragen, wobei die Schaltungsanordnung in dem flüchtigen Speicher den Direktspeicherzugriff durchführt.
  3. Verfahren gemäß Anspruch 2, bei dem das Durchführen eines Direktspeicherzugriffs, um den Initialisierungscode von dem nicht flüchtigen Speicher zu dem flüchtigen Speicher zu übertragen, folgende Schritte aufweist: automatisches Übertragen von Bootcode in einen Bootcodepuffer (106); und automatisches Übertragen von Steuerungscode in einen Steuerungscodepuffer (116).
  4. Verfahren gemäß Anspruch 3, bei dem der Bootcode und der Steuerungscode in einem gemeinschaftlich verwendeten Puffer platziert werden, der den Bootcodepuffer und den Steuerungscodepuffer aufweist.
  5. Verfahren gemäß Anspruch 3 oder 4, bei dem der Prozessor den Bootcode von dem Bootcodepuffer (106) ausführt, und bei dem eine Steuerung an der Flüchtigspeichervorrichtung den Steuerungscode von dem Steuerungscodepuffer (116) ausführt.
  6. Verfahren zum Initialisieren eines Computersystems, wobei das Computersystem einen Prozessor, einen Dynamischer-Direktzugriffsspeicher-(DRAM-)Speicher (110) und eine Flash-Speicher (130) umfasst, wobei das Verfahren folgende Schritte aufweist: wenn das Computersystem initialisiert wird, automatisches Erzeugen einer Kopie von Bootcode, der in dem Flash-Speicher (130) gespeichert ist, in einem Bootcodepuffer (106) des DRAM-Speichers (110), wobei eine Direktspeicherzugriffsschaltungsanordnung in dem DRAM-Speicher automatisch die Kopie erzeugt; und Ausführen der Kopie des Bootcodes von dem Bootcodepuffer (106) in dem DRAM-Speicher (110).
  7. Verfahren gemäß Anspruch 6, bei dem der Prozessor die Kopie des Bootcodes von dem Bootcodepuffer (106) ausführt, das ferner folgende Schritte aufweist: ansprechend auf ein Ausführen der Kopie des Bootcodes, Ausgeben von Befehlen von dem Prozessor an den DRAM-Speicher (110), wobei die Befehle bewirken, dass die Direktspeicherzugriffsschaltungsanordnung automatisch eine Kopie von Betriebssystemcode (136), der in dem Flash-Speicher gespeichert ist, in einem Speicherarray des DRAM-Speichers erzeugt; und Ausführen der Kopie des Betriebssystemcodes (136) von dem Speicherarray des DRAM-Speichers (110).
  8. Verfahren gemäß Anspruch 6 oder 7, bei dem die Kopie des Bootcodes, der in dem Flash-Speicher (130) gespeichert ist, über eine Direktspeicherzugriffsübertragung erzeugt wird.
  9. Verfahren gemäß Anspruch 8, bei dem die Direktspeicherzugriffsübertragung ohne Befehle eingeleitet wird, die zwischen dem Prozessor und dem DRAM-Speicher ausgegeben werden.
  10. Verfahren gemäß einem der Ansprüche 6 bis 9, das ferner folgende Schritte aufweist: nach einem Erzeugen der Kopie des Bootcodes, automatisches Erzeugen einer Kopie von Steuerungscode, der in dem Flash-Speicher gespeichert ist, in einem Steuerungsscodepuffer (116) des DRAM-Speichers, wobei die Direktspeicherzugriffsschaltungsanordnung in dem DRAM-Speicher automatisch die Kopie erzeugt; und Ausführen der Kopie des Steuerungscodes, die in dem Steuerungscodepuffer (116) gespeichert ist, mit einer Steuerung in dem DRAM-Speicher.
  11. Verfahren zum Laden von Initialisierungscode von einem nicht flüchtigen Speicher (130) in einen flüchtigen Speicher (110) in einem eingebetteten System (100), wobei das Verfahren folgende Schritte aufweist: Empfangen eines Hochfahrsignals, das anzeigt, dass das eingebettete System (100) hochgefahren worden ist; Lesen von Quellenadressdaten und Größendaten für den Initialisierungscode an Anschlussstiften des flüchtigen Speichers (110); und Durchführen einer Direktspeicherzugriffsübertragung des Initialisierungscodes von dem nicht flüchtigen Speicher zu dem flüchtigen Speicher.
  12. Verfahren gemäß Anspruch 11, bei dem die Direktspeicherzugriffsübertragung automatisch durch eine Direktspeicherzugriffsschaltungsanordnung innerhalb des flüchtigen Speichers (110) durchgeführt wird.
  13. Verfahren gemäß Anspruch 12, das ferner folgende Schritte aufweist: Bestimmen einer Quellenadresse und einer Größe der Bootcodes von den Quellenadressdaten und Größendaten an den Anschlussstiften des flüchtigen Speichers (110), wobei die Quellenadressdaten einen Block in dem nicht flüchtigen Speicher anzeigen, der der Quellenadresse entspricht, und wobei die Größendaten eine Anzahl von Bytes anzeigen, die der Größe der Bootcodes (132) entspricht; und Verwenden der Quellenadresse und der Größe der Bootcodes (132), um die Direktspeicherzugriffsübertragung durchzuführen.
  14. Verfahren gemäß einem der Ansprüche 11 bis 13, das ferner folgende Schritte aufweist: Berechnen einer Quellenadresse für Steuerungscodes (134) von den Quellenadressdaten und Größendaten der Bootcodes (132); Lesen von Größendaten für die Steuerungscodes von einem vordefinierten Ort in dem nicht flüchtigen Speicher (130); und Durchführen einer Direktspeicherzugriffsübertragung der Steuerungscodes von dem nicht flüchtigen Speicher zu dem flüchtigen Speicher unter Verwendung der berechneten Quellenadresse und der Größendaten für die Steuerungscodes (134).
  15. Verfahren gemäß einem der Ansprüche 11 bis 14, das ferner folgende Schritte aufweist: Empfangen von Befehlen von einem Prozessor des eingebetteten Systems (100); und ansprechend auf ein Empfangen der Befehle von dem Prozessor, Durchführen einer Direktspeicherzugriffsübertragung von Betriebssystemcode (136) von dem nicht flüchtigen Speicher zu dem flüchtigen Speicher.
  16. Dynamischer-Direktzugriffsspeicher-(DRAM-)Vorrichtung (110), die folgende Merkmale aufweist: ein Speicherarray; einen Puffer; und eine Schaltungsanordnung, die konfiguriert ist, um: ein Initialisierungssignal zu erfassen; ansprechend auf ein Erfassen des Initialisierungssignals eine Direktspeicherzugriffsübertragung von Bootcodes (132) von einem externen nicht flüchtigen Speicher zu dem Puffer durchzuführen.
  17. DRAM-Vorrichtung gemäß Anspruch 16, wobei das Initialisierungssignal durch die DRAM-Vorrichtung erzeugt wird, wenn die DRAM-Vorrichtung hochgefahren wird.
  18. DRAM-Vorrichtung gemäß Anspruch 16 oder 17, wobei die DRAM-Vorrichtung (110) ferner einen zweiten Puffer aufweist, und wobei die Schaltungsanordnung ferner konfiguriert ist, um automatisch eine Übertragung von Steuerungscodes (134) von dem externen nicht flüchtigen Speicher zu dem zweiten Puffer durchzuführen.
  19. DRAM-Vorrichtung gemäß Anspruch 18, die ferner folgendes Merkmal aufweist: eine Steuerungsschaltungsanordnung, die konfiguriert ist, um den Steuerungscode (134) in dem zweiten Puffer auszuführen.
  20. DRAM-Vorrichtung gemäß einem der Ansprüche 16 bis 19, bei der die Schaltungsanordnung ferner konfiguriert ist, um: Befehle von einem externen Prozessor zu empfangen; und ansprechend auf ein Empfangen der Befehle eine Direktspeicherzugriffsübertragung von Betriebssystemcode (136) von dem externen nicht flüchtigen Speicher zu dem Speicherarray durchzuführen.
  21. Dynamischer-Direktzugriffsspeicher-(DRAM-)Vorrichtung, die folgende Merkmale aufweist: eine flüchtige Einrichtung zum Speichern; eine Einrichtung zum Puffern; und eine Einrichtung zum Übertragen, die konfiguriert ist, um: ein Initialisierungssignal zu erfassen; ansprechend auf ein Erfassen des Initialisierungssignals eine Direktspeicherzugriffsübertragung von Bootcodes (132) von einer externen nicht flüchtigen Einrichtung zum Speichern zu der Einrichtung zum Puffern durchzuführen.
  22. DRAM-Vorrichtung gemäß Anspruch 21, wobei das Initialisierungssignal durch die DRAM-Vorrichtung erzeugt wird, wenn die DRAM-Vorrichtung hochgefahren wird.
  23. DRAM-Vorrichtung gemäß Anspruch 21 oder 22, wobei die DRAM-Vorrichtung (110) ferner einen zweite Einrichtung zum Puffern aufweist, und wobei die Einrichtung zum Übertragen ferner konfiguriert ist, um automatisch eine Übertragung von Steuerungscodes (134) von der externen nicht flüchtigen Einrichtung zum Speichern zu der zweiten Einrichtung zum Puffern durchzuführen.
  24. DRAM-Vorrichtung gemäß Anspruch 23, die ferner folgendes Merkmal aufweist: eine Einrichtung zum Steuern, die konfiguriert ist, um den Steuerungscode (134) auszuführen, der in der zweiten Einrichtung zum Puffern gespeichert ist.
  25. DRAM-Vorrichtung gemäß einem der Ansprüche 21 bis 24, bei der die Einrichtung zum Übertragen ferner konfiguriert ist, um: Befehle von einer externen Einrichtung zum Verarbeiten zu empfangen; und ansprechend auf ein Empfangen der Befehle eine Direktspeicherzugriffsübertragung von Betriebssystemcode (136) von dem externen nicht flüchtigen Speicher zu der flüchtigen Einrichtung zum Speichern durchzuführen.
  26. Eingebettetes System (100) das folgende Merkmale aufweist: einen Prozessor; eine nicht flüchtige Speichervorrichtung (130); und eine flüchtige Speichervorrichtung (110), die folgende Merkmale aufweist: eine Schnittstelle zum Kommunizieren mit dem Prozessor; eine Schnittstelle zum Kommunizieren mit dem nicht flüchtigen Speicher; einen Puffer; ein Speicherarray; und eine Schaltungsanordnung, die konfiguriert ist, um: ansprechend auf ein Erfassen einer Initialisierung des eingebetteten Systems automatisch eine Direktspeicherzugriffsübertragung von Bootcodes (132) von der nicht flüchtigen Speichervorrichtung zu dem Puffer über die Schnittstelle zum Kommunizieren mit dem nicht flüchtigen Speicher durchzuführen.
  27. Eingebettetes System gemäß Anspruch 26, bei dem der Prozessor konfiguriert ist, um: die Bootcodes (132), die in dem Puffer gespeichert sind, von der flüchtigen Speichervorrichtung zu lesen; die gelesenen Bootcodes auszuführen; und ansprechend auf ein Ausführen der Bootcodes Befehle an die Schaltungsanordnung in dem flüchtigen Speicher auszugeben, wobei ansprechend auf ein Empfangen der ausgegeben Befehle die Schaltungsanordnung in der flüchtigen Speichervorrichtung konfiguriert ist, um automatisch Betriebsystemcode (136) von dem nicht flüchtigen Speicher über die Schnittstelle zum Kommunizieren mit dem nicht flüchtigen Speicher zu dem Speicherarray der flüchten Speichervorrichtung zu übertragen.
  28. Eingebettetes System gemäß Anspruch 27, bei dem der Prozessor ferner konfiguriert ist, um: ein Signal von der flüchtigen Speichervorrichtung zu erfassen, das anzeigt, dass die automatische Übertragung von Betriebssystemcode (136) abgeschlossen ist; und ansprechend auf ein Erfassen des Signals ein Ausführen des Betriebssystemcodes (136), der in dem Speicherarray der flüchtigen Speichervorrichtung gespeichert ist, zu beginnen.
  29. Eingebettetes System gemäß einem der Ansprüche 26 bis 28, bei dem die flüchtige Speichervorrichtung ferner einen zweiten Puffer aufweist, und bei dem die Schaltungsanordung der flüchtigen Speichervorrichtung ferner konfiguriert ist, um: ansprechend auf ein Erfassen eines Signals, das anzeigt, dass die Direktspeicherzugriffsübertragung der Bootcodes (132) abgeschlossen ist, automatisch eine zweite Direktspeicherzugriffsübertragung von Steuerungscodes (134) von der nicht flüchtigen Speichervorrichtung zu dem zweiten Puffer über die Schnittstelle zum Kommunizieren mit dem nicht flüchtigen Speicher durchzuführen.
DE102007003179A 2006-01-23 2007-01-22 Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur Withdrawn DE102007003179A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/337,754 US7490177B2 (en) 2006-01-23 2006-01-23 System method for performing a direct memory access for automatically copying initialization boot code in a new memory architecture
US11/337,754 2006-01-23

Publications (1)

Publication Number Publication Date
DE102007003179A1 true DE102007003179A1 (de) 2007-08-02

Family

ID=38268363

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007003179A Withdrawn DE102007003179A1 (de) 2006-01-23 2007-01-22 Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur

Country Status (5)

Country Link
US (1) US7490177B2 (de)
JP (1) JP2007213571A (de)
KR (1) KR20070077463A (de)
CN (1) CN101051275A (de)
DE (1) DE102007003179A1 (de)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4745613B2 (ja) * 2004-01-20 2011-08-10 キヤノン株式会社 情報処理装置及び情報処理方法
US7820817B2 (en) * 2004-05-28 2010-10-26 Vertex Pharmaceuticals Incorporated Modulators of muscarinic receptors
EP1811395A4 (de) * 2004-09-28 2008-01-02 Zentek Technology Japan Inc Host-controller
US7451263B2 (en) * 2006-02-08 2008-11-11 Infineon Technologies Ag Shared interface for components in an embedded system
US7822958B1 (en) * 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
US7613913B2 (en) * 2006-03-21 2009-11-03 Silicon Laboratories Inc. Digital architecture using one-time programmable (OTP) memory
TW200741545A (en) * 2006-04-20 2007-11-01 Altek Corp Boot system booting by using a NAND flash
US20080007569A1 (en) * 2006-07-06 2008-01-10 Rom-Shen Kao Control protocol and signaling in a new memory architecture
US20080010419A1 (en) * 2006-07-06 2008-01-10 Rom-Shen Kao System and Method for Issuing Commands
US7441070B2 (en) * 2006-07-06 2008-10-21 Qimonda North America Corp. Method for accessing a non-volatile memory via a volatile memory interface
US20080010420A1 (en) * 2006-07-06 2008-01-10 Rom-Shen Kao Method for Accessing Control Registers via a Memory Device
JP4221423B2 (ja) * 2006-08-09 2009-02-12 エルピーダメモリ株式会社 コマンド制御回路
JP2008140027A (ja) * 2006-11-30 2008-06-19 Toshiba Corp 情報処理装置及び情報処理装置の電源制御方法
US20080147940A1 (en) * 2006-12-18 2008-06-19 Rom-Shen Kao Method and apparatus for controlling a shared bus
JP5220747B2 (ja) * 2007-07-31 2013-06-26 パナソニック株式会社 不揮発性記憶装置および不揮発性記憶システム
KR101249831B1 (ko) * 2007-08-06 2013-04-05 삼성전자주식회사 컴퓨터 시스템 및 그 부팅 방법
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US20090172246A1 (en) * 2007-12-26 2009-07-02 Sandisk Il Ltd. Device and method for managing initialization thereof
JP5489182B2 (ja) 2008-09-18 2014-05-14 マーベル ワールド トレード リミテッド プリロードする方法及びコントローラ
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
JP2010140266A (ja) * 2008-12-11 2010-06-24 Toshiba Corp 電子デバイスシステムと電子デバイス
CN101751271B (zh) * 2008-12-16 2013-08-21 无锡华润矽科微电子有限公司 一种基于8位mcu为内核的soc电路及采用该电路的系统的控制方法
CN102265263A (zh) * 2008-12-24 2011-11-30 松下电器产业株式会社 总线控制器及初始引导程序的修补方法
EP2244186A3 (de) * 2009-03-11 2010-11-10 Harman Becker Automotive Systems GmbH Datenverarbeitungsvorrichtung und Startverfahren dafür
US8175012B2 (en) * 2009-03-26 2012-05-08 Mediatek Inc. Decoding/encoding method for booting from a NAND flash and system thereof
US9342445B2 (en) 2009-07-23 2016-05-17 Hgst Technologies Santa Ana, Inc. System and method for performing a direct memory access at a predetermined address in a flash storage
CN102598138B (zh) * 2009-09-04 2014-03-12 深圳市永盛世纪科技有限公司 一种usb存储器及其操作方法
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
CN102834804B (zh) * 2010-04-21 2016-04-27 惠普发展公司,有限责任合伙企业 传递操作系统引导信息的方法、计算装置及设备
TWI456577B (zh) * 2010-08-10 2014-10-11 Hon Hai Prec Ind Co Ltd 反及閘快閃記憶體啓動裝置及使用方法
CN102467472B (zh) * 2010-11-08 2015-01-28 中兴通讯股份有限公司 SoC芯片的BOOT启动装置和SoC芯片
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10838646B2 (en) 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US9141394B2 (en) 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9436629B2 (en) 2011-11-15 2016-09-06 Marvell World Trade Ltd. Dynamic boot image streaming
JP5955618B2 (ja) * 2012-04-18 2016-07-20 アルパイン株式会社 電子機器
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US20130318284A1 (en) * 2012-05-24 2013-11-28 Silicon Motion, Inc. Data Storage Device and Flash Memory Control Method
US9575768B1 (en) * 2013-01-08 2017-02-21 Marvell International Ltd. Loading boot code from multiple memories
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9736801B1 (en) 2013-05-20 2017-08-15 Marvell International Ltd. Methods and apparatus for synchronizing devices in a wireless data communication system
US9521635B1 (en) 2013-05-21 2016-12-13 Marvell International Ltd. Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system
US9053015B2 (en) * 2013-06-17 2015-06-09 Topcon Positioning Systems, Inc. NAND flash memory interface controller with GNSS receiver firmware booting capability
US9477484B2 (en) * 2013-07-23 2016-10-25 Samsung Electronics Co., Ltd. System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time
US9329931B2 (en) * 2013-07-24 2016-05-03 Seagate Technology Llc Solid state drive emergency pre-boot application providing expanded data recovery function
CN105518621B (zh) * 2013-07-31 2019-09-17 马维尔国际贸易有限公司 将引导操作并行化的方法
US10248328B2 (en) * 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
KR20160083926A (ko) 2013-11-07 2016-07-12 넷리스트 인코포레이티드 하이브리드 메모리 모듈, 및 그를 동작시키는 시스템 및 방법
US11182284B2 (en) 2013-11-07 2021-11-23 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
EP3427435A1 (de) 2016-03-08 2019-01-16 Marvell World Trade Ltd. Verfahren und vorrichtung zur sicheren vorrichtungsauthentifizierung
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
KR102445674B1 (ko) 2017-12-18 2022-09-22 삼성전자주식회사 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법
KR20200019513A (ko) * 2018-08-14 2020-02-24 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그 동작 방법
KR20200046264A (ko) * 2018-10-24 2020-05-07 삼성전자주식회사 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법
KR102648790B1 (ko) * 2018-12-19 2024-03-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US10915329B2 (en) * 2019-02-24 2021-02-09 Winbond Electronics Corporation Delayed reset for code execution from memory device
US11231941B2 (en) * 2019-06-04 2022-01-25 Microsoft Technology Licensing, Llc Systems and methods for hardware initialization
DE102019214835A1 (de) * 2019-09-27 2021-04-01 Continental Automotive Gmbh Verfahren zum Inbetriebnehmen einer Vorrichtung mit einer eingebetteten Multimediakarte (eMMC)
CN111459572B (zh) * 2020-03-31 2023-01-31 深圳市汇顶科技股份有限公司 程序加载方法、控制器、芯片以及电子设备
CN111722878A (zh) * 2020-06-19 2020-09-29 北京集创北方科技股份有限公司 芯片启动控制方法、芯片、显示面板及电子设备

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5359569A (en) * 1991-10-29 1994-10-25 Hitachi Ltd. Semiconductor memory
US5519843A (en) * 1993-03-15 1996-05-21 M-Systems Flash memory system providing both BIOS and user storage capability
US5774680A (en) * 1995-12-11 1998-06-30 Compaq Computer Corporation Interfacing direct memory access devices to a non-ISA bus
US6134631A (en) * 1996-08-19 2000-10-17 Hyundai Electronics America, Inc. Non-volatile memory with embedded programmable controller
KR20010087868A (ko) * 2000-03-09 2001-09-26 김광수 리눅스 운영 체제 부팅 방법
US6859399B1 (en) * 2000-05-17 2005-02-22 Marvell International, Ltd. Memory architecture and system and multiport interface protocol
TWI240864B (en) * 2001-06-13 2005-10-01 Hitachi Ltd Memory device
US6704840B2 (en) * 2001-06-19 2004-03-09 Intel Corporation Computer system and method of computer initialization with caching of option BIOS
US20030014687A1 (en) * 2001-07-10 2003-01-16 Grandex International Corporation Nonvolatile memory unit comprising a control circuit and a plurality of partially defective flash memory devices
US7234052B2 (en) * 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
JP2003337746A (ja) * 2002-05-22 2003-11-28 Hitachi Ltd 情報処理装置の高速起動
US20060242398A1 (en) * 2003-06-03 2006-10-26 Fontijn Wilhelmus Franciscus J Booting from non-volatile memory
US7752380B2 (en) * 2003-07-31 2010-07-06 Sandisk Il Ltd SDRAM memory device with an embedded NAND flash controller
US7139909B2 (en) * 2003-10-16 2006-11-21 International Business Machines Corporation Technique for system initial program load or boot-up of electronic devices and systems
DE102004004796B4 (de) * 2004-01-30 2007-11-29 Infineon Technologies Ag Vorrichtung zur Datenübertragung zwischen Speichern
CN100363893C (zh) 2004-03-27 2008-01-23 鸿富锦精密工业(深圳)有限公司 加载系统及方法
US20060294295A1 (en) * 2005-06-24 2006-12-28 Yukio Fukuzo DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device
US7404136B2 (en) * 2005-07-15 2008-07-22 Infineon Technologies Ag Semiconductor memory device including a signal control device and method of operating the same
US7221615B2 (en) * 2005-10-04 2007-05-22 Infineon Technologies Ag Semiconductor memory chip
US7415581B2 (en) * 2005-10-04 2008-08-19 Infineon Technologies Ag Semiconductor memory chip
US7644198B2 (en) * 2005-10-07 2010-01-05 International Business Machines Corporation DMAC translation mechanism
US7451263B2 (en) * 2006-02-08 2008-11-11 Infineon Technologies Ag Shared interface for components in an embedded system
US20080010420A1 (en) * 2006-07-06 2008-01-10 Rom-Shen Kao Method for Accessing Control Registers via a Memory Device
US20080007569A1 (en) * 2006-07-06 2008-01-10 Rom-Shen Kao Control protocol and signaling in a new memory architecture
US7441070B2 (en) * 2006-07-06 2008-10-21 Qimonda North America Corp. Method for accessing a non-volatile memory via a volatile memory interface
US20080010419A1 (en) * 2006-07-06 2008-01-10 Rom-Shen Kao System and Method for Issuing Commands

Also Published As

Publication number Publication date
CN101051275A (zh) 2007-10-10
US7490177B2 (en) 2009-02-10
US20070174602A1 (en) 2007-07-26
JP2007213571A (ja) 2007-08-23
KR20070077463A (ko) 2007-07-26

Similar Documents

Publication Publication Date Title
DE102007003179A1 (de) Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur
DE60005563T2 (de) Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code
DE4244266C2 (de) Verfahren und Schaltungseinrichtung zum dynamischen Konfigurieren von Gerätetreibern für Computersystem-Betriebsmittel
DE60008929T2 (de) Schnellstart eines mikroprozessorbasierten systems
DE102007012448B4 (de) Ein chipsatz-unabhängiges Verfahren für lokale Aktualisierung und Konfigurierung eines System-BIOS
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE102004038649B4 (de) Dauerspeichervorrichtung für Sicherungsprozess-Prüfpunktzustände
DE102005040226B4 (de) Nichtflüchtiges Speicherbauelement und Testverfahren
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE69233465T2 (de) Gerät und Verfahren zum Unterbrechen und Wiederaufnehmen von Software auf einem Rechner
DE112009004900T5 (de) Vertagen von Speicheroperationen zum Reduzieren von Leselatenz in Speicherfeldern
DE10238566A1 (de) Fenster-basierendes Flashspeicher-Speichersystem und Management und Zugriffsverfahren darauf
DE102009040241A1 (de) Verfahren und System für den Speicherzugriff
DE112012005118T5 (de) Sichern von Firmware während der Initialisierung einer Einheit
DE102011054333A1 (de) Verfahren zum Laden von Hilfsspannungsversorgungsleitungen in Datenspeichervorrichtungen und damit in Beziehung stehenden Vorrichtungen
DE102008058209A1 (de) Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE102007031271A1 (de) Steuerprotokoll und Signalisierung in einer neuen Speicherarchitektur
US9652416B2 (en) Storage device for performing in-storage computing operations, method of operation the same, and system including the same
DE102020200513A1 (de) Speichereinrichtung und verfahren zum betreiben derselben
DE102004032237A1 (de) Konfiguration von Bauelementen bei einem Übergang von einem Niedrigleistungs-Betriebsmodus in einen Normalleistungs-Betriebsmodus
DE112012006454T5 (de) Ruhezustand auf der Basis von Seitenquellcode
DE102014223035A1 (de) Verfahren und Speicherverwaltungsvorrichtung zum Übertragen von Daten innerhalb eines Compuer-Systems, Speichersystem und Computer-System
DE60316804T2 (de) Verfahren und vorrichtung zum einschreiben von daten in einen nicht flüchtigen speicher
EP1197854B1 (de) Verfahren zum Starten einer Datenverarbeitungsanlage sowie zugehörige Komponenten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal