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 PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 246
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000001419 dependent effect Effects 0.000 claims description 38
- 239000000872 buffer Substances 0.000 claims description 15
- 238000003860 storage Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000000873 masking effect Effects 0.000 claims description 2
- 230000003068 static effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000018109 developmental process Effects 0.000 description 5
- 230000009191 jumping Effects 0.000 description 5
- 240000003517 Elaeocarpus dentatus Species 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 241001136792 Alle Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 210000002023 somite Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand 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ücke101 ist über einen 32-Bit-Bus104 mit erweiterten Systembusmodulen (ASB)105 , einer Speicherverwaltungseinheit (MMU)106 , einem Speicher mit wahlfreiem Zugriff RAM107 und einem Flash-Speicher102 verbunden. Ein erweiterter Rechner mit vermindertem Befehlsvorrat – RISC (Reduced Instruction Set Computer) (ARM)103 ist mit der MMU106 verbunden. Über einen 16-Bit-Bus108 ist die Brücke101 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 Mikroprozessor103 die meiste Zeit Lesezugriffe auf diesen Flash-Speicher102 ausführen, während er in den RAM107 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-Speichers102 aus laufen, da der Flash-Speicher102 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-Speicher102 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 in2 gezeigte Flash-Speicher102 in diesem Modus bleiben, bis ein neuer Befehl ihn wieder im Lesemodus einstellt. Da der Prozessor103 jedoch nicht in der Lage ist, noch Befehle aus dem Flash-Speicher102 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 in5a gezeigten Flussdiagramms; -
6a den ersten Teil eines Blockdiagramms einer Ausführung des erfindungsgemäßen integrierten Schaltkreises; -
6b den zweiten Teil des in6a 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 RAM107 ausführt, dann zum ersten Befehl dieser Programmroutine im RAM107 zu verzweigen, die Programmoperation von innerhalb des RAM107 auszuführen und schließlich, nach der Programmierung des Flash-Speichers102 , wiederum zum Code im Flash-Speicher102 zurückzuspringen. Dies wird in3 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 RAM107 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-Speicher102 im Lesemodus besteht. - Schließlich muss für das Schreiben der Kopierroutine, welche die Programmroutine vom Flash-Speicher
102 zum RAM107 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-Speicher102 mit Hilfe eines Herangehens mit einer höheren Programmiersprache ausgeführt werden muss. Ein Speicherkopier-Befehl (Memcopy) wird die Routine in den RAM107 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-Speicher102 programmieren, danach eine Assemblerroutine aufrufen, welche den Befehlszähler im Flash-Speicher-Adressraum steuert, und danach den Code weiter ausführen, jedoch vom Flash-Speicher102 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-Speicher102 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-Speicher102 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 RAM107 aus zu verhindern, nicht nur die Programmroutine in den RAM107 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-Speicher102 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 RAM107 kopierten Programms gesteuert; - (c) von jetzt an wird der Code vom RAM
107 aus ausgeführt, und es ist möglich, den Flash-Speicher102 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 RAM107 und in den Flash-Speicher102 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 und5b zusammen mit dem Blockdiagramm von6a und6b gezeigten Operationen beschrieben, die von der Schnittstelle605 ausgeführt werden. Im Fließdiagramm von5a und5b werden sechs unterschiedliche Abschnitte durch gestrichelte Linien getrennt.
Abschnitt 1: Der Mikroprozessor603 führt den Befehl eines Ladeauftrags Lade-/Programmbefehl aus und schreibt den entsprechenden Wert in den Flashsteuerregister-Schattenspeicher fctr reg608 . Von jetzt an wartet die Schnittstelle605 darauf, dass die Daten DATEN in den Flash-Speicher602 geladen werden.
Abschnitt 2: Der Mikroprozessor603 wählt den Flash-Speicher602 im Schreibmodus aus und sendet die Daten DATEN und die Adressen ADDR auf Bus604 . Die Schnittstelle605 maskiert den Schreibmodus zum Flash-Speicher602 und erfasst die Daten DATEN und die Adressen ADDR. Die Schnittstelle605 erzeugt ebenfalls ein Warte-Signal Wait für den Mikroprozessor603 und speichert die Daten DATEN im RAM601 . Und die Schnittstelle605 wird das Warte-Signal Wait für den Mikroprozessor603 entfernen. Der Flash-Speicher602 ist noch nicht im Schreibmodus, und der Mikroprozessor603 könnte noch Befehle holen, zum Beispiel für das Laden der Daten DATEN.
Abschnitt 3: Jetzt führt der Mikroprozessor603 den Befehl eines Ladeauftrags Lade-/Programmbefehl aus. Er schreibt den entsprechenden Wert in den Flashsteuerregister-Schattenspeicher fctr reg608 . Danach erzeugt die Schnittstelle605 wiederum ein Warte-Signal Wait für den Mikroprozessor603 . Die Schnittstelle605 stellt den Flash-Speicher602 im Schreibmodus ein, während sich der Mikroprozessor603 im Wartezustand befindet. Die Schnittstelle605 liest die Daten DATEN aus dem RAM601 .
Abschnitt 4: Die Schnittstelle605 lädt die Daten DATEN in die Flash-Speicher-Daten-Signalspeicher.
Abschnitt 5: Nachdem die letzten Daten DATEN vom RAM601 in den Flash-Speicher602 geladen worden sind, erzeugt die Schnittstelle605 einen Programmbefehl für den Flash-Speicher602 und fragt das Bereit-Signal zyklisch aus dem Flash-Speicher602 ab, wobei das Signal angibt, dass die Programmierung des Flash-Speichers602 abgeschlossen worden ist.
Abschnitt 6: Wenn der Flash-Speicher602 das Bereit-Signal erzeugt, stellt die Schnittstelle605 den Flash-Speicher602 wieder in den Lesemodus ein und entfernt das Warte-Signal Wait für den Mikroprozessor603 . - Nachstehend wird die Verwaltung der Adressen, sowohl für den RAM
601 als auch für den Flash-Speicher602 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 Schnittstelle605 gelöst werden. - Für das Verwalten des direkten Speicherzugriffs (DMA) fügt die Schnittstelle
605 eine DMA-Vorrichtung610 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 Schnittstelle605 den Zugriff auf die Speicher601 und602 erst vor, nachdem sie über das allgemeine Warte-Signal Wait den Mikroprozessor603 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 Mikroprozessor603 die Startadresse im RAM601 zur DMA-Vorrichtung610 übertragen. Mit dieser Information ist die Schnittstelle605 in der Lage, die vom Mikroprozessor603 gesendeten Daten DATEN zum RAM601 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 RAM601 durch Schreiben an einer falschen Stelle zu verstümmeln. Der Zweck der DMA-Vorrichtung610 ist, die angemessene Vorrichtung, RAM601 oder Flash-Speicher602 , 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-Maschine617 in der Schnittstelle605 zu übermitteln. - In den
6a ,6b ,7 und8 wird die Implementierung der Architektur der Schnittstelle605 gezeigt. In dem in6a und6b gezeigten Blockdiagramm sind die Schnittstelle605 , der Mikroprozessor603 und der RAM601 mit dem System-Bus604 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 Schnittstelle605 Zugriff auf die Chip-Auswahl des Flash-Speichers602 , genannt SEL_FLASH, und des RAM601 , genannt SEL_RAM, hat. Die Schnittstelle605 beruht hauptsächlich auf der Hauptzustands-Maschine (MSM)617 , auf der DMA-Vorrichtung610 und auf dem Zähler606 . Die Hauptzustands-Maschine606 prüft die Aufforderungen vom Mikroprozessor603 und steuert die Eingaben für die Adressen- und Datenregister. Der Zähler606 ver folgt die Anzahl der im RAM601 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-Speicher602 zu programmieren ist. - Das RAM-Startadressenregister
612 speichert die Startadresse RAM start addr, welche angibt, wo die Daten DATEN im RAM601 zwischenzuspeichern sind. Diese Startadresse muss an die Schnittstelle605 vom Mikroprozessor603 gesendet werden, ehe die Daten DATEN gesendet werden. - Der Datenpuffer
613 speichert die Daten DATEN bei jedem Ladezyklus, ehe er die Daten DATEN zum RAM601 oder zum Flash-Speicher602 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 Komparator616 zu prüfen. - Das aktuelle Flash-Adressenregister
614 speichert die Adresse, die gegenwärtig von der DMA-Vorrichtung610 für den Zugriff auf den Flash-Speicher602 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-Vorrichtung610 für den Zugriff auf den RAM601 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 Mikroprozessor603 gesendet und durch die Schnittstelle605 zwischengespeichert werden. - Das reale Blinksteuerregister real_fctr_reg
609 speichert den Ladebefehl und den Programmbefehl, die von der Schnittstelle605 an den Flash-Speicher602 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 Schnittstelle605 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-Bus604 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ähler606 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, siehe6b ). 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)
- 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 ). - Verfahren für das Schreiben von Daten nach Anspruch 1, dadurch gekennzeichnet, dass die Datenübertragung durch eine Schnittstelle (
605 ) gesteuert wird. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - Integrierter Schaltkreis nach Anspruch 9, dadurch gekennzeichnet, dass der energieunabhängige Speicher (
602 ) ein Flash-Speicher ist. - 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. - Integrierter Schaltkreis nach Anspruch 9, 10 oder 11, dadurch gekennzeichnet, dass der energieabhängige Speicher (
601 ) ein eingefügter energieabhängiger Speicher ist.
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)
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)
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 |
-
2003
- 2003-06-04 US US10/516,643 patent/US20050268157A1/en not_active Abandoned
- 2003-06-04 DE DE60316804T patent/DE60316804T2/de not_active Expired - Lifetime
- 2003-06-04 JP JP2004511980A patent/JP2005529399A/ja not_active Withdrawn
- 2003-06-04 AT AT03730396T patent/ATE375547T1/de not_active IP Right Cessation
- 2003-06-04 CN CNB038128926A patent/CN100430888C/zh not_active Expired - Fee Related
- 2003-06-04 EP EP03730396A patent/EP1514176B1/de not_active Expired - Lifetime
- 2003-06-04 AU AU2003241076A patent/AU2003241076A1/en not_active Abandoned
- 2003-06-04 WO PCT/IB2003/002093 patent/WO2003104976A2/en active IP Right Grant
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 |