[go: up one dir, main page]

DE69021732T2 - Wiederprogrammierbare Datenspeicherungsanlage. - Google Patents

Wiederprogrammierbare Datenspeicherungsanlage.

Info

Publication number
DE69021732T2
DE69021732T2 DE1990621732 DE69021732T DE69021732T2 DE 69021732 T2 DE69021732 T2 DE 69021732T2 DE 1990621732 DE1990621732 DE 1990621732 DE 69021732 T DE69021732 T DE 69021732T DE 69021732 T2 DE69021732 T2 DE 69021732T2
Authority
DE
Germany
Prior art keywords
program code
data
code
buffer
flash memory
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 - Fee Related
Application number
DE1990621732
Other languages
English (en)
Other versions
DE69021732D1 (de
Inventor
Kevin Lloyd-Jones
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.)
Hewlett Packard Ltd
Original Assignee
Hewlett Packard Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Ltd filed Critical Hewlett Packard Ltd
Application granted granted Critical
Publication of DE69021732D1 publication Critical patent/DE69021732D1/de
Publication of DE69021732T2 publication Critical patent/DE69021732T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf eine Datenspeichervorrichtung, wie z.B. eine Platten- oder Band-Speicher- Vorrichtung, die mit einem neuen Programmcode umprogrammiert werden kann.
  • Es sind Datenspeichervorrichtungen des Typs bekannt, der folgende Merkmale aufweist:
  • - eine Eingabe/Ausgabe-Einrichtung zum Austauschen von Daten zwischen der Vorrichtung und einem externen Datenhandhabungssystem;
  • - eine Medien-Lese/Schreib-Einrichtung zum Lesen/Schreiben von Daten aus/in ein Speichermedium;
  • - einen Datenpuffer, der zwischen die Eingabe/Ausgabe-Einrichtung und die Medien-Lese/Schreib-Einrichtung geschaltet ist, zum Puffern der Übertragung von Daten zwischen der Eingabe/Ausgabe-Einrichtung und der Medien-Lese/Schreib-Einrichtung; und
  • - eine Steuer- und Verarbeitungs-Einrichtung, die mit der Eingabe/Ausgabe-Einrichtung, dem Datenpuffer und der Lese/Schreib-Einrichtung verbunden ist, und wirksam ist, um die Übertragung von Daten über den Datenpuffer zwischen der Eingabe/Ausgabe-Einrichtung und der Lese/- Schreib-Einrichtung zu steuern und die Daten zu verarbeiten, wobei die Steuer- und Verarbeitungs-Einrichtung einen nicht-flüchtigen Speicher zum Halten des Programmcodes und einen Programm-gesteuerten Prozessor einschließt, der wirksam ist, um den Programmcode auszuführen.
  • Typischerweise ist das Datenhandhabungssystem ein Zentralcomputer, während die Medien-Lese/Schreib-Einrichtung ein Magnetbandlaufwerk oder ein magnetisches oder optisches Plattenlaufwerk ist.
  • Bei derartigen Datenspeichervorrichtungen ist es eine allgemeine Notwendigkeit, die Übertragungsrate der Daten zu/von dem externen Datenhandhabungssystem mit der Übertragungsrate der Daten von/zu dem Speichermedium anzupassen. Außerdem ist es gewöhnlich ferner notwendig, eine Hoch-Pegel-Umformatierung der Daten zu bewirken. Aus einem oder beiden diesen Gründen sind derartige Datenspeichervorrichtungen mit einem Datenpuffer versehen, da der Puffer dazu dienen kann, Datenflüsse zu glätten, und ferner als ein temporärer Speicher wirken kann, der es ermöglicht, daß die Steuer- und Verarbeitungs-Einrichtung zu Umformatierungszwecken auf die Daten zugreift.
  • Die Steuer- und Verarbeitungs-Einrichtung basiert im allgemeinen auf einem Mikroprozessor, wobei der Steuerprogrammcode (die "Firmware" ("FW")) in einem nicht-flüchtigen Speicher gespeichert ist, der entweder von dem Typ ist, der als ein ROM-Speicher (Read Only Memory = Nur-Lese-Speicher) bezeichnet wird, oder dem Typ, der als EPROM-Speicher (Electrically Programmable Read Only Memory = elektrisch programmierbarer Nur-Lese-Speicher) bezeichnet wird.
  • Sollte es erwünscht sein, die Firmware aus einem beliebigen Grund zu ändern, war es in der Vergangenheit notwendig, den ROM- oder EPROM-Chip (oder die Chips) zu entfernen und dieselben entweder durch neue zu ersetzen, die die überarbeitete Firmware enthalten, oder vor dem Ersetzen des Chips einen langen Löschungs- und Neuprogrammierungs-Prozess durchzuführen. Dies ist nicht nur zeitverbrauchend, sondern macht es aus praktischen Gründen erforderlich, daß die Speicherchips in einem Sockel befestigt sind, und nicht direkt an die Schaltungsplatine gelötet sind, die die Chips trägt; dies ist an sich nachteilig, da die Verwendung von Sockelbefestigungschips nicht nur aufwendiger, sondern auch weniger zuverlässig als die Verwendung gelöteter Verbindungen ist.
  • Das bekannte Dokument WO 86/03328 beschreibt eine Datenspeichervorrichtung unter Verwendung eines EEPROM.
  • In jüngerer Zeit wurden elektrisch lösch- und wiederprogrammierbare nicht-flüchtige Speicher, die allgemein als "Flash"-Speicher bekannt sind, erhältlich, wie z.B. der Flash-Speicherchip Intel 28 F010. Diese Chips können elektrisch gelöscht werden (obwohl nur auf einer Chip-Basis, nicht auf einer Byte-Basis) und dann auf einer Byte-um- Byte-Basis umprogrammiert werden. Das Konzept von Flash-Speichern ist in dem bekannten Dokument "IEEE Spectrum, Nr. 12, Bd. 26, Dezember 1989, New York, US, S. 30-33, Pashley u.a., Flash memories: the best of two worlds", beschrieben.
  • Ein Flash-Speicher macht es möglich, den Firmware-Code des auf einem Mikroprozessor basierenden Geräts ohne eine physikalische Entnahme der Chips zu ändern. Stattdessen wird der neue Code dem Gerät, das (auf eine beliebige geeignete Art und Weise) programmiert werden soll, bereitgestellt, wobei dieser Code direkt in den Flash-Speicher geschrieben wird, wobei der letztere am Beginn des Umprogrammierungsprozesses gelöscht wurde. Da der neue Code entweder elektronisch von einem entfernten Zentralcomputer bereitgestellt werden kann oder auf einem Medium, das durch das Kommunikationssystem gesendet werden kann, gespeichert ist, ist der Bedarf danach, daß ein Betriebsingenieur anwesend ist, um die Umprogrammierung durchzuführen, wirksam vermieden, wobei die gesamte Operation nun von einem Endbenutzer ohne übermäßige Schwierigkeiten durchgeführt werden kann.
  • Jedoch tritt ein bedeutendes Problem auf, wenn die Übertragung des neuen Firmware-Codes aus irgendeinem Grund beim ersten Versuch nicht erfolgreich sein sollte (z.B. aufgrund eines Leistungsausfalls, eines Ausfalls des entfernten Zentralrechners oder eines Ausfalls des Speichermediums), da die ursprüngliche Firmware, auf die sich das Gerät stützte, um den Umprogrammierungszyklus des Geräts zu initiieren verloren wurde und die neue Firmware nicht vollständig installiert wurde. In diesen Situationen ist es normalerweise das einzige Mittel, einen Wartungsingenieur zu rufen oder das Gerät zur Wartung zurückzugeben. Die Dauer der Anfälligkeit des Geräts während der Umprogrammierung ist aufgrund der Zeit, die notwendig ist, um den gesamten neuen Code in das Gerät zu übertragen, beträchtlich.
  • Es ist eine Aufgabe der vorliegenden Erfindung, das vorher genannte Problem zu reduzieren.
  • Gemäß der vorliegenden Erfindung wird eine Datenspeichervorrichtung des vorher genannten Typs geschaffen, bei der zumindest ein Abschnitt des nicht-flüchtigen Speichers ein Flash-Speicher ist, und bei der die Steuer- und Verarbeitungs-Einrichtung wirksam ist, um zum Zweck des Umprogrammierens des Flash-Speichers mit einem neuen Programmcode der Reihe nach folgende Schritte zu implementieren:
  • a) Speichern des neuen Programmcodes, der über die Eingabe/Ausgabe-Einrichtung oder die Medien-Lese/Schreib-Einrichtung empfangen wird, in den Datenpuffer;
  • b) Bestimmen, wann der gesamte neue Programmcode empfangen und in dem Datenpuffer gespeichert wurde;
  • c) Löschen des Flash-Speichers; und
  • d) Übertragen des neuen Programmcodes von dem Datenpuffer in den Flash-Speicher.
  • Durch die Verwendung des Datenpuffers, um den gesamten neuen Programmcode zu sammeln, bevor der Flash-Speicher gelöscht wird, ist die Dauer der Anfälligkeit der Vorrichtung reduziert, da, sollte das Umprogrammierungsverfahren aus irgendeinem Grund während der Übertragung des neuen Codes zu der Vorrichtung fehlschlagen, die Vorrichtung noch für eine Operation verfügbar ist, wenn auch mit dem alten Programmcode und nicht mit dem neuen Code. Da die Geschwindigkeit der Datenübertragung zu dem Datenpuffer, entweder von einem externen Datenhandhabungssystem oder von einem Speichermedium, im allgemeinen beträchtlich geringer sein wird als die Geschwindigkeit, mit der der Code von dem Puffer in den Flash-Speicher kopiert werden kann, ist es offensichtlich, daß die Reduzierung der Dauer der Anfälligkeit des Geräts durch die Verwendung des Datenpuffers wesentlich ist.
  • Der Programmcode, der verwendet wird, um die Schritte (c) und (d) des Umprogrammierungsverfahrens zu bewirken, muß sich selbstverständlich zumindest während der Ausführung dieser Schritte an einem anderen Ort als dem Flash-Speicher befinden. Dieser Code könnte z.B. von einem anderen Prozessor als dem, der zu dem Flash-Speicher gehört, ausgeführt werden, oder der Code könnte unmodifizierbar in einer ROM zur Ausführung durch den ersten Prozessor gespeichert sein; jedoch reduzieren derartige Lösungsansätze die Flexibilität, die an erster Stelle durch das Liefern der Unprogrammierbarkeit angestrebt wird. Ein Lösungsansatz, der das Streben nach der Flexibilität unterstützt, bestünde darin, den Code für Schritt (c) und (d) in dem Flash-Speicher zu speichern, jedoch den Code vor dem Löschen des Flash-Speichers zu einem anderen umschreibbaren Speicher (z.B. einem statischen RAM- Speicher), der zu dem Prozessor gehört, zu kopieren, wobei dann der Prozessor den Code von dem anderen Speicher ausführt. Ein weiterer Lösungsansatz bestünde darin, den Code zum Ausführen der Umprogrammierungsschritte (c) und (d) in einen Speicher der Steuer- und Verarbeitungs-Einrichtung herunterzuladen, z.B. einen statischen RAM-Speicher, und dann diesen Code auszuführen (mit dem Prozessor, der zu dem Flash-Speicher gehört, oder einem anderen Prozessor), um die Schritte (c) und (d) auszuführen.
  • Vorzugsweise bewirkt die Steuer- und Verarbeitungs-Einrichtung nach einer positiven Bestimmung im Schritt (b) des Umprogrammierungsverfahrens und vor dem Ausführen des Schritts (c) einen Überprüfungsschritt, indem eine oder mehrere Überprüfungen auf dem neuen Programmcode, der in dem Datenpuffer enthalten ist, durchgeführt werden, wobei die Steuer- und Verarbeitungs-Einrichtung mit den Schritten (c) und (d) nur fortfährt, wenn die Überprüfungsergebnisse zufriedenstellend sind.
  • Vorteilhafterweise schließt dieser Überprüfungsschritt das Überprüfen des neuen Programmcodes, der in dem Datenpuffer gespeichert ist, ein, um sicherzustellen, ob ein beliebiger Teil des neuen Programmcodes seit der Speicherung in dem Datenpuffer verfälscht wurde. Zu diesem Zweck kann die Steuerund Verarbeitungs-Einrichtung während des Schritts (a) angeordnet sein, um
  • - die Paritätsdaten bezüglich jedes Bytes oder Worts des neuen Programmcodes zu speichern, und
  • - aufeinanderfolgend einen Fehlerüberprüfungscode durch Ausführen einer Exclusiv-ODER-Funktion zwischen jedem Bit des neuen Programmcodes, während derselbe in dem Datenpuffer gespeichert wird, und einem weiteren Bit in dem Puffer zu erzeugen, wobei der resultierende Fehlerüberprüfungscode in dem Puffer gespeichert wird;
  • wobei die Steuer- und Verarbeitungs-Einrichtung dann während des Überprüfungsschritts angeordnet ist, um den Fehlerüberprüfungscode und die Paritätsdaten zu regenerieren, um irgendwelche Fehler zu erfassen und danach zu streben, eine Korrektur der Fehler, die so erfaßt werden, zu bewirken.
  • Eine weitere Überprüfung, die vorzugsweise bewirkt wird, betrifft die Kompatibilität des neuen Codes und der Vorrichtung. Dies ist möglich, wenn der Flash-Speicher Identifikationsdaten hält, die die Identität des Programmcodes und/oder der Vorrichtung anzeigen, und der neue Programmcode ferner Identifikationsdaten einschließt, die die Identität des neuen Programmcodes und/oder der Vorrichtung anzeigen, auf dem der neue Programmcode bestimmungsgemäß laufen soll. In diesem Fall kann die Steuer- und Verarbeitungs-Einrichtung während des Überprüfungsschritts angeordnet sein, um die Identifikationsdaten, die in dem Flash-Speicher enthalten sind, mit denen zu vergleichen, die mit dem neuen Programmcode bereitgestellt werden, um sicherzustellen, ob der neue Programmcode mit dem Gerät kompatibel ist.
  • Wenn der Flash-Speicher Betriebsparameter der Vorrichtung hält, ist die Steuer- und Verarbeitungs-Einrichtung vorteilhafterweise wirksam, um die Betriebsparameter der Vorrichtung vor dem Implementierungsschritt (c) zu einem temporären Speicher (z.B. dem Datenpuffer) zu übertragen und nachfolgend die Parameter in dem Flash-Speicher wieder herzustellen.
  • Die Steuer- und Verarbeitungs-Einrichtung kann während des Schritts (a) des Umprogrammierungsverfahrens angeordnet sein, um eine Prüfsumme für den Bereich des Puffers zu berechnen, der verwendet ist, um den neuen Programmcode zu speichern, wobei diese Prüfsumme, die als neuer Programmcode neu berechnet ist, fortschreitend in dem Puffer gespeichert wird, wobei die endgültige Prüfsumme zusammen mit dem neuen Programmcode in den Flash-Speicher geladen wird. Die Steuerund Verarbeitungs-Einrichtung kann dann beim Anlaufen des Geräts ferner angeordnet sein, um die Prüfsumme für den Flash-Speicher neu zu berechnen und dieselbe mit der gespeicherten Prüfsumme zu vergleichen, um die Unversehrtheit des Programmcodes, der in dem Flash-Speicher gespeichert ist, zu überprüfen.
  • Eine umprogrammierbare Datenspeichervorrichtung, die die Erfindung verkörpert, wird nun mittels eines nicht-begrenzenden Beispiels bezugnehmend auf die begleitenden schematischen Darstellungen beschrieben. Es zeigen:
  • Fig. 1 ein Blockdiagramm der Datenspeichervorrichtung;
  • Fig. 2A ein Flußdiagramm, das die Schritte darstellt, die in das Übertragen eines neuen Firmware-Codes von einem externen Zentralrechner zu einem Datenpuffer der Datenspeichervorrichtung eingeschlossen sind;
  • Fig. 2B eine Fortsetzung des Flußdiagramms von Fig. 2A, das die Überprüfung des neuen Firmware-Codes und dessen Übertragung von dem Datenpuffer in einen Flash- Speicher der Datenspeichervorrichtung darstellt;
  • Fig. 3 ein Diagramm des Datei-Formats einer "Absolutdatei", in dem der Zentralrechner anfänglich den neuen Firmware-Code liefert; und
  • Fig. 4 ein Diagramm des Formats eines Datensatzes der Absolutdatei von Fig. 3.
  • Die Datenspeichervorrichtung, die in Fig. 1 gezeigt ist, ist dazu bestimmt, Daten von einem Datenhandhabungssystem (in dem vorliegenden Fall einem Zentralcomputer) auf ein Datenspeichermedium (in dem vorliegenden Fall ein magnetisches Band) zu speichern und ferner Daten von dem Band zu dem Zentralcomputer zurück zu lesen. Der Zentralcomputer (nicht gezeigt) ist mittels eines Bussystems 11 mit einer Eingabe/- Ausgabe-Schaltung 10 der Speichervorrichtung verbunden. Kommunikationen über dieses Bussystem 11 finden im allgemeinen in Übereinstimmung mit einem Standardprotokoll, wie z.B. dem SCSI-Protokoll, statt, wobei die Protokoll-Wechselwirkungen über das Bussystem 11 durch die Eingabe/Ausgabe-Schaltung 10 gehandhabt werden.
  • Daten werden mittels einer Bandlaufwerk-Teilanordnung 12 (die ein mechanisches Laufwerk, eine Servo-Elektronik und eine analoge Lese/Schreib-Elektronik einschließt) auf das Band geschrieben und von dem Band zurückgelesen.
  • Zusätzlich zu der Eingabe/Ausgabe-Schaltung 10 und dem Bandlaufwerk 12 weist die Datenspeichervorrichtung einen Datenpuffer 13, um die Übertragung der Daten zwischen der Eingabe/Ausgabe-Schaltung 10 und dem Bandlaufwerk 12 zu puffern, und ein Steuer- und Verarbeitungs-Teilsystem 16 auf.
  • Der Datenspeicher 13 weist z.B. 512 Kilobyte eines dynamischen RAM-Speichers 15 auf (der fiktiv in vier Segmente von 128 Kilobyte geteilt gezeigt ist), und eine DMA-Steuerung 14 zum Steuern der Blockübertragungen von Daten zwischen dem Puffer 13 und der Eingabe/Ausgabe-Schaltung 10, dem Teilsystem 16 und dem Laufwerk 12. Die DMA-Steuerung dient ferner dazu, jedem Byte, das in dem Speicher 15 gespeichert wird, ein Paritätsbit hinzuzufügen und dieses Bit von dem Byte zu entfernen, bevor dasselbe aus dem Speicher übertragen wird.
  • Das Teilsystem 16 weist einen Mikroprozessor 17, einen nicht-flüchtigen Speicher 18 (z.B. 256 Kilobyte), der ein Steuerprogramm speichert ("Firmware"-Code) und einen statischen RAM-Speicher 19 auf. Die Aufgabe des Teilsystems 16 besteht darin, den Gesamtbetrieb der Datenspeichervorrichtung zu steuern. Zu diesem Zweck erstreckt sich das Bussystem 20 des Mikroprozessors 11 zu der Eingabe/Ausgabe-Schaltung 10, dem Puffer 13 und dem Bandlaufwerk 12. Das Teilsystem 16 kann ferner wirksam sein, um Daten, die auf dem Band gespeichert und von demselben zurückgewonnen werden, zu verarbeiten (insbesondere umzuformatieren); diese Verarbeitung findet durch eine Einwirkung auf die Daten in dem Puffer 13 über das Bussystem 20 mittels des Mikroprozessors 17 statt. Die Eingabe/Ausgabe-Schaltung 10 und das Bandlaufwerk 12 sind über Bussysteme 21 bzw. 22 mit dem Puffer 13 verbunden.
  • Während einer Datenspeicherung steuert das Teilsystem 16 die Eingabe von Daten aus dem Zentralcomputer in den Puffer 13 über das Bussystem 11, die Eingabe/Ausgabe-Schaltung 10 und das Bussystem 21, und die nachfolgende Übertragung der Daten aus dem Puffer zu dem Bandlaufwerk 12 über das Bussystem 22. Der Puffer 13 ermöglicht es, daß die unterschiedlichen Daten-Raten und -Formate des Zentralsystems und des Bandlaufwerks aneinander angepaßt werden. Das Teilsystem 16 kann ferner eine Umformatierungsfunktion zwischen dem Einlesen von Daten in den Puffer 13 und dem Auslesen von Daten zu dem Bandlaufwerk 12 durchführen. Beim Implementieren dieser Funktion ist das Teilsystem 16 angeordnet, um Daten aus dem Puffer 13 zu lesen und dieselben in einer unterschiedlichen Anordnung in den Puffer zurückzuschreiben, möglicherweise mit dem Zusatz von Formatsteuercodes.
  • Während eines Zurücklesens von Daten überwacht das Teilsystem 16 das Einlesen von Daten aus dem Bandlaufwerk 12 in den Puffer 13 über das Bussystem 22 und das nachfolgende Aus lesen dieser Daten aus dem Puffer 13 in den Zentralcomputer über das Bussystem 21, die Eingabe/Ausgabe-Schaltung 10 und das Bussystem 11. Zusätzlich kann das Teilsystem 16 eine Umkehrformatierung der Daten, die in dem Speicher 13 enthalten sind, zu denen, die während der Datenspeicherung implementiert wurden, bewirken.
  • Zusätzlich zu dem Datendurchlauf durch die Datenspeichervorrichtung, wie sie oben beschrieben wurde, tauscht das Teilsystem 14 über die entsprechenden Bussysteme Steuersignale mit dem Zentralcomputer und dem Bandlaufwerk 12 aus.
  • Es sollte bemerkt werden, daß das Steuer- und Verarbeitungs-Teilsystem 16 zusätzliche Verarbeitungselemente einschließen kann. Z.B. kann ein Kanalprozessor (nicht gezeigt) auf die Daten, die sich zwischen dem Puffer 13 und dem Bandlaufwerk 12 bewegen, einwirken, um zusätzlich zu der Hochpegelformatierung, die von dem Prozessor 17 bewirkt wird, eine Niederpegelformatierung zu bewirken. Der Kanalprozessor kann System sein, das auf einem Mikroprozessor basiert, und seinen eigenen Pufferspeicher einschließen (im allgemeinen mit einer wesentlich kleineren Größe als der Puffer 13).
  • Datenspeichervorrichtungen, die im wesentlichen wie hierin beschrieben arbeiten, sind in der Technik gut bekannt, weshalb eine detailliertere Beschreibung des allgemeinen Betriebs der dargestellten Vorrichtung hierin nicht gegeben wird. Es sollte jedoch bemerkt werden, daß eine bevorzugte Anordnung für die Form und den Betrieb des Puffers 13 in unserer ebenfalls anhängigen Europäischen Patentanmeldung EP-A-0, 365, 116 beschrieben ist.
  • Bei der vorliegenden Datenspeichervorrichtung ist der nicht-flüchtige Speicher 18, der den Firmware-Code für den Mikroprozessor 17 speichert, ein Flash-Speicher. Außerdem kann die Datenspeichervorrichtung gemäß der vorliegenden Erfindung angewiesen werden, um den Speicher 18 mit einem neuen Firmware-Code umzuprogrammieren, welcher der Vorrichtung entweder von dem Zentralcomputer über die Eingabe/Ausgabe- Schaltung 10 oder auf einem Bandmedium, das mittels des Bandlaufwerks 12 gelesen wird, geliefert wird.
  • Die Steuerung des Umprogrammierungsverfahrens in der Datenspeichervorrichtung wird durch das Steuer- und Verarbeitungs-Teilsystem (insbesondere durch den Mikroprozessor 17) bewirkt.
  • Das gesamte Umprogrammierungsverfahren ist bezüglich eines neuen Firmware-Codes, der mittels des Zentralcomputers geliefert wird, in den Fig. 2A und 28 dargestellt. Fig. 2A zeigt das Verfahren von der Erzeugung des neuen Firmware- Codes in dem Zentralcomputer bis zur Speicherung des neuen Codes in dem Puffer 13 der Speichervorrichtung, während Fig. 28 den abschließenden Teil des Verfahrens zeigt, bei dem der neue Code, der in dem Puffer 13 enthalten ist, überprüft wird, danach der Flash-Speicher 18 gelöscht wird und der neue Code in den Flash-Speicher 18 übertragen wird.
  • Wie in Fig. 2A gezeigt ist, besteht der erste Schritt 30 des Umprogrammierungsverfahren darin, einen neuen Firmware-Code in einem Standard-Dateiformat, bekannt als "Absulutdatei"- Format, bereitzustellen, was nicht nur den neuen Code darlegt, sondern ferner die bestimmten Plätze der verschiedenen Segmente des Codes in dem Speicher. Fig. 3 zeigt das Absolutdatei-Format. Eine Absolutdatei 60 weist eine Anfangsaufzeichnung 61, die aus neun Worten besteht (zwei Byte/Wort), eine Prozessorinformations-Aufzeichnung 63 aus vier Worten und eine Anzahl von Datensätzen 65, 67 aus N Worten auf. Vor allen Prozessorinformationsaufzeichnungen und allen Datensätzen 63, 65 und 67 steht ein Wort 62, 64 und 66, das die Anzahl der Bytes in der folgenden Aufzeichnung enthält (wobei diese Anzahl ein Mehrfaches von 2 ist, da jede Aufzeichnung ganze Worte enthält). Die Anfangsaufzeichnung und die Prozessorinformationsaufzeichnung enthalten Daten, die den Code identifizieren und bestimmte Informationen liefern, die für den Zielprozessor von Bedeutung sind; die Datensätze enthalten den neuen Firmware-Code und die Ladeadressen für diesen Code.
  • Fig. 4 zeigt die Struktur eines Datensatzes 17 einer Absolutdatei. Das erste Wort des Datensatzes (Wort "0") enthält die Anzahl von Datenbytes in dem Datensatz (diese Anzahl kann sich von der unterscheiden, die in dem Wort enthalten ist, das vor dem Datensatz steht, da die Anzahl in dem Wort "0" des Datensatzes die Anzahl von Bytes anzeigt, die nützliche Informationen enthalten, wobei die Länge derselben kleiner als die Länge des Datensatzes, der eine feste Länge aufweist, ist). Die zweiten und die dritten Worte des Datensatzes 70 (Worte "1" und "2") enthalten niederstwertige und höchstwertige Worte der Ladeadresse des Firmware-Codes, der in dem Datensatz enthalten ist, in dem Speicher. Diese Ladeadressen beziehen sich auf die erste Adresse des betroffenen Speichers. Die verbleibenden Worte des Datensatzes (Worte "3" bis "N") sind für das Speichern des Firmware-Codes verfügbar, obwohl in der Praxis nicht alle diese Worte zu diesem Zwecke verwendet sein müssen und einige unbenutzt bleiben können; die Anzahl der Bytes, die den Firmware-Code enthalten, kann von der Zahl abgeleitet werden, die im Wort "0" des Datensatzes enthalten ist.
  • Nachdein die Firmware in eine Absolutdatei eingebettet wurde, wird diese Datei dann als ASCII-Zeichen codiert, indem jede aufeinanderfolgende Gruppierung von vier Bits verwendet wird und in das entsprechende Hexadezimalzeichen ("0" bis "F") umgewandelt wird. Danach wird am Anfang der Datei ein Feld von acht Bytes hinzugefügt, das die Gesamtzahl von Bytes in der Datei anzeigt. Schließlich wird das gesamte Paket einem Niederpegel-Verschlüsselungsverfahren unterworfen, um zu verhindern, daß dasselbe von zufälligen Benutzern manipuliert wird; dieses Verschlüsselungsverfahren ist z.B. eine einfache Substitutionscodierung, bei der spezielle Zeichen durch andere Zeichen ersetzt werden. Das eben genannte Verfahren bildet den Schritt 31 in Fig. 2A.
  • Die resultierende, codierte und verschlüsselte Firmware-Datei wird dann von dem Zentralrechner zu der Datenspeichervorrichtung übertragen. Da die Größe dieser Datei nach der Codierung und der Verschlüsselung in der Größenordnung von 750 Kilobyte liegen kann, wird diese Datei zuerst in eine Anzahl von Teildateien unterteilt, wobei dann jede Teildatei zu der Vorrichtung übertragen wird. Wenn der Zentralcomputer und die Datenspeichervorrichtung unter Verwendung von SCSI- Befehlen miteinander in Verbindung stehen, wird jede Teildatei unter einem entsprechenden Befehl "Schreibe Puffer" übertragen, den die Vorrichtung als einen Befehl versteht, um eine vorbestimmte Anzahl von Bytes dem Befehl folgend zu ihrem Puffer zu übertragen. In dem vorliegenden Fall ist ein "Modus" -Feld des Befehls "Schreibe Puffer" auf "Modus 4" eingestellt, um der Vorrichtung anzuzeigen, daß die Daten verwendet werden sollen, die sie als neuen Firmware-Code überträgt. Die Übertragung der Firmware-Teildateien durch den Zentralrechner wird durch Block 32 von Fig. 2A dargestellt.
  • Jeder Befehl, der von der Vorrichtung empfangen wird, wird für eine Interpretation durch ein Befehls-Interpretierverfahren 33 zu dem Mikroprozessor 17 geleitet. Beim Empfang des ersten Modus-4-Befehls "Schreibe Puffer" initiiert der Prozessor das Räumen des Puffers 13 (Block 34) und initialisiert dann die DMA-Steuerung 14, um die Firmware-Teildatei, die zu dem Befehl "Schreibe Puffer" gehört, in den Puffer 13 zu übertragen (Block 35). Die notwendigen Informationen, die die Länge der Teildatei betreffen, sind in dem Befehl "Schreibe Puffer" selbst enthalten, wobei der Mikroprozessor 17 bewirkt, daß die Teildatei in das Speichersegment 15D des Pufferspeichers 15 geschrieben wird. Das Speichersegment 15D wird während des Übertragungsverfahrens als ein temporärer Speicher für ankommende Firmware-Teildatei- daten verwendet. Nach dem Initialisieren der DXA-Übertragung initiiert der Befehlsinterpretierer 33 ein Firmware-Aktua- lisierungsverfahren (siehe Block 36).
  • Nachfolgende Modus-4-Befehle "Schreibe Puffer", die vom Befehlsinterpretierer 33 empfangen werden, werden von dem Befehlsinterpretierer etwas unterschiedlich behandelt, da derselbe Kenntnis davon besitzt, daß ein Firmware-Aktualisierungszyklus im Gange ist; der Befehlsinterpretierer initialisiert deshalb einfach eine DMA-Übertragung für die Teildatei, die zu dem Befehl gehört, um die ankommenden Firmware-Teildateidaten in den Bereich 15D des Pufferspeichers 15 zu speichern.
  • Wie schon bemerkt wurde, ist der Bereich 15D des Speichers 15 einfach als ein temporärer Speicher für ankommende Daten verwendet, wobei diese Daten bereits unmittelbar unter der Steuerung des Firmware-Aktualisierungsverfahrens gewonnen wurden und geeignet verarbeitet sind, um in den Bereichen 15A und 15B des Speichers 15 zusammen mit einem Fehlerkorrektur-Code (ECC; ECC = Error Correction Code) im Bereich 15C des Speichers 15 ein Bild des gewünschten Firmware-Codes zu erzeugen.
  • Das Firmware-Aktualisierungsverfahren selbst ist in den Fig. 2A und 2B als Blöcke 40 bis 55 dargestellt. Dieses Verfahren läuft parallel zu der Übertragung der Teildateien zu dem Puffer 13 ab und wird sich selbst aufgrund des notwendigen, anstehenden Empfangs der nächsten Teildatei abstellen, bis alle Teildateien empfangen wurden. Es ist tatsächlich nicht notwendig, daß die Modus-4-Befehle "Schreibe Puffer" und ihre dazugehörigen Teildateien in einer ununterbrochenen Abfolge von dem Zentralrechner zu der Datenspeichervorrichtung gesendet werden, wobei andere Befehle in dieser Abfolge dazwischen liegen können, vorausgesetzt, daß diese dazwischenliegenden Befehle nicht die Zerstörung des Firmware-Codes, der in dem Pufferspeicher 15 aufgebaut wurde, erfordern.
  • Beim Beginn des Firmware-Aktualisierungsverfahrens (Block 40) werden die ersten 8 Byte der ersten Teildatei entschlüsseit, um die Gesamtlänge aller Teildateien zusammengenommen in Byte zu ergeben (Block 41). Dieses Entschlüsselungsverfahren ist einfach eine Umkehrung des Verfahrens, das verwendet ist, um die Daten im Block 31 zu verschlüsseln. Diese Darstellung der Gesamtlänge wird nachfolgend verwendet, um zu bestimmen, wann der gesamte neue Firmware-Code von der Datenspeichervorrichtung empfangen wurde.
  • Als nächstes unternimmt das Firmware-Aktualisierungsverfahren eine Entschlüsselung und Decodierung der Teildateidaten, die in den Speicherbereich 15D geleitet wurden (wobei diese Entschlüsselung und Decodierung die Umkehrungen der Verfahren sind, die im Block 31 bewirkt werden). Die resultierenden Daten sind Firmware-Codedaten im Absolutdatei-Format, wobei der Mikroprozessor 17 danach die Firmware-Daten selbst aus diesem Dateiformat entpackt und die Daten im Speicherbereich 15A, B speichert, wie mittels der relativen Ladeadressen, die in der Absolutdatei enthalten sind, angezeigt ist.
  • Zur gleichen Zeit, zu der die Firmware-Daten in den Pufferspeicher 15 geschrieben werden, erzeugt der Prozessor nacheineinander einen ECC-Code (Error Checking/Correction Code = Fehlerüberprüfungs/Korrektur-Code) und berechnet eine Prüfsumme für die neue Firmware neu. Alle diese Schritte werden durch Block 42 von Fig. 2A dargestellt.
  • Der ECC wird durch Ausführen einer Exclusiv-ODER-Funktion zwischen entsprechenden Bits der Speicherbereiche 15A und 15B durchgeführt, wobei das Ergebnis in dem entsprechenden Bereich von 15c gespeichert wird. Dieses Verfahren wird jedesmal bewirkt, wenn ein Bit in einem der Bereiche 15A oder 15b geändert wird (dieses Verfahren wird selbstverständlich nur auf dem geänderten Bit und seinem Gegenstück in dem anderen der Bereiche 15B, A durchgeführt).
  • Die Prüfsumme wird berechnet, indem die Speicherbereiche 15A und 15B als 64K 4-Byte-Worte behandelt werden, die zusammenaddiert werden, um die Prüfsumme zu bilden.
  • Eine Überprüfung wird ferner auf der Anzahl der Bytes, die von dem Speicherbereich 15D verarbeitet werden, durchgeführt, wobei, wenn diese Anzahl der Gesamtbyte-Länge, die im Block 41 decodiert wird, gleicht, die Verfahren des Blocks 42 beendet werden. Wie schon angezeigt wurde, werden die Verfahren im Block 42 in dem Fall abgestellt, daß alle in den Speicherbereich 15D übertragenen Daten verarbeitet wurden, jedoch die Gesamtbyte-Anzahl für die Datei noch nicht erreicht wurde; in diesem Fall bleiben die Verfahren von Block 42 abgestellt, bis weitere Daten in dem Speicherbereich 15D empfangen werden.
  • Nachdem der gesamte neue Firmware-Code entschlüsselt, decodiert, entpackt und in den Speicherbereichen 15A und 15B gespeichert wurde, kopiert das Firmware-Aktualisierungsverfahren bestimmte Daten, die als "Kalibrierungs"-Daten bekannt sind, von dem Flash-Speicher 18 hinüber zu den entsprechenden Plätzen in dem Pufferspeicher 15A und 15B. Diese Kalibrierungsdaten können bestimmte Betriebsparameter, Initialisierungsdaten, Herstellercodes und Benutzungsinformationen enthalten. Die Daten, die in den Speicherbereichen 15A und 15B enthalten sind, sollten nun eine Abbildung des gesamten Firmware-Codes sein, der wunschgemäß in den Flash-Speicher 18 heruntergeladen werden soll.
  • Fig. 28 zeigt die nachfolgenden Schritte des Firmware-Aktualisierungsverfahrens, bei dem der Firmware-Code in dem Speicher 15 zuerst einer Anzahl von Überprüfungen unterworfen wird und dann zu dem Flash-Speicher übertragen wird.
  • Um sicherzustellen, daß der Firmware-Code, der in dem Speicher 15 enthalten ist, nicht während der Zeitdauer, während der derselbe in dem Speicher gespeichert war (was eine beträchtliche Zeitdauer sein kann) verfälscht wurde, wird zuerst die Unversehrtheit der Daten, die in den Speicherbereichen 15A und 15B enthalten sind, überprüft (siehe Block 44). Diese Unversehrtheits-Überprüfung wird bewirkt, indem das Paritätsbit des Bytes überprüft wird, und indem ferner der ECC neu berechnet und bezüglich des ECC überprüft wird, der in dem Speicherbereich 15C gespeichert ist. Sollte eine dieser Überprüfungen einen Fehler anzeigen, ist der Code fehlerhaft (Block 45) und das Aktualisierungsverfahren wird beendet, wobei eine geeignete Antwort zurück zu dem Zentralrechner gesendet wird. Wenn der Code jedoch seine Unversehrtheits-Überprüfung besteht, fährt das Firmware-Aktualisierungsverfahren mit der nächsten Überprüfung fort, nachdem die Prüfsumme an einem vorbestimmten Platz in der Firmware- Abbildung in dem Speicherbereich 15A, B gespeichert wurde.
  • Diese nächste Überprüfung (46) betrifft die Frage, ob der Firmware-Code, der in den Speicherbereichen 15A, 15B gespeichert ist, mit der Speichervorrichtung kompatibel ist oder nicht. Zu diesem Zweck werden Identif ikationsdaten, die sich auf das Laufwerk und/oder den Code selbst beziehen, mit dem Firmware-Code assoziiert, wobei derartige Indentifikationsdaten in dem bestehenden Code, der in dem Flash-Speicher 18 enthalten ist, ebenso wie in dem neuen Code, der in dem Speicher 15 enthalten ist, vorliegen. Durch Vergleichen der Identifikationsdaten kann der Mikroprozessor 17 sagen, ob der neue Code mit der Speichervorrichtung kompatibel ist oder nicht. Wenn der neue Code nicht kompatibel ist (Block 47), wird das Aktualisierungsverfahren beendet und der Zentralrechner geeignet informiert. Wenn der Code jedoch kompatibel ist, springt das Aktualisierungsverfahren zur nächsten Überprüfung.
  • Die nächste Überprüfung, die ausgeführt werden soll, besteht darin, ob die Anzahl von Umprogrammierungen des Flash-Speichers 18 die Grenzeinstellung für die Vorrichtung (typischerweise 10000 Umprogrammierungen) erreicht hat. Die aktuelle Umprogrammierungsanzahl ist in dem Kalibrierungsbereich des Flash-Speichers 18 enthalten, wobei, vorausgesetzt die Überprüfung bezüglich dieser Anzahl ist zufriedenstellend, diese Anzahl erhöht wird und an dem entsprechenden Platz in den Speicherbereichen 15A und 15B gespeichert wird. Wenn jedoch die Umprogrammierungsanzahl den Grenzwert erreicht hat, wird das Aktualisierungsverfahren beendet (Block 49) und der Zentralrechner wird geeignet informiert.
  • Nachdem alle Uberprufungen 44, 46 und 48 durchgeführt und zufriedenstellend bestanden wurden, wird eine entsprechende Anzeige ("gut") von der Speichervorrichtung zu dem Zentralrechner zurückgegeben, wobei die Vorrichtung für die Dauer der nachfolgenden Schritte des Aktualisierungsverfahrens dann auf "belegt" gesetzt wird, wobei dieselben die Schlüsselschritte sind, während denen die Vorrichtung anfällig wird. Während dieser Zeitdauer wird jedem Versuch durch den Zentralrechner, mit der Speichervorrichtung in Verbindung zu treten, mit einer "Belegt"-Antwort begegnet.
  • Es ist offensichtlich, daß bei dem Firmware-Aktualisierungsverfahren bis zu diesem Punkt die ursprüngliche Firmware in dem Flash-Speicher 18 derart intakt geblieben ist, daß jeder Ausfall bei dem Verfahren nicht katastrophal gewesen wäre und einfach eine Neuinitialisierung des gesamten Umprogrammierungszyklusses erfordert hätte. Es ist jedoch, nachdem der gesamte neue Firmware-Code in dem Pufferspeicher 15 gespeichert und überprüft wurde, als nächstes notwendig, das Flash-Programm 18 des existierenden Firmware-Codes zu löschen und den neuen Code zu übertragen. Selbstverständlich muß ein Code zum Steuern des Mikroprozessors 17 während des Lösch- und Kopier-Verfahrens verfügbar gemacht werden, bevor dies geschehen kann. In dem vorliegenden Fall ist dieser Code in dem Flash-Speicher 18 verfügbar, muß jedoch selbstverständlich von diesem Speicher an einen Platz kopiert werden, an dem er nach dem Löschen des Speichers 18 verfügbar ist. Folglich wird der relevante Code von dem Flash-Speicher 18 in den statischen RAM-Speicher 19, der zu dem Mikroprozessor 17 gehört (siehe Block 51), kopiert. Der Programmzähler des Mikroprozessors 17 wird entsprechend der Art geändert, daß der Rest des Firmware-Aktualisierungscodes aus dem RAM 19 gelesen wird.
  • Als nächstes wird der Flash-Speicher 18 als Ganzes gelöscht (siehe Block 52).
  • Danach wird der neue Firmware-Code, der in den Speicherbereichen 15A und 15B enthalten ist, in die entsprechenden Orte in dem Flash-Speicher 18 (siehe Block 53) programmiert. Während dieses Verfahrens wird die Parität jedes Bytes neu überprüft und der ECC neu berechnet und mit dem gespeicherten ECC verglichen. Sollte eine dieser Überprüfungen einen Fehler anzeigen, wird ein Versuch unternommen, den Fehler zu korrigieren. Wenn durch die Überprüfung des Paritätsbits desselben angezeigt wird, daß z.B. ein Byte in dem Speicherbereich 15A fehlerhaft ist, jedoch das entsprechende Byte in dem Speicherbereich 15B seine Paritätsüberprüfung besteht, können die entsprechenden ECC-Bits verwendet werden, um das fehlerhafte Byte in dem Speicherbereich 15A zu korrigieren (wobei die Prüfsumme neu berechnet wird).
  • Schließlich wird der Puffer 13 gelöscht und die Vorrichtung aus ihrem "Belegt"-Status rückgesetzt (Block 54). Das Firmware-Aktualisierungsverfahren wird dann beendet (Block 55). Es ist offensichtlich, daß das oben beschriebene Firmware- Aktualisierungsverfahren sicherstellt, daß die Datenspeichervorrichtung für Ausfälle, die die Vorrichtung funktionsunfähig machen, nur für eine minimale Zeitperiode anfällig ist.
  • Das Speichern der endgültigen Prüfsumme in dem Flash-Speicher 18 macht es möglich, daß der Mikroprozessor 17 einen Anlauf-Test für den Flash-Speicher 18 durchführt, bei dem er die Prüfsumme für den Speicher neu berechnet und dieselbe mit dem Wert vergleicht, der früher berechnet und in dem Speicher 18 gespeichert wurde.
  • Es ist offensichtlich, daß bezüglich der beschriebenen Datenspeichervorrichtung und des Firmware-Aktualisierungsverfahrens derselben eine Anzahl von Modifikationen möglich ist. So könnte z.B. der neue Firmware-Code auf einem Band bereitgestellt werden und auf die im wesentlichen gleiche Art und Weise, wie oben für den Code beschrieben wurde, der von dem Zentralrechner bereitgestellt wird, von dem Band in den Puffer übertragen werden. Außerdem kann der Code, der notwendig ist, um das Löschen des Flash-Speichers 18 und die nachfolgende Übertragung des neuen Firmware-Codes von dem Pufferspeicher zu dem Flash-Speicher 18 zu steuern, zusammen mit dem neuen Firmware-Code bereitgestellt werden und von dem Puffer 13 in den statischen RAM 19 kopiert werden, statt der Verwendung des alten Codes, der in dem Speicher 18 gehalten ist. Alternativ könnten der Lösch- und Kopier-Code einfach in einem dauerhaften ROM-Speicher gespeichert sein.
  • Der Firmware-Code für den Mikroprozessor 17 könnte ferner zwischen den zwei oder mehr Speichern aufgeteilt sein, welche alle Flash-Speicher sein können, die auf im wesentlichen die gleiche Art und Weise, die oben beschrieben wurde, aktualisierbar sind; diese Speicher können von unabhängig löschbaren Abschnitten des gleichen Flash-Speicherchips gebildet sein. Wenn die Steuer- und Verarbeitungs-Teilanordnung 16 weitere Programm-gesteuerte Prozessoren (wie vorher bemerkt wurde) einschließt, kann der Mikroprozessor 17 verwendet werden, um ein Aktualisierungsverfahren zum Aktualisieren der Firmware dieser anderen Prozessoren durchzuführen, wenn diese Firmware in einem Flash-Speicher enthalten ist.

