-
ALLGEMEINER
STAND DER TECHNIK
-
Die
vorliegende Erfindung betrifft eine Speicherkarte und insbesondere
eine Speicherkarte, auf die Programmdaten heruntergeladen und in
einem nichtflüchtigen
Speicher gespeichert werden.
-
Speicherkarten
werden zum Lesen/Schreiben von Informationen mit digitalen Vorrichtungen, wie
beispielsweise Digitalkameras, PDAs, tragbaren Audio-Vorrichtungen,
Handys und Arbeitsplatzrechnern verwendet. Zwei Typen von Chips,
die ein Flash-Speicher und ein Controller sind, sind auf einer Speicherkarte
angebracht. Für
Flash-Speicher, die auf Speicherkarten angebracht sind, wurde in
letzter Zeit die Kapazität
in dem Ausmaß erhöht, dass
sie in der Lage sein werden, große Datenmengen zu speichern.
Zum gegenwärtigen
Zeitpunkt können
Speicherkarten jedoch nur Daten mit digitalen Vorrichtungen austauschen.
In einigen IC-Karten können
Anwendungsprogramme heruntergeladen und ausgeführt werden. Die Kapazität ihres
nichtflüchtigen Speichers
zum Speichern von Programmen ist jedoch viel kleiner als die Kapazität von Flash-Speichern,
die auf Speicherkarten angebracht sind.
-
KURZDARSTELLUNG
DER ERFINDUNG
-
Es
ist eine Aufgabe der vorliegenden Erfindung, eine Speicherkarte
bereitzustellen, deren Schaltungsumfang reduziert werden kann.
-
Eine
Speicherkarte gemäß der vorliegenden Erfindung
wird in Anspruch 1 definiert. Sie umfasst einen ersten nichtflüchtigen
Speicher, einen zweiten nichtflüchtigen
Speicher und einen Trennungsabschnitt, welcher die auf die Speicherkarte
heruntergeladenen Programmdaten-Datentypen voneinander trennt. Der
erste nichtflüchtige
Speicher weist eine vorgegebene Löscheinheit auf, welche die
kleinste Datenmenge ist, die mit einen Löschvorgang gelöscht werden
kann. Der zweite nichtflüchtige
Speicher weist eine weitere Löscheinheit
auf, welche die kleinste Datenmenge ist, die mit einem Löschvorgang gelöscht werden
kann und die größer ist
als die Löscheinheit
des ersten nichtflüchtigen
Speichers. Der Trennungsabschnitt trennt wenigstens den Teil der
Programmdaten, die auf die Speicherkarte heruntergeladenen wurden,
deren Überschreiben
durch das Programm möglich
ist, und speichert den getrennten Teil in dem ersten nichtflüchtigen
Speicher und speichert den restlichen Teil in dem zweiten nichtflüchtigen
Speicher.
-
Gemäß dieser
Speicherkarte werden beim Ausführen
des heruntergeladenen Programms die Programmdaten nur in dem ersten
nichtflüchtigen Speicher überschrieben
und nicht in dem zweiten nichtflüchtigen
Speicher überschrieben.
Somit ist durch das Überschreiben
von Variablen, die durch das Programm der Variablen, (d.h. Variablen,
welche die gleichen für
das Programm sind), oder Ähnlichem in
dem ersten nichtflüchtigen
Speicher überschrieben werden
können,
die erforderliche Puffergröße kleiner, als
wenn der Prozess an denjenigen Variablen durchgeführt würde, welche
die gleichen für
das Programm sind und nicht von dem Programm der Variablen, (d.h.
Variablen, welche die gleichen für
alle Objekte der Klasse sind), in dem zweiten nichtflüchtigen
Speicher überschrieben
werden können,
der eine große Löscheinheit
aufweist, und die Schaltung kann in ihrem Umfang verkleinert werden.
-
Des
Weiteren ist die Größe der Daten,
die zum Überschreiben
temporär
gepuffert werden, in dem ersten nichtflüchtigen Speicher kleiner als
in dem zweiten nichtflüchtigen
Speicher. Demzufolge kann die Pufferzeit zum Überschreiben kürzer gehalten
werden, als wenn der Überschreibprozess
in dem zweiten nichtflüchtigen
Speicher durchgeführt
würde, und
die zum Überschreiben
erforderliche Zeitdauer kann verkürzt werden.
-
Außerdem wird
die Datensicherheit verbessert, weil die heruntergeladenen Programmdaten
getrennt und in dem ersten nichtflüchtigen Speicher und in dem
zweiten nichtflüchtigen
Speicher gespeichert werden.
-
HAMANN
U: "Chip cards – the application
revolution" ELECTRON
DEVICES MEETING, 1997. TECHNICAL DIGEST., INTERNATIONAL WASHINGTON,
DC, USA, 7.–10.
Dez. 1997, NEW YORK, NY, IEEE, US, 7. Dezember 1997 (12.7.1997),
Seite 15–22,
XP010265446 ISBN: 0-7803-4100-7 betrifft allgemein eine Übersicht über den
aktuellen Stand der Chipkarten-Technologie und ihre Anwendung zusammen
mit Prognosen, wie sich diese entwickeln könnten. Insbesondere werden
gegenwärtige
und geplante Aktivi täten
der Halbleitersparte der Siemens-Gruppe in Verbindung mit ihrer
Zusammenarbeit mit Sun Microsystems in Bezug auf die Erstellung
einer optimalen Hardware-Lösung
für Java-Chipkarten
ausführlich
dargelegt.
-
WO
00/46666 beschreibt ein Befehls-Set in Verbindung mit den generierten
Operationscodes und einer Befehlsspezifikation, das geeignet ist
für die
Ausführung
von Java-Programmen auf Vorrichtungen mit eingeschränkten Ressourcen,
wie beispielsweise einer Smart Card.
-
US-A-5
491 827 betrifft die Bereitstellung eines tragbaren digitalen Systems,
dessen Inhalt geschützt
werden kann, wenn er aus dem tragbaren digitalen System entfernt
wird, das heißt,
eine sichere Anwendungskarte für
die gemeinsame Nutzung von Anwendungsdaten und Prozeduren durch
eine Vielzahl von Mikroprozessoren.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockschaltbild, das die gesamte Konfiguration des Speicherkartensystems
gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt.
-
2 und 3 sind
schematische Darstellungen, um den Prozess des Speicherns von Programmdaten
zu beschreiben, die von einer digitalen Vorrichtung auf der Speicherkarte
heruntergeladen werden.
-
4 zeigt
die Programmdaten, die in dem Flash-Speicher und dem EEPROM gespeichert
sind.
-
5A bis 5C sind
schematische Darstellungen, um die Prozedur zu beschreiben, von
der das Programm ausgeführt
wird.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Im
Folgenden werden hierin Ausführungsformen
der vorliegenden Erfindung ausführlich
unter Bezugnahme auf die Zeichnungen beschrieben. Identischen oder
entsprechenden Teilen in den Zeichnungen werden identische Bezugszeichen
zugewiesen und doppelte Beschreibungen davon unterlassen.
-
Gesamtkonfiguration
des Speicherkartensystems
-
1 ist
ein Blockschaltbild, das die Gesamtkonfiguration des Speicherkartensystems
gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt. In dem in 1 gezeigten
System wird eine Speicherkarte 1 in einen (nicht gezeigten) Schlitz
einer digitalen Vorrichtung 2 eingeschoben, (wie beispielsweise
einer Digitalkamera, eines PDA, einer tragbaren Audio-Vorrichtung,
eines Handys oder eines Einzelplatzrechners), und Programmdaten
werden von der digitalen Vorrichtung 2 auf die Speicherkarte 1 heruntergeladen.
Das heruntergeladene Programm wird in der Speicherkarte 1 ausgeführt.
-
Digitale Vorrichtung 2
-
Die
digitale Vorrichtung 2 kompiliert einen in JavaTM geschriebenen Quellcode, der eine objektorientierte
Programmiersprache ist, in Bytecodes und überträgt sie zu der Speicherkarte 1.
-
Speicherkarte 1
-
Die
Speicherkarte 1 enthält
einen Controller-Chip 100 und einen Flash-Speicher-Chip 200.
-
Der
Controller-Chip 100 enthält die Schnittstellen 110, 140 und 180,
eine CPU 120, eine virtuelle Maschine 130, einen
EEPROM 150, die Puffer-RAMs 145 und 160 und
einen Verschlüsselungsabschnitt 170.
-
Die
Schnittstelle 110 ist eine Schnittstelle zwischen der digitalen
Vorrichtung 2 und dem Controller-Chip 100 und überträgt Klassen-Dateien
(Bytecodes), die von der digitalen Vorrichtung 2 heruntergeladen
worden sind, zu der virtuellen Maschine 130.
-
Die
virtuelle Maschine 130 trennt statische Variablen von den
Klassen-Dateien, die von der Schnittstelle 110 übergeben
werden, und leitet sie zu der Schnittstelle 140 weiter und
leitet den Rest (Applet-Codes und statische endgültige Variablen) an den Puffer-RAM 160 weiter.
Die virtuelle Maschine 130 übersetzt auch die Programmdaten
(Bytecodes), die aus dem EEPROM 150 und dem Flash-Speicher-Chip 200 ausgelesen
worden sind, über
ein Übersetzungssystem
in ein Format, das von der CPU 120 ausgeführt werden
kann.
-
Die
CPU 120 führt
das von der virtuellen Maschine 130 übersetzte Programm aus. Die
CPU 120 steuert auch den Betrieb des Controller-Chips 100.
-
Die
Schnittstelle 140 ist eine Schnittstelle zwischen der virtuellen
Maschine 130 und der CPU 120 auf der einen und
dem EEPROM 150 und dem Puffer-RAM 145 auf der
anderen Seite. Die Schnittstelle 140 überträgt statische Variablen von
der virtuellen Maschine 130 zu dem EEPROM über den
Puffer-RAM 145.
-
Der
Puffer-RAM 145 puffert Daten, die an den EEPROM 150 übertragen
werden sollen, und die Datenausgabe von dem EEPROM 150.
Der Puffer-RAM 145 puffert temporär auch Daten, die in dem EEPROM 150 gespeichert
sind, wenn diese Daten überschrieben
werden.
-
Der
EEPROM 150 speichert statische Variablen von der Schnittstelle 140.
Der EEPROM 150 ist ein nichtflüchtiger Speicher, in dem Daten
in Worteinheiten gelöscht
werden.
-
Der
Puffer-RAM 160 speichert temporär die Applet-Codes und die
statischen endgültigen
Variablen von der virtuellen Maschine 130. Der Puffer-RAM 160 speichert
temporär
auch Programmdaten, die aus dem Flash-Speicher 200 ausgelesen
und von dem Verschlüsselungsabschnitt 170 entschlüsselt worden
sind.
-
Der
Verschlüsselungsabschnitt 170 verschlüsselt Programmdaten,
(Applet-Codes und statische endgültige
Variablen), die in dem Puffer-RAM 160 gespeichert sind
und leitet sie an die Schnittstelle 180 weiter. Der Verschlüsselungsabschnitt 170 entschlüsselt auch
Programmdaten, die aus dem Flash-Speicher-Chip 200 ausgelesen
worden sind.
-
Die
Schnittstelle 180 ist eine Schnittstelle zwischen dem Controller-Chip 100 und
dem Flash-Speicher-Chip 200 und überträgt Programmdaten, (Applet-Codes
und statische endgültige
Variablen), die von dem Verschlüsselungsabschnitt 170 verschlüsselt worden
sind, an den Flash-Speicher-Chip 200. Die Schnittstelle 180 überträgt auch Programmdaten,
die aus dem Flash-Speicher-Chip 200 ausgelesen worden sind,
an den Verschlüsselungsabschnitt 170.
-
Der
Flash-Speicher-Chip 200 speichert verschlüsselte Programmdaten,
(Applet-Codes und statische endgültige
Variablen), von der Schnittstelle 180. Der Flash-Speicher-Chip 200 ist
ein nichtflüchtiger
Speicher, in dem Daten in Einheiten von Blöcken oder Chips gelöscht werden.
Das heißt,
die in dem Flash-Speicher-Chip 200 gelöschte Einheit ist größer als
die Einheit, die in dem EEPROM gelöscht wird.
-
Herunterladen
des Programms
-
Programmdaten
werden von der digitalen Vorrichtung 2 auf die Speicherkarte 1 in
dem in 1 gezeigten Speicherkartensystem wie folgt heruntergeladen.
-
Hier
werden Programmdaten mit einem Quellcode wie dem in 2 gezeigten
heruntergeladen. Der in 2 gezeigte Quellcode ist ein
Anwendungsprogramm für
die Verwendung der Speicherkarte 1 als eine Punktekarte
und ist in JavaTM geschrieben. Das Programm
fügt verschiedene
Punktanrechnungsquoten (point return rates) (die auch als "kangenritu" bezeichnet werden
können),
für jeden Artikel
(Nahrung, Kleidung, Elektronik) hinzu, der gekauft wird. Der Punkte-Saldo
wird für
jeden gekauften Artikel aufgezeichnet. Da der Punkte-Saldo jedes Mal
aktualisiert wird, wenn ein Artikel gekauft wird, wird er zur statischen
Variablen erklärt.
Andererseits bleibt die Punktanrechnungsquote ab dem ursprünglich eingestellten
Wert unverändert,
so dass sie zur statischen endgültigen
Variablen erhoben wird.
-
Der
in JavaTM geschriebene Quellcode wird in
Bytecodes kompiliert und von der digitalen Vorrichtung auf die Speicherkarte 1 heruntergeladen.
Bytecodes (Klassen-Dateien), die auf die Speicherkarte 1 heruntergeladen
werden, werden von der virtuellen Maschine 130 in einen
Teil mit statischer Variablen und einen Teil mit Applet-Code und
statischer endgültiger
Variablen getrennt. Der Teil mit Applet-Code und statischer endgülti ger Variablen
wird in dem Flash-Speicher 200 gespeichert, und der Teil
mit statischer Variablen wird im EPROM 150 gespeichert. Daher
wird der Teil, der überschrieben
werden kann, (der Teil mit statischer Variablen), in dem EEPROM 150 gespeichert,
und der Teil, der nicht überschrieben
werden kann, (der Teil mit Applet-Code und statischer endgültiger Variablen),
wird in dem Flash-Speicher 200 gespeichert, nachdem er
am Verschlüsselungsabschnitt 170 verschlüsselt worden ist.
Es sollte beachtet werden, dass eine IC-Karte, auf die ein Anwendungsprogramm
heruntergeladen werden und auf ihr ausgeführt werden kann, alle heruntergeladenen
Bytecodes (Klassendateien) in ihrem internen EEPROM gespeichert
werden, ohne getrennt zu werden, wie in 2 gezeigt.
-
Als
Nächstes
wird der Trennungsprozess, der durch die virtuelle Maschine 130 ausgeführt wird, ausführlicher
unter Bezugnahme auf 3 beschrieben.
-
Klassendateien,
die von der digitalen Vorrichtung 2 auf die Speicherkarte 1 heruntergeladen werden,
umfassen einen Teil mit Applet-Code (Methode), eine statische endgültige Variable
und eine statische Variable. Das Header-1-Byte des Teils mit Applet-Code
ist 0 × 01,
das Header-1-Byte der statischen endgültigen Variablen ist 0 × 002, und
das Header-1-Byte der statischen Variablen ist 0 × 03. Daher
können
Klassendateien, die von der digitalen Vorrichtung 2 kompiliert
worden sind, als der Teil mit Applet-Code, die statische endgültige Variable
und die statische Variable durch Bestimmen des Header-1-Bytes identifiziert
werden. Dieses wird durch einen Adressenanalyse-Abschnitt 131 in
der virtuellen Maschine 130 ermittelt.
-
Ein
Speicherabschnitt 132 speichert Programmdaten in dem Flash-Speicher 200 oder
dem EEPROM 150 in Übereinstimmung
mit dem Ergebnis, das von dem Adressenanalyse-Abschnitt 131 ermittelt
worden ist. Wenn ermittelt worden ist, dass das Header-1-Byte 0 × 01 ist,
werden die Programmdaten (Teil mit Applet-Code) in dem Flash-Speicher 200 gespeichert.
Wenn ermittelt wird, dass das Header-1-Byte 0 × 02 ist, werden die Programmdaten (statische
endgültige
Variable) in dem Flash-Speicher 200 gespeichert, (nachdem
sie von dem Verschlüsselungsabschnitt 170 verschlüsselt worden sind).
Wenn ermittelt wird, dass das Header-1-Byte 0 × 03 ist, werden die Programmdaten
(statische Variable) in dem EEPROM 150 gespeichert.
-
Das
Ergebnis des oben genannten Prozesses ist, dass Applet-Codes und
statische endgültige Variablen
in dem Flash-Speicher 200 gespeichert werden und statische
Variablen in dem EEPROM 150 gespeichert werden, wie in 4 gezeigt.
-
Ausführen des
heruntergeladenen Programms
-
Als
Nächstes
wird das Programm getrennt und in dem Flash-Speicher 200 gespeichert,
und der EEPROM 150 wird wie im Folgenden beschrieben ausgeführt. Der
hier ausgeführte
Prozess wird durch den Quellcode in 5A gezeigt
und wird im Folgenden unter Bezugnahme auf 5B und 5C beschrieben.
-
Wenn
der Kaufpreis (Wert) und der Index (i) zeigen, dass die Artikelklassifizierung
in die CPU 120 eingegeben worden ist, ruft die virtuelle
Maschine 130 den "Befehl" ab, der in dem Teil
mit Applet-Code (addPoint) in dem Flash-Speicher 200 gespeichert ist,
und der Übersetzungsabschnitt übersetzt
ihn durch ein Übersetzungssystem
in ein Format, das von der CPU 120 ausgeführt werden
kann. Der übersetzte
Befehl wird von der CPU 120 ausgeführt, um die folgenden Prozessschritte
durchzuführen.
-
Schritt ST51
-
- baload ... Die i-ten Daten der kangenritu-Anordnung (kangenritu[i])
auf dem Flash-Speicher 200 werden erhalten
(X).
-
Schritt ST52
-
- mul... Der Wert und der kangenritu[i]) werden multipliziert.
-
Schritt ST53
-
- baload ... Die i-ten Daten der Punkte-Anordnung (point[i])
auf dem EEPROM 150 werden erhalten (Y).
-
Schritt ST54
-
- add ... Das Ergebnis des Multiplikationsprozesses in Schritt
ST52 und der in Schritt ST53 erhaltene point[i] werden addiert.
-
Schritt ST55
-
- bastore ... Das Ergebnis des Additionsprozesses in Schritt
ST54 wird in point[i] auf dem EEPROM 150 (Z) gespeichert.
Das heißt,
die Daten von point[i] werden überschrieben.
-
Auswirkung
-
Bei
den gegenwärtigen
Technologien ist die Speicherkapazität eines EEPROM viel kleiner
als diejenige eines Flash-Speichers, so dass große Programme in einem Flash-Speicher gespeichert
werden sollten.
-
Normalerweise
werden kleine Datenmengen, (wie beispielsweise Variablen), in dem
Programm überschrieben,
wenn ein Programm ausgeführt
wird. Wenn ein in einem Flash-Speicher gespeichertes Programm ausgeführt wird,
werden Daten in der Löscheinheit
des Flash-Speichers überschrieben.
Allerdings ist die Löscheinheit
eines Flash-Speichers
jedoch beträchtlich
größer als
die Löscheinheit eines
EEPROM, so dass das Ausführen
eines Programms, das in einem Flash-Speicher gespeichert ist, einen
massiven Pufferspeicher für
beispielsweise das Überschreiben
von Variablen erfordert.
-
Zum
Beispiel ist für
einen NAND-Flash-Speicher mit:
Speicherkapazität: 512 Mbit
Programmeinheit:
512 Bytes = 1 Seite
Löscheinheit:
32 Seiten
Ein Puffer-RAM von 16 kByte erforderlich.
-
Bei
dem Speicherkartensystem gemäß einer Ausführungsform
der vorliegenden Erfindung wird der Teil der Programmdaten (Klassendateien),
die von der digitalen Vorrichtung 2 auf die Speicherkarte 1 heruntergeladen
werden und überschrieben
werden können
(statische Variablen), auf dem EEPROM 150 gespeichert,
und der Teil, der nicht überschrieben
werden kann (Applet-Code und statische endgültige Variablen) wird auf dem
Flash-Speicher 200 gespeichert. Demzufolge erfolgt das Überschreiben
von Daten während
des Programms nicht in dem Flash-Speicher 200, sondern
wird nur in dem EEPROM 150 durchgeführt. Daher wird das Überschreiben
von Variablen oder Ähnlichem
in dem EEPROM 150 durchgeführt, der eine kleine Löscheinheit
besitzt, so dass die Kapazität
des Pufferspeichers (Puffer-RAM 145), die zum Überschreiben
erforderlich ist, kleiner sein kann, als wenn das Überschreiben
in dem Flash-Speicher 200 durchgeführt würde, der eine große Löscheinheit
besitzt, und der Schaltungsumfang kann reduziert werden. Des Weiteren
ist die Größe der Daten,
die zum Überschreiben
temporär gepuffert
werden, in dem EEPROM 150 kleiner als in dem Flash-Speicher 200,
und daher kann die Pufferzeit für
das Überschreiben
kürzer
gehalten werden, als wenn der Überschreibungsprozess
in dem Flash-Speicher 200 durchgeführt würde, und die für das Überschreiben
erforderliche Zeitdauer kann verkürzt werden.
-
Außerdem wird
die Datensicherheit verbessert, weil die auf die Speicherkarte 1 heruntergeladenen
Programmdaten getrennt und auf dem Flash-Speicher 200 und
dem EEPROM 150 gespeichert werden. Die in dem Flash-Speicher-Chip 200 gespeicherten
Programmdaten werden durch den Verschlüsselungsabschnitt 170 verschlüsselt, so dass
die Sicherheit noch weiter erhöht
wird.
-
Ein
Verschlüsselungs-/Entschlüsselungs-Prozess
ist nicht erforderlich, um auf die Programmdaten zuzugreifen, die
auf dem EEPROM 150 gespeichert sind, so dass die Verarbeitungszeiten verbessert
werden können.
-
Es
sollte beachtet werden, dass, obwohl hier die statischen Variablen
auf dem EEPROM 150 gespeichert wurden, und der Applet-Code
und die statischen endgültigen
Variablen auf dem Flash-Speicher 200 gespeichert wurden,
es ebenfalls möglich
ist, die statischen Variablen und die statischen endgültigen Variablen
auf dem EEPROM 150 zu speichern und den Applet-Code auf
dem Flash-Speicher 200 zu speichern.
-
Des
Weiteren können,
wenn das Auslesen von Daten aus dem Flash-Speicher 200 und
deren Entschlüsseln
mit dem Verschlüsselungsabschnitt 170 länger dauert
als die Zeit, die zum Auslesen der Daten aus dem EEPROM 150 erforderlich
ist, Teile, auf die im Flash-Speicher 200 häufig zugegriffen wird,
unter der Steuerung der CPU 120 in den EEPROM 150 geschrieben
werden.
-
Es
ist auch möglich,
den Puffer-RAM 145 und den Puffer-RAM 160 als
einen gemeinsamen RAM zu konfigurieren, der als der Puffer-RAM für den EEPROM 150 betrieben
werden kann, wenn der EEPROM 150 arbeitet, und der als
der Puffer-RAM für den
Flash-Speicher 200 betrieben werden kann, wenn der Flash-Speicher 200 arbeitet.
-
Dementsprechend
kann der Schaltungsbereich, der für den RAM erforderlich ist,
reduziert werden, und die Schaltung kann verkleinert werden.
-
Die
in dieser Anmeldung offenbarten Ausführungsformen sind in jeder
Hinsicht als veranschaulichend und als nicht einschränkend zu
betrachten. Der Umfang der Erfindung wird durch die Ansprüche im Anhang
und nicht durch die vorhergehende Beschreibung angegeben.