-
Die vorliegende Erfindung betrifft das Programmieren von Daten in nicht-flüchtige Speicher.
-
Nichtflüchtige Speicher (Non-Volatile Memories) wie beispielsweise Flash-Speicher, EPROM, EEPROM etc. werden heutzutage sehr häufig verwendet, um Daten zu speichern. Beispielsweise werden in Datenverarbeitungseinheiten, Kommunikationsvorrichtungen und Überwachungs- bzw. Steuereinheiten wie bspw. zum Überwachen und Steuern von Verkehrsmitteln wie Automobile, Züge etc. laufend Daten erzeugt und in den nicht-flüchtigen Speichern gespeichert.
-
Sehr häufig weisen nicht-flüchtige Speicher Speicherzellen mit Feldeffekt-Transistoren wie beispielsweise MOS-Transistoren auf, die zusätzlich zu einem Steuer-Gate ein floating Gate aufweisen, um Ladungen dort zu speichern. Unter floating Gate versteht man typischerweise einen Bereich, der freie Ladungsträger, d. h. elektrische Ladungen, aufnehmen kann und von allen anderen elektrisch leitenden Bereichen durch ein Oxid elektrisch getrennt ist. Das Vorhandensein bzw. Nicht-Vorhandensein von Ladungen auf dem floating Gate entspricht hierbei dem gespeicherten Datenwert mit logischem Zustand 1 bzw. 0. Die Ladungen können bei einem Programmierimpuls beispielsweise durch Anlegen einer entsprechenden Spannung an das Steuer-Gate mittels eines Heiße-Ladungsträger-Effekts oder eines Fowler-Nordheim-Tunnel-Effekts auf das floating Gate gebracht werden. Die in dem floating Gate gespeicherten Ladungen verbleiben ohne weitere Energiezufuhr auf dem Gate, wobei jedoch durch eine geringe Abflussrate von Ladungen die Ladungsmenge mit der Zeit reduziert wird. Daher ist es zum dauerhaften Programmieren von Daten erforderlich eine entsprechende Mindestmenge an Ladungen auf das floating Gate zu bringen. Typischerweise wird beispielsweise gefordert, dass Daten von nicht-flüchtigen Speichern eine Mindestdatenhaltezeit aufweisen. Für die Mindestdatenhaltezeit können je nach Speichertyp oder Verwendung unterschiedliche Werte vorgesehen sein beispielsweise 5 Jahre für Daten und 20 Jahre für Programm-Codes. Um dieses einzuhalten wird nach einem Programmierimpuls eine Überprüfung hinsichtlich der aufgebrachten Ladung durchgeführt, beispielsweise indem die Einsatzspannung einer Speicherzelle überprüft wird. Bei einem Feststellen einer nicht ausreichenden Ladungsmenge der Programmierimpuls ein oder mehrere Male wiederholt.
-
Die Aufgabe der vorliegenden Erfindung besteht darin, ein verbessertes Konzept zur Programmierung von nicht-flüchtigen Speichern zu schaffen.
-
Ein Verfahren umfasst ein Programmieren von Daten in einen nicht-flüchtigen Speicher mit einem ersten Programmiermodus, ein Erzeugen eines Steuersignals und ein Umschalten auf einen zweiten Programmiermodus abhängig von dem Auftreten des Steuersignals.
-
Ferner umfasst eine Vorrichtung einen nicht-flüchtigen Speicher und eine Steuereinheit, wobei die Steuereinheit konfiguriert ist, um ein Programmieren von Daten des nicht-flüchtigen Speichers basierend auf dem Auftreten eines Steuersignals von einem ersten Programmiermodus in einen zweiten Programmiermodus umzuschalten.
-
Die Speicherzelle des nicht-flüchtigen Speichers kann beispielsweise ein Feldeffekt-Transistor mit floating Gate, wie beispielsweise ein MOS-FET mit floating Gate, zum Speichern von Informationen sein. Bei Ausführungsbeispielen ist der nicht-flüchtige Speicher ein Flashspeicher.
-
Das Programmieren in dem zweiten Programmiermodus weist bei Ausführungsbeispielen im Vergleich zu dem ersten Programmiermodus eine kürzere Programmierzeit und eine kürzere Datenhaltezeit auf.
-
Ferner kann das Programmieren in dem zweiten Programmiermodus bei mit einer geringeren Anzahl von Programmierimpulsen und/oder einer höheren Programmierspannung, verglichen mit dem ersten Programmiermodus, erfolgen.
-
Bei Ausführungsbeispielen können in dem ersten Programmiermodus ein Überprüfen der Programmierung der Speicherzellen und gegebenenfalls ein Re-Programmieren von einzelnen Speicherzellen durchgeführt werden wobei in dem zweiten Programmiermodus das Programmieren ohne Überprüfung und Re-Programmieren erfolgt.
-
Der erste Programmiermodus kann ein Programmiermodus sein, bei dem zum Programmieren bzw. Schreiben eines Datenwerts in eine Speicherzelle ein Programmierimpuls ein oder mehrere Male wiederholt werden kann. Das Wiederholen eines Programmierimpuls wird im ersten Programmiermodus durchgeführt, wenn eine oder mehrere der programmierten Speicherzellen nicht gut genug programmiert wurden, um die vordefinierte Datenhaltezeit zu erfüllen. Der zweite Programmiermodus ist ein Programmiermodus, bei dem zum Programmieren eines Datenwerts ein Programmierimpuls nur einmal durchgeführt wird. Bei einem Ausführungsbeispiel wird bei dem zweiten Programmiermodus auf das Überprüfen des Ladungszustands bzw. das Überprüfen der Datenhaltezeit und das Anlegen eines erneuten Programmierimpulses im Falle einer nicht-ausreichenden Programmierung verzichtet. Da die Daten sequentiell programmiert bzw. geschrieben werden, können Daten wesentlich schneller in den nicht-flüchtigen Speicher programmiert werden bzw. eine Datenprogrammierrate bzw. Datenschreibrate kann erhöht werden.
-
Bei Ausführungsbeispielen wird bei einem Auftreten des Steuersignals ein Löschvorgang (ERASE) zum Löschen von Speicherzellen der Speicherzelle abgebrochen, wobei in dem zweiten Programmiermodus der Löschvorgang nicht wieder aufgenommen wird.
-
Typischerweise weist der nicht-flüchtige Speicher einen momentan aktiven und einen momentan nicht-aktiven Speicher auf, wobei der nicht-aktive Speicher ältere Daten umfasst. Der Löschvorgang erfolgt dabei auf dem momentan nicht-aktiven Sektor, um Platz für neue Daten zu schaffen. Mit anderen Worten gesagt, wird bei diesen Ausführungsbeispielen basierend auf dem Auftreten des Steuersignals ein Löschvorgang auf dem momentan nicht-aktiven Sektor unterbrochen.
-
Bei einem Ausführungsbeispiel werden Ausgangssignale von zumindest einem Sensorelement überwacht und abhängig von den überwachten Ausgangssignalen bestimmt, ob ein erster Zustand vorliegt. Das Steuersignal wird basierend auf dem Bestimmen erzeugt, dass der erste Zustand vorliegt. Der erste Zustand kann beispielsweise ein Notfallszustand sein, d. h. beispielsweise ein Zustand eines Zusammenstosses eines Fortbewegungsmittels anzeigt. Das Sensorelement kann beispielsweise ein Sensorelement zum Bestimmen des Auftretens eines Aufpralls oder Zusammenstosses sein.
-
Bei einem Ausführungsbeispiel wird ein weiteres Steuersignal erzeugt, wenn beispielsweise das Auftreten des ersten Zustands irrtümlich bestimmt wurde. Daraufhin wird wieder in den ersten Programmiermodus gewechselt, abhängig von dem Auftreten des weiteren Steuersignals, wobei die, in dem zweiten Programmiermodus in Speicherzellen geschriebenen Daten als ungültig geschriebene Daten, abhängig von dem Auftreten des weiteren Steuersignals, markiert werden.
-
Die Datenwerte der in dem zweiten Programmiermodus in Speicherzellen geschriebenen Daten werden bei einem Ausführungsbeispiel nach dem Umschalten in den ersten Programmiermodus erneut programmiert. Dies stellt sicher, dass die im zweiten Programmiermodus programmierten Daten, die eine geringe Datenhaltungszeit als im ersten Programmiermodus programmierte Daten aufweisen, nicht weiter benutzt werden. Da nach dem Umschalten in den ersten Programmiermodus davon ausgegangen wird, dass programmierte Daten die dem ersten Programmiermodus entsprechende höhere Datenhaltungszeit aufweisen, würde eine weitere Benutzung der im zweiten Programmiermodus programmierten Daten ohne erneute Programmierung dazu führen, dass diese Daten mit hoher Wahrscheinlichkeit vor Ablauf der dem ersten Programmiermodus entsprechenden Datenhaltungszeit verloren gehen. Damit wäre die Datensicherheit nicht mehr gewährleistet, was durch das erneute Programmieren in dem ersten Programmiermodus vermieden wird.
-
Ferner kann, sofern ein Löschvorgang zum Löschen von Speicherzellen vorherig beim Auftreten des einen Steuersignals abgebrochen wurde, basierend auf dem Auftreten des weiteren Steuersignals der unterbrochene Löschvorgang zum Löschen von Speicherzellen erneut durchgeführt werden.
-
Weitere Ausgestaltungen und Weiterbildungen sind Gegenstand der Unteransprüche oder sind in der nachfolgenden detaillierten Beschreibung unter Bezugnahme auf die beiliegenden Zeichnungen erläutert, bei denen
-
1 eine schematische Darstellung einer Vorrichtung gemäß einem Ausführungsbeispiel;
-
2 eine schematische Darstellung einer Vorrichtung gemäß einem Ausführungsbeispiel; und
-
3 ein Flussdiagramm gemäß einem Ausführungsbeispiel zeigen.
-
Unter Bezugnahme auf 1 wird nun ein Ausführungsbeispiel mit einer Vorrichtung 100 erläutert, die einen nicht-flüchtigen Speicher 102 und einer Steuereinheit bzw. Controller 104 aufweist. Der nicht-flüchtige Speicher 102 kann Speicherzellen mit Feldeffekt-Transistoren als Daten speichernde Einheit aufweisen. Beispielsweise kann der nicht-flüchtige Speicher ein Flash-Speicher sein. Der nicht-flüchtige Speicher 102 ist bei einem Ausführungsbeispiel ein Flash-Speicher. Wie bereits oben erwähnt sind Flash-Speicher Speicher, die Informationen durch Programmieren von Feld-Effekt-Transistoren mit floating Gate speichern können. Feld-Effekt-Transistoren mit floating Gate weisen typischerweise eine oder mehrere Hochspannungspumpen auf, um die für das Programmieren erforderlichen Spannungen zu erzeugen. Das Programmieren von Flash-Speicher kann beispielsweise ausgehend von einem gelöschten Zustand (Erase-Zustand), bei dem alle Zellen eine logische Null aufweisen, erfolgen. Es versteht sich jedoch, dass in anderen Ausführungsbeispielen ein Programmieren ausgehend von einem gelöschten Zustand erfolgen kann, bei dem alle Zellen eine logische Eins aufweist. Der nicht-flüchtige Speicher 102 kann in einen oder mehrere Blöcke unterteilt sein, die wiederum in mehrere Untereinheiten, beispielsweise Pages, Sektoren bzw. Blöcke eingeteilt werden können. Typischerweise wird bei einem Flash-Speicher ein Programmieren für eine gesamte Page und ein Löschvorgang für einen gesamten Block bzw. Sektor durchgeführt.
-
Die Steuereinheit 104 ist konfiguriert, um den nicht-flüchtigen Speicher 102 zu steuern. Die Steuereinheit 104 kann ferner auch noch weitere Funktionen bereitstellen, die sich auf den nicht-flüchtigen Speicher 102 beziehen können oder auch außerhalb des nicht-flüchtigen Speichers 102 liegen können. Die Steuereinheit 104 kann aus mehreren Einheiten zusammengesetzt sein, die ferner auch räumlich voneinander getrennt sein können. Bei einem Ausführungsbeispiel kann die Steuereinheit 104 eine oder mehrere Schnittstellen mit entsprechenden Funktionalitäten aufweisen.
-
Die Steuereinheit 104 kann mittels Software oder Firmware programmierbar oder teilweise programmierbar sein oder rein hardware-mäßig ausgestaltet sein beispielsweise in der Form einer State-Machine. Die Steuereinheit 104 kann bei Ausführungsbeispielen ein oder mehrere Register aufweisen, um Informationen zu speichern.
-
Die Steuereinheit 104 kann konfiguriert sein, um elektrische Spannungen und/oder Ströme für ein Löschen von Speicherzellen, ein Programmieren von Daten in die Speicherzellen oder ein Auslesen von Daten zu erzeugen. Die Steuereinheit 104 kann ferner Zeitabläufe für die oben genannten Funktionen festlegen und andere Steuerung- oder Ablauffunktionen für den nicht-flüchtigen Speicher 102 übernehmen.
-
Die Steuereinheit 104 ist konfiguriert, um ein Umschalten von einem ersten Programmiermodus für den nicht-flüchtigen Speicher 102 in einen zweiten Programmiermodus basierend auf einem Steuersignal durchzuführen. Unter Steuersignal kann hierin sowohl eine vorbestimmte Information bzw. Datenwert, bei deren Auftreten beispielsweise in einem Register das Umschalten des Programmiermodus erfolgt, als auch jegliche andere Art von geeigneten Signalen verstanden werden. Die Steuereinheit 104 ist bei einem Ausführungsbeispiel konfiguriert, um in dem ersten Programmiermodus mehrmalige Programmiervorgänge für das Programmieren eines Datenwerts in eine Speicherzelle durchführen zu können, indem beispielsweise nach jedem Programmierimpuls die aufgebrachte Ladung bzw. ein auf die aufgebrachte Ladung hinweisender Messwert erfasst wird und basierend darauf eine oder mehrere Wiederholungen des Programmierimpulses durchgeführt wird bzw. werden. Nach dem Umschalten in den zweiten Programmiermodus wird bei diesem Ausführungsbeispiel lediglich ein einziger Programmierimpuls angelegt unabhängig, ob für alle programmierten Speicherzellen mit diesem einzigen Programmierimpuls die entsprechenden Norm-Datenhaltezeiten erreicht wurde oder nicht.
-
Bei einem Ausführungsbeispiel wird in dem zweiten Programmiermodus kein Überprüfen der aufgebrachten Ladung durchgeführt. Ebenso werden bei einem Ausführungsbeispiel auch keine weiteren Programmierschritte durchgeführt, die im ersten Programmiermodus durchgeführt oder teilweise durchgeführt werden. Da die Daten sequentiell programmiert bzw. geschrieben werden, können dadurch Daten wesentlich schneller in den nicht-flüchtigen Speicher 102 programmiert werden bzw. eine Datenprogrammierrate bzw. Datenschreibrate kann erhöht werden, da im Gegensatz zu dem ersten Programmiermodus das Einprogrammieren der Daten nach dem ersten Programmierimpuls beendet ist und nicht auf das Nachprogrammieren bzw. Re-Programmieren von Speicherzellen gewartet werden muss, was die Programmierzeit für Daten gegenüber einem Schreiben mit einem einzigen Programmierimpuls um einen entsprechenden Faktor erhöht.
-
Die obige Vorgehensweise ist beispielsweise dann besonders vorteilhaft, wenn ein Ausnahmezustand bzw. Notfallzustand auftritt, bei dem eine externe Versorgung mit elektrischer Energie für eine Baugruppe oder andere Einheiten, auf denen der nichtflüchtige Speicher angeordnet ist, nicht mehr zur Verfügung steht. Bei einem solchen Fall ist es meist erforderlich oder wünschenswert, bestimmte Daten mit einem bestimmten Datenvolumen vor dem völligen Versagen auf dem nicht-flüchtigen Speicher 102 zu speichern. Solche Fälle können beispielsweise bei einem Zusammenstoß (Crash) eines Gegenstands mit einem anderen Gegenstand, beispielsweise bei einem Zusammenstoß zweier Verkehrsmittel wie beispielsweise zweier Automobil-Fahrzeuge, auftreten, bei dem die Versorgungsbatterie des Verkehrsmittels abgerissen wird und daher eine Energieversorgung für den nicht-flüchtigen Speicher 102 lediglich für eine geringe verbleibende Zeit durch interne Kondensatoren bzw. Kapazitäten auf der Baugruppe bereitgestellt wird. In einem solchen Fall ist es aus technischen und/oder versicherungsrechtlichen Gründen erforderlich oder wünschenswert, bestimmte Daten über das Verhalten des Verkehrsmittels, beispielsweise über das Auslösen eines Airbags, auf dem nicht-flüchtigen Speicher 102 zu speichern, um zu erlauben, dass dieselben nach dem Zusammenstoß aus dem nicht-flüchtigen Speicher 102 ausgelesen und analysiert bzw. bewertet werden können. Entsprechend andere Notfallzustände können beispielsweise auftreten, wenn eine Datenverarbeitungsvorrichtung oder Computer aus großer Höhe fallengelassen wird, und dabei die Batterie abgerissen oder zerstört wird. Das Programmieren mit nur einem Programmierimpuls ermöglicht dabei für nahezu alle Speicherzellen eine Mindestdatenhaltezeit, die ausreichend ist, um zumindest über einen bestimmten Zeitraum ein Auslesen der Daten zu gewährleisten. Dadurch kann bei dem Auftreten eines Notfalls, wie beispielsweise dem Ausfall der Energieversorgung durch einen Zusammenstoß, ein schnelles Programmieren der Daten in dem zweiten Programmiermodus erfolgen, bei dem jedoch ein Auslesen der programmierten Daten aus den Speicherzellen zumindest über einen bestimmten Zeitraum gewährleistet ist. Somit wird im Notfall sichergestellt, dass bestimmte Daten geschrieben und später ausgelesen werden können. Da nach einem Notfall die Daten typischerweise kurz nach dem Notfall beispielsweise zur Analyse oder Auswertung ausgelesen werden, ist das Schreiben der Daten in dem zweiten Programmiermodus und die damit verbundene reduzierte Datenhaltezeit vollkommen ausreichend, um die Datensicherheit für die Daten, die bei dem Auftreten des Notfalls geschrieben werden sollen, zu gewährleisten.
-
Die oben beschriebene Vorgehensweise ermöglicht insbesondere auch, einen energiesparenden Programmierimpuls wie beispielsweise einen Fowler-Nordheim-Programmierimpuls zu verwenden, bei dem in dem ersten Programmiermodustypischerweise ein ein- oder mehrmaliges Nachprogrammieren von Speicherzellen zum Erreichen einer Normdatenhaltezeit erforderlich ist und damit eine lange Programmierdauer von bis zu 15 ms auftritt, und daraufhin bei dem Auftreten des Notfallzustands in den zweiten Programmiermodus zu Wechseln, bei dem lediglich ein einziger Programmierimpuls pro Speicherzelle durchgeführt wird wodurch zwar die Datenhaltezeit verringert bzw. die Normdatenhaltezeit nicht mehr erreicht werden kann, jedoch eine wesentlich schnellere Programmierung einer entsprechenden Datenmenge innerhalb des Zeitfensters möglich ist, das sich durch die fehlende externe Energieversorgung und das Umschalten auf die interne Energieversorgung mit geringer Kapazität ergibt. Dadurch wird zum Beispiel ermöglicht, für Anwendungen, wie beispielsweise Airbaganwendungen, bei denen in Notfallsituationen ein schnelles Programmieren erforderlich ist, auch Programmierverfahren wie beispielsweise ein Fowler-Nordheim-Programmierverfahren einzusetzen, die energiesparender sind aber im „normalen” Programmiermodus zur Erfüllung einer Norm-Datenhaltezeit eine längere Programmierzeit bzw. ein mehrmaliges Re-Programmieren einzelner Speicherzellen benötigen.
-
Bei anderen Ausführungsbeispielen kann in dem zweiten Programmiermodus anstelle des Programmierens mit einem einzigen Programmierimpuls ein Programmieren mit mehr als einem Programmierimpuls erfolgen, wobei die Anzahl von Programmierimpulsen in dem zweiten Programmiermodus geringer als die Anzahl von Programmierimpulsen im ersten Programmiermodus ist.
-
Ferner kann bei einem Ausführungsbeispiel in dem zweiten Programmiermodus ein Programmieren derart erfolgen, dass die zum Programmieren angelegte Spannung unterschiedlich zu der Spannung ist, die beim Programmieren in dem ersten Programmiermodus angelegt wird. So kann durch ein Erhöhen der Programmierspannung ebenfalls ein schnelleres Programmieren erreicht werden. Das Erhöhen der Programmierspannung kann bei Ausführungsbeispielen mit der Reduzierung der Anzahl von Programmierimpulsen kombiniert sein. Beispielsweise kann bei einem Ausführungsbeispiel in dem zweiten Programmiermodus ein Programmieren mit einem einzigen Programmierimpuls und erhöhter Programmierspannung erfolgen.
-
Bei Ausführungsbeispielen wird bei einem Auftreten des Steuersignals ein Löschvorgang (ERASE) zum Löschen von Speicherzellen der Speicherzelle beispielsweise zum Löschen einer Page abgebrochen, wobei in dem zweiten Programmiermodus der Löschvorgang nicht wieder automatisch aufgenommen wird. Ein Löschvorgang ist bei nicht-flüchtigen Speichern mit Feldeffekt-Transistoren als Datenspeicher, wie beispielsweise Flash-Speichern, erforderlich, um eine bestehende Programmierung zu löschen und eine erneute Programmierung durchführen zu können. Bei Flashspeichern wird der Löschvorgang Page-weise (oder Block-/Sektor-weise) durchgeführt, das heißt, bei einem Löschvorgang wird stets eine gesamte Page gelöscht bzw. in den gelöschten Zustand gebracht. Ein sofortiger Abbruch dieses Löschvorgangs ermöglicht einerseits einen Verbrauch von elektrischer Energie für Vorgänge, die im Notfallzustand nicht unbedingt erforderlich sind, zu vermeiden und andererseits ein schnelleres Schreiben, der Daten. Im Gegensatz zu bekannten Verfahren wird hierbei der Löschvorgang nicht unterbrochen sondern abgebrochen, d. h. es wird nicht versucht, den Löschvorgang wiederaufzunehmen. Dies hat den Vorteil, dass in dem zweiten Programmiermodus zwischen zwei Aufträgen zum Programmieren von Daten die Steuereinheit 104 nicht Zeit und Energie damit verschwendet, den Löschvorgang wieder aufzunehmen, sondern es wird in dem zweiten Programmiermodus eine Zeit- und Energieoptimierung auf die Programmierung der zu programmierenden Daten durchgeführt. Bei Ausführungsbeispielen kann der Programmier-Status, d. h. z. B. gelöscht oder programmiert, in einem speziellen Speicherbereich, beispielsweise einer speziellen Status-Page in dem nicht-gelöschten Sektor gespeichert sein, wodurch das Abbrechen des Löschvorgangs nicht kritisch ist. Bei anderen Ausführungsbeispielen, bei denen eine solche Aufzeichnung in nicht-gelöschten Sektoren nicht erfolgt, kann auch in Kauf genommen, dass durch das Abbrechen des Löschvorgangs Speicherzellen einen Zustand aufweisen können, der als ungültig oder invalid bezeichnet wird, d. h. bei dem keine Information darüber gespeichert ist, ob die Speicherzelle bzw. ein Speicherzellenbereich gelöscht oder programmiert ist.
-
Gemäß einem Ausführungsbeispiel sind die Daten, die während des zweiten Programmiermodus einprogrammiert werden Daten, die sich auf eine Notfallsituation beziehen, beispielsweise Daten in Zusammenhang mit einem Zusammenstoß eines Fahrzeugs wie beispielsweise Airbag-bezogene Daten. Bei einem Ausführungsbeispiel werden ausschließlich Daten, die sich auf eine Notfallsituation beziehen, programmiert.
-
Erst wenn sich beispielsweise herausstellt, dass der Notfallzustand irrtümlich angenommen wurde, beispielsweise wenn kein Zusammenstoss sondern lediglich ein leichtes Anrempeln an eine Bordsteinkante erfolgte, oder wenn lediglich eine kurzzeitige Unterbrechung der Energieversorgung erfolgte, wird bei einem Ausführungsbeispiel der abgebrochene Löschvorgang wiederholt, um sicherzustellen, dass der nicht-flüchtige Speicher 102 keine Speicherzellen mit irregulärem oder illegalem Zustand aufweist.
-
Ebenso werden die während des zweiten Programmiermodus programmierten Daten als ungültig markiert, da aufgrund der nicht erfolgten Überprüfung der Ladung keine Sicherheit besteht, dass die programmierten Daten über die Norm-Datenhaltezeit, die beispielsweise 5 Jahre sein kann, erhalten werden können.
-
Bei Ausführungsbeispielen wird das Steuersignal zum Umschalten basierend auf Messgrößen oder Messsignale von Sensoren durchgeführt. Bei dem oben beschriebenen Ausführungsbeispiel bei dem bei einem Zusammenstoß ein Umschalten erfolgt, können diese Messgrößen beispielsweise die gleichen Messwerte oder Messgrößen sein, die bei der Entscheidung über das Auslösen eines Airbags in Betracht gezogen werden. Derartige Messgrößen umfassen beispielsweise Messgrößen von Beschleunigungssensoren, Kraftsensoren etc. Hierbei kann die Steuereinheit 104 beispielsweise ebenfalls die Funktionen zum Steuern des Airbags übernehmen. Das heißt, wenn die Steuereinheit 104 bestimmt, dass ein Airbag ausgelöst werden soll, wird basierend auf dem Auslösen ebenfalls das Steuersignal zum Umschalten von dem ersten in den zweiten Programmiermodus erzeugt.
-
Unter Bezugnahme auf 2 wird nun ein Ausführungsbeispiel erläutert, bei dem die Steuereinheit 104 aus mehreren einzelnen Steuereinheiten 200 und 204 besteht, die über eine Schnittstelle 202 verbunden sind.
-
Bei dem in 2 gezeigten Ausführungsbeispiel ist die Steuereinheit 200 mit dem nicht-flüchtigen Speicher 102 gekoppelt, um die entsprechende Steuerung der Speicherfunktionen, wie beispielsweise das Auswählen von Speicherzellen, das Erzeugen der Programmier- oder Löschspannungen, das Auslesen von Daten etc. durchführen zu können. Ein Ausgang der Steuereinheit 200 ist mit einem der Schnittstelle 202 gekoppelt. Die Schnittstelle 202 ist ferner mit der Steuereinheit 204 gekoppelt, um Befehle oder Informationen von der Steuereinheit 204 zu empfangen. Die Steuerung 204 kann beispielsweise ein Mikrocontroller sein, der eine oder mehrere Funktionen ausführen kann. Die Steuereinheit 204 kann beispielsweise eine Airbag-Steuereinheit sein, die Funktionen zum Steuern und Überwachen eines Airbags durchführt.
-
Im Betrieb sendet die Steuerung 204 Befehle oder Informationen an die Schnittstelle 202. Bei einem Ausführungsbeispiel implementiert die Schnittstelle 202 Interpreter-Funktionen, um die von der Steuerung 204 empfangene Befehle oder Informationen in Befehle oder Informationen umzuwandeln, die von der Steuereinheit 200 interpretiert werden können. Die Funktionen, die von der Schnittstelle 202 ausgeführt werden, können beispielsweise über Software oder auf andere Weise programmiert werden. Ebenso können die Steuereinheiten 200 und 204 über Software oder auf andere Weise programmierbar sein.
-
Das Vorsehen der Schnittstelle 202 erhöht die Flexibilität und ermöglicht, dass die Steuereinheit 204 durch andere Typen von Steuereinheiten 204 ausgetauscht werden kann, ohne dass Befehlsfunktionen in der Steuereinheit 200 verändert werden müssen. Es ist dann lediglich ein Anpassen in der Schnittstelle 202 erforderlich. Die Steuereinheit 204 kann beispielsweise ein allgemeiner Mikrocontroller oder ein auf bestimmte Aufgaben spezialisierter Mikrocontroller, wie beispielsweise ein Airbag-Controller sein. Die Steuereinheit 200 kann ferner ebenfalls als ein Controller ausgebildet sein oder als programmierbare Schnittstelle etc.
-
Das Steuersignal wird bei einem Ausführungsbeispiel in der Steuereinheit direkt von der Steuerung 204 zu der Steuereinheit 200 übertragen. Dies kann beispielsweise derart erfolgen, dass eine vorbestimmte Information bzw. Datenwert von der Steuereinheit 204 erzeugt wird und über die Schnittstelle 202 in ein oder mehrere Register der Steuereinheit 200 geschrieben wird. Bei einem Ausführungsbeispiel kann für jedes Speichermodul, beispielsweise jedes Flashmodul, ein entsprechendes Register vorgesehen sein. Das Vorhandensein der vorbestimmten Information in dem Register wird von der Steuereinheit 200 fortlaufend überprüft und bei Vorliegen des vorbestimmen Werts im Register wird ein Umschalten von dem ersten Modus in den zweiten Modus durchführt. Bei einem Ausführungsbeispiel wird eine direkte Kommunikation von Software, die auf der Steuereinheit 204 läuft, mit der Steuereinheit 200 ermöglicht. Ferner können bei einem Ausführungsbeispiel spezielle Befehle vorgesehen sein, die von der Steuereinheit 204 zu der Schnittstelle 202 gesendet werden, um das Umschalten von dem ersten in den zweiten Programmiermodus zu bewirken.
-
Unter Bezugnahme auf 3 wird nunmehr ein Ablaufdiagramm 300 gemäß einem Ausführungsbeispiel der vorliegenden Anmeldung beschrieben.
-
Bei einem Schritt 302 wird zunächst ein Programmieren von Daten in dem ersten Programmiermodus, der einen „normalen” Programmiermodus darstellt durchgeführt. Bei 304 wird überprüft, ob das Steuersignal zum Umschalten auf den zweiten Programmiermodus aufgetreten ist. Ist dies nicht der Fall, wird in dem Schritt 302 weiterhin in dem ersten Programmiermodus programmiert. Bei 306 wird entschieden, ob ein laufender Löschvorgang, beispielsweise für einen Sektor des nicht-flüchtigen Speichers 102, vorliegt. Liegt ein Löschvorgang vor, wird der Löschvorgang bei 308 abgebrochen und bei 310 ein Umschalten in den Programmiermodus durchgeführt. Liegt in 306 kein laufender Löschvorgang vor, so wird direkt zu Schritt 310 gesprungen und das Umschalten in den zweiten Programmiermodus durchgeführt. Nach dem Umschalten werden in 312 Daten, wie beispielsweise Crash-Daten in dem zweiten Programmiermodus programmiert. Nachdem die Daten in 312 programmiert wurden, wird bei 314 überprüft, ob ein weiteres Steuersignal vorliegt. Das weitere Steuersignal stellt dabei ein Steuersignal dar, welche beispielsweise anzeigt, dass eine Notfallsituation irrtümlich oder fehlerhaft angenommen wurde. Sofern dies nicht der Fall ist, verbleibt das System in dem zweiten Programmiermodus.
-
Tritt jedoch das weitere Steuersignal auf, so wird in 316 bestimmt, ob ein Abbrechen des Löschvorgangs bei 308 stattgefunden hat. Sofern ein solcher Löschvorgang stattgefunden hat wird bei 318 der Löschvorgang erneut durchgeführt, bei 320 in den ersten Programmiermodus umgeschaltet und die während des zweiten Programmiermodus einprogrammierten Daten als ungültig markiert. Sofern bei 316 bestimmt wird, dass ein laufender Löschvorgang nicht abgebrochen wurde, wird direkt zu Schritt 320 gesprungen und in den ersten Programmiermodus umgeschaltet und bei 322 die während des zweiten Programmiermodus einprogrammierten Daten als ungültig erklärt.
-
Es sei an dieser Stelle erwähnt, dass viele Modifikationen des dargestellten Ablaufs möglich sind einschließlich einer Vertauschung von Reihenfolgen oder eines Einfügens zusätzlicher Schritte. Beispielsweise können nach dem Umschalten bei 320 in den ersten Programmiermodus Datenwerte der in dem zweiten Programmiermodus in Speicherzellen geschriebenen Daten nach dem Umschalten in den ersten Programmiermodus erneut in andere Speicherbereiche, beispielsweise in andere Pages, programmiert werden. Diese Daten weisen dann eine ausreichende Norm-Datenhaltezeit auf, da sie überprüft und gegebenenfalls re-programmiert werden.