Claims (11)

1. Eine Datenspeichervorrichtung des Typs, der folgende Merkmale aufweist:
-eine Eingabe/Ausgabe-Einrichtung (10) zum Austauschen von Daten zwischen der Vorrichtung und einem externen Datenhandhabungssystem;
-eine Medien-Lese/Schreib-Einrichtung (12) zum Lesen/Schreiben von Daten aus/in einem Speichermedium;
-einen Datenpuffer (13), der zwischen die Eingabe/- Ausgabe-Einrichtung (10) und die Medien-Lese/- Schreib-Einrichtung (12) geschaltet ist, um die Übertragung von Daten zwischen der Eingabe/Ausgabe-Einrichtung (10) und der Medien-Lese/Schreib- Einrichtung zu puffern; und
-eine Steuer- und Verarbeitungs-Einrichtung (16), die mit der Eingabe/Ausgabe-Einrichtung (10), dem Datenpuffer (13) und der Lese/Schreib-Einrichtung (12) verbunden ist und wirksam ist, um die Übertragung von Daten über den Datenpuffer (13) zwischen der Eingabe/Ausgabe-Einrichtung (10) und der Lese/Schreib-Einrichtung (12) zu steuern, und die Daten zu verarbeiten, wobei die Steuer- und Verarbeitungs-Einrichtung (16) einen nicht-flüchtigen Speicher (18) zum Halten des Programmcodes und einen Programm-gesteuerten Prozessor (17), der wirksam ist, um den Programmcode auszuführen, einschließt;
dadurch gekennzeichnet, daß zumindest ein Abschnitt des nicht-flüchtigen Speichers ein Flash-Speicher (18) ist, und die Steuer- und Verarbeitungs-Einrichtung (16) wirksam ist, um die folgenden Schritte der Reihe nach zum Zweck des Umprogrammierens des Flash-Speichers (18) mit einem neuen Programmcode zu implementieren:
a) Speichern des neuen Programmcodes, der über die Eingabe/Ausgabe-Einrichtung (10) oder die Medien- Lese/Schreib-Einrichtung (12) empfangen wurde, in den Datenpuffer (13);
b) Bestimmen, wann der gesamte neue Programmcode empfangen und in dem Datenpuffer (13) gespeichert wurde;
c) Löschen des Flash-Speichers (18); und
d) Übertragen des neuen Programmcodes aus dem Datenpuffer (13) in den Flash-Speicher (18).
2. Eine Datenspeichervorrichtung gemäß Anspruch 1, bei der zumindest die Schritte c) und d) durch den Programmgesteuerten Prozessor (17) unter Steuerung des ursprünglichen Programmcodes implementiert sind, wobei der Prozessor (17) einen weiteren, umschreibbaren Speicher (19), der zu demselben gehört, aufweist, und wobei die Steuer- und Verarbeitungs-Einrichtung (16) beim Umprogrammieren des Flash-Speichers (18) wirksam ist, um vor dem Löschen des Flash-Speichers den Abschnitt des ursprünglichen Programmcodes, der den Schritten c) und d) entspricht, aus dem Flash-Speicher (18) in den weiteren Speicher (19) zu kopieren und danach durch Lesen des Codes aus dem weiteren Speicher (19) die Schritte c) und d) auszuführen.
3. Eine Datenspeichervorrichtung gemäß Anspruch 1, bei der zumindest die Schritte c) und d) durch die Steuer- und Verarbeitungs-Einrichtung (16) unter einer Programmsteuerung implementiert sind, wobei die Steuer- und Verarbeitungs-Einrichtung (16) einen weiteren, umschreibbaren Speicher (19) einschließt und beim Umprogrammieren des Flash-Speichers (18) wirksam ist, um in dem weiteren Speicher (19) ein Programm zum Implementieren der Schritte c) und d) zu empfangen und zu speichern, das über die Eingabe/Ausgabe-Einrichtung (10) oder die Lese/Schreib-Einrichtung (12) zusammen mit dem neuen Programmcode geliefert wird, wobei die Steuerund Verarbeitungs-Einrichtung (16) danach die Schritte c) und d) durch Lesen des Programms, das in dem weiteren Speicher (19) gespeichert ist, durchführt.
4. Eine Datenspeichervorrichtung gemäß Anspruch 1, bei der nach einer positiven Bestimmung im Schritt b) und vor dem Implementieren des Schritts c) die Steuer- und Verarbeitungs-Einrichtung (16) einen Überprüfungsschritt bewirkt, bei dem eine oder mehrere Überprüfungen auf dem neuen Programmcode durchgeführt werden, wobei die Steuer- und Verarbeitungs-Einrichtung (16) nur mit den Schritten c) und d) fortfährt, wenn die Überprüfungsergebnisse zufriedenstellend sind.
5. Eine Datenspeichervorrichtung gemäß Anspruch 4, bei der der Überprüfungsschritt das Überprüfen des neuen Programmcodes, der in den Datenpuffer (13) gespeichert ist, einschließt, um sicherzustellen, ob ein beliebiger Code des neuen Programmcodes seit der Speicherung in den Datenpuffer (13) verfälscht wurde.
6. Eine Datenspeichervorrichtung gemäß Anspruch 5, bei der die Vorrichtung während des Schritts a) wirksam ist,
- Paritätsdaten bezüglich jedes Bytes oder Worts des neuen Programmcodes zu speichern, und
- fortschreitend einen Fehler-Überprüfungscode durch Durchführen einer Exclusiv-ODER-Funktion zwischen jedem Bit des neuen Programmcodes, wie dieser in dem Datenpuffer (13) gespeichert ist, und einem weiteren Bit in dem Puffer durchzuführen, wobei der resultierende Fehlerüberprüfungscode in dem Puffer gespeichert wird;
wobei die Vorrichtung während des Überprüfungsschritts ferner wirksam ist, um den Feherüberprüfungscode und die Paritätsdaten zu regenerieren, um beliebige Fehler zu erfassen und danach zu streben, eine Korrektur der Fehler, die so erfaßt werden, zu bewirken.
7. Eine Datenspeichervorrichtung gemäß Anspruch 4, bei der der Flash-Speicher (18) Identifikationsdaten hält, die die Identität des Programmcodes und/oder der Vorrichtung anzeigen, und bei der der neue Programmcode ebenfalls Identifikationsdaten einschließt, die die Identität des neuen Programmcodes und/oder der Vorrichtung, auf der der neue Programmcode bestimmungsgemäß ausgeführt werden soll, einschließt; wobei die Steuer- und Verarbeitungs-Einrichtung (16) während des Überprüfungsschritts wirksam ist, um die Identifikationsdaten, die in den Flash-Speicher (18) enthalten sind, mit denen zu vergleichen, die mit dem neuen Programmcode bereitgestellt werden, um sicherzustellen, ob der neue Programmcode mit der Vorrichtung kompatibel ist.
8. Eine Datenspeichervorrichtung gemäß Anspruch 4, bei der der Flash-Speicher (18) Betriebsparameter der Vorrichtung hält, wobei die Steuer- und Verarbeitungs-Einrichtung wirksam ist, um die Betriebsparameter vor dem Implementieren des Schritts c) zu einem temporären Speicher (13) zu übertragen und nachfolgend die Parameter in dem Flash-Speicher (18) zu speichern.
9. Eine Datenspeichervorrichtung gemäß Anspruch 1, bei der die Steuer- und Verarbeitungs-Einrichtung (16) während des Schritts a) wirksam ist, um eine Prüfsumme für den Bereich des Puffers zu berechnen, der verwendet ist, um den neuen Programmcode zu speichern, wobei diese Prüfsumme, die als neuer Programmcode neu berechnet ist, fortschreitend in dem Puffer (13) gespeichert wird, wobei die endgültige Prüf summe zusammen mit dem neuen Programmcode in den Flash-Speicher (18) geladen wird; wobei die Steuer- und Verarbeitungs-Einrichtung (16) beim Anlaufen der Vorrichtung ferner wirksam ist, um die Prüfsumme für den Flash-Speicher (18) neu zu berechnen und dieselbe mit der gespeicherten Prüfsumme zu vergleichen, um die Unversehrtheit des Programmcodes, der in dem Flash-Speicher (18) gespeichert ist, zu überprüfen.
10. Eine Datenspeichervorrichtung gemäß Anspruch 1, bei der der Vorrichtung zusammen mit dem neuen Programmcode eine Anzeige der Länge des neuen Codes bereitgestellt wird, wobei die Steuer- und Verarbeitungs-Einrichtung (16) beim Implementieren des Schritts b) wirksam ist, um diese Längeninformationen zu benutzen, um zu bestimmen, wann der gesamte neue Programmcode empfangen wurde.
11. Eine Datenspeichervorrichtung gemäß Anspruch 1, bei der der neue Programmcode der Vorrichtung in codierter Form bereitgestellt wird, wobei die Steuer- und Verarbeitungs-Einrichtung (16) beim Implementieren des Schritts a) wirksam ist, um den codierten Programmcode zu decodieren und den decodierten Code in dem Puffer (13) zu speichern.
DE1990621732 1990-12-04 1990-12-04 Wiederprogrammierbare Datenspeicherungsanlage. Expired - Fee Related DE69021732T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP90313127A EP0489204B1 (de) 1990-12-04 1990-12-04 Wiederprogrammierbare Datenspeicherungsanlage

