-
Stand der
Technik
-
Die
Erfindung betrifft ein Verfahren zum Aktualisieren eines mit einer
Mehrzahl von Datensätzen beschriebenen
Speicherbausteins und einen Speicherbaustein für ein solches Verfahren.
-
Unter
der Bezeichnung Flash-Speicher sind nichtflüchtige Speicherbausteine bekannt,
bei denen unbeschriebene oder gelöschte Zellen jederzeit einzeln
beschrieben werden können,
bei denen das Löschen
von Zellen aber nur segmentweise möglich ist. Ein Flash-Speicher
kann daher nicht wie ein RAM-Baustein
aktualisiert werden, in dem jeweils nur diejenigen Zellen, deren
Inhalte nicht mehr aktuell sind, selektiv mit aktuellen Werten überschrieben werden.
Um eine einzelne Zelle überschreiben
zu können,
muss ich vielmehr das ganze Flash-Segment, in dem sie enthalten
ist, gelöscht
und dann neu beschrieben werden. Dabei ergibt sich das Problem, dass
der Inhalt aller anderen Zellen des Segments an anderer Stelle zwischengespeichert
werden müsste, um
diese Zellen nach dem Löschen
mit den zwischengespeicherten Daten wieder herstellen zu kön nen. Dies
ist nur dann möglich,
wenn eine Datenverarbeitungsschaltung, in der ein solches Flash-Segment eingebaut
ist, über
Reservespeicher wenigstens in der Größe des Flash-Segments verfügt, um die
Daten darin zwischenzusichern.
-
Ein
anderes bekanntes Verfahren zum Aktualisieren eines Flash-Speichers
in einer solchen Schaltung ist das so genannte Copy-Page-Verfahren.
Dieses Verfahren erfordert das Vorhandensein von wenigstens zwei
Flash-Segmenten. Eines dieser Segmente dient als aktive Page, d.h.
ein Prozessor der Datenverarbeitungsschaltung greift bei seiner
Arbeit laufend lesend auf dieses Segment zu. Wenn ein Datenwert
der aktiven Page verändert
werden muss, so wird in dem zweiten Segment eine so genannte Copy-Page erstellt, indem
darin der veränderte
Datenwert eingetragen und alle übrigen
Datenwerte aus der aktiven Page unverändert hinüber kopiert werden. Wenn dieser
Vorgang abgeschlossen ist, wird die Copy-Page aktiviert, d.h. der Prozessor greift
nur noch auf das zweite Flash-Segment lesend zu, und das erste kann
gelöscht
und überschrieben
werden.
-
Allen
diesen Konzepten ist gemeinsam, dass sie eine Reserve an freiem
Speicher wenigstens in der Größe eines
Flash-Segments erfordern.
-
Es
wäre zwar
möglich,
den absoluten Speicherbedarf der Datenverarbeitungsschaltung dadurch
zu reduzieren, dass eine große
Zahl von kleinen Flash-Segmenten
eingesetzt wird, doch hat dies den Nachteil, dass die Kosten des
Speicherplatzes um so höher
sind, je kleiner die Segmente sind, aus denen er besteht. Dies macht
Datenverarbeitungsschaltungen, die nach dem Copy-Page-Verfahren
aktualisieren, vergleichsweise teuer.
-
Vorteile der
Erfindung
-
Der
Vorteil der vorliegenden Erfindung liegt darin, dass sie die Aktualisierung
von Datensätzen
in einem nur segmentweise löschbaren
Speicher wie etwa einem Flash-Speicher bei geringen Kosten ermöglicht,
und insbesondere ohne dass ein komplettes Speichersegment nur für die Aktualisierung
in der Datenverarbeitungsschaltung vorgehalten werden muss. Vielmehr
genügt
für die
Durchführung
des erfindungsgemäßen Verfahrens
ein einziges Speichersegment, das groß und damit vergleichsweise
preiswert sein kann.
-
Diese
Vorteile werden erzielt durch ein Verfahren zum Aktualisieren wenigstens
eines Datensatzes in einem mit einer Mehrzahl von Datensätzen beschriebenen
Speicherbaustein, wobei zu jedem Datensatz ein Eintrag in einer
Vektortabelle existiert, der eine Zugriffsadresse spezifiziert,
mit folgenden Schritten:
- a) Identifizieren
des wenigstens einen nicht mehr aktuellen Datensatzes aus der Mehrzahl
von Datensätzen,
- b) Identifizieren eines freien Speicherbereichs, als Datensatz-Speicherbereich
bezeichnet, in dem eine aktuelle Fassung des wenigstens einen Datensatzes
speicherbar ist,
- c) Identifizieren eines freien Speicherbereiches, als Vektortabellen-Speicherbereich
bezeichnet, in dem eine aktuelle Fassung der Vektortabelle speicherbar
ist, in welcher der den wenigstens einen Datensatz betreffende Vektor
auf den in Schritt b) identifizierten Speicherbereich weist, und
- d) Eintragen der aktuellen Fassung der Vektortabelle und der
aktuellen Fassung des wenigstens einen Datensatzes in den jeweils
identifizierten Speicherbereichen.
-
Dies
Verfahren kann im Bedarfsfalle mehrere Male wiederholt werden, so
oft, bis im in der Datenverarbeitungsschaltung vorhandenen Speicher
kein freier Speicherplatz für
aktualisierte Datensätze
und Vektortabellen mehr vorhanden ist.
-
Der
Zugriff auf die jeweils aktuellen Datensätze erfolgt mit Hilfe der jeweils
aktuellen Fassung der Vektortabelle. Um auf diese korrekt zugreifen
zu können,
sollte ein Zeiger auf die Vektortabelle in einem überschreibbaren
Speicherbaustein gespeichert gehalten werden, auf den jeweils nach
Schritt d) der zusätzliche
Schritt
- e) Überschreiben
des Zeigers mit einer Zugriffsadresse der aktuellen Fassung der
Vektortabelle
angewendet wird.
-
Da
die Kosten für
eine gegebene Speicherkapazität
um so geringer sind, je weniger und je größer die Speichersegmente sind,
aus denen sie sich zusammensetzt, befinden sich Vektortabellen-
und Datensatz-Speicherbereiche
vorzugsweise in einem gleichen Speichersegment, d.h. das Identifizieren des
freien Vektortabellen-Speicherbereichs und das Eintragen der aktuellen
Fassung der Vektortabelle in dem identifizierten Speicherbereich
finden in dem gleichen Speichersegment statt wie das Identifizieren des
freien Datensatz-Speicherbereichs für die aktuelle Fassung des
Datensatzes.
-
Vorzugsweise
enthält
die zuletzt gespeicherte Vektortabelle jeweils einen Zeiger auf
einen freien Bereich des Speichersegments. Dieser kann in Schritt
b) oder Schritt c) genutzt werden, um schnell und einfach Datensatz-
oder Vektortabellen-Speicherbereich
zu identifizieren.
-
Der
Zeiger auf den freien Speicherbereich wird vorzugsweise erzeugt,
indem bei der Wiederholung des Schritts d) eine Zugriffsadresse
eines an den in diesem Schritt beschriebenen Speicherbereichs angrenzenden
Speicherbereichs als Zeiger auf den freien Bereich in die Vektortabelle
eingetragen wird.
-
Einer
bevorzugten Ausgestaltung des Verfahrens zufolge werden in Schritt
b) und Schritt c) jeweils aneinander grenzende Speicherbereiche
identifiziert. Eine mögliche
Alternative wäre,
dass, wenn die Schritte a) bis d) mehrfach wiederholt werden, bei jeder
Wiederholung des Schrittes b) bzw. c) ein Datensatz- bzw. Vektortabellen-Speicherbereich
identifiziert wird, der an den in der vorhergehenden Wiederholung
des gleichen Schritts identifizierten Datensatz- bzw. Vektortabellen-Speicherbereich
angrenzt. So kann ein zusammenhängender
freier Speicherbereich beispielsweise von beiden Seiten her jeweils schrittweise
mit Datensatz- bzw. Vektortabellen-Speicherbereichen aufgefüllt werden.
-
Eine
bevorzugte Anwendung der Erfindung liegt in der Fertigung einer
Datenverarbeitungsschaltung, die einen anhand der in dem Speicherbaustein gespeicherten
Information gesteuerten Prozessor und wenigstens einen mit dem Prozessor
zusammenwirkenden Peripheriebaustein umfasst. Hier kann in das Speichersegment
vorab, noch bevor ein genaues Modell des Peripheriebausteins bekannt
ist, mit dem der Prozessor kombiniert werden wird, eine Gruppe von
Standard-Datensätzen
eingetragen werden, und eine Aktualisierung wenigstens eines dieser Datensätze durch
einen für
einen tatsächlich
eingesetzten Peripheriebaustein spezifischen Datensatz findet statt,
sobald die Identität
dieses Peripheriebausteins festliegt, spätestens wenn er in die Datenverarbeitungsschaltung
eingebaut ist. Das Verfahren ermöglicht
aber auch eine Aktualisierung der Steuerinformation zu einem beliebigen
Zeitpunkt während
der Lebensdauer der Datenverarbeitungsschaltung, z.B. wenn der Peripheriebaustein
durch Reparatur verändert
oder ausgetauscht worden ist.
-
Ein
Speichersegment gemäß der vorliegenden
Erfindung zeichnet sich dadurch aus, dass es wenigstens einen Datensatz-Speicherbereich,
in dem eine Mehrzahl von Datensätzen
entsprechend den oben erwähnten
Standard-Datensätzen
gespeichert ist, wenigstens einen zweiten Datensatz-Speicherbereich
und wenigstens zwei Vektortabellen-Speicherbereiche aufweist, in
denen Vektortabellen gespeichert sind, wobei die Vektoren der ersten
oder ursprünglichen
Vektortabelle jeweils auf die Datensätze in dem ersten Datensatz-Speicherbereich
weisen und von den Vektoren der zweiten Vektortabelle wenigstens
einer auf einen Datensatz in dem zweiten Datensatz-Speicherbereich weist
und die übrigen
Vektoren jeweils auf die gleichen Datensätze in dem erstem Datensatz-Speicherbereich
weisen wie ihnen entsprechende Vektoren der ersten Vektortabelle.
-
Der
Speicherbereich der zweiten Vektortabelle ist vorzugsweise zwischen
dem ersten und dem zweiten Datensatz-Speicherbereich eingeschlossen.
-
Jeder
Vektortabellen-Speicherbereich enthält ferner vorzugsweise einen
Vektor, der entweder auf einen weiteren Vektortabellen-Speicherbereich oder
auf einen freien Speicherbereich weist.
-
Weitere
Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden
Beschreibung von Ausführungsbeispielen
mit Bezug auf die beigefügten
Figuren. Es zeigen:
-
1 ein Blockdiagramm einer
Datenverarbeitungsschaltung mit einem Speichersegment gemäß der Erfindung;
-
2 eine Aufteilung des Speichersegments
vor dem endgültigen
Zusammenbau der Datenverarbeitungsschaltung; und
-
3 eine Aufteilung des Speichersegments
nach einmaliger Aktualisierung.
-
Beschreibung
der Ausführungsbeispiele
-
1 zeigt ein Blockdiagramm
einer Datenverarbeitungsschaltung, an der die vorliegende Erfindung
anwendbar ist. Die Datenverarbeitungsschaltung umfasst in an sich
bekannter Weise einen Mikroprozessor 1, ein Flash-Speichersegment 2,
einen zellenweise elektrisch überschreibbaren
Speicher wie etwa ein EEPROM 3, sowie eine Schnittstellenschaltung 4,
die es dem Mikroprozessor 1 ermöglicht, mit an die Schnittstellenschaltung 4 angeschlossenen,
in der Figur nicht dargestellten Peripheriebausteinen zu kommunizieren,
oder die selber als ein Peripheriebaustein der Datenverarbeitungsschaltung aufgefasst
werden kann. Die Komponenten 1 bis 4 sind untereinander
durch einen Bus 5 verbunden.
-
Bei
der Datenverarbeitungsschaltung kann es sich insbesondere um ein
Motorsteuergerät
für ein Kraftfahrzeug
handeln, das anhand von diversen an einem Kraftfahrzeug gemessenen
Betriebsparametern Größen wie
etwa Zündzeitpunkt,
zugeführte Kraftstoffmenge etc.
regelt. Sensoren zum Erfassen der Parameter und Aktoren zum Beeinflussen
der Größen sind
an die Datenverarbeitungsschaltung über die Schnittstellenschaltung 4 angeschlossen. Sie
können
in einer großen
Vielzahl von Typen zum Einsatz kommen, so dass ein Motorsteuergerät, das in
unterschiedlichen Kraftfahrzeugmodellen einsetzbar sein soll, in
der Lage sein muss, mit einer Vielzahl von solchen Typen von Sensoren
und Aktoren zu kommunizieren, deren Messsignale korrekt zu verarbeiten
und Steuersignale korrekt zu erzeugen. Die Steuerinformationen,
auf die der Mikroprozessor 1 während des Betriebs zugreift,
d.h. die Gesamtheit aus Steuerprogramm und Parameterwerten, die
in dem Steuergerät
gespeichert sein, können
daher allenfalls zum Teil für
alle Steuergeräte
einer Serie einheitlich sein. Ein anderer Teil der Steuerinformation, der
von den mit dem Mikroprozessor zusammenwirkenden Peripheriebausteinen
abhängt,
muss beim Zusammenbau des Steuergerätes – soweit diese Information
von den Komponenten des Steuergerätes abhängt – oder erst beim Einbau des
Steuergeräts
in ein Kraftfahrzeug festgelegt werden.
-
Bei
der nachfolgenden Beschreibung von Ausführungsbeispielen wird der Einfachheit
halber davon ausgegangen, dass der Teil der Steuerinformation, der
von den Peripheriebausteinen abhängt, mit
denen das Steuergerät
in einem Kraftfahrzeug kombiniert wird, nur aus Datenwerten besteht.
Es liegt jedoch auf der Hand, dass auch eine Anpassung von Programmteilen
in Abhängigkeit
von den verwendeten Peripheriebausteinen erforderlich sein könnte, wobei
allerdings die Verallgemeinerung der Erfindung auf die sen Fall für den Fachmann
aus der nachfolgenden Beschreibung ohne Weiteres erkennbar ist.
-
Noch
während
der Entwicklung des Steuergerätes
werden dessen Parameter sortiert in solche, die unabhängig vom
Typ eines Peripheriebausteins, der an den Mikroprozessor des Steuergeräts angeschlossen
werden soll, immer benötigt
werden, und solche, deren Werte vom Typ eines verwendeten Peripheriebausteins
abhängen
oder die möglicherweise gar
nicht benötigt
werden, wenn ein entsprechender Peripheriebaustein nicht vorhanden
ist. Die stets benötigten
Parameter werden im Folgenden als Konstanten bezeichnet, diejenigen
Parameter, dessen Werte von Vorhandensein oder Nichtvorhandensein und
gegebenenfalls vom Typ eines bestimmten Peripheriebausteins abhängen, werden
als ein diesem Peripheriebaustein zugeordneter Datensatz bezeichnet.
Die Gesamtmenge der Betriebsparameter des Steuergerätes setzt
sich also zusammen aus den Konstanten und einer Anzahl von für die verwendeten
Peripheriebausteine spezifischen Datensätzen.
-
Um
eine Prüfung
der Funktionsfähigkeit
des Steuergeräts
bei dessen Hersteller zu ermöglichen, noch
bevor es in ein Kraftfahrzeug eingebaut ist, muss es über vollständige Steuerinformation
mit Konstanten und Datensätzen
verfügen,
wobei die vorhandenen Datensätze
nicht zwangsläufig
solche sind, die auch für
den Betrieb des Steuergeräts, wenn
es in einem Kraftfahrzeug eingebaut ist und mit einem für ein bestimmtes
Fahrzeugmodell spezifischen Satz von Peripheriebausteinen zusammenarbeiten
muss, geeignet sind.
-
2 zeigt eine Aufteilung
des Flash-Speichersegments 2 in einem solchen, noch nicht
an eine spezifische Anwendungsumgebung in einem Kraftfahrzeug angepassten
Zustand des Steuergeräts. Das
Segment enthält
einen Vektortabellen-Speicherbereich V1, in welchem eine Anzahl
Vektoren VF, VK, VD1, ..., VDn gespeichert sind, sowie – eventuell, aber
nicht notwendigerweise – unmittelbar
an den Vektortabellen-Speicherbereich V1 angrenzend, einen Parameter-Speicherbereich
P1, welcher seinerseits unterteilt ist in einen Speicherbereich
K für die Konstanten
und eine Mehrzahl von Speicherbereichen D1, ..., Dn für die Datensätze. Ein
erster Vektor VF des Vektortabellen-Speicherbereichs V1 weist auf einen
freien Speicherbereich F, der sich an den Parameter-Speicherbereich
P1 anschließt.
-
Der
Mikroprozessor 1 greift auf die Konstanten und Datensätze mit
Hilfe eines Zeigers B zu, der auf einen vorgegebenen Vektor, hier
den Vektor VK, des Vektortabellen-Speicherbereichs V1 weist. Dieser
Zeiger B ist in dem EEPROM 3 gespeichert.
-
Erst
wenn das Motorsteuergerät
in ein Kraftfahrzeug eingebaut wird, eventuell auch erst, wenn es
darin eingebaut ist, stehen sämtliche
Peripheriebausteine fest, mit denen es zusammenarbeiten muss. In
Kenntnis dieser Peripheriebausteine können nun diejenigen Datensätze des
Parameter-Speicherbereichs P1 identifiziert werden, die an die vorhandenen
Peripheriebausteine nicht angepasst sind und folglich nicht mehr
aktuell sind und ersetzt werden müssen.
-
Der
Vorgang des Ersetzens wird anhand der 3 beschrieben,
wobei hier der Einfachheit halber davon ausgegangen ist, dass nur
ein einziger Datensatz, der Datensatz D2, ersetzt werden muss.
-
Anhand
des Zeigers VF im Vektor-Speicherbereich V1 identifiziert der Mikroprozessor
den in 2 mit F bezeichneten
freien Speicherbereich, der in der Lage ist, einen neuen Vektortabellen-Speicherbereich V2
aufzunehmen. Die Struktur des Vektortabellen-Speicherbereichs mit
Vektoren VK, VD1 bis VDn, VF und infolgedessen die Ausdehnung des Vektortabellen-Speicherbereichs
V2 ist die gleiche wie bei V1. Durch Addieren der Größe von V2
zum Wert des Zeigers VF kann der Mikroprozessor 1 somit
eine Startadresse eines Datensatz-Speicherbereichs P2 berechnen,
der sich an V2 anschließt
und den aktualisierten Datensatz D2' aufnehmen kann. Die Werte derjenigen
Vektoren, die auf nicht veränderte
Datensätze
weisen, bleiben unverändert. Nachdem
die Werte aller Vektoren des neuen Vektortabellen-Speicherbereichs
V2 feststehen, werden sie vom Mikroprozessor 1 – oder einem
externen, zeitweilig an den Bus 5 angeschlossen Programmiergerät – in den
Speicherbereich V2 eingetragen, und im Anschluss daran wird der
aktualisierte Datensatz D2' geschrieben.
-
Wenn
festgestellt wird, dass nicht einer, sondern mehrere der Datensätze im Speicherbereich
P1 aktualisierungsbedürftig
sind, so ist es natürlich
möglich,
die mehreren aktualisierten Datensätze in den Datensatz-Speicherbereich
P2 zu schreiben und die Adressen dieser Datensätze in den entsprechenden Vektoren
des Vektortabellen-Speicherbereichs V2 einzutragen.
-
Es
ist aber auch möglich,
eine Mehrzahl von Aktualisierungen durchzuführen, indem jeweils in dem
freien Speicherbereich F, auf den der Vektor VF des zuletzt angelegten
Vektortabellen-Speicherbereichs V2 weist, ein neuer Vektortabellen-Speicherbereich
V3 und dazugehörige
aktualisierte Datensätze
eingetragen werden, so lange, bis eine erneute Aktualisierung daran
scheitert, dass in dem Flash-Speichersegment
kein Platz mehr zur Verfügung
steht.
-
Selbstverständlich kommen
auch Aufteilungsschemata des Speichersegments in Betracht, die von
dem in 2 und 3 gezeigten Muster abweichen.
Während
bei den bisher betrachteten Beispielen der freie Speicherbereich
des Flash-Segments 2 nur von einer Seite her jeweils gemischt
mit Vektortabellen-Speicherbereichen
V2, V3, ... und Datensatz-Speicherbereich
P2, ... aufgefüllt
wird, ist es insbesondere denkbar, einen aktualisierten Vektortabellen-Speicherbereich
jedes Mal an ein erstes Ende des freien Speicherbereichs, z.B. bei
niedrigen Adressen, zu schreiben, und einen aktualisierten Datensatz-Speicherbereich
an einem zweiten Ende des freien Speicherbereichs zu platzieren,
so dass der freie Speicherbereich sukzessive von beiden Seiten her
aufgefüllt
wird.