DE60316804T2 - Verfahren und vorrichtung zum einschreiben von daten in einen nicht flüchtigen speicher - Google Patents

Verfahren und vorrichtung zum einschreiben von daten in einen nicht flüchtigen speicher Download PDF

Info

Publication number
DE60316804T2
DE60316804T2 DE60316804T DE60316804T DE60316804T2 DE 60316804 T2 DE60316804 T2 DE 60316804T2 DE 60316804 T DE60316804 T DE 60316804T DE 60316804 T DE60316804 T DE 60316804T DE 60316804 T2 DE60316804 T2 DE 60316804T2
Authority
DE
Germany
Prior art keywords
data
memory
energy
ram
addr
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60316804T
Other languages
English (en)
Other versions
DE60316804D1 (de
Inventor
Fabrizio Weisshausstr. 2 CAMAPANALE
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.)
DSP Group Switzerland AG
Original Assignee
NXP BV
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 NXP BV filed Critical NXP BV
Application granted granted Critical
Publication of DE60316804D1 publication Critical patent/DE60316804D1/de
Publication of DE60316804T2 publication Critical patent/DE60316804T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

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)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

  • Die Erfindung betrifft ein Verfahren für das Schreiben von Daten von einem Prozessor in einen energieunabhängigen Speicher, eingefügt in einen integrierten Schaltkreis, und einen entsprechenden integrierten Schaltkreis, der für das Ausführen dieses Verfahrens besonders angepasst ist.
  • Derartige integrierte Schaltkreise werden umfassend bei tragbaren Geräten verwendet, zum Beispiel drahtlose Module, Mobiltelefone, digitale schnurlose Geräte oder Personal Digital Assistants (PDA). Auf diesem Markt sind Größe und Energieverbrauch entscheidende Faktoren, und daher ist der Faktor des geringen Platzes ein primäres Anliegen. Aus diesem Grunde scheint die Integration eines energieunabhängigen Speichers mit einer Speichersteuerungseinheit (MCU) des Basisbandsystems eine angemessene Wahl für die Verringerung der Anzahl von Komponenten und Pinouts und für die Verbesserung der Weiterleitbarkeit und somit für verringerte Gesamtsystemkosten zu sein.
  • Andererseits gibt es mehrere andere Aspekte, die zur Verbesserung des Leistungs-/Kostenverhältnisses eines Basisbandsystems auf Chip (SOC) beitragen.
  • Eines der wirksamsten Merkmale ist eine entsprechend gewählte Speicherhierarchie. Die Verteilung der Speicherressourcen über eine Hierarchie mit unterschiedlichen Zugriffsfähigkeiten und unterschiedlichen Kosten und Größen führt zu einer Gesamtweiterentwicklung der Systemleistung.
  • 1 zeigt eine typische, sogenannte Harvard Architektur. Eine Brücke 101 ist über einen 32-Bit-Bus 104 mit erweiterten Systembusmodulen (ASB) 105, einer Speicherverwaltungseinheit (MMU) 106, einem Speicher mit wahlfreiem Zugriff RAM 107 und einem Flash-Speicher 102 verbunden. Ein erweiterter Rechner mit vermindertem Befehlsvorrat – RISC (Reduced Instruction Set Computer) (ARM) 103 ist mit der MMU 106 verbunden. Über einen 16-Bit-Bus 108 ist die Brücke 101 mit erweiterten peripheren Busmodulen (APB) 109 verbunden. Diese können zum Beispiel universelle serielle Busmodule (USB) (universal serial bus) sein. Es ist offensichtlich, dass die Hauptkosten hinsichtlich des Platzes bei der Speicherhierarchie liegen. Somit ist eine kluge Wahl der Größen und der Arten des Speichers, strikt von der erforderlichen Leistung abhängend, die Grundlage des Gestaltungserfolges.
  • Da viele Anwendungen eine bestimmte Schicht Software für das Mikrosteuerungsgerät innerhalb einer Harvard Architektur erfordern, wird typischerweise ein Festspeicher (ROM) für den Befehlsspeicher (IMEM) verwendet, während für den Datenspeicher ein energieabhängiger Speicher, zum Beispiel ein DRAM oder ein SRAM in den meisten Fällen gewählt wird. Dies bietet die Möglichkeit, den Bootcodespeicherplatz auf dem Chip ebenfalls als Befehlsspeicher zu nutzen, wodurch Platz gespart wird und die Robustheit und die Sicherheit des Systems erhöht werden. Der Vorteil besteht darin, dass ein eingefügter ROM, integriert in das Baseline-Verfahren, keine speziellen Technologieoptionen benötigt.
  • Eine solche Lösung erfordert jedoch eine stabile Software, und sie ist somit lediglich für eine Endproduktion von hohem Volumen geeignet. Da die meisten Anwendungen mehrere Softwareverfeinerungen benötigen, ist die ROM Lösung für den IMEM nicht geeignet. Somit könnte ein eingefügter Flash-Speicher, der als IMEM benutzt wird, die beste Lösung hinsichtlich von Größe und Leistung darstellen.
  • Darüber hinaus muss der Mikroprozessor eine kompliziertere Schreibprozedur bewältigen, die darin besteht, die Daten in den Speicher zu laden und danach die Zellen zu programmieren.
  • Wenn das System so gestaltet ist, dass es den Flash-Speicher 102 als Befehlsspeicher nutzt, wird der Mikroprozessor 103 die meiste Zeit Lesezugriffe auf diesen Flash-Speicher 102 ausführen, während er in den RAM 107 schreibt.
  • Bedauerlicherweise wird, falls die Software einige Daten permanent speichern muss, eine Schreiboperation an den Flash-Speicher 102 erforderlich. In diesem Fall darf der Ausführungscode für das Programmieren der Daten nicht von innerhalb des Flash-Speichers 102 aus laufen, da der Flash-Speicher 102 nicht für gleichzeitigen Lesezugriffdas Holen des Befehls vom Mikroprozessor – und für Programmzugriff verfügbar ist.
  • Im Unterschied zu einer Lese-/Schreib-/Lese-Reihenfolge an den RAM, wo die Schreiboperation selbstrückstellend ist, ist die gleiche Reihenfolge von Operationen für einen Flash-Speicher nicht gestattet, da diese Reihenfolge einen Konflikt verursachen wird.
  • Flash-Speicher müssen im Lese- oder im Programm-Modus eingestellt werden. Dies erfolgt durch das Ausführen der korrekten Befehle über den Software-Code. Somit wird eine allgemeine Reihenfolge von Befehlen, welche die erwähnte Reihenfolge vornehmen will, wie folgt sein:
    • (1) Einstellen des Flash-Speichers im Programm-Modus;
    • (2) Schreiben der zu programmierenden DATEN-1 an die Flash-ADDRESSE-1;
    • (3) Schreiben der zu programmierenden DATEN-2 an die Flash-ADDRESSE-2;
  • Sobald der Befehl (1) ausgeführt worden ist, steht der Flash-Speicher 102 nicht mehr für Lesen zur Verfügung. Somit könnte kein anderer Befehl geholt und ausgeführt werden. Darüber hinaus, und was schlimmer ist, wird der in 2 gezeigte Flash-Speicher 102 in diesem Modus bleiben, bis ein neuer Befehl ihn wieder im Lesemodus einstellt. Da der Prozessor 103 jedoch nicht in der Lage ist, noch Befehle aus dem Flash-Speicher 102 zu holen, wird dies niemals geschehen. Dies erzeugt offensichtlich eine Verklemmung für das System.
  • Bei Cáceres et al., US Patent 5 802 554 , werden ein Verfahren und ein System für die Verringerung von Speicherzugriff-Wartezeit durch die Bereitstellung eines Feindatendirektzugriffes auf den Flash-Speicher gleichzeitig mit einer Blockübertragung von dort aus beschrieben. Die Speicherverwaltungseinheit steuert den Inhalt des Zwischenspeichers mit Daten entweder von einer ersten Ebene der Speicherhierarchie oder einer zweiten Ebene der Speicherhierarchie. Diese Lösung kann jedoch den Flash-Speicher nicht als IMEM verwenden.
  • Das US 5,974,528 beschreibt einen Mikrocomputer mit eingefügtem Flash-Speicher, der über eine On-Chip-Programmierfähigkeit verfügt. Der Mikroprozessor ist über einen Bus mit einem Register und über einen Bus-Multiplexer mit einem Flash-Speicher verbunden. Der Flash-Speicher schließt einen Ladeprogrammblock und einen Nutzerblock ein, die über einen gemeinsamen Eingabe-Ausgabe-Stromkreis an den Bus-Multiplexer gekoppelt sind. Der Flash-Speicher und der Bus-Multiplexer werden durch den Mikroprozessor gesteuert. Weiterhin gibt es einen Register-Satz, der an den Bus gekoppelt ist. Im Falle der Umprogrammierung des Flash-Speichers wird ein Laderprogramm vom Ladeprogrammblock im Flash-Speicher in den Mikroprozessor geladen und vom Mikroprozessor ausgeführt. Danach wird der Eingabe-Ausgabe-Stromkreis zum Nutzerblock geschaltet, und die Daten, die umprogrammiert werden sollen, werden zunächst im Registersatz gespeichert, bevor sie im Nutzerblock geschrieben werden. Während der Programmierung der Daten im Nutzerblock wird eine Programmunterbrechung erzeugt. Somit wird der Mikroprozessor zu einem Ruhemodus geschaltet. Während des Zustands im Ruhemodus werden die im Register gespeicherten Daten übertragen und im Nutzerblock geschrieben. Nach dem Erreichen eines vorgegebenen Zeitpunktes erzeugt ein Programmgeber ein Programmunterbrechungssignal, um den Mikroprozessor aus dem Ruhemodus aufzuwecken.
  • Das US 4,382,279 beschreibt eine Mikroprozessor-Architektur mit automatischer Programmierung eines energieunabhängigen Speichers, der auf dem gleichen Chip eingeschlossen ist. Das Speicher-Schreiben des energieunabhängigen Speichers kann durch einen Schreibautomaten vorgenommen werden, welcher fest verdrahtete logische Schaltkreise umfasst. Der Schreibautomat wird durch einen Schreib-Mikrocode betrieben, der vom Prozessor ausgesandt wird, und der Schreibautomat übermittelt ein FREIGABE-Signal an die Verarbeitungseinheit, das laufende Programm wieder aufzunehmen, wenn das Schreiben abgeschlossen ist.
  • Eine erste und Hauptaufgabe der Erfindung besteht darin, ein Verfahren für das Schreiben von Daten von einem Prozessor in einen energieunabhängigen Speicher, eingefügt in einen integrierten Schaltkreis, und einen entsprechenden integrierten Schaltkreis bereitzustellen, wobei das Verfahren den Prozessor als energieunabhängigen Speicher als Befehlsspeicher und als energieabhängigen Speicher "sehen" lässt.
  • Mit anderen Worten ausgedrückt besteht die Erfindung aus einem Verfahren und einer Hardware-Implementierung, welche den Schreibzugriff auf einen eingefügten Flash-Speicher verbirgt und die Daten zum RAM über ein Herangehen des direkten Speicherzugriffs (DMA) ablenkt, bis alle Daten vom Mikroprozessor gesendet worden sind. Auf diese Weise ist der Mikroprozessor in der Lage, kontinuierlich Befehle vom Flash- Speicher abzuholen, der als Befehlsspeicher arbeitet. Der Flash-Speicher ist dennoch noch im Lesemodus verfügbar, bis er den endgültigen Programmbefehl erhält.
  • Mit der Erfindung kann der Mikroprozessor den eingefügten Flash-Speicher als Befehlsspeicher nutzen, und er kann in diejenigen Teile/denjenigen Platz des gleichen Speichers schreiben, der zu programmieren ist.
  • Die erfindungsgemäße Architektur kann die Zeit für die Entwicklung der Software durch die Einfügung einer Vorrichtung drastisch verkürzen, welche das Mikrosteuerungsgerät den Speicherplatz lediglich als einen normalen energieabhängigen Speicherplatz ansehen lässt.
  • Die Aufgabe wird gelöst durch ein Verfahren für das Schreiben von Daten von einem Prozessor in einen energieunabhängigen Speicher, eingefügt in einen integrierten Schaltkreis, mit den Merkmalen gemäß einem unabhängigen Verfahrens-Anspruch und durch einen integrierten Schaltkreis mit den Merkmalen gemäß einem unabhängigen Vorrichtungs-Anspruch.
  • Das Verfahren für das Schreiben von Daten von einem Prozessor in einen in einen integrierten Schaltkreis eingefügten energieunabhängigen Speicher gemäß der Erfindung umfasst die folgenden Schritte:
    Die Daten, welche in den energieunabhängigen Speicher geschrieben werden sollen, werden zunächst zu einem energieabhängigen Speicher übertragen.
  • Sobald die Daten in den energieabhängigen Speicher übertragen worden sind, wird ein Warte-Signal an den Prozessor gesendet.
  • Danach werden die Daten vom energieabhängigen Speicher in den energieunabhängigen Speicher übertragen.
  • Zuletzt wird das Warte-Signal entfernt.
  • Der erfindungsgemäße integrierte Schaltkreis umfasst einen Prozessor, einen energieabhängigen Speicher, einen energieunabhängigen Speicher und eine Schnittstelle, welche den Prozessor mit dem energieabhängigen Speicher und den energieunabhängigen Speicher mit dem energieabhängigen Speicher verbindet. Die Schnittstelle ist ausgestattet
    • – für die Übertragung von Daten, die in den energieunabhängigen Speicher geschrieben werden sollen, zunächst zum energieabhängigen Speicher;
    • – für das Senden eines Warte-Signals an den Prozessor, sobald die Daten zum energieabhängigen Speicher übertragen worden sind;
    • – für das Übertragen der Daten vom energieabhängigen Speicher zum energieunabhängigen Speicher, und schließlich
    • – für das Entfernen des Warte-Signals.
  • Vorteilhafte weitere Entwicklungen der Erfindung ergeben sich aus den Merkmalen, die in den abhängigen Ansprüchen angegeben sind.
  • Bei einer Ausführungsform der Erfindung wird die Datenübertragung durch eine Schnittstelle gesteuert.
  • Bei einer weiteren Ausführungsform der Erfindung wird der energieunabhängige Speicher zu Beginn der Datenübertragung vom energieabhängigen Speicher zum energieunabhängigen Speicher auf den Schreibmodus eingestellt.
  • Bei einer weiteren Ausführungsform der Erfindung wird der energieunabhängige Speicher während der Datenübertragung vom energieabhängigen Speicher zum energieunabhängigen Speicher auf den Programmmodus eingestellt.
  • Bei noch einer weiteren Ausführungsform der Erfindung wird der energieunabhängige Speicher am Ende der Datenübertragung vom energieabhängigen Speicher zum energieunabhängigen Speicher auf den Lesemodus eingestellt.
  • In vorteilhafter Weise werden alle Daten zunächst zum energieabhängigen Speicher übertragen. Mit dieser Art der blockweisen Datenübertragung kann das gesamte System beschleunigt werden.
  • Bei einer weiteren Ausführungsform der Erfindung werden die Adressen, welche den Daten entsprechen, die in den energieunabhängigen Speicher geschrieben werden sollen, zwischengespeichert.
  • Um das Risiko einer Systemverklemmung zu vermeiden, wird ein Warte-Signal an den Prozessor gesendet, ehe die Daten in den energieabhängigen Speicher geschrieben werden, und es wird entfernt, nachdem die Daten in den energieabhängigen Speicher geschrieben worden sind.
  • Bei einer weiteren Ausführungsform der Erfindung ist der energieunabhängige Speicher des integrierten Schaltkreises ein Flash-Speicher, und/oder der energieabhängige Speicher ist ein eingefügter RAM.
  • Nachfolgend wird die Erfindung weiter mit den Zeichnungen erläutert. Es zeigt:
  • 1 ein erweitertes RISC-gestütztes Untersystem mit einem eingefügten Flash-Speicher nach dem Stand der Technik;
  • 2 ein Blockdiagramm der Kommunikation zwischen einem Flash-Speicher und einem Prozessor;
  • 3 ein Diagramm mit einer Reihenfolge von Befehlen für das Vermeiden einer Systemverklemmung einer ersten Ausführungsform;
  • 4 ein Diagramm mit einer Reihenfolge von Befehlen für das Vermeiden einer Systemverklemmung einer zweiten Ausführungsform;
  • 5a den ersten Teil eines Flussdiagramms der Operationen zusammen mit entsprechenden Blockdiagrammen eines erfindungsgemäßen integrierten Schaltkreises;
  • 5b den zweiten Teil des in 5a gezeigten Flussdiagramms;
  • 6a den ersten Teil eines Blockdiagramms einer Ausführung des erfindungsgemäßen integrierten Schaltkreises;
  • 6b den zweiten Teil des in 6a gezeigten Blockdiagramms;
  • 7 ein Diagramm einer erfindungsgemäßen Hauptzustands-Vorrichtung;
  • 8 eine Verhaltensbeschreibung einer eingefügten Direktspeicherzugriffs-Vorrichtung (DMA) gemäß der Erfindung.
  • Eine Lösung für das Problem der Systemverklemmung, das bei der Architektur gemäß 1 aufgetreten ist, besteht darin, den Teil des Codes herunterzuladen, der die Programmoperation in den RAM 107 ausführt, dann zum ersten Befehl dieser Programmroutine im RAM 107 zu verzweigen, die Programmoperation von innerhalb des RAM 107 auszuführen und schließlich, nach der Programmierung des Flash-Speichers 102, wiederum zum Code im Flash-Speicher 102 zurückzuspringen. Dies wird in 3 gezeigt.
  • Die Hauptbeschränkung dieses Software-Herangehens liegt in der Schwierigkeit der ordnungsgemäßen Verwaltung des Codes und der Adressen. Wenn der Code in einer höheren Programmiersprache geschrieben ist, zum Beispiel in C-Sprache, muss der Softwareingenieur mit dem massiven Gebrauch von Zeigern und Funktionsaufrufen über Zeiger umgehen, um die Programmroutine nicht von innerhalb des Flash-Speichers 102, sondern von innerhalb des RAM 107 auszuführen.
  • Darüber hinaus nutzt die Programmroutine, die in 4 gezeigt wird, einige Variablen, die im Flash-Speicher-Adressraum gespeichert sind, was eine übliche Situation ist und wodurch der Kompilierer nicht weiß, von wo aus die Routine ausgeführt werden wird. Sobald während der Ausführung der Programmroutine derartige Variablen aufgerufen werden, wird ein Ausnahmefehler auftreten, da keine Zugriffsmöglichkeit auf den Flash-Speicher 102 im Lesemodus besteht.
  • Schließlich muss für das Schreiben der Kopierroutine, welche die Programmroutine vom Flash-Speicher 102 zum RAM 107 kopieren sollte, der Softwareingenieur Informationen zur Programmroutine haben, wie die Startadresse, die Endadresse und den Umfang des Abschnitts des zu übertragenden Codes. Diese sind jedoch zum Zeitpunkt des Schreibens der Software nicht verfügbar. Somit besteht die einzige Möglichkeit darin, eine erste Entwurfsversion des vollständigen Codes zu kompilieren, dann die erforderlichen Informationen aus der Assemblerversion des kompilierten Codes zu entnehmen, den Code erneut zu schreiben und erneut zu kompilieren. Jede weitere Modifizierung des Codes wird das relative Adressieren der Befehle ändern und wird ein solches Herangehen erneut für eine iterative Approximation benötigen.
  • Nachfolgend wird ein Beispiel dafür gegeben, wie man das Ausdrucken der Routine bewerkstelligen kann, das vom RAM 107 anstatt aus dem Flash-Speicher 102 mit Hilfe eines Herangehens mit einer höheren Programmiersprache ausgeführt werden muss. Ein Speicherkopier-Befehl (Memcopy) wird die Routine in den RAM 107 kopieren, und mit Hilfe einer entsprechenden Zeigerzuweisung wird es möglich sein, die Routine abzurufen, die von dieser RAM-Adresse ausgeführt werden soll. Leider vermeidet dies nicht das Auftreten von Fehlern, wenn ein Variablen-Aufruf versuchen wird, Zugriff auf den Flash-Speicher-Adressraum zu nehmen.
  • Der Memcopy-Befehl benötigt die Startadresse und den Umfang der zu kopierenden Routine. Somit muss ein erstes Entwurfs-Kompilieren erfolgen, um die Startadresse und den Umfang der Routine zu erhalten, da diese nur nach einem Kompilieren verfügbar werden. Jetzt können die korrekten Informationen in den Code eingefügt werden und erneut kompiliert werden. Jede Änderung beim Code wird die Adressen der Befehle im kompilierten Code ändern, und somit muss das bisher beschriebene Verfahren erneut ausgeführt werden.
  • Ein weniger nutzerfreundliches, jedoch genaueres Herangehen ist, einen Teil des Codes direkt in Assemblersprache zu schreiben. Die Reihenfolge:
    • (1) Kopieren der Flashprogrammroutine im RAM;
    • (2) Aufrufen der Flashprogrammroutine, die vom RAM aus ausgeführt werden soll;
    • (3) Zurückspringen zum Flash-Speicher; wird in zwei Routinen aufgeteilt, anstatt dass sie über Bibliotheksbefehle, wie zum Beispiel Memcopy, und Funktionsaufrufe über Zeiger gehandhabt wird. Um die oben erwähnte Reihenfolge, im Haupt-C-Code, zu erzielen, wird folgende Assemblerroutine aufgerufen: (a) Assemblerroutine: (a.1) Kopieren des Codes vom Flash-Speicher zum RAM; (a.2) Steuern des Befehlszählers des Prozessors zur ersten Befehlsadresse des RAM, wo die Routine kopiert worden ist. Die Flashprogrammroutine wird jetzt vom RAM aus ausgeführt. (b) Laufen der Flashprogrammroutine vom RAM aus: (b.1) Programmieren des Flash-Speichers; (b.2) Aufruf einer anderen Assemblerroutine, um den Befehlszähler des Prozessors zur ersten Befehlsadresse des restlichen Codes im Flash-Speicher-Adressraum zu steuern.
  • Die Ausführung wird von jetzt an vom Flash-Speicher aus weiter vorgenommen.
  • Auf diese Weise wird die vom RAM 107 aus ausführende Routine zuerst den Flash-Speicher 102 programmieren, danach eine Assemblerroutine aufrufen, welche den Befehlszähler im Flash-Speicher-Adressraum steuert, und danach den Code weiter ausführen, jedoch vom Flash-Speicher 102 aus.
  • Der Vorteil dieses Herangehens im Vergleich zur oben erwähnten Lösung ist die direkte Steuerung der Adressen des Befehls, dass der Kompilierer nicht in das Kopieren und in das Springen zum RAM 107 und von diesem involviert wird, und dass somit weniger Möglichkeiten falscher Versuche des Zugriffs auf den Flash-Speicher 102 während des Programmbetriebs gegeben sind.
  • Auch in diesem Fall ist ein erstes Entwurfskompilieren bei jeder Modifizierung des Codes erforderlich, um zu wissen, wo im RAM 107 zu springen ist und wo in den Flash-Speicher 102 zurück zu springen ist.
  • Schließlich ist der sicherste Weg, um falsche Versuche des Zugriffs auf den Flash-Speicher 102 während der Ausführung des Codes vom RAM 107 aus zu verhindern, nicht nur die Programmroutine in den RAM 107 zu kopieren, sondern ebenfalls den Rest des Codes. Der Nachteil dieses Herangehens besteht darin, dass ein großer RAM-Platz verbraucht wird.
  • Ein Beispiel für die Handhabung des Speicherabzugs der Routine, auszuführen vom RAM 107 aus anstatt vom Flash-Speicher 102 aus mit Hilfe des Herangehens mit einer niederen Programmiersprache, wird nachstehend angegeben.
    • (a) Das C-Hauptprogramm ruft die erste Assembler-Routine auf;
    • (b) damit werden die Blocks des Flash-Speicher-Inhalts, die von Interesse sind, in den RAM 107 kopiert, und dann wird der Befehlszähler zum ersten Befehl des jetzt in den RAM 107 kopierten Programms gesteuert;
    • (c) von jetzt an wird der Code vom RAM 107 aus ausgeführt, und es ist möglich, den Flash-Speicher 102 zu programmieren;
    • (d) wenn die Programmoperation beendet ist, wird eine zweite Assembler-Routine aufgerufen werden, lediglich um den Befehlszähler zum nächsten gültigen Befehl des C-Codes zu steuern, dieses Mal jedoch im Flash-Speicher 102, der jetzt wieder verfügbar ist. Wie zuvor werden alle Informationen dahingehend, wo in den RAM 107 und in den Flash-Speicher 102 zu springen ist, erst nach einem ersten Entwurfskompilieren verfügbar, und sie müssen bei jeder Codeänderung überprüft werden.
  • Das Ziel der nachstehend beschriebenen Ausführungsform besteht darin, eine Vorrichtung zur Softwareentwicklung bereitzustellen, welche es möglich macht, den energieunabhängigen Befehlsspeicher zu programmieren, ohne dies von einem anderen Speicher aus vorzunehmen, sondern ihn lediglich als RAM anzuschließen und lediglich die erforderliche Programmzeit abzuwarten.
  • Die folgenden Definitionen werden verwendet werden. Eine Schnittstelle erlaubt es, über einen entsprechenden load_command die zu programmierenden Daten in ein eingefügtes Register von Daten-Signalspeichern zu schreiben. Dies wird Lade-Operation genannt werden. Mit einem entsprechenden program_command wird das eigentliche Programmieren gestartet. Beide Operationen machen es erforderlich, den Flash-Speicher in den Schreibmodus einzustellen. Nachdem der Flash-Speicher in den Schreibmodus eingestellt worden ist, könnten diese zwei Befehle nicht von innerhalb des Flash-Speichers ausgeführt werden.
  • Die Erfindung ist nicht auf eine spezielle Art eines eingefügten Flash-Speichers beschränkt, sondern sie kann mit jedem energieunabhängigen Speicher zur Anwendung kommen.
  • Die Ausführungsform besteht aus einer Schnittstelle, die während der Ladeoperation die zu programmierenden Daten in den RAM über eine Art direkten Speicherzugriff (DMA) überträgt, anstatt in das eingefügte Register des Flash-Speichers, wobei die Adressen verfolgt werden, wo diese Daten in den Flash-Speicher geschrieben werden müssen, jedoch ohne den Flash-Speicher in den Schreibmodus einzustellen und somit den Flash-Speicher weiterhin verfügbar für das Lesen der Befehle zu halten. Sobald alle Daten, die zu programmieren sind, vom Mikroprozessor gesendet worden sind, wird der nächste Befehl der Befehl für das tatsächliche Programmieren des Flash-Speichers sein. In diesem Fall wird die Schnittstelle ein Warte-Signal zurück zum Mikroprozessor senden, so dass Letzterer nicht versuchen wird, Befehle aus dem Flash-Speicher abzuholen. Nach der Einstellung des Flash-Speichers in den Schreibmodus wird die Schnittstelle die Übertragung vom RAM zum eingefügten Register in den Flash-Speicher für die tatsächliche Ladeoperation beginnen. Am Ende der Ladeoperation wird die Schnittstelle den Programmbefehl zum Flash-Speicher senden, und am Ende der Programmoperation wird die Schnittstelle das Warte-Signal aus dem Mikroprozessor-Bus entfernen.
  • Vom Gesichtspunkt des Prozessors aus ist eine einfache Schreiboperation ausgeführt worden. Die Schreiboperation dauert länger als die Schreiboperation für einen RAM, auf Grund der Programmzeit des Flash-Speichers, jedoch werden keine weiteren speziellen zeitaufwendigen Tricks für die Operationen des Kopierens/Springens/Programmierens/Springens mehr benötigt.
  • Nachfolgend werden die im Fließdiagramm von 5a und 5b zusammen mit dem Blockdiagramm von 6a und 6b gezeigten Operationen beschrieben, die von der Schnittstelle 605 ausgeführt werden. Im Fließdiagramm von 5a und 5b werden sechs unterschiedliche Abschnitte durch gestrichelte Linien getrennt.
    Abschnitt 1: Der Mikroprozessor 603 führt den Befehl eines Ladeauftrags Lade-/Programmbefehl aus und schreibt den entsprechenden Wert in den Flashsteuerregister-Schattenspeicher fctr reg 608. Von jetzt an wartet die Schnittstelle 605 darauf, dass die Daten DATEN in den Flash-Speicher 602 geladen werden.
    Abschnitt 2: Der Mikroprozessor 603 wählt den Flash-Speicher 602 im Schreibmodus aus und sendet die Daten DATEN und die Adressen ADDR auf Bus 604. Die Schnittstelle 605 maskiert den Schreibmodus zum Flash-Speicher 602 und erfasst die Daten DATEN und die Adressen ADDR. Die Schnittstelle 605 erzeugt ebenfalls ein Warte-Signal Wait für den Mikroprozessor 603 und speichert die Daten DATEN im RAM 601. Und die Schnittstelle 605 wird das Warte-Signal Wait für den Mikroprozessor 603 entfernen. Der Flash-Speicher 602 ist noch nicht im Schreibmodus, und der Mikroprozessor 603 könnte noch Befehle holen, zum Beispiel für das Laden der Daten DATEN.
    Abschnitt 3: Jetzt führt der Mikroprozessor 603 den Befehl eines Ladeauftrags Lade-/Programmbefehl aus. Er schreibt den entsprechenden Wert in den Flashsteuerregister-Schattenspeicher fctr reg 608. Danach erzeugt die Schnittstelle 605 wiederum ein Warte-Signal Wait für den Mikroprozessor 603. Die Schnittstelle 605 stellt den Flash-Speicher 602 im Schreibmodus ein, während sich der Mikroprozessor 603 im Wartezustand befindet. Die Schnittstelle 605 liest die Daten DATEN aus dem RAM 601.
    Abschnitt 4: Die Schnittstelle 605 lädt die Daten DATEN in die Flash-Speicher-Daten-Signalspeicher.
    Abschnitt 5: Nachdem die letzten Daten DATEN vom RAM 601 in den Flash-Speicher 602 geladen worden sind, erzeugt die Schnittstelle 605 einen Programmbefehl für den Flash-Speicher 602 und fragt das Bereit-Signal zyklisch aus dem Flash-Speicher 602 ab, wobei das Signal angibt, dass die Programmierung des Flash-Speichers 602 abgeschlossen worden ist.
    Abschnitt 6: Wenn der Flash-Speicher 602 das Bereit-Signal erzeugt, stellt die Schnittstelle 605 den Flash-Speicher 602 wieder in den Lesemodus ein und entfernt das Warte-Signal Wait für den Mikroprozessor 603.
  • Nachstehend wird die Verwaltung der Adressen, sowohl für den RAM 601 als auch für den Flash-Speicher 602 beschrieben.
  • Die zu lösenden Hauptprobleme sind folgende:
    • 1. Festlegung des Ortes für die Zwischenspeicherung der Daten DATEN im RAM 601.
    • 2. Beibehalten der RAM-Adresse, um die Wiedergewinnung der Daten DATEN aus dem RAM 601 zu einem späteren Zeitpunkt zu ermöglichen.
    • 3. Beibehalten von Informationen dazu, wo die DATEN im Flash-Speicher 602 zu programmieren sind.
  • Das erste Problem wird durch das Herangehen eines direkten Speicherzugriffs (DMA), eingefügt in die Schnittstelle 605, bewältigt, während das zweite und das dritte Problem durch den eingefügten Algorithmus in der Schnittstelle 605 gelöst werden.
  • Für das Verwalten des direkten Speicherzugriffs (DMA) fügt die Schnittstelle 605 eine DMA-Vorrichtung 610 ein. Im Allgemeinen muss es, wenn ein DMA-Steuergerät und ein Mikroprozessor sich die Signaldrähte zu den Speichern teilen, einen Mechanismus geben, der entscheidet, welche Vorrichtung Zugang zu den Speichern haben soll. Bei der hier beschriebenen Ausführungsform der Erfindung nimmt die Schnittstelle 605 den Zugriff auf die Speicher 601 und 602 erst vor, nachdem sie über das allgemeine Warte-Signal Wait den Mikroprozessor 603 in den Wartezustand versetzt hat. Das Signal Wait ist immer auf dem System-Bus verfügbar, so dass keine anderen Entscheidungsmerkmale benötigt werden. Andererseits muss der Mikroprozessor 603 die Startadresse im RAM 601 zur DMA-Vorrichtung 610 übertragen. Mit dieser Information ist die Schnittstelle 605 in der Lage, die vom Mikroprozessor 603 gesendeten Daten DATEN zum RAM 601 umzuleiten, die RAM Startadresse zu speichern, und die Anzahl der Worte, die noch zu senden sind, zu verfolgen. Darüber hinaus gibt es kein Risiko, Daten im RAM 601 durch Schreiben an einer falschen Stelle zu verstümmeln. Der Zweck der DMA-Vorrichtung 610 ist, die angemessene Vorrichtung, RAM 601 oder Flash-Speicher 602, auszuwählen, Daten zu dieser Vorrichtung zu senden oder von dieser zu lesen, auf eine Bereit-Information von der Vorrichtung zu warten und die Bereit-Information als Bestätigung an die Hauptzustands-Maschine 617 in der Schnittstelle 605 zu übermitteln.
  • In den 6a, 6b, 7 und 8 wird die Implementierung der Architektur der Schnittstelle 605 gezeigt. In dem in 6a und 6b gezeigten Blockdiagramm sind die Schnittstelle 605, der Mikroprozessor 603 und der RAM 601 mit dem System-Bus 604 zusammen mit den Steuer-Signalen Wait, n/READ/WRITE, dem Datensignal DATEN und dem Adress-Signal ADDR verbunden. Darüber hinaus ist es erforderlich, dass die Schnittstelle 605 Zugriff auf die Chip-Auswahl des Flash-Speichers 602, genannt SEL_FLASH, und des RAM 601, genannt SEL_RAM, hat. Die Schnittstelle 605 beruht hauptsächlich auf der Hauptzustands-Maschine (MSM) 617, auf der DMA-Vorrichtung 610 und auf dem Zähler 606. Die Hauptzustands-Maschine 606 prüft die Aufforderungen vom Mikroprozessor 603 und steuert die Eingaben für die Adressen- und Datenregister. Der Zähler 606 ver folgt die Anzahl der im RAM 601 geschriebenen Worte, um sie für das Laden des Flash-Speichers wiederzugewinnen.
  • Die Register sind folgende:
  • Das Flash-Speicher-Startadressenregister 611 speichert die Startadresse flash start addr, welche angibt, wo der Flash-Speicher 602 zu programmieren ist.
  • Das RAM-Startadressenregister 612 speichert die Startadresse RAM start addr, welche angibt, wo die Daten DATEN im RAM 601 zwischenzuspeichern sind. Diese Startadresse muss an die Schnittstelle 605 vom Mikroprozessor 603 gesendet werden, ehe die Daten DATEN gesendet werden.
  • Der Datenpuffer 613 speichert die Daten DATEN bei jedem Ladezyklus, ehe er die Daten DATEN zum RAM 601 oder zum Flash-Speicher 602 sendet.
  • Das letzte Zählregister 607 speichert die maximale Anzahl von ausgeführten RAM Schreibschritten. Dieses Register wird genutzt, um das Ende des aufeinanderfolgenden Flash-Speicher-Ladens durch einen Komparator 616 zu prüfen.
  • Das aktuelle Flash-Adressenregister 614 speichert die Adresse, die gegenwärtig von der DMA-Vorrichtung 610 für den Zugriff auf den Flash-Speicher 602 genutzt wird. Das heißt:
    • – die Flash-Speicher-Startadresse flash start addr für das erste Laden; und
    • – (die Flash-Speicher-Startadresse flash start addr) + (aktueller Zählerwert) während der aufeinanderfolgenden Ladezyklen;
  • Das aktuelle RAM Adressenregister 615 speichert die RAM Adresse RAM current addr, die gegenwärtig von der DMA-Vorrichtung 610 für den Zugriff auf den RAM 601 genutzt wird. Das heißt:
    • – Die RAM Start Adresse RAM start addr für die erste Schreib- oder Leseoperation; und
    • – (die RAM Startadresse RAM start addr) + (aktueller Zählerwert) während der aufeinanderfolgenden Schreib- oder Leseoperation;
  • Das Schattenspeicher-Flashsteuerregister shadow_fctr_reg 608 speichert den Ladebefehl und den Programmbefehl, die durch den Mikroprozessor 603 gesendet und durch die Schnittstelle 605 zwischengespeichert werden.
  • Das reale Blinksteuerregister real_fctr_reg 609 speichert den Ladebefehl und den Programmbefehl, die von der Schnittstelle 605 an den Flash-Speicher 602 zu senden sind.
  • 7 zeigt eine Darstellung des Verhaltens der Hauptzustands-Maschine (MSM) 617, das heißt, die von der MSM ausgeführten Operationen und ihr Ko-Funktionieren mit der direkten Speicherzugriffszustands-Maschine (DMA SM) 610.
    • Zustand 0: Die MSM ist im Ruhezustand.
    • Zustand 1: Die MSM hat eine Ladeaufforderung vom Mikroprozessor (nachfolgend μP genannt) festgestellt. Der μP 603 hat den angegebenen Ladebefehl in das Schattenspeicher-Flashsteuerregister shadow_fctr_reg der Schnittstelle 605 geschrieben. a) Die MSM stellt das Freigabesignal en_data_in und die Signale update_addr und data in sel ein, um die Übertragung vom Daten-Bus 604 an das RAM_start_addr Register und RAM_current_addr zu gestatten. Der μP muss jetzt die Startadresse des RAM Platzes, welcher als Puffer genutzt werden wird, an die MSM senden. Die MSM wird diesen Wert vom Daten-Bus entnehmen und ihn in den Registern RAM_start_addr und RAM_current_addr speichern. Darüber hinaus wird die MSM den Zähler 606 neu einstellen, der für die inkrementale Adressenberechnung genutzt wird.
    • Zustand 2: Jetzt muss der μP die Startadresse des RAM Platzes, welcher als Puffer genutzt werden wird, an die MSM senden. Die MSM wird diesen Wert vom Daten-Bus entnehmen und ihn im RAM_start_addr Register speichern.
    • Zustand 3: Die MSM stellt fest, dass der μP den Flash-Speicher 602 im Schreibmodus ausgewählt hat (die Feststellung wird mittels der Prüfung der Signale SEL_FLASH und nREAD/WRITE getroffen, die auf Bus-Systemebene zur Verfügung stehen, siehe 6b). Darüber hinaus hat der μP DATA und ADDR auf den Bus gesendet. a) Die MSM erzeugt ein Warte-Signal WAIT für den μP. b) Die MSM stellt die Freigabesignale en_addr_in und en_data_in ein und entnimmt von dem DATA und dem ADDR System-Bus. Dies sind die Werte, die in den DATA_buffer- und FLASH_start-addr Registern zu speichern sind.
    • Zustand 4: Jetzt muss die MSM die geholten Daten zum RAM 601 neu schreiben. a) Die Adresse für den RAM wird berechnet als: Wert des Registers RAM_current_addr + Wert des Zählers. Für die erste Schleife die RAM_current_addr = RAM_start_addr und der Wert des Zählers = 0 (siehe Zustand 1.a) b) Jetzt sendet die MSM an die DMA SM die ram_write Aufforderung mit der Adresse RAM_current_addr und den Daten-DATEN-Puffer.
    • Zustand 5: Die MSM wartet auf die Bestätigung von der DMA SM, dass die RAM Schreiboperation ausgeführt worden ist.
    • Zustand 6: Wenn die MSM die Bestätigung von der DMA SM festgestellt hat, kann das Signal WAIT für den μP entfernt werden. Es ist zu beachten, dass der Flash-Speicher nicht im Schreibmodus ist, und dass der μP noch Befehle für das Laden von DATEN holen könnte.
  • Jetzt sendet der μP weiterhin DATEN und ADDR auf den System-Bus, als wenn er wirklich die zu programmierenden DATEN in den Flash-Speicher laden würde. Die MSM schaltet Schleifen zwischen den Zuständen 4 bis 6, die DATEN zum RAM ablenkend und die Ladeoperation zum Flash-Speicher maskierend, der im Lesemodus bleibt. Nachdem der μP alle Daten, die zu laden und auszuführen sind, gesendet hat oder welche andere Operation auch immer gewünscht wird, ausgeführt hat, sendet er den finalen Programmbefehl Prog Instruction an shadow_fctr_reg der Schnittstelle.
    • Zustand 7: Die MSM hat die Prog Instruction vom μP festgestellt: a) Die MSM wird den μP in den Wartezustand versetzen, da von jetzt an der Flash-Speicher nicht im Lesezustand verfügbar sein wird und somit keine Befehle an den μP liefern wird. b) Die MSM speichert Flash_current_addr im Letzten Zählregister. c) Die MSM überträgt die Flash_start_addr und die RAM_start_addr (gespeichert im Zustand 3.b) an die Flash_current_addr bzw. die RAM_current_addr. Darüber hinaus stellt sie den Zähler neu ein. d) Die MSM sendet an die DMA die RAM_read Aufforderung mit der RAM_current_addr als Adresse und wartet auf die DMA Bestätigung DMA Ack.
    • Zustand 8: Die MSM bildet jetzt Schleifen, bis die DMA Ack von der DMA SM eingestellt ist (die RAM_read Operation ist ausgeführt worden). Die Schnittstelle lädt die DATEN in die Flash-Speicher-Datensignalspeicher.
    • Zustand 9: Die MSM nimmt jetzt ein reales Laden zu den Flash-Speicher-Datensignalspeichern mit den DATEN vor, die durch den RAM und die Adresse in der Flash_current_addr wiedergewonnen wurden. Dies wird von der DMA SM über eine flash_load Aufforderung der MSM vorgenommen. Darüber hinaus vergleicht die MSM die Flash_current_addr mit dem Last_count Wert (gespeichert im Zustand 7.b), um zu prüfen, ob es die letzten zu ladenden DATEN sind.
    • Falls Flash_current addr gleich Last_count ist, geht MSM zum Zustand 11. b) Falls Flash_current_addr unterschiedlich zu Last_count ist, geht MSM zum Zustand 10.
    • Zustand 10: Die MSM inkrementiert jetzt den Zähler und aktualisiert die Register: a) Flash_current_addr = Flash_current_addr + Zähler; b) RAM_current addr = RAM_current_addr + Zähler; c) Die MSM sendet an DMA SM die ram_read Aufforderung mit RAM_current addr als Adresse und geht wieder zum Zustand 8, um auf die DMA Bestätigung zu warten.
    • Zustand 11: Falls Flash_current_addr = Last_count ist, sind alle Daten in den Flash-Speicher geladen worden, und es ist jetzt an der Zeit, sie zu programmieren, indem an den Flash-Speicher der reale Programmbefehl gesendet wird.
    • Zustand 12: Jetzt wird, abhängig von der Flash-Speicher-Architektur (diese ist unabhängig vom Flash-Speicher-Modul), die MSM entweder eine festgelegte Anzahl von Taktzyklen, abhängig von der für den Flash-Speicher festgelegten Programmzeit, zur Schleife schalten, oder sie wird zusammenschalten bis zu einem potentiellen Bereit-Signal, das vom Flash-Speicher am Ende der Programmzeit kommt (falls dieses Signal existiert, könnte es bis zur DMA SM gehen, und die MSM würde auf DMA Ack von der DMA SM wie gewöhnlich warten).
    • Zustand 13: Nach Erhalt von DMA Ack von der DMA SM oder nach Erreichen der Programmzeit kann die MSM jetzt den Flash-Speicher zurück in den Lesemodus bringen (was das Laden und das Programm betrifft, so erfolgt dies durch das Schreiben der entsprechenden Bits in Real_fctr_reg). Die MSM entfernt jetzt das Signal Wait für den μP und geht in einen Ruhezustand (Zustand 0).
  • 8 zeigt jetzt das Verhalten der eingefügten direkten Speicherzugriffs-Zustandsmachine (DMA) 610 gemäß der Erfindung. Eine detalliertere Beschreibung der Funktion der DMA SM folgt.
    • Zustand 0: Die DMA SM ist im Ruhezustand.
    • Zustand 1: Die DMA SM hat eine RAM_write Aufforderung von der MSM festgestellt. a) Die DMA SM stellt das von der MSM genutzte Signal dma_ack als Bestätigung neu ein. b) Die DMA SM stellt das Signal addr_out_sel ein, um zum Address-Systembus den Wert von RAM_current_addr zu senden. Die DMA SM kann jetzt die Signale enable_addr_out und enable-data_out einstellen, um den Wert von RAM_current addr und den Wert der DATA BUFFER Register an den Adress- und Daten-Systembus zu senden. d) Abhängig von der RAM Architektur könnte die Schreiboperation eine festgelegte Anzahl von Taktzyklen beanspruchen, oder sie könnte einem Bereit-Signal zurück vom RAM unterliegen. In jedem Fall geht die DMA SM am Ende des Schreibzyklus zum Zustand 4.
    • Zustand 2: Die DMA SM hat eine RAM_read Aufforderung von der MSM festgestellt. a) Die DMA SM stellt das von der MSM genutzte Signal dma_ack als Bestätigung neu ein. b) Die DMA SM stellt das Signal addr_out_sel ein, um zum Address-Systembus den Wert von RAM_current_addr zu senden. c) Die DMA SM kann jetzt das Signal enable_addr_out einstellen, um den Wert von RAM_current_addr an den Adress- Systembus zu senden. d) Abhängig von der RAM Architektur könnte die Schreiboperation eine festgelegte Anzahl von Taktzyklen beanspruchen, oder sie könnte einem Bereit-Signal zurück vom RAM unterliegen. In jedem Fall geht die DMA SM am Ende des Schreibzyklus zum Zustand 4.
    • Zustand 3: Die DMA SM hat eine FLASH_load Aufforderung von der MSM festgestellt. a) Die DMA SM stellt das von der MSM genutzte Signal dma_ack als Bestätigung neu ein. b) Die DMA SM stellt das Signal addr_out_sel ein, um zum Address-Systembus den Wert von FLASH_current_addr zu senden. c) Die DMA SM kann jetzt die Signale enable_addr_out und enable_data_out einstellen, um den Wert von FLASH_current_addr und den Wert der DATA_BUFFER Register an den Adress- und Daten-Systembus zu senden. d) Abhängig von der Flash-Speicher-Architektur könnte die Ladeoperation eine festgelegte Anzahl von Taktzyklen beanspruchen, oder sie könnte einem Bereit-Signal zurück vom Flash-Speicher unterliegen. In jedem Fall geht die DMA SM am Ende des Ladezyklus zum Zustand 4.
    • Zustand 4: Wenn die Speicheroperation abgeschlossen ist, stellt die DMA SM das Signal dma_ack auf 1 für die MSM und kehrt zum Ruhezustand, Zustand 0, zurück.
  • Dies beendet die Beschreibung der Operation sowohl der Hauptzustandsmaschine (MSM) und der direkten Speicherzugriffs-Zustandsmachine (DMA SM).
  • Die beschriebene Architektur hat mehrere Vorteile. Die Zeit für die Entwicklung der Software wird verringert, und ein robustes System mit einem wieder verwendba ren Anwendungscode wird entwickelt, das sich auf die Anwendung und nicht auf die Grenzen der Hardware konzentriert.
  • Das erfindungsgemäße Verfahren mit seiner architektonischen Implementierung ist gut geeignet für alle Anwendungen, bei denen ein Mikroprozessor einen eingefügten Flash-Speicher als Befehlsspeicher nutzt.
  • Übersetzung der Zeichnungen:
  • 1
    • APB module – APB Modul
    • bridge – Brücke
    • ASB module – ASB Modul
    • flash – Flash-Speicher
  • 2
    • fetched code – geholter Code
    • flash memory – Flash-Speicher
    • program commands & data – Programmbefehle und Daten
  • 3
    • flash memory – Flash-Speicher
    • programmed data – programmierte Daten
    • jump back to the flash instruction – Zurückspringen zum Flash-Befehl
    • program routine Programmroutine
    • jump into the RAM instruction – Springen in den RAM Befehl
    • code for copying the program routine – Code für das Kopieren der Programmroutine
    • normal code – normaler Code
    • program – Programm
    • write – Schreiben
    • read – Lesen
  • 4
    • flash memory – Flash-Speicher
    • variable – Variable
    • jump bank to the flash instruction – Zurückspringen zum Flash Befehl
    • variable calling – Variablen-Aufruf
    • program routine – Programmroutine
    • jump into the RAM instruction – Springen in the RAM Befehl
    • code for copying the program routine – Code für das Kopieren der Programmroutine
    • normal code – normaler Code
    • ERROR – Fehler
  • 5a
    • sys bus – Systembus
    • data – Daten
    • add – Zusatz
    • interface – Schnittstelle
    • instruct – Befehl
    • flash – Flash-Speicher
    • wait – warten
    • idle – Ruhezustand
    • load request – Ladeaufforderung
    • flash selected – Flash-Speicher ausgewählt
    • read data from μp bus – Lesen der Daten vom μp Bus
    • read address from μp bus – Lesen der Adresse vom μp Bus
    • wait the μp – Waren auf μp
    • write data to SRAM – Schreiben von Daten an SRAM
    • remove wait for the μp – Entfernen von Wait für den μp
    • program request – Programmaufforderung
    • set flash in load mode – Einstellen des Flash-Speichers in Lademodus
    • read data from SRAM – Lesen von Daten aus SRAM
  • 5b
    • sys bus – Systembus
    • data – Daten
    • wait – Warten
    • addr – Addresse
    • interface – Schnittstelle
    • prog cmd – Programmbefehl
    • ready – bereit
    • flash – Flash-Speicher
    • instruct – Befehl
    • load data in flash latches – Laden von Daten in FlashSpeicher-Signalspeicher
    • last data – letzte Daten
    • set flash in program mode – Einstellen des Flash-Speichers auf Programm-Modus
    • end of program – Ende des Programms
    • set flash in read mode – Einstellen des Flash-Speichers auf Lese-Modus
    • remove wait for the μp – Entfernen von Wait für den μp
  • 6a
    • shadow fctr reg – Schattenspeicher-Flashsteuerregster
    • real fctr reg – reale Blinksteuerregister
    • flash control signals – Flash-Steuersignale
    • load/prog instruction – Lade-/Programmbefehl
    • wait – Warten
    • main state machine – Hauptzustandsmaschine
    • DMA engine – DMA Vorrichtung
    • inc/reset counter – Inkrementieren/Neueinstellen Zähler
    • counter – Zähler
    • last count – letzte Zählung
    • compare – Vergleichen
    • flash start addr – Flash-Startaddresse
    • flash current addr – aktuelle Flashadresse
    • RAM start addr – RAM Startadresse
    • data buffer – Datenpuffer
    • RAM current addr – aktuelle RAM-Adresse
  • 6b
    • Read/Write – Lesen/Schreiben
    • wait – Warten
    • system bus – Systembus
    • microprocessor – Mikroprozessor
    • flash control signals – Flash-Steuersignale
    • embedded flash – eingefügter Flash
  • 7
    • load instruction – Ladebefehl
    • up wait – Warten auf Mikroprozessor
    • remove μp wait – Entfernen Wait auf Mikroprozessor
    • prog instruction – Programmbefehl
    • reset Counter ram read – Neueinstellen Zähler ram Lesen
    • DMA Ack – DMA Bestätigung
    • compare = TRUE – Vergleichen = KORREKT
    • compare = FALSE – Vergleichen = FALSCH inc counter – Inkrement-Zähler
    • set prog an flash ctrl signals – Einstellen des Programms auf Flash ctrl Signale