Publications (2)

Publication Number Publication Date
DE69021732D1 DE69021732D1 (de) 1995-09-21
DE69021732T2 true DE69021732T2 (de) 1996-01-18

Family

ID=8205631

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1990621732 Expired - Fee Related DE69021732T2 (de) 1990-12-04 1990-12-04 Wiederprogrammierbare Datenspeicherungsanlage.

Country Status (3)

Country Link
EP (1) EP0489204B1 (de)
JP (1) JPH04290127A (de)
DE (1) DE69021732T2 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7057937B1 (en) 1992-03-17 2006-06-06 Renesas Technology Corp. Data processing apparatus having a flash memory built-in which is rewritable by use of external device
JP3765585B2 (ja) * 1992-08-10 2006-04-12 株式会社ルネサステクノロジ データ処理装置
TW231343B (de) 1992-03-17 1994-10-01 Hitachi Seisakusyo Kk
US6414878B2 (en) 1992-03-17 2002-07-02 Hitachi, Ltd. Data line disturbance free memory block divided flash memory and microcomputer having flash memory therein
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
GB9307623D0 (en) * 1993-04-13 1993-06-02 Jonhig Ltd Data writing to eeprom
FR2704677B1 (fr) * 1993-04-29 1995-06-23 Alcatel Business Systems Procédé et dispositif de programmation pour mémoire non volatile électriquement reprogrammable.
US5471518A (en) * 1993-08-10 1995-11-28 Novatel Communications Ltd. Method and apparatus for non-volatile data storage in radio telephones and the like
GB2283342B (en) * 1993-10-26 1998-08-12 Intel Corp Programmable code store circuitry for a nonvolatile semiconductor memory device
US5930815A (en) * 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5907856A (en) * 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6081878A (en) 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6125435A (en) * 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
DE19544571A1 (de) * 1995-11-30 1997-06-05 Sel Alcatel Ag Verfahren und Vorrichtung zum Programmieren eines Flash-EEProms
KR100568642B1 (ko) * 1996-04-11 2006-04-07 가부시끼가이샤 히다치 세이사꾸쇼 Atapi 디스크 드라이브 장치
US5940074A (en) * 1996-06-03 1999-08-17 Webtv Networks, Inc. Remote upgrade of software over a network
US5878257A (en) * 1996-11-15 1999-03-02 Cirrus Logic, Inc. Self-booting mechanism to allow dynamic system configuration and diagnostic
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
US6034897A (en) * 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6411546B1 (en) 1997-03-31 2002-06-25 Lexar Media, Inc. Nonvolatile memory using flexible erasing methods and method and system for using same
US6122195A (en) * 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US6209127B1 (en) * 1997-06-05 2001-03-27 Matsushita Electrical Industrial Co., Ltd Terminal device capable of remote download, download method of loader program in terminal device, and storage medium storing loader program
JPH1185526A (ja) * 1997-09-12 1999-03-30 Hitachi Ltd プログラムロード方法
JP3622444B2 (ja) * 1997-09-26 2005-02-23 ノーリツ鋼機株式会社 写真処理機及びその動作制御情報更新システム
NO974761L (no) * 1997-10-15 1999-04-16 Ericsson Telefon Ab L M FremgangsmÕte for kopiering av programvare
DE19750365A1 (de) * 1997-11-14 1999-05-20 Bosch Gmbh Robert Verfahren zum Laden eines Programms und Datenverarbeitungsgerät
US6076137A (en) 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
GB9801373D0 (en) 1998-01-22 1998-03-18 Memory Corp Plc Memory system
US6040997A (en) * 1998-03-25 2000-03-21 Lexar Media, Inc. Flash memory leveling architecture having no external latch
JP2002514810A (ja) * 1998-05-11 2002-05-21 デジタル ハーモニー テクノロジーズ インコーポレイテッド 処理されるべきデータと共に処理インストラクションを配布する方法およびシステム
US6374337B1 (en) 1998-11-17 2002-04-16 Lexar Media, Inc. Data pipelining method and apparatus for memory control circuit
US6141249A (en) * 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
AU4061700A (en) 1999-04-01 2000-10-23 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
US6831571B2 (en) * 1999-12-21 2004-12-14 Halliburton Energy Services, Inc. Logging device data dump probe
US6629227B1 (en) 2000-05-04 2003-09-30 Scientific-Atlanta, Inc. System and method for a communication terminal to manage memory and maintain a current application version for multiple applications
FR2809223A1 (fr) * 2000-05-17 2001-11-23 Schlumberger Systems & Service Effacement d'eeprom en temps masque
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
ATE382941T1 (de) * 2000-11-23 2008-01-15 Siemens Ag Verfahren und vorrichtung zur aktualisierung von lesedateien in einem flash-speicher einer industriellen steuereinrichtung
ATE269578T1 (de) * 2001-03-02 2004-07-15 Infineon Technologies Ag Verfahren zum einspeichern einer datenmenge in einen zielspeicherbereich und speichersystem
US7155560B2 (en) * 2001-06-27 2006-12-26 Intel Corporation Method and apparatus for storing data in flash memory
GB0123419D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Data handling system
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123412D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123417D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
GB0123421D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US6957295B1 (en) 2002-01-18 2005-10-18 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6950918B1 (en) 2002-01-18 2005-09-27 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US7275686B2 (en) 2003-12-17 2007-10-02 Lexar Media, Inc. Electronic equipment point-of-sale activation to avoid theft
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
GB2412193A (en) * 2004-03-19 2005-09-21 Matsushita Electric Ind Co Ltd Reprogramming a non-volatile memory system.
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
FR2879777B1 (fr) * 2004-12-17 2007-02-16 Actaris Sas Soc Par Actions Si Telechargement pour un compteur d'ernergie
EP1672491A1 (de) * 2004-12-17 2006-06-21 Actaris SAS Fernladung für einen Elektrizitätszähler
US8566481B2 (en) 2009-06-10 2013-10-22 Cisco Technology, Inc. Managing configuration data
DE102020108101A1 (de) * 2020-03-24 2021-09-30 Pilz Gmbh & Co. Kg Vorrichtung zur Speicherung von Daten in einem nichtflüchtigen Speicher

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3443997A1 (de) * 1984-12-01 1986-06-05 Robert Bosch Gmbh, 7000 Stuttgart Verfahren zur programmierung eines nichtfluechtigen speichers
US4922456A (en) * 1988-04-29 1990-05-01 Scientific-Atlanta, Inc. Method of reducing wearout in a non-volatile memory with double buffer
GB8824373D0 (en) * 1988-10-18 1988-11-23 Hewlett Packard Ltd Buffer memory arrangement
GB8901932D0 (en) * 1989-01-28 1989-03-15 Int Computers Ltd Data processing system

