-
Die
Erfindung betrifft ein Verfahren zum Einschreiben von Daten in einen nicht-flüchtigen
Speicher eines mikroprozessorgestützten tragbaren Datenträgers,
insbesondere einer Chipkarte, bei dem die Daten blockweise an den
Datenträger übertragen und in den nicht-flüchtigen
Speicher geschrieben werden. Die Erfindung betrifft ferner ein Computerprogrammprodukt
sowie einen tragbaren Datenträger, insbesondere eine Chipkarte,
mit einem nicht-flüchtigen Speicher und einem Mikroprozessor,
bei welchem Daten blockweise an den Datenträger übertragbar und
mikroprozessorgestützt in den nicht-flüchtigen Speicher
schreibbar sind.
-
Tragbare
Datenträger in Form einer Chipkarte sind z. B. Zugangsberechtigungskarten,
sog. SIM(Subscriber Indentity Module)-Karten, für Mobilfunknetzwerke.
Ein tragbarer Datenträger in Form einer Chipkarte weist üblicherweise
in einem Kartenkörper einen integrierten Halbleiterbaustein
sowie elektrisch leitende Kontaktflächen als Kopplungselemente
zur Kommunikation des Kartenchips mit externen Geräten,
wie z. B. Kartenschreib/Lesegeräten, Kommunikationsendgeräten,
Bankterminals etc., auf. Als Kopplungselement zur Kommunikation
des Kartenchips mit den externen Geräten können
alternativ oder zusätzlich auch eine oder mehrere Antennen zur
kontaktlosen Datenübertragung vorgesehen sein. In dem Halbleiterbaustein
des tragbaren Datenträgers befinden sich der eigentliche
Mikroprozessor (CPU) sowie ein programmierbarer nicht-flüchtiger Speicher,
z. B. ein EEPROM oder ein Flash-Speicher, in den Daten einschreibbar
sind. Daneben kann der Halbleiterbaustein einen Festwertspeicher
sowie einen flüchtigen Arbeitsspeicher für den
Prozessor umfassen.
-
Das
Einschreiben von Daten in den nicht-flüchtigen Speicher,
das auch als Programmieren, Beschreiben oder Laden des Speichers
bezeichnet wird, er folgt über Programmiergeräte,
die über die Kopplungselemente des Datenträgers
mit dem Halbleiterbaustein der Karte kommunizieren. Das Einschreiben
von Daten, die sich von Karte zu Karte nicht ändern, wird
Initialisierung genannt. Das Einschreiben von Daten, die spezifisch
für den jeweils einzelnen Datenträger oder eine
bestimmte Person sind, wird Personalisierung genannt. Im Rahmen
der Personalisierung werden beispielsweise Identifizierungsnummern
oder geheime Schlüssel, die im Zusammenhang mit Verschlüsselungsalgorithmen
verwendet werden, in dem Datenträger hinterlegt. Personalisierungsdaten
können auch kunden- bzw. kundengruppenspezifischer Programmcode
sein.
-
Das
Einschreiben dieser Daten in den nicht-flüchtigen Speicher
nimmt verhältnismäßig viel Zeit in Anspruch
und begrenzt damit den Durchsatz bei der Produktion der tragbaren
Datenträger. Die Zeit für das Einschreiben von
Daten in den nicht-flüchtigen Speicher wird bestimmt durch
den Schreibzugriff, der nicht beliebig schnell erfolgen kann. So
ist bei einem Schreibzugriff auf einen nicht-flüchtigen
Speicher eine Schreibspannung (Programmierspannung) erforderlich,
welche höher ist als eine Versorgungsspannung des Halbleiterbausteins,
und die intern in dem Halbleiterbaustein über eine integrierte
Ladungspumpe aus der Versorgungsspannung generiert wird. Die Zeit
für einen Schreibzugriff ist spezifisch für den
Typ des Halbleiterbausteins. Für ein EEPROM liegt diese
Zeit zwischen 3 ms und 10 ms. Mit einem Schreibzugriff kann üblicherweise
eine sog. Page (Seite) des nicht-flüchtigen Speichers,
welche mehrere Speicherzellen umfasst, auf einmal beschrieben werden.
Eine solche Page kann beispielsweise mehrere Byte umfassen.
-
Um
die Geschwindigkeit bei der Initialisierung und/oder Personalisierung
des nicht-flüchtigen Speichers des tragbaren Datenträgers
zu erhöhen, schlägt die
DE 199 28 468 C2 vor, einen
Datenblock zu empfangen, in einem I/O-Buffer zwischenzuspeichern
und anschließend in einen Programmier-Zwischenspeicher
zu kopieren. Sobald ein j-ter Datenblock in den Programmier-Zwischenspeicher
kopiert wurde, wird bereits der nächste Datenblock (j +
1) empfangen, während zumindest teilweise gleichzeitig
die Programmierung des nicht-flüchtigen Speichers mit den
Daten des zuvor empfangenen Datenblocks (j) aus dem Programmier-Zwischenspeicher erfolgt.
Somit werden während der Datenübertragung zum
I/O-Buffer gleichzeitig zuvor gesendete Daten in den nicht-flüchtigen
Speicher eingeschrieben.
-
Zur
Lösung der gleichen Problematik schlägt die
EP 0 971 361 B1 vor,
mehrere Ladungspumpen vorzusehen, um ein teils parallelisiertes
Schreiben in den nicht-flüchtigen Speicher bewirken zu
können.
-
Es
ist daher Aufgabe der vorliegenden Erfindung, ein Verfahren zum
Einschreiben von Daten in einen nicht-flüchtigen Speicher
eines mikroprozessorgestützten tragbaren Datenträgers,
insbesondere einer Chipkarte, sowie einen tragbaren Datenträger anzugeben,
bei welchem die Initialisierung und/oder Personalisierung weiter
beschleunigt wird. Es ist ferner Aufgabe der vorliegenden Erfindung,
ein Computerprogrammprodukt anzugeben.
-
Diese
Aufgaben werden durch ein Verfahren mit den Merkmalen des Patentanspruches
1, ein Computerprogrammprodukt mit den Merkmalen des Patentanspruches
11 sowie einen tragbaren Datenträger mit den Merkmalen
des Patentanspruches 12 gelöst. Vorteilhafte Ausgestaltungen
ergeben sich aus den abhängigen Patentansprüchen.
-
Bei
einem erfindungsgemäßen Verfahren zum Einschreiben
von Daten in einen nicht-flüchtigen Speicher eines mikroprozessorgestützten
tragbaren Datenträgers, insbesondere einer Chipkarte, bei
dem die Daten blockweise an den Datenträger übertragen und
in den nicht-flüchtigen Speicher geschrieben werden, werden
ein erster Teilbereich des nicht-flüchtigen Speichers beschrieben,
ein zweiter Teilbereich des nicht-flüchtigen Speichers
beschrieben, und eine Prüfsumme für die aus dem
beschriebenen ersten Teilbereich ausgewiesenen Inhalte ermittelt,
während der Schritt des Schreibens des zweiten Teilbereichs
des nicht-flüchtigen Speichers erfolgt.
-
Diesem
Vorgehen liegt die Überlegung zu Grunde, dass die Programmie
rung des nicht-flüchtigen Speichers während der
Initialisierung und/oder der Personalisierung beschleunigt werden
kann, wenn die Ermittlung der Prüfsumme für einen
jeweiligen Teilbereich nicht erst im Anschluss an das vollständige
Beschreiben des nicht-flüchtigen Speichers vorgenommen
wird, sondern parallel zum Beschreiben eines gerade geschriebenen
Teilbereichs des nicht-flüchtigen Speichers.
-
Die
Bestimmung der Prüfsumme dient dazu, Fehler bei der Übertragung
von Daten von einem Programmiergerät an den nicht-flüchtigen
Speicher erkennen zu können. Hierzu wird beispielsweise
vor Beginn der Übertragung eines Datenblocks die Prüfsumme,
auch CRC(Cyclic Redundancy Check)-Wert genannt, berechnet. Nach
Abschluss der Datenübertragung wird die Prüfsumme
erneut errechnet. Anschließend werden diese beiden Prüfsummen
verglichen. Die Prüfsumme ist so ausgelegt, dass Fehler bei
der Übertragung der Daten, wie sie beispielsweise durch
Rauschen auf der Kommunikationsleitung verursacht werden könnten,
fast immer entdeckt werden.
-
Durch
die Parallelisierung des Beschreibens eines Teilbereichs des nicht-flüchtigen
Speichers und der Ermittlung der Prüfsumme für
die aus einem bereits beschriebenen anderen Teilbereich ausgelesenen
Inhalte kann die Programmierung des nicht-flüchtigen Speichers
beschleunigt werden.
-
Sofern
zum Beschreiben des ersten und des zweiten Teilbereichs des nicht-flüchtigen
Speichers eine gemeinsame Ladungspumpe verwendet wird, hat das Auslesen
der in dem ersten Teilbereich geschriebenen Inhalte vor dem Beschreiben
des zweiten Teilbereichs des nicht-flüchtigen Speichers
zu erfolgen, da während des Programmiervorganges nicht auf
den nicht-flüchtigen Speicher lesend zugegriffen werden
kann. In einer alternativen Ausgestaltung erfolgt während
des Beschreibens des ersten Teilbereichs des nicht-flüchtigen
Speichers ein Auslesen des zweiten Teilbereichs, oder umgekehrt.
Dieses Vorgehen erfordert das Vorhandensein einer weiteren Ladungspumpe,
so dass während der Programmierung eines der Teilbereiche
auf einen anderen Teilbereich des nicht-flüchtigen Speichers
zugegriffen werden kann.
-
Zweckmäßigerweise
weist der tragbare Datenträger in einer weiteren Ausgestaltung
zum Beschreiben des nicht-flüchtigen Speichers eine erste und
eine zweite Ladungspumpe auf, wobei zum Beschreiben des ersten Teilbereichs
des nicht-flüchtigen Speichers die erste Ladungspumpe und
zum Beschreiben des zweiten Teilbereichs des nicht-flüchtigen
Speichers die zweite Ladungspumpe verwendet wird. Das Vorsehen zweier
Ladungspumpen ermöglicht eine weitere Beschleunigung des
Programmiervorganges während der Initialisierung und/oder
Personalisierung des tragbaren Datenträgers.
-
Zur
weiteren zeitlichen Optimierung des Programmiervorganges ist dazu
vorgesehen, dass der erste Teilbereich des nicht-flüchtigen
Speichers Speicherseiten (Pages) mit ersten, insbesondere geradzahligen,
Adressen und der zweite Teilbereich des nicht-flüchtigen
Speichers Speicherseiten mit zweiten, insbesondere ungeradzahligen,
Adressen umfasst. Hierdurch kann das Be schreiben des ersten Teilbereichs
und des zweiten Teilbereichs des nicht-flüchtigen Speichers
abwechselnd erfolgen.
-
Parallel
zum Schreiben mit der zweiten Ladungspumpe werden die gerade mit
der ersten Ladungspumpe geschriebenen Daten ausgelesen. Für diese
Daten kann anschließend die Prüfsumme berechnet
werden, unabhängig davon, ob die erste und/oder die zweite
Ladungspumpe für einen Programmiervorgang verwendet werden.
-
Gemäß einer
weiteren Ausgestaltung dieser Variante wird während des
Beschreibens des ersten Teilbereichs des nicht-flüchtigen
Speichers ein nächster Datenblock empfangen, der in den
zweiten Teilbereich des nicht-flüchtigen Speichers einzuspeichern
ist, oder umgekehrt.
-
Um
die Verarbeitung der Prüfsumme zu beschleunigen kann weiter
vorgesehen sein, dass beim Beschreiben des zweiten Teilbereichs
des nicht-flüchtigen Speichers ein Prüfsummenwert
für den letzten in den ersten Teilbereich des nicht-flüchtigen
Speichers geschriebenen Datenblock empfangen wird, der mit der ermittelten
Prüfsumme auf Übereinstimmung verglichen wird,
oder umgekehrt. Die Verifizierung der Prüfsumme kann gemäß dieser Ausgestaltung
durch den Mikroprozessor des tragbaren Datenträgers vorgenommen
werden.
-
Eine
weitere zweckmäßige Ausgestaltung sieht vor, dass
der erste und der zweite Teilbereich des nicht-flüchtigen
Speichers zumindest teilweise parallel beschrieben werden. Diese
Ausgestaltung setzt voraus, dass entsprechende Mittel in dem tragbaren
Datenträger vorgesehen sind, welche die Parallelisierung
des Schreibprozesses erlauben.
-
Ferner
kann vorgesehen sein, dass die Prüfsumme für den
beschriebenen ersten und zweiten Teilbereich des nicht-flüchtigen
Speichers gemeinsam berechnet wird, wenn ein weiterer Teilbereich des
nicht-flüchtigen Speichers beschrieben wird. Hierdurch
ergibt sich eine weitere Beschleunigung des Programmiervorganges
des nicht-flüchtigen Speichers.
-
Von
der Erfindung ist ferner ein Computerprogrammprodukt umfasst, das
maschinenlesbare Programmbefehle für eine Steuerungseinheit
eines Datenträgers aufweist, die diese zur Ausführung
eines erfindungsgemäßen Ver fahren veranlassen. Das
Computerprogrammprodukt kann z. B. in Form einer Diskette, einer
CD-ROM usw. vorliegen. Es kann jedoch auch durch ein Computersignal
verkörpert sein, welches in einem Computernetzwerk übertragen
wird.
-
Gemäß einem
weiteren Aspekt der Erfindung ist ein tragbarer Datenträger,
insbesondere eine Chipkarte, mit einem nicht-flüchtigen
Speicher und einem Mikroprozessor, bei welchem Daten blockweise
an den Datenträger übertragbar und mikroprozessorgestützt
in den nicht-flüchtigen Speicher schreibbar sind, dazu
ausgebildet, einen ersten Teilbereich des nicht- flüchtigen
Speichers zu beschreiben, einen zweiten Teilbereich des nicht-flüchtigen Speichers
zu beschreiben, und eine Prüfsumme für die aus
dem beschriebenen ersten Teilbereich ausgelesenen Inhalte zu ermitteln,
während der Schritt des Schreibens des zweiten Teilbereichs
des nicht-flüchtigen Speichers erfolgt. Ein erfindungsgemäßer
tragbarer Datenträger weist damit die gleichen Vorteile
auf, wie sie in Verbindung mit dem erfindungsgemäßen
Verfahren beschrieben wurden. Der erfindungsgemäße
tragbare Datenträger erlaubt die Ermittlung der Prüfsumme
für aus dem geschriebenen ersten Teilbereich ausgelesenen
Inhalte, während der Schritt des Schreibens des zweiten
Teilbereichs des nicht-flüchtigen Speichers erfolgt und
damit eine schnellere Programmierung des Datenträgers.
-
In
einer weiteren konkreten Ausgestaltung weist der Datenträger
zum Beschreiben des ersten Teilbereichs des nicht-flüchtigen
Speichers eine erste Ladungspumpe und zum Beschreiben des zweiten Teilbereichs
des nicht-flüchtigen Speichers eine zweite Ladungspumpe
auf. Darüber hinaus kann der erfindungsgemäße
Datenträger weitere Mittel umfassen, die die Ausführung
des erfindungsgemäßen Verfahrens erlauben.
-
Die
Erfindung wird nachfolgend näher anhand der Figuren erläutert.
Es zeigen:
-
1 eine
schematische Darstellung eines ersten, möglichen Ablaufs
bei der Programmierung eines nicht-flüchtigen Speichers
eines mikroprozessorgestützten tragbaren Datenträgers,
-
2 eine
schematische Darstellung eines zweiten, möglichen Ablaufs
bei der Programmierung des nicht-flüchtigen Speichers des
Datenträgers, und
-
3 eine
schematische Darstellung eines dritten möglichen Ablaufs
bei der Programmierung des nicht-flüchtigen Speichers des
Datenträgers.
-
Der
Erfindung liegt ein mikroprozessorgestützter, tragbarer
Datenträger, insbesondere eine Chipkarte, zu Grunde, welche
aus dem Stand der Technik prinzipiell bekannt ist. Ein solcher,
in den Figuren nicht dargestellter, Datenträger umfasst
neben dem eigentlichen Mikroprozessor (CPU), einen nicht-flüchtigen
Speicher, z. B. ein EEPROM (Electrical Erasable Programable Read Only
Memory) oder einen Flash-Speicher. Daneben umfasst der Datenträger
in der Regel einen nicht programmierbaren Festwertspeicher (ROM),
welcher ein Betriebssystem des Datenträgers enthält.
Ferner ist ein flüchtiger Arbeitsspeicher (RAM) für
den Prozessor vorhanden. Die Kommunikation des Datenträgers
mit einem Programmiergerät zur Initialisierung und/oder
Personalisierung des nicht-flüchtigen Speichers und damit
des Datenträgers erfolgt beispielsweise über elektrische Kontaktflächen
und/oder kontaktlos über eine Antennenspule. Für
die Programmierung des nicht-flüchtigen Speichers sind
ferner – je nach vorzusehendem Ablauf bei der Initialisierung
und/oder Personalisierung – ein oder mehrere Ladungspumpen
vorgesehen, welche aus einer Versorgungsspannung des Datenträgers
eine Schreibspannung (sog. Programmierspannung) erzeugen können,
welche höher ist als die Versorgungsspannung des Halbleiterbausteins
des Datenträgers. Zur Beschleunigung der Programmierung,
z. B. während der Initialisierung und/oder Personalisierung,
ist vorgesehen, die hierzu notwendigen Vorgänge zu parallelisieren.
-
Gemäß dem
in 1 gezeigten schematischen Ablauf einer ersten
Variante der Erfindung erfolgt eine Parallelisierung des Einschreibens
von Daten und des Berechnen einer Prüfsumme für
die vorher geschriebenen Daten. Der nicht-flüchtige Speicher
NVM wird teilbereichsweise mit Daten beschrieben. Die Teilbereiche
TB0, TB1, TB2, etc. (allg. TBi) des nicht-flüchtigen Speichers
können beispielsweise Speicherseiten (Pages) entsprechen.
Jeder der Teilbereiche TBi weist eine Adresse auf, welche in den
Ausführungsbeispielen durch die Ziffer i nach „TB"
gekennzeichnet ist. Die Adressen bzw. Nummern teilen sich hiermit
in gerade bzw. ungerade Nummern 0, 2, 4, ... bzw. 1, 3, 5, ... auf.
Das Beschreiben der Teilbereiche TB0, TB1, TB2 erfolgt unter Steuerung
des Mikroprozessors CPU.
-
Gemäß 1 wird
zunächst der „gerade" Teilbereich TB0 durch den
Mikroprozessor CPU beschrieben (WrEP). Nach dem Schreibvorgang werden
die in den Teilbereich TB0 geschriebenen Daten ausgelesen: REP.
Im nächsten Schritt erfolgt das Beschreiben des ungeraden
Teilbereichs TB1: WrOP. Noch während der ungerade Teilbereich
TB1 geschrieben wird, erfolgt eine Ermittlung einer Prüfsumme
CRC für die aus dem beschriebenen Teilbereich TB0 ausgelesenen
Inhalte: Calc CRC TB0. Im Anschluss an das Schreiben des ungeraden
Teilbereichs TB1 erfolgt ein Auslesen der Daten: ROP. Im Anschluss
wiederholt sich das soeben beschriebene Vorgehen für den
nächsten geraden Teilbereich TB2: WrEP.
-
Das
im Zusammenhang mit 1 beschriebene Vorgehen lässt
sich dabei bei einem Datenträger vorsehen, welcher lediglich über
eine einzige Ladungspumpe verfügt. Da bekanntermaßen
ein Auslesen eines Teilbereichs nicht möglich ist, während
dieser programmiert wird, muss das Auslesen eines gerade programmierten
Teilbereichs im Anschluss an den Schreibvorgang erfolgen.
-
Im
Gegensatz dazu zeigen die Ausführungsbeispiele der 2 und 3 mögliche
Abläufe, welche bei Vorsehen zumindest einer weiteren Ladungspumpe
durchgeführt werden können. Hierbei ist eine erste
Ladungspumpe den Teilbereichen TB0, TB2, ... mit gerader Adresse
bzw. Nummer zugeordnet. Diese Teilbereiche werden auch als EP (Even
Page) bezeichnet. Demgemäß sind die Teilbereiche
TB1, TB3, ... mit ungerader Adresse bzw. Nummer der zweiten Ladungspumpe
zugeordnet. Teilbereiche mit einer ungeraden Adresse bzw. Nummer
sind mit OP (Odd Page) gekennzeichnet. Das Vorsehen zweiter Ladungspumpen
ermöglicht z. B. das zumindest teilweise parallele Schreiben
von Teilbereichen mit gerader bzw. ungerader Nummer bzw. Adresse.
-
Der
Ablauf gemäß 2 ist wie
folgt: Zunächst wird der gerade Teilbereich TB0 mit Daten
beschrieben: WrEP. Zeitverzögert wird der Teilbereich TB1
mit Daten beschrieben: WrOP. Noch während der Teilbereich
TB1 mit Daten beschrieben wird, können die Daten des Teilbereichs
TB0 für die Ermittlung einer Prüfsumme ausgelesen
werden: REP. Im Ausführungsbeispiel wird davon ausgegangen,
dass das Auslesen der Daten beendet ist, noch bevor das Beschreiben
des Teilbereichs TB1 abgeschlossen ist. Entsprechend kann bereits
mit dem Beschreiben des Teilbereichs TB2 begonnen werden: WrEP.
Während der Teilbereich TB2 beschrieben wird, ist der Schreibvorgang
des Teilbereichs TB1 abgeschlossen, so dass die darin geschriebenen
Daten gelesen werden: ROP. Noch während des Schreibvorgangs
des Teilbereichs TB2 beginnt das Schreiben des Teilbereichs TB3.
Parallel zum Schreiben der Teilbereiche TB2 und TB3 wird dann die
Prüfsumme CRC für die Teilbereiche TB0 und TB1
ermittelt (Calc CRC TB0 + TB1). Im Weiteren setzt sich das parallele
Schreiben und sukzessive Ermitteln der Prüfsumme wie oben beschrieben
fort.
-
3 zeigt
eine abgewandelte Variante des in 2 beschriebenen
Ablaufs, bei welchem ein abwechselndes Beschreiben gerader (TB0,
TB2) und ungerader (TB1, TB3) Teilbereiche erfolgt. Im Ausführungsbeispiel
wird zunächst der gerade Teilbereich TB0 durch den Mikroprozessor
CPU beschrieben: WrEP. Nach Beendigung des Schreibvorganges TB0
wird mit dem Schreiben des Teilbereichs TB1 begonnen. Parallel hierzu
erfolgt ein Auslesen der Daten des Teilbereichs TB0 (REP) und ein
anschließendes Ermitteln der Prüfsumme CRC für
den Teilbereich TB0 (Calc CRC TB0). Nach Beendigung des Schreibvorganges
des Teilbereichs TB1 erfolgt das Schreiben des geraden Teilbereichs
TB2 (WrEP), wobei parallel hierzu ein Auslesen der Daten des Teilbereichs
TB1 (REP) erfolgt. Parallel zum Schreiben des Teilbe reichs TB2 erfolgt
das Ermitteln der Prüfsumme für den Teilbereich
TB1 (Calc CRC TB1). In entsprechender Weise setzt sich das Beschreiben des
ungeraden Teilbereichs TB3 fort, usw.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste
der vom Anmelder aufgeführten Dokumente wurde automatisiert
erzeugt und ist ausschließlich zur besseren Information
des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen
Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt
keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- - DE 19928468
C2 [0005]
- - EP 0971361 B1 [0006]