Claims (12)

  1. Verfahren für das Schreiben von Daten (DATEN) von einem Prozessor (603) auf einen energieunabhängigen Speicher (602), eingefügt in einen integrierten Schaltkreis, welcher einen Bus (604) aufweist, der den Prozessor (603), den energieunabhängigen Speicher (602), einen energieabhängigen Speicher (601) und eine Schnittstelle (605) verbindet, wobei das Verfahren die Schritte in einer Reihenfolge von a-h umfasst: (a) Senden eines Ladebefehls durch den Prozessor (603) an den energieunabhängigen Speicher (602), (b) Senden von Adressen (ADDR) und Daten (DATEN), die zu schreiben sind, vom Prozessor (603) an den Bus (604), (c) die Schnittstelle (605) maskiert den Schreibmodus zum energieunabhängigen Speicher (602) und empfängt die gesendeten Adressen (ADDR) und Daten (DATEN), (d) Speichern von Daten (DATEN) im energieabhängigen Speicher (601) unter der Steuerung der Schnittstelle (605), (e) Senden eines Wartesignals (Warten) von der Schnittstelle (605) zum Prozessor (603), wenn die Daten (DATEN) im energieabhängigen Speicher (601) gespeichert worden sind, (f) die Schnittstelle (605) stellt den energieunabhängigen Speicher (602) in den Schreibmodus ein, (g) Übertragung der Daten (DATEN) unter Steuerung der Schnittstelle (605) vom energieabhängigen Speicher (601) auf den energieunabhängigen Speicher (602); (h) Entfernen des Wartesignals (Warten) vom Prozessor (603).
  2. Verfahren für das Schreiben von Daten nach Anspruch 1, dadurch gekennzeichnet, dass die Datenübertragung durch eine Schnittstelle (605) gesteuert wird.
  3. Verfahren für das Schreiben von Daten nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass zu Beginn der Datenübertragung vom energieabhängigen Speicher (601) auf den energieunabhängigen Speicher (602) der energieunabhängige Speicher (602) in den Schreibmodus eingestellt wird.
  4. Verfahren für das Schreiben von Daten nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass nach der Übertragung der Daten (DATEN) und Adressen (ADDR) vom energieabhängigen Speicher (601) auf den energieunabhängigen Speicher (602) der energieunabhängige Speicher (602) in den Programmmodus eingestellt wird.
  5. Verfahren für das Schreiben von Daten nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass nach dem Erhalt eines Bereit-Signals vom energieunabhängigen Speicher (602) der energieunabhängige Speicher (602) in Lesemodus eingestellt wird.
  6. Verfahren für das Schreiben von Daten nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass alle Daten (DATEN) zunächst zum energieabhängigen Speicher (601) übertragen werden.
  7. Verfahren für das Schreiben von Daten nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass die Adressen (ADDR), die den Daten (DATEN) entsprechen, die in den energieunabhängigen Speicher (602) geschrieben werden sollen, zwischengespeichert werden.
  8. Verfahren für das Schreiben von Daten nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass, ehe die Daten (DATEN) in den energieabhängigen Speicher (601) geschrieben werden, das Wartesignal (Warten) an den Prozessor (603) gesendet wird und entfernt wird, nachdem die Daten (DATEN) vollständig in den energieabhängigen Speicher (601) geschrieben worden sind.
  9. Integrierter Schaltkreis, umfassend einen Prozessor (603), einen energieabhängigen Speicher (601), einen energieunabhängigen Speicher (602) und einen Bus (604), welcher den Prozessor (603) und den energieabhängigen Speicher (601) verbindet, dadurch gekennzeichnet, dass eine Schnittstelle (605) für die Steuerung einer Programmierung des energieunabhängigen Speichers (602) angeordnet ist, weiterhin ein Adressenpuffer für Adressen im energieunabhängigen Speicher (602) angeordnet ist, die zu ändern sind, wobei die Schnittstelle (605) einschließt: eine Einrichtung für das Maskieren des Schreibmodus, gesendet vom Prozessor (603) zum energieunabhängigen Speicher (602) und eine Einrichtung für den Empfang von Adressen (ADDR) und Daten (DATEN), gesendet vom Prozessor an den energieunabhängigen Speicher (602), eine Einrichtung für das Übertragen von Daten (DATEN), die in den energieunabhängigen Speicher (602) zu schreiben sind, zuerst zum energieabhängigen Speicher (601), eine Einrichtung für das Senden eines Wartesignals (Warten) an den Prozessor (603), wenn die Daten (DATEN) in den energieabhängigen Speicher (601) übertragen worden sind, eine Einrichtung für das Einstellen des energieunabhängigen Speichers (602) auf den Schreibmodus und für das Übertragen der Daten (DATEN) vom energieabhängigen Speicher (601) in den energieunabhängigen Speicher (602), eine Einrichtung für das Entfernen des Wartesignals (Warten) vom Prozessor.
  10. Integrierter Schaltkreis nach Anspruch 9, dadurch gekennzeichnet, dass der energieunabhängige Speicher (602) ein Flash-Speicher ist.
  11. Integrierter Schaltkreis nach Anspruch 9 oder 10, dadurch gekennzeichnet, dass der energieabhängige Speicher (601) ein Speicher mit wahlfreiem Zugriff oder ein statischer Speicher mit wahlfreiem Zugriff ist.
  12. Integrierter Schaltkreis nach Anspruch 9, 10 oder 11, dadurch gekennzeichnet, dass der energieabhängige Speicher (601) ein eingefügter energieabhängiger Speicher ist.
DE60316804T 2002-06-06 2003-06-04 Verfahren und vorrichtung zum einschreiben von daten in einen nicht flüchtigen speicher Expired - Lifetime DE60316804T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP02012577 2002-06-06
EP02012577 2002-06-06
PCT/IB2003/002093 WO2003104976A2 (en) 2002-06-06 2003-06-04 Method for writing data to a non-volatile memory embedded in an integrated circuit and corresponding circuit

Publications (2)

Publication Number Publication Date
DE60316804D1 DE60316804D1 (de) 2007-11-22
DE60316804T2 true DE60316804T2 (de) 2008-02-07

Family

ID=29724377

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60316804T Expired - Lifetime DE60316804T2 (de) 2002-06-06 2003-06-04 Verfahren und vorrichtung zum einschreiben von daten in einen nicht flüchtigen speicher

Country Status (8)

Country Link
US (1) US20050268157A1 (de)
EP (1) EP1514176B1 (de)
JP (1) JP2005529399A (de)
CN (1) CN100430888C (de)
AT (1) ATE375547T1 (de)
AU (1) AU2003241076A1 (de)
DE (1) DE60316804T2 (de)
WO (1) WO2003104976A2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7315951B2 (en) * 2003-10-27 2008-01-01 Nortel Networks Corporation High speed non-volatile electronic memory configuration
DE102004004796B4 (de) * 2004-01-30 2007-11-29 Infineon Technologies Ag Vorrichtung zur Datenübertragung zwischen Speichern
TWI275019B (en) 2004-12-09 2007-03-01 Lite On Technology Corp Embedded system and related method capable of automatically updating system software
CN100375959C (zh) * 2004-12-28 2008-03-19 光宝科技股份有限公司 可自动更新嵌入式系统的系统软件的装置及方法
CN1963787A (zh) * 2005-11-10 2007-05-16 其乐达科技股份有限公司 嵌入式系统的快闪存储器存取方法及存取电路
US7428610B2 (en) 2006-02-14 2008-09-23 Atmel Corporation Writing to flash memory
WO2009011104A1 (ja) 2007-07-18 2009-01-22 Panasonic Corporation 映像音声処理装置及びその待機及び復帰方法
CN103389963B (zh) * 2012-05-09 2016-08-31 北京兆易创新科技股份有限公司 一种嵌入式系统控制器
KR20150058927A (ko) * 2013-11-21 2015-05-29 삼성전자주식회사 불 휘발성 메모리의 쓰기 속도를 제어하는 기술
WO2016182579A1 (en) * 2015-05-14 2016-11-17 Hewlett Packard Enterprise Development Lp Data transfers based on state transition detections

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2461301A1 (fr) * 1978-04-25 1981-01-30 Cii Honeywell Bull Microprocesseur autoprogrammable
JPH08314794A (ja) * 1995-02-28 1996-11-29 Matsushita Electric Ind Co Ltd 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム
US5717887A (en) * 1995-07-28 1998-02-10 Nomai Sa System for the automatic substitution of control firmware embedded in a removable disk drive
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
TW368626B (en) * 1998-04-17 1999-09-01 Winbond Electronics Corp Microprocessor with self-programmed embedded flash memory and programming method
DE10052877B4 (de) * 1999-10-21 2008-07-03 Samsung Electronics Co., Ltd., Suwon Mikrocontroller
DE10040267A1 (de) * 2000-08-17 2002-02-28 Philips Corp Intellectual Pty Prozessor-Speicher-System

Also Published As

Publication number Publication date
EP1514176A2 (de) 2005-03-16
JP2005529399A (ja) 2005-09-29
CN1659513A (zh) 2005-08-24
AU2003241076A8 (en) 2003-12-22
AU2003241076A1 (en) 2003-12-22
DE60316804D1 (de) 2007-11-22
ATE375547T1 (de) 2007-10-15
CN100430888C (zh) 2008-11-05
US20050268157A1 (en) 2005-12-01
EP1514176B1 (de) 2007-10-10
WO2003104976A3 (en) 2004-06-03
WO2003104976A2 (en) 2003-12-18

Similar Documents

Publication Publication Date Title
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE60005563T2 (de) Rechnersysteminitialisierung durch in einem speicher mit sequentiellem zugriff gespeicherten urlade-code
DE69534148T2 (de) Rechnersystem zur Ausführung von Verzweigungsbefehlen
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
DE69820027T2 (de) Vorrichtung zur ausführung virtueller maschinenbefehle
DE4215063C2 (de) Einrichtung und Verfahren zum Seitenwechsel bei einem nicht-flüchtigen Speicher
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE4206062C2 (de) Pipelineverarbeitung von Instruktionen
DE2416609C2 (de) Datenverarbeitungsanlage mit einer zentralen Verarbeitungseinheit und Multiprogrammierung mit mehreren Programmunterbrechungs-Prioritätsstufen
DE112010004963T5 (de) Synchronisieren von SIMD Vektoren
DE102015101414A1 (de) Verbesserter Rücksprungstapelpuffer
DE102005032949A1 (de) Verfahren und Vorrichtung zum Implementieren von Speicherordnungsmodellen mit Ordnungsvektoren
DE4418892C2 (de) Mikrocomputer
DE102007003179A1 (de) Verfahren zum Systembooten mit Direktspeicherzugriff bei einer neuen Speicherarchitektur
DE102005021749A1 (de) Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung
DE10159901A1 (de) Mikrocomputer mit eingebautem programmierbarem, nichtflüchtigem Speicher
DE60316804T2 (de) Verfahren und vorrichtung zum einschreiben von daten in einen nicht flüchtigen speicher
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE112009002207T5 (de) Aktualisieren einer Firmware mit mehreren Prozessoren
DE60025788T2 (de) Flexibles Mehrzweck-Ein/Ausgabesystem
DE2721623C2 (de)
DE602004010265T2 (de) Load-store-einheit mit wiederholungsmechanismus
EP0500973A1 (de) Initialisierungsroutine im EEPROM
DE2856680A1 (de) Befehlspuffer fuer ein datenverarbeitungssystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: DENNEMEYER & ASSOCIATES S.A., LUXEMBOURG, LU

R081 Change of applicant/patentee

Ref document number: 1514176

Country of ref document: EP

Owner name: DSP GROUP SWITZERLAND AG, CH

Free format text: FORMER OWNER: NXP B.V., EINDHOVEN, NL

Effective date: 20120802

R082 Change of representative

Ref document number: 1514176

Country of ref document: EP

Representative=s name: DENNEMEYER & ASSOCIATES S.A., LU

Effective date: 20120802