Also Published As

Publication number Publication date
EP0489204B1 (de) 1995-08-16
EP0489204A1 (de) 1992-06-10
JPH04290127A (ja) 1992-10-14
DE69021732D1 (de) 1995-09-21

Similar Documents

Publication Publication Date Title
DE69021732T2 (de) Wiederprogrammierbare Datenspeicherungsanlage.
DE69821426T2 (de) Speicheranordung, und Datenverarbeitungssystem und -Verfahren
DE69224589T2 (de) Speicherplattenanordnung und Verfahren zur Bestimmung des Vorhandenseins korrekter Speichervorrichtungen
DE69938090T2 (de) Verfahren und Gerät zur Informationsaufzeichnung und -wiedergabe auf und aus einer Platte
DE69034191T2 (de) EEPROM-System mit aus mehreren Chips bestehender Blocklöschung
DE69421925T2 (de) Speichergerät mit Fehlerdetektion und -korrektur und Verfahren zum Schreiben und Löschen des Speichergeräts
DE69216646T2 (de) IC-Speicherkartensystem
DE60030876T2 (de) Bereichsverwaltung eines nichtflüchtigen Speichers mit hoher Kapazität
EP0849667A2 (de) System zum Austausch von Software
DE69820164T2 (de) Speichervorrichtung sowie Datenlese- und Schreibverfahren
DE19839680B4 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE102007010031A1 (de) Systeme und Verfahren zum selektiven Verwalten von Fehlern bei Speichermodulen
DE69706727T2 (de) Datenblockanordnung mit frei wählbar angeordneten Blöcken auf einem Magnetband
WO2006120001A1 (de) Tragbarer datenträger mit sicherer datenverarbeitung
DE3779553T2 (de) Uebertragung von daten mit variabler feldlaenge in einem bestimmten zeitspalt-format.
DE69625718T2 (de) Aufspürung von speicherproblemen in rechnern
DE19931184A1 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE2513262A1 (de) Digitale codeumwandlungsanordnung
DE69324327T2 (de) Verfahren für Fehler und Löschungskorrektur in digitaler Information und geeignete Vorrichtung zur Durchführung des Verfahrens
EP1636700A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
EP1350252B1 (de) Verfahren zum einspeichern einer datenmenge in einen zielspeicherbereich und speichersystem
WO2004090695A1 (de) Verfahren zur überprüfung der datenintegrität von software in steuergeräten
EP2948894B1 (de) Verfahren zum sicheren löschen eines nichtflüchtigen halbleiter-massenspeichers, computersystem sowie computerprogrammprodukt
DE19952357A1 (de) Schreibvorrichtung für eine nicht-flüchtige Halbleiter-Speichervorrichtung
EP1625592B1 (de) Vorrichtung und verfahren zum behandeln eines zustands eines speichers

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee