DE102006058512B4 - Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger - Google Patents

Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger Download PDF

Info

Publication number
DE102006058512B4
DE102006058512B4 DE102006058512.7A DE102006058512A DE102006058512B4 DE 102006058512 B4 DE102006058512 B4 DE 102006058512B4 DE 102006058512 A DE102006058512 A DE 102006058512A DE 102006058512 B4 DE102006058512 B4 DE 102006058512B4
Authority
DE
Germany
Prior art keywords
buffer
message
partial messages
data carrier
partial
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
DE102006058512.7A
Other languages
English (en)
Other versions
DE102006058512A1 (de
Inventor
Erich Englbrecht
Robert Hockauf
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.)
Giesecke and Devrient Mobile Security GmbH
Original Assignee
Giesecke and Devrient Mobile Security GmbH
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 Giesecke and Devrient Mobile Security GmbH filed Critical Giesecke and Devrient Mobile Security GmbH
Priority to DE102006058512.7A priority Critical patent/DE102006058512B4/de
Publication of DE102006058512A1 publication Critical patent/DE102006058512A1/de
Application granted granted Critical
Publication of DE102006058512B4 publication Critical patent/DE102006058512B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/0656Data buffering arrangements
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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]

Abstract

Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger (1), mit folgenden Schritten:Empfangen einer ersten Teilnachricht (30) einer Nachricht in einem Eingangspuffer (18); undÜbertragen zumindest der ersten Teilnachricht (30) in einen Nachrichtenpuffer (15);Empfangen einer zweiten Teilnachricht (30) der Nachricht in dem Eingangspuffer (18); und dadurch gekennzeichnet, dassder tragbare Datenträger ein Betriebssystem (7) aufweist, das eine nebenläufige Abarbeitung von Prozessen durch den Prozessor des tragbaren Datenträgers ermöglicht;die erste empfangene Teilnachricht aus dem Eingangspuffer (18) in einen Sekundärpuffer (17) weitergeleitet wird (43,44); undin dem Schritt des Übertragens (49) die weitergeleitete erste Teilnachricht (30) und die zweite Teilnachricht in den Nachrichtenpuffer (15) übertragen werden.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Empfangen/Senden einer Nachricht durch einen tragbaren Datenträger sowie einen derartigen tragbaren Datenträger, insbesondere eine Chipkarte, eine sichere Multimediakarte, ein USB-Speichermedium, eine Mobilfunkkarte oder dergleichen.
  • Beim Empfang einer Nachricht durch einen tragbaren Datenträger ist es erforderlich, dass sich der Datenträger auf variierende Nachrichtenlängen und Transferraten des Senders einstellen kann. Dies gilt besonders bei tragbaren Datenträgern, wie Chipkarten, Mobilfunkkarten und dergleichen, welche mit einem Kommunikationspartner im Master-Slave-Betrieb lediglich als reaktive Slave-Komponenten kommunizieren können. Hierbei wird die Empfangsrate von Nachrichten, welche von einem Sender an den Datenträger übertragen werden, unter anderem durch die beschränkten Hardware-Ressourcen und Rechenkapazitäten des Datenträgers eingeschränkt.
  • Allgemein ist es bei der digitalen Datenübertragung wünschenswert, die Aufnahme von Nachrichtenblöcken eines eingehenden Datenstroms von der Geschwindigkeit des Prozessors des empfangenden Datenträgers und von dessen Taktrate abzukoppeln, so dass der sendende Kommunikationspartner des Datenträgers die Transferrate in gewissem Umfang vorgeben kann und von der Taktrate, Leistung und Arbeitsbelastung eines Prozessors des Datenträgers zumindest teilweise abzukoppeln. Hierzu werden separate, asynchrone Eingangspuffer verwendet, insbesondere sogenannte UART-Bausteine („Universal Asynchronous Receiver/Transmitter“), die bei tragbaren Datenträgern, wie z. B. Chipkarten, relativ klein sein können und in der Regel lediglich ein Byte aufnehmen. Die Funktion derartiger UART-Bausteine ist unabhängig von der Prozessorgeschwindigkeit und benötigt für die Kommunikation auf Byte-Ebene keine Softwareunterstützung. Sobald ein UART-Eingangspuffer mit einem Byte gefüllt ist, wird von einem Multitasking-fähigen Betriebssystem des Datenträgers eine temporäre Unterbrechung („Interrupt“) der momentanen Prozessabarbeitung veranlasst, um die Behandlung der eingehenden Nachricht durch einen Unterbrechungsprozess (ISR; „Interrupt Service Routine“) vorzunehmen, indem empfangene Teilnachrichten aus dem UART-Eingangspuffer in einen nachgeordneten, größeren Speicher des Datenträgers übertragen werden.
  • DE 10 2004 040 296 B3 beschreibt ein Schreiben von Daten in einen nichtflüchtigen Speicher einer Chipkarte oder eines Chipmoduls, wobei die Daten parallel zur Ausführung durch einen Prozessor der Chipkarte oder des Chipmoduls in den Speicher übertragen werden.
  • US 2005 / 0289291 A1 beschreibt eine Chipkarte, die in Kommunikation mit einem externen Gerät steht, wobei ein Prozess zum Schreiben von Daten in einen nichtflüchtigen Speicher der Chipkarte entsprechend eines Befehls des externen Geräts ausgeführt wird.
  • DE 199 28 939 A1 beschreibt ein Verfahren zur Datenübertragung zwischen einem Datenträger und einem externen Terminal, wobei der Datenträger vom Terminal empfangene Daten speichert, von einem Prozessor des Datenträgers zu bearbeitende Daten extrahiert und unter Wahrung der Bearbeitungsreihenfolge von einem Ein-/ Ausgabepuffer des Datenträgers in einen Übertragungspufferspeicher des Datenträgers kopiert werden.
  • DE 100 40 241 A1 beschreibt ein Verfahren zur Speicherverwaltung von tragbaren Datenträgern, z.B. Chipkarten, um die Nutzbarkeit des Speichers zu verbessern. Dafür werden Verfahren zur Defragmentierung des Speichers beschrieben um möglichst große zusammenhängende Speicherbereiche zu erhalten.
  • EP 1 770 533 A1 beschreibt ein Verfahren zur Speicherverwaltung in einer Chipkarte, wobei dabei Speicherbereiche wieder freigegeben bzw. deren Größe angepasst werden, um den verfügbaren Speicher effektiv zu nutzen.
  • Hierbei wird das Auslösen der Unterbrechung von dem Betriebssystem (oder dem Betriebssystemkern) des Datenträgers hardwarenah in einem privilegierten Systemmodus durchgeführt, in welchem ein unmittelbarer Zugriff auf die Hardware des Datenträgers möglich ist. Die eigentliche Unterbrechungsbehandlung durch den Unterbrechungsprozess wird demgegenüber in einem eingeschränkten Benutzermodus durchgeführt, in welchem keine derartige unmittelbare Zugriffsmöglichkeit besteht, sondern Prozesse lediglich über sichere Systemaufrufe des Betriebssystems mittelbar auf die Hardware zugreifen können.
  • Da die eigentliche Behandlung eingehender Nachrichten im Benutzermodus stattfindet, müssen für jedes empfangene Byte im Benutzermodus zwei Prozesswechsel durchgeführt werden: von dem momentan bearbeiteten Prozess zu dem Unterbrechungsprozess und wieder zurück zu dem unterbrochenen Prozess, um diesen fortzusetzen. Ein Prozesswechsel bringt jedoch umfangreiche Verwaltungsaufgaben für das Betriebssystem und den Prozessor mit sich, da der Prozesskontext (Registerinhalte, Prozesszustände etc.) ausgewechselt werden muss. Bei einer entsprechend hohen Dateneingangsrate führt der durch den häufigen Prozesswechsel verursachte Verwaltungsaufwand unter Umständen dazu, dass weitere Prozesse von dem Prozessor nur sehr langsam oder nicht mehr ausgeführt werden können, da dieser mit der Behandlung eingehender Nachrichten nahezu ausgelastet ist.
  • Die Funktionsweise und die damit verbundene Problematik des Empfangs einer Nachricht durch eine mit einem UART-Eingangspuffer ausgestattete Chipkarte wird zum besseren Verständnis nachfolgend anhand der 5 erläutert.
  • Die Steuerung eines Nachrichtenempfangs wird von einem Betriebssystemkern (KERNEL) 24 eines Multitasking/Multithreadingfähigen Betriebssystems der Chipkarte übernommen. Der Betriebssystemkern 24 repräsentiert den Teil des Betriebssystems, der besonders elementare Funktionen realisiert, wie beispielsweise Prozesssteuerung („Scheduling“), Speicherverwaltung, Unterbrechungsbehandlung („Interrupt Handling“). Bei Chipkarten wird oft ein besonders schlanker sogenannter „Mikrokernel“ als Betriebssystemkern eingesetzt, der in der Regel lediglich Funktionen zur Prozessverwaltung und Interprozesskommunikation bereitstellt.
  • Bei einem Betriebssystem, welches ein Multitasking (oder Multithreading) unterstützt, werden mehrere Aufgaben („Tasks“) oder Prozessfäden („Threads“) durch häufigen Prozess- oder Thread-Wechsel scheinbar gleichzeitig, nebenläufig ausgeführt. Auf diese Weise kann der Betriebssystemkern 24 bei Auftreten bestimmter prioritär zu behandelnder Situationen schnell reagieren und auf entsprechende, diese Situation behandelnde Prozesse oder Routinen umschalten. Das Eintreffen 30 von Teilnachrichten in einem UART-Eingangspuffer 18 ist eine solche prioritär zu behandelnde Situation, da in einem relativ kleinen UART-Puffer 18 (die übliche Kapazität ist 1 Byte) vorliegende Teilnachrichten relativ schnell ausgelesen werden müssen, um den Empfang weiterer Teilnachrichten nicht zu blockieren.
  • Der Empfang von Teilnachrichten in dem UART-Puffer 18 wird in der Regel durch eine Unterbrechung („Interrupt“) von dem Betriebssystemkern 24 signalisiert. Ausgelöst werden Unterbrechungen zumeist als Hardware-Interrupts durch Elektronikkomponenten mittels einer Unterbrechungsanfrage („Interrupt Request“; IRQ). Die Behandlung einer Unterbrechung wird in der Regel von dem Betriebssystemkern 24 realisiert. Sobald das Vorhandensein einer Teilnachricht in dem UART-Puffer 18 signalisiert wird 31 erfolgt eine Unterbrechung des von dem Prozessor gerade ausgeführten Prozesses/Threads 19 (PROCESS) und es wird mittels einer Unterbrechungsbehandlungsanfrage (Interrupt Service Request) 32 ein spezieller Unterbrechungsprozess 20 (INTERRUPT PROC) aktiviert, der die Teilnachrichten des UART-Eingangspuffers 18 z.B. in einen nachgeschalteten zusätzlichen Empfangs-/Sendespeicherbereich 15 (BUFFER) kopiert.
  • Bei der Behandlung der Unterbrechung muss der Betriebssystemkern 24 einen Prozesswechsel im Benutzermodus 27 von dem bisher ausgeführten Prozess 19 zu dem Unterbrechungsprozess 20 durchführen, was einen nicht unwesentlichen Verwaltungsaufwand verursacht, da Registerinhalte und Zustände des Prozesses 19 gesichert und Registerinhalte und Zustände des Unterbrechungsprozesses 20 aus dem Speicher geholt werden müssen. Sobald dies geschehen ist, kann der Unterbrechungsprozess 20 mit der Behandlung der in dem UART-Puffer 18 vorliegenden Teilnachrichten beginnen. In der Regel besteht die Behandlung des Nachrichteneingangs lediglich aus einigen wenigen Abfragen, Datenbearbeitungsschritten und dem Auslesen der im UART-Puffer 18 vorliegenden Teilnachrichten. Danach geht der Unterbrechungsprozess 20 wieder in einen inaktiven Zustand über und wartet auf eine erneute Aktivierung durch den Betriebssystemkern 24 infolge einer weiteren Unterbrechung 32. Der Betriebssystemkern 24 führt nun einen erneuten Prozesswechsel durch, um den unterbrochenen Prozess 19 oder einen speziellen Protokollprozess 21 (PROTOCOL PROC) fortzusetzen oder zu aktivieren, der weitere Verwaltungs- und Datenverarbeitungsaufgaben im Zusammenhang mit den aus dem UART-Puffer 18 ausgelesenen 33 und in den Speicherbereich 15 geschriebenen 34 Teilnachrichten hat.
  • Der doppelte Prozesswechsel erfolgt bei einem UART-Puffer 18 mit der im Chipkartenbereich üblichen Aufnahmekapazität von lediglich einem Byte bei jedem empfangenen oder gesendeten Byte. Im Verhältnis zur eigentlichen Unterbrechungsbehandlung durch den Betriebssystemkern 24 sind die Prozesswechsel relativ zeitaufwändig. Bei hohen Transferraten des Nachrichtensenders wird das geschilderte Verfahren an seine Grenzen geführt, da zwischen dem Empfangen/Senden einzelner Bytes und deren Behandlung durch den Unterbrechungsprozess 20 keine weiteren Prozesse durch den Prozessor ausgeführt werden können. Die Chipkarte ist dann also ausschließlich mit dem Empfangen/Senden von Nachrichten beschäftigt und kann ihrer eigentlichen Aufgabe zumindest temporär nicht mehr nachkommen.
  • Es ist deshalb die Aufgabe der vorliegenden Erfindung, eine effiziente Behandlung eingehender Nachrichten durch einen tragbaren Datenträger zu schaffen und dabei die sonstige Prozessbearbeitung möglichst wenig zu behindern.
  • Diese Aufgabe wird erfindungsgemäß durch ein Verfahren und einen Datenträger mit den Merkmalen der unabhängigen Ansprüche gelöst. In davon abhängigen Ansprüchen sind vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung angegeben.
  • Dementsprechend umfasst ein erfindungsgemäßer tragbarer Datenträger neben einem asynchronen Eingangspuffer einen diesem nachgeordneten Sekundärpuffer, der größer als der Eingangspuffer ist. Wenn in dem Eingangspuffer, der sich beim Nachrichtenempfang kontinuierlich mit Teilnachrichten der Nachricht füllt, eine Teilnachricht vorliegt oder ein vorgegebener Füllstand überschritten wird, werden in dem Eingangspuffer vorliegende Teilnachrichten in den größeren Sekundärpuffer weitergeleitet. Diese Weiterleitung wird von einer auf dem Datenträger vorhandenen und von einem Betriebssystem des Datenträgers in dessen privilegiertem Systemmodus ausführbaren Sekundärpuffersteuerung durchgeführt.
  • Die Sekundärpuffersteuerung ist so in das Betriebssystem des Datenträgers integriert, dass zu ihrer Aktivierung ein aufwändiger Prozesswechsel im Benutzermodus des Betriebssystems nicht erforderlich ist, sondern die Sekundärpuffersteuerung mit minimalem Verwaltungsaufwand im Systemmodus ausgeführt werden kann. Der Prozessor muss bei dieser Lösung zwar auch die Abarbeitung eines Prozesses zur Behandlung eines Nachrichteneingangs temporär unterbrechen. Es entfällt aber der hohe Verwaltungsaufwand eines Prozesswechsels, da die Sekundärpuffersteuerung im privilegierten Systemmodus ausgeführt wird und somit unmittelbaren Zugriff auf die Hardware, und somit auch auf den Sekundärpuffer, hat.
  • Der Sekundärpuffer wird gewissermaßen als virtueller Eingangspuffer von dem Betriebssystem des Datenträgers betrieben, während die Sekundärpuffersteuerung als virtuelle Firmware des virtuellen Eingangspuffers realisiert ist. Als solche kann die Sekundärpuffersteuerung in dem Systemmodus ausgeführt werden, so dass sie nicht auf der abstrakten Prozessebene des Betriebssystems betrieben werden muss, sondern auf einer Systemebene mit minimalem Verwaltungsaufwand betrieben werden kann.
  • Im Ergebnis müssen aufwändige Prozesswechsel theoretisch nicht durchgeführt werden, bevor der Sekundärpuffer, der vorzugsweise das Vielfache der Größe des Eingangspuffers umfasst, einen gewissen Füllstand überschreitet und dann dessen Teilnachrichten behandelt werden müssen. Die reguläre Behandlung eingehender Teilnachrichten wird also von dem kleinen Eingangspuffer auf den größeren Sekundärpuffer als virtuellem Eingangspuffer verlagert.
  • Der asynchrone Eingangspuffer ist vorzugsweise ein UART-Baustein, während der als virtueller Eingangspuffer fungierende Sekundärpuffer als synchroner Pufferspeicher in einem RAM-Speicher des Datenträgers realisiert sein kann. Ebenso kann der Sekundärpuffer prinzipiell auch als separater Hardware-Baustein oder als entsprechender Speicherbereich in einem EEPROM-Speicher oder einem anderen nicht-volatilen Speicher des Datenträgers realisiert werden.
  • Die Länge einer Nachricht kann mehrere hundert Byte betragen. Der Begriff der Teilnachricht ist im Zusammenhang mit der vorliegenden Erfindung als beliebige in den Eingangspuffer hineinpassende Teilmenge der Nachricht zu verstehen. Bei einem herkömmlichen UART-Baustein mit einer Kapazität von einem Byte kann eine Teilnachricht z.B. ein Byte oder ein oder mehrere Bits umfassen. Falls eine Nachricht byteweise im Eingangspuffer eintrifft, muss eine Teilnachricht zeitnah von der Sekundärpuffersteuerung in den Sekundärpuffer weitergeleitet werden. Falls die Nachricht jedoch bitweise im Eingangspuffer eintrifft, kann eine Behandlung der eingehenden Teilnachrichten bei Überschreiten eines Füllstandes, z.B. 6 Bits, veranlasst werden.
  • Sobald der vorgegebene Füllstand des Eingangspuffers überschritten wird, wird durch eine Unterbrechungssteuerung des Datenträgers, die in das Betriebssystem integriert sein kann, eine Unterbrechung („Interrupt“) ausgelöst und die Sekundärpuffersteuerung aktiviert. Die Aktivierung der Sekundärpuffersteuerung wird dadurch veranlasst, dass in einer entsprechenden Unterbrechungstabelle („Interrupt Table“) des Betriebssystems die Sekundärpuffersteuerung mit der Unterbrechung verknüpft ist, indem sie dort als der zur-Unterbrechungsbehandlung auszuführende Code angegeben ist. Die Sekundärpuffersteuerung fungiert also gewissermaßen als virtuelle Unterbrechungsroutine, da sie zwar durch eine reguläre Unterbrechung eingeleitet wird, aber keinen im Benutzermodus auszuführenden regulären Unterbrechungsprozess repräsentiert, sondern ohne Prozesswechsel im Systemmodus ausgeführt wird.
  • Wenn die Sekundärpuffersteuerung die in dem Eingangspuffer vorliegenden Teilnachrichten in den Sekundärpuffer weitergeleitet hat, beendet sie ihre Arbeit und wird beim Vorliegen einer nächsten Teilnachricht in dem Eingangspuffer wieder durch eine reguläre Unterbrechung aktiviert. Zwischen diesen aktiven Phasen der Sekundärpuffersteuerung kann der Prozessor andere Prozesse im Zusammenhang mit Applikationen des Datenträgers ausführen.
  • Um ein Überlaufen des Sekundärpuffers zu vermeiden, kann auf verschiedenen Wegen ein Prozess zur Übertragung des Sekundärpuffers in den Empfangs-/Sendespeicherbereich des Datenträgers aktiviert bzw. gestartet werden.
  • In einer ersten Variante wird der Übertragungsprozess erst gestartet, wenn der Sekundärpuffer einen bestimmten Füllstand erreicht hat. Der Datenträger kann beispielsweise eine Ereignisüberwachung umfassen, die ebenfalls den Füllstand des Sekundärpuffers überwacht. Die Überwachungssteuerung, beispielsweise in Form der Sekundärpuffersteuerung, löst ein Signal aus, wenn der Sekundärpuffer einen vorgegebenen Füllstand erreicht oder überschreitet. Die Überwachung kann hierbei durch regelmäßiges Überprüfen des Füllstandes („Polling“) durchgeführt werden. Vorzugsweise wird das Überschreiten des vorgegebenen Füllstandes softwaretechnisch als „Event“ realisiert, kann aber auch durch einen Software-Interrupt signalisiert werden.
  • In einer zweiten Variante wird der Übertragungsprozess bereits gestartet, wenn die Sekundärpuffersteuerung aktiviert wird. Der gestartete Übertragungsprozess ist zunächst inaktiv und wird beispielsweise wiederum durch eine Füllstandsnachricht der Sekundärpuffersteuerung aktiviert. Alternativ kann dem gestarteten Übertragungsprozess im Betriebssystem eine ausreichende Priorität zugeordnet sein, die gewährleistet dass der Übertragungsprozess den Sekundärpuffer rechtzeitig vor einem Überlauf überträgt. Die Zuordnung der Priorität erfolgt vorzugsweise abhängig von einer - beispielsweise im UART oder der Sekundärpuffersteuerung - erkannten Datenübertragungsrate.
  • Da der Sekundärpuffer erfindungsgemäß als virtueller, vergrößerter Eingangspuffer betrieben wird, kann das Sekundärunterbrechungssignal als „virtuelle“ Unterbrechung angesehen werden, welche genau wie bei der Behandlung z.B. einer echten Hardware-Unterbrechung durch einen mit der virtuellen Unterbrechung verknüpften Unterbrechungsprozess behandelt wird. Die Ereignissteuerung wertet das Sekundärunterbrechungssignal als virtuelle Unterbrechung aus und leitet die Ausführung eines Sekundärunterbrechungsprozesses ein, welcher die in dem Sekundärpuffer vorliegenden Teilnachrichten in einen hierfür vorgesehenen Speicherbereich überträgt, der in einem nicht-volatilen Speicher oder einem RAM-Speicher eingerichtet sein kann.
  • Der Sekundärunterbrechungsprozess wird von einer Eingangssteuerung des Datenträgers aktiviert und von dem Betriebssystem im eingeschränkten Benutzermodus betrieben, so dass hier ein Prozesswechsel durch den Prozessor stattfinden muss. An dieser Stelle knüpft das erfindungsgemäße Verfahren an die übliche Behandlung eingehender Nachrichten durch im Benutzermodus ausführbare Prozesse an, die hier in dem Sekundärpuffer (virtueller Eingangspuffer) vorliegende Teilnachrichten vorverarbeiten und/oder in einen Zielspeicherbereich einer Applikation kopieren und/oder einer Applikation zum Zugriff bereitstellen kann. Der vorgesehene Speicherbereich kann ein herkömmlicher, einer Eingangssteuerung zugänglicher Puffer sein, z.B. ein RAM-Puffer oder ein nicht-flüchtiger Puffer, so dass die vorliegende Erfindung darin besteht, zwischen einen regulären Eingangspuffer und einen zur Aufnahme der Nachricht vorgesehenen Speicherbereich den gegenüber dem Eingangspuffer vergrößerten Sekundärpuffer zwischenzuschalten, der von der regulären Eingangssteuerung des Betriebssystems als virtueller Eingangspuffer behandelt wird. Auf diese Weise wird eine virtuelle Peripherie in Form eines virtuellen Eingangspuffers, einer virtuellen Unterbrechung und eines virtuellen Unterbrechungsprozesses sowie einer virtuellen Firmware des virtuellen Eingangspuffers realisiert.
  • Das Betriebssystem des Datenträgers ist vorzugsweise ein Multitasking-/ Multithreadingfähiges Betriebssystem, so dass Prozesse/Threads zumindest teilweise nebenläufig ausgeführt werden können. Der Datenträger ist vorzugsweise eine Chipkarte, eine sichere Multimediakarte, ein USB-Speichermedium, eine Mobilfunkkarte oder dergleichen.
  • Obwohl die obige Beschreibung nur den Datenempfang erläutert, ist das Konzept der virtuellen Peripherie uneingeschränkt auch auf das Senden von Daten anwendbar, indem der Sekundärpuffer als virtueller Ausgangspuffer eingerichtet wird.
  • Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der folgenden Beschreibung verschiedener erfindungsgemäßer Ausführungsbeispiele und Ausführungsalternativen im Zusammenhang mit den begleitenden Zeichnungen. Darin zeigen:
    • 1 eine zum effizienten Nachrichtenempfang mit einem Sekundärpuffer als virtuellem Eingangspuffer ausgestattete Chipkarte;
    • 2 ein Verfahren zum Nachrichtenempfang durch die in 1 gezeigte Chipkarte;
    • 3 eine zum effizienten Nachrichtenempfang mit einem RAM-Ringpuffer ausgestattete Chipkarte;
    • 4 ein Verfahren zum Nachrichtenempfang durch die in 3 dargestellte Chipkarte; und
    • 5 ein Verfahren nach einem internen Stand der Technik zum Nachrichtenempfang durch eine Chipkarte.
  • Die folgende Figurenbeschreibung erläutert ein Verfahren und eine Vorrichtung zum effizienten Empfangen von Nachrichten durch einen tragbaren Datenträger, welcher in den Figuren durch eine Chipkarte mit Prozessor illustriert wird. Das Verfahren besteht aus zwei, einzeln oder kombiniert einsetzbaren Teilverfahren, die jeweils in den 2 und 4 dargestellt sind, während die 1 und 3 die, das jeweilige Teilverfahren realisierende Chipkarte zeigt. Die Kombinationsmöglichkeit der Verfahren der 2 und 4 sowie der Vorrichtungen der 1 und 3 wird auch dadurch zum Ausdruck gebracht, dass übereinstimmende Verfahrensschritte und/oder Komponenten in den Figuren mit gleichen Bezugszeichen versehen sind.
  • Die-in den 1 und 3 gezeigten Chipkarten sind ohne Einschränkung sowohl zum Empfangen als auch zum Senden von Nachrichten geeignet, wobei die Empfangsverfahren der 2 und 4 zum Nachrichtensenden prinzipiell in umgekehrter Reihenfolge durch die gleichen Komponenten realisiert werden. Insofern repräsentieren die Figuren und die nachfolgende Beschreibung keine Einschränkung der Erfindung auf den Nachrichtenempfang, sondern beschreiben diesen lediglich exemplarisch und sind deshalb auch auf das Nachrichtensenden anzuwenden.
  • Im Chipkartenbereich haben sich zur Datenübertragung und Kommunikation mit externen Lesegeräten, Terminals oder sonstigen Kommunikationspartnern die Übertragungsprotokolle T=0 und T=1 etabliert, welche standardisierte blockorientierte Halbduplex-Protokolle für Mobilfunkkarten und Chipkarten repräsentieren. Hierbei wird das byteorientierte T=0 Protokoll vorwiegend für GSM-Mobilfunkchipkarten verwendet, während das T=1 Protokoll für sonstige Chipkarten und Chipkarten-ähnliche tragbare Datenträger eingesetzt wird. Grundsätzlich ist die Erfindung auch auf andere in tragbaren Datenträgern eingesetzte Übertragungsprotokolle, wie beispielsweise USB (Universal Serial Bus), MMC (MultiMediaCard) oder kontaktlose Protokolle anwendbar.
  • Bei einem Chipkarten-Betriebssystem, welches ein Multitasking (oder Multithreading) unterstützt, werden mehrere Prozesse („Tasks“) oder Prozessfäden („Threads“) durch häufigen Prozess- oder Thread-Wechsel scheinbar gleichzeitig, nebenläufig ausgeführt. In der nachfolgenden Beschreibung wird für die vom Prozessor der Chipkarte nebenläufig abzuarbeitenden Aufgaben im Rahmen der Behandlung eines Nachrichteneingangs vorwiegend von Prozessen gesprochen, die von dem Betriebssystemkern aktiviert werden. Die gleichen Aufgaben können auch durch Threads erledigt werden, sofern es sich bei dem Betriebssystem um ein Multithreading-fähiges Betriebssystem handelt. Insofern wird der Begriff Prozess auch als Oberbegriff für Tasks und Threads verwendet. Der Verwaltungsaufwand für Threads ist üblicherweise geringer als der für Prozesse, da bei einem Thread-Wechsel kein vollständiger Kontextwechsel (Zustände, Registerinhalte, etc.) vorgenommen werden muss, weil nebenläufige Threads Teilaufgaben eines Prozesses wahrnehmen und einen gemeinsamen Teil des Prozesskontexts verwenden. Auch ist eine Kommunikation zwischen Threads im Sinne einer Interprozesskommunikation (IPC) möglich, da Threads, die demselben Prozess zugeordnet sind, den gleichen Adressraum verwenden. Sämtliche in dieser Beschreibung erläuterten Funktionalitäten und Aufgaben sind gleichermaßen als Prozesse oder als Threads realisierbar, wobei, abgesehen von den geschilderten verwaltungstechnischen Unterschieden, auch die Vorteile und Nachteile von Prozessen und Threads im Hinblick auf die vorliegende Erfindung vergleichbar sind.
  • Nachfolgend ist der Begriff Teilnachricht nicht als standardisierter Nachrichtenblock im Sinne eines Bytes zu verstehen, sondern kann prinzipiell eine variable Anzahl von Bits umfassen, die nicht notwendigerweise an die Größe eines Eingangspuffers oder eine Speicherverwaltung eines Betriebssystems angepasst ist.
  • 1 zeigt eine Chipkarte 1, die eingerichtet ist, Nachrichten effizient zu empfangen. Dazu umfasst die Chipkarte 1 als gängige Hardwarekomponenten einen Prozessor 2 (CPU), eine Kommunikationsschnittstelle 3, einen UART-Eingangspuffer 18, der als separater Hardwarechip in die Chipkarte 1 integriert ist, sowie eine Speicheranordnung bestehend aus einem permanenten ROM-Speicher 4, einem nicht-volatilen EEPROM-Speicher 5 und einem flüchtigen RAM-Arbeitsspeicher 6. Im RAM-Speicher 6 ist ein Sekundärpuffer 17 (SEC.BUFF) zur Aufnahme von Teilnachrichten aus dem UART-Eingangspuffer 18 angeordnet.
  • Die Chipkarte 1 besitzt auch ein Betriebssystem 7, welches üblicherweise im ermanenten ROM-Speicher 4 abgelegt ist. Das Betriebssystem 7 umfasst den Betriebssystemkern 8 (KERNEL), der neben anderen grundlegenden Aufgaben eines Betriebssystems auch eine Unterbrechungssteuerung 9 als „Interrupt-Handler“ umfasst. Ebenso ist eine Eingangssteuerung 10 (I/O-CNTL), welche verschiedene Prozesse zur Behandlung eingehender Nachrichten steuert, und eine Ereignissteuerung 11 (EVENT), die bestimmte Ereignisse („Events“) durch Aufruf zugehöriger Ereignisbehandlungsroutinen („Event-Handler“) behandelt, als Teil des Betriebssystems 7 realisiert. Während die Unterbrechungsbehandlung 9 üblicherweise ein Teil des Betriebssystemkerns 8 ist, können die Ereignissteuerung 11 und die Eingangssteuerung 10 selbstverständlich auch als Teile des Betriebssystemkerns 8 realisiert werden, oder als im EEPROM-Speicher 5 abgelegte erweiterte Systemsoftware oder als Applikationen.
  • Der Sekundärpuffer 17 kann unterschiedlich realisiert werden, z. B. auch als ausgewählter Speicherbereich in einem nicht-volatilen Speicher, z. B. dem EEPROM-Speicher 5 oder einem Flash-Speicher, oder als dem UART-Eingangspuffer 18 nachgeschalteter Hardware-Speicherchip. Die Funktionsweise des Sekundärpuffers 17 wird weniger durch seine Realisierung als vielmehr durch seine Funktionalität und seine Größe bestimmt, da er prozesstechnisch als virtueller Eingangspuffer in den Funktionsablauf des Betriebssystems 7 eingebunden ist und eine größere Datenkapazität hat als der eigentliche Eingangspuffer 18. Vorzugsweise hat der Sekundärpuffer 17 eine vielfache Aufnahmekapazität des Eingangspuffers 18, z.B. fünf Byte gegenüber der üblichen UART-Kapazität von weniger als fünf Byte, üblicherweise einem Byte.
  • In dem RAM-Speicher 6 befindet sich ferner der herkömmliche reservierte Speicherbereich 15 (BUFFER) zur Aufnahme der empfangenen Nachricht. Der Speicherbereich 15 nimmt nun während eines Nachrichtenempfangs die im Sekundärpuffer 17 gesammelten Gruppen von eintreffenden Teilnachrichten auf.
  • In der CPU 2 des tragbaren Datenträgers 1 sind in 1 ferner symbolisch die wichtigsten auf der CPU ablaufenden Softwarekomponenten dargestellt.
  • Im Folgenden wird abkürzend der Begriff Prozess verwendet, wobei der Prozess ein Task oder ein Thread sein kann. Ein Multiprozessfähiger Betriebssystemkern 24, als in der CPU 2 ausgeführter Code des Betriebssystemkerns 8, verteilt die Prozessorzeit auf verschiedene Prozesse 19, 21, 23. Die Prozesse 19, 21, 23 werden somit im Benutzermodus 27 (USER MODE) gesteuert durch den Betriebssystemkern 24 nebenläufig ausgeführt. Zudem ist im Benutzermodus 27 die Zugriffsmöglichkeit auf die Hardware eingeschränkt. Die Prozesse 19, 21, 23 können nur über spezielle Systemaufrufe auf Betriebssystemroutinen oder Hardwaretreiber zugreifen. Im Allgemeinen werden zumindest Applikationsprozesse 19 (APP-PROC) - entsprechend der gespeicherten Applikation 13 - sowie der Protokollprozess 21 im eingeschränkten Benutzermodus 27 ausgeführt. Zumindest der Betriebssystemkern 24 wird im privilegierten Systemmodus 26 (SYSTEM MODE) betrieben, in welchem solche Zugriffsbeschränkungen nicht bestehen. Gerätetreiber, Prozesssteuerung, Dateisystemsteuerung, Unterbrechungssteuerung etc. können abhängig vom eingesetzten Betriebssystemkern im privilegierten Systemmodus 26 oder als Prozesse im eingeschränkten Benutzermodus 27 betrieben werden.
  • Im ROM-Speicher 4 liegt als Teil des Betriebssystems 7 der Code einer Sekundärpuffersteuerung (VIRTUAL FIRMWARE) 12, welche nicht als herkömmlicher von dem Betriebssystemkern 24 im Benutzermodus 27 auszuführender Prozess implementiert ist, sondern als im Systemmodus 26 auszuführende Sekundärpuffersteuerung (VIRTUAL UART CTRL) 25. Der Code 12 der Sekundärpuffersteuerung kann insofern auch als Teil des Betriebssystemkerns 8 oder auch als Applikation im EEPROM-Speicher 5 realisiert werden. Sie ist vorzugsweise hardwarenah implementiert und befindet sich als Steuerprogramm des Sekundärpuffers 17 auf einer relativ niedrigen Abstraktionsebene des Betriebssystems 7. Deshalb wird die Sekundärpuffersteuerung 12 von dem Betriebssystem 7 als virtuelle Firmware 12 eines virtuellen UART-Eingangspuffers eingebunden, der als Sekundärpuffer 17 im RAM-Speicher 6 der Chipkarte 1 realisiert ist.
  • 2 illustriert die Prozessabfolge und Datenströme bei einem Verfahren zum effizienten Behandeln eines Nachrichteneingangs durch die Chipkarte 1 der 1.
  • Der Betriebssystemkern 24 (KERNEL), dessen Routinen im privilegierten Systemmodus 26 (SYSTEM MODE) ausgeführt werden, steuert insbesondere die nebenläufige Abarbeitung aller aktiven Prozesse und gegebenenfalls auch deren Aktivierung oder Deaktivierung. Im Sinne der Verständlichkeit der Darstellung wird auf eine nähere Beschreibung der an sich bekannten Aufgaben des Betriebssystemkerns 24 teilweise verzichtet.
  • Wenn Teilnachrichten einer eingehenden Nachricht in dem UART-Eingangspuffer 18 vorliegen 30, d.h. beispielsweise wenn ein vorgegebener Füllstand des UART-Eingangspuffers 18 überschritten wird, wird eine Unterbrechung (IRQ) ausgelöst 31, um den Dateneingang in dem UART-Eingangspuffer 18 prioritär behandeln zu können.
  • Entgegen dem eingangs im Zusammenhang mit 5 beschriebenen Verfahren wird nun nicht ein Unterbrechungsbehandlungsprozess im eingeschränkten Benutzermodus 27 mittels eines aufwändigen Prozesswechsels aktiviert. Vielmehr wird die Sekundärpuffersteuerung 25 (SECONDARY BUFFER CONTROL), beispielsweise mittels einer entsprechenden Unterbrechungsbehandlungsanfrage 42 aktiviert. Die Sekundärpuffersteuerung 25 wird aufgrund ihrer spezialisierten Realisierung als virtuelle Firmware des Sekundärpuffers 17 von dem Betriebssystemkern 24 im privilegierten Systemmodus 26 ohne Prozesswechsel aktiviert. Die Ausführung der Sekundärpuffersteuerung 25 anstelle des herkömmlichen Unterbrechungsprozesses 20 bei Auftreten einer Unterbrechung 31 kann dadurch realisiert werden, dass die Sekundärpuffersteuerung 25 in einer Unterbrechungstabelle mit der bei Vorliegen von Daten in dem UART-Eingangspuffer 18 ausgelösten Unterbrechung als zugehörige Unterbrechungsbehandlungsroutine (ISR) verknüpft wird. Die Sekundärpuffersteuerung 25 kann hierbei schneller eingreifen als der Unterbrechungsprozess 20, da sie einen unmittelbaren Zugriff auf den als Sekundärpuffer 17 eingerichteten Bereich des RAM-Arbeitsspeichers 6 hat und bei ihrer Ausführung im Systemmodus 26 kein aufwändiger Prozesswechsel stattfinden muss.
  • Die Sekundärpuffersteuerung 25 liest 43 die Daten aus dem UART-Eingangspuffer 18 und schreibt 44 sie in den Sekundärpuffer 17. Da der Sekundärpuffer 17 verglichen mit dem UART-Eingangspuffer 18 vorzugsweise eine vielfache Datenkapazität hat, wird auch ein vielfaches Aufnahmevolumen des UART-Eingangspuffers 18 in dem virtuellen Eingangspuffer 17 durch die effiziente Aktivierung der Sekundärpuffersteuerung 12 zusammengetragen. Ein Übertragungsprozess 23 (BUFFER CONTROL PROC) zur Übertragung 48, 49 des Inhalts des Sekundärpuffers 17 in den reservierten Speicherbereich 15, muss nur noch so rechtzeitig gestartet werden bzw. so rechtzeitig ablaufen, dass der Sekundärpuffer 17 nicht mehr überläuft. Der Sekundärpuffer 17 fungiert also als ein dem eigentlichen Eingangspuffer 18 nachgeschalteter virtueller Eingangspuffer, der es entsprechend seiner relativen Datenkapazität im Vergleich zum Eingangspuffer 18 ermöglicht den Übertragungsprozess 23 im Benutzermodus 27 erst später, also für eine größere Datenmenge, ausführen zu müssen.
  • In einer ersten Variante wird der Übertragungsprozess 23 erst gestartet, wenn ein vorgegebener Füllstand des Sekundärpuffers 17 überschritten wird. Die Ereignisüberwachung 11 kann die Überschreitung registrieren und dem Betriebssystemkern 24 signalisieren, der daraufhin den Übertragungsprozess 23 startet 45. Alternativ kann die Ereignisbehandlung auch von dem Betriebssystemkern 24 oder von der Sekundärpuffersteuerung 25 bereitgestellt werden.
  • In einer zweiten bevorzugten Variante wird der Prozess 23 zur Übertragung des Inhalts des Sekundärpuffers 17 in den reservierten Speicherbereich 15 bereits in Antwort auf das Unterbrechungssignal 31 des UART-Eingangspuffers 18 gestartet 45. Man könnte zur Vermeidung eines Überlaufs des Sekundärbuffers 17 wiederum eine Ereignisüberwachung, beispielsweise durch die Sekundärpuffersteuerung 25, verwenden, um ein Signal 46 zur Aktivierung des (zunächst inaktiven) Übertragungsprozesses 23 zu erzeugen. Eleganter ist es jedoch, dem Übertragungsprozess 23 zur Vermeidung eines Überlaufs des Sekundärbuffers 17 eine geeignete Priorität für die Behandlung als Prozess durch den Betriebssystemkern 24 zuzuweisen. Die zugewiesene Priorität kann jetzt geringer sein als es für den herkömmlichen Prozess 20 gemäß 5 zur Vermeidung eines Überlaufs des Eingangspeichers nötig gewesen wäre, da vor einer nötigen Übertragung mehr Zeit zur Verfügung steht. Insbesondere kann die Zuordnung der Priorität des Übertragungsprozesses 23 abhängig von einer erkannten Datenübertragungsrate erfolgen, die der UART-Eingangspuffer 18 oder die Sekundärpuffersteuerung 25 erkannt hat.
  • Anschließend wird der Übertragungsprozess 23 im Benutzermodus 27 ausgeführt, um Teilnachrichten aus dem Sekundärpuffer 17 auszulesen 48 und in den hierfür vorgesehenen Speicherbereich 15 (BUFFER) zu schreiben 49.
  • Im Ergebnis wird ein zeitaufwändiger Prozesswechsel bei dem in 2 skizzierten Verfahren nicht bei jedem im UART-Eingangspuffer 18 eintreffenden Byte durchgeführt, sondern spätestens wenn der größere Sekundärpuffer 17 gefüllt ist. Der resultierende Zeitgewinn kann von der Prozesssteuerung des Betriebssystemkerns 8 zur Abarbeitung anderer Anwendungsprozesse 19 effizient genutzt werden, wobei die zu erwartende Effizienzsteigerung von der Größe des virtuellen Eingangspuffers 17 abhängig ist.
  • Die durch die in den 1 und 2 illustrierte Ausführungsvariante ermöglichte effiziente Empfangen von Nachrichten kann durch die in den 3 und 4 gezeigten weiteren Maßnahmen derart erweitert werden, dass auch überlange Nachrichten, deren Datenvolumen über die Aufnahmekapazität von üblichen zur Datenkommunikation vorgesehenen Empfangs-/Sendespeichern oder -puffern hinausgeht, selbst bei hoher Übertragungsrate empfangen werden können. Die in 3 und 4 dargestellte Ausführungsform ist aber auch für sich genommen anwendbar, wenn beispielsweise der UART-Eingangspuffer ausreichend groß ist. Ansonsten können die weiteren technischen Maßnahmen in der Praxis vorzugsweise in die Ausführungsvariante der 1 und 2 integriert werden, wenngleich sie hier aus Übersichtlichkeitsgründen separat dargestellt und beschrieben werden.
  • 3 zeigt eine Chipkarte 1, die eingerichtet ist, überlange Nachrichten effizient zu empfangen und zu senden. Die illustrierte Chipkarte umfasst hierzu analog zu der in 1 dargestellten Chipkarte 1 einen Prozessor 2 (CPU), eine Kommunikationsschnittstelle 3, einen UART-Eingangspuffer 18 sowie eine Speicheranordnung bestehend aus einem permanenten ROM-Speicher 4, einem nicht-volatilen EEPROM-Speicher 5 und einem flüchtigen RAM-Arbeitsspeicher 6. Weiterhin umfasst die Chipkarte 1 ein Betriebssystem 7 mit einem Betriebssystemkern 8 (KERNEL), einer Ereignissteuerung 11 (EVENT) und einer Eingangssteuerung 10 (I/O-CNTL), welche durch synchronisierte Aktivierung verschiedener Prozesse 20, 21, 22 eingehende Teilnachrichten einer Nachricht verarbeitet.
  • Die Chipkarte 1 umfasst drei funktional in Reihe geschaltete Puffer, um eingehende überlange Nachrichten aufzunehmen und zu behandeln: den UART-Eingangspuffer 18, einen volatilen Eingangspuffer 16, der bei der in 3 illustrierten Ausführungsform im RAM-Speicher 6 vorteilhaft als Ringpuffer angelegt ist, und schließlich einen nicht-volatilen Puffer 14 (NVM) im nicht-volatilen EEPROM-Speicher 5.
  • Der volatile Eingangspuffer 16 entspricht dem regulären Empfangs- und Sendespeicherbereich der Chipkarte (siehe beispielsweise BUFFER 15 in 1 und 2). In der Regel hat der volatile Eingangspuffer 16 eine Größe von 256 Bytes, so dass ein- oder ausgehende Nachrichten, die größer als 256 Bytes sind, zumindest teilweise in den nicht-volatilen Puffer 14 ausgelagert werden.
  • Im Hinblick auf die Ausführungsvariante der 1 wäre der volatile Eingangspuffer 16 bei einem Eingang von Teilnachrichten dem Sekundärpuffer 17 nachgeschaltet angeordnet, so dass eine eingehende Teilnachricht von dem UART-Eingangspuffer 18 über den Sekundärpuffer 17 gelangt und die zumindest teilweise gesammelten Teilnachrichten von dem Sekundärpuffer 17 in den volatilen Eingangspuffer 16 und gegebenenfalls schließlich in den EEPROM-Speicherbereich 14 gelangen.
  • Das Ausführen von Applikationen 13 (APP), des Code des Betriebssystemkerns 8 oder Prozessen der Eingangssteuerung 10 führt zu separaten, von dem Prozessor 2 ausgeführten Prozessen oder Threads 19, 20, 21, 22. Hierbei wird der Betriebssystemkern 24 im privilegierten Systemmodus 26 ausgeführt, während die von der Eingangssteuerung 10 initiierten Unterbrechungsprozesse 20 (IR-PROC), Protokollprozesse 21 (PRTCL-PROC) und Speicherprozesse 22 (NVM-PROC) sowie Anwendungsprozesse 19 (APP-PROC) im eingeschränkten, abgesicherten Benutzermodus 27 ausgeführt werden.
  • In-Figur 4 wird der Empfang einer überlangen Nachricht illustriert, die aus Teilnachrichten B1 - B8 aufgebaut ist. In diesem Zusammenhang bedeutet „Überlänge“, dass die Chipkarte 1 die überlange Nachricht nicht in dem üblicherweise hierfür verwendeten volatilen Eingangspuffer 16 vollständig aufnehmen kann.
  • Die gesamte Nachricht B1 - B8 wird von einem Sender kontinuierlich, bitweise sequentiell über die Kommunikationsschnittstelle 3 der Chipkarte 1 in den UART-Eingangspuffer 18 eingespeist bzw. von diesem aufgenommen. In 3 ist ein Szenario dargestellt, bei dem der Empfang der überlangen Nachricht B1 - B8 bereits so weit fortgeschritten ist, dass die Teilnachrichten B1, B2 bereits im nicht-volatilen Speicherbereich 14 zusammengefügt sind, während die Teilnachrichten B3, B4 im RAM-Ringpuffer 16 liegen, die Teilnachricht B5 im UART-Eingangspuffer 18 liegt und die abschließenden Teilnachrichten B6, B7, B8 noch nicht bei der Chipkarte 1 eingetroffen sind.
  • 4 illustriert ein Verfahren zum Empfang einer überlangen Nachricht durch die in 3 dargestellte Chipkarte 1. Der Betriebssystemkern 8 (KERNEL) kann auch die Eingangssteuerung 10 und/oder die Ereignissteuerung 11 umfassen.
  • Der Betriebssystemkern 24 bzw. die Empfangssteuerung aktiviert zur Behandlung einer eingehenden Nachricht synchronisiert den Unterbrechungsprozess 20 (INTERRUPT PROC) mit hoher Priorität (PRIORITY=HIGH), den Protokollprozess 21 (PROTOCOL PROC) mit mittlerer Priorität (PRIORITY=MEDIUM) und falls erforderlich den Speicherprozess 22 (NVM PROC) mit niedriger Priorität (PRIORITY=LOW). Durch die synchronisierte Aktivierung und Deaktivierung dieser Prozesse 20, 21, 22 werden empfangene Teilnachrichten B1 - B8 einer überlangen Nachricht von dem UART-Eingangspuffer 18 über den RAM-Ringpuffer 16 schließlich in dem nicht-volatilen Speicherbereich 14 zu der vollständigen Nachricht zusammengefügt und einem Applikationsprozess 19 (APP PROC) zur Verfügung gestellt.
  • Der Ablauf dieses Verfahrens ist wie folgt, wobei eingeklammerte Bezugszeichen Datenströme charakterisieren:
    • - -Zunächst nimmt der UART-Eingangspuffer 18 einige Bits einer eingehenden Nachricht als Teilnachrichten auf (30). Die eingehende Teilnachricht ist insbesondere eine Kommando-APDU („Application Protocol Data Unit“) als grundlegende Kommunikationseinheit zur Datenübertragung von einem Terminal an eine Chipkarte.
    • - Bei Vorliegen einer Teilnachricht in dem Eingangspuffer 18 und/oder bei Überschreiten eines vorgegebenen Füllstands des Eingangspuffers 18 wird eine Unterbrechung (Interrupt) unabhängig von dem Betriebssystemkern 24 ausgelöst, wobei eine Unterbrechungstabelle die bei dem vorliegenden Unterbrechungstyp „DATA AVAILABLE“ 31 auszuführende Unterbrechungsbehandlungsroutine (ISR) bestimmt.
    • - Aufgrund der ausgelösten Unterbrechung 31 unterbricht der Betriebssystemkern 24 die Ausführung des momentan von dem Prozessor 2 ausgeführten Anwendungsprozesses, um den Nachrichteneingang prioritär zu bearbeiten. Durch die Unterbrechung DATA AVAILABLE wird der Unterbrechungsprozess 20 von dem Betriebssystemkern 24 mit höchster Ausführungspriorität aktiviert 32, so dass Teilnachrichten aus dem Eingangspuffer 18 in den Zwischenpuffer 16 übertragen werden, sobald der Eingangspuffer 16 einen vorgegebenen Füllstand überschreitet.
    • - Der Unterbrechungsprozess 20 liest 33 eine vorgegebene Anzahl oder alle Bits aus dem UART-Eingangspuffer 18 aus und schreibt 34 sie in den RAM-Ringpuffer 16. Durch die Synchronisation der Prozesse 20, 21 und 22 wird dafür gesorgt, dass der Ringpuffer 16 niemals gänzlich gefüllt ist, wenn im UART-Eingangspuffer 18 auszulesende Daten vorliegen, da andernfalls ein Datenverlust auftreten kann.
    • - -Der Unterbrechungsprozess 20 wird nach Erledigung seiner Aufgabe wieder inaktiv und wartet auf die nächste Aktivierung durch eine Unterbrechung aufgrund von im Eingangspuffer 18 vorliegenden weiteren Teilnachrichten. Ebenso gut kann der Unterbrechungsprozess 20 auch wieder aktiviert werden, wenn der Zwischenpuffer 16 vollständig geleert ist, selbst wenn der UART-Eingangspuffer 18 noch nicht den zum Auslösen einer Unterbrechung erforderlichen Füllstand erreicht hat. Die Signalisierung, dass der Ringpuffer 16 vollständig geleert ist, kann durch einen Event ausgelöst werden oder dem Unterbrechungsprozess 20 durch Interprozesskommunikation (IPC) von dem Speicherprozess 22, der den Ringpuffer 16 ausliest, mitgeteilt werden.
    • - Sobald der hochprioritäre Unterbrechungsprozess 16 inaktiv wird, wird der Protokollprozess 21 mit mittlerer Priorität von dem Betriebssystemkern 24 bzw. der Eingangssteuerung 10 aktiviert.
    • - Der Protokollprozess 21, der unter Umständen bereits unmittelbar nach kontaktieren der Chipkarte mit dem Sendeterminal im Rahmen einer Initialisierungsphase der Chipkarte aktiviert wurde (der Protokollprozess sendet bei der Initialisierung eine ATR-Nachricht („Answer to Reset“) an das Terminal mit diversen Chipkarten- und Übertragungsparametern, z.B. auch der Größe des Ringpuffers 16, um eintreffende übergroße Nachrichten erkennen zu können), wird nun durch den Betriebssystemkern 24 aktiviert oder fortgesetzt, falls er temporär inaktiv ist. Optional ist es auch möglich, dass der Protokollprozess 21 prüft, ob Teilnachrichten für ihn im Zwischenpuffer 16 liegen. Ebenso kann der Protokollprozess 21 durch ein Event „Neue Daten im Zwischenpuffer“ von dem Betriebssystemkern 24 aktiviert werden.
    • - Der Protokollprozess 21 interpretiert 51 die im Zwischenpuffer 16 liegenden Bytes der Kommando-APDU, um Informationen über die Gesamtlänge der zu empfangenden Nachricht oder Strukturinformationen über die Nachricht zu erhalten, welche zu ihrer weiteren Bearbeitung benötigt werden. Hierbei werden bestimmte Bytes der eingehenden Kommando-APDU ausgewertet, z. B. das Class-Byte CLA, welches gemäß ISO/IEC 7816-4 im Bit 5 anzeigt, ob die aktuell eintreffende Kommando-APDU das letzte/einzige Kommando (CLA Bit 5 = 0) einer Kette von Kommandos ist, oder ob die aktuelle Kommando-APDU nicht das letzte Kommando der Kette ist (CLA Bit 5 = 1) und noch weitere Kommandos folgen. Derartige miteinander verknüpfte Ketten von Kommandos („Command Chaining“) sind für einige Kommandotypen, z. B. PUT DATA, die mehr als 255 Bytes an zur Chipkarte zu übertragende Daten umfassen, geeignet. Falls der Protokollprozess 21 daraus schließen kann, dass mehr Teilnachrichten zu erwarten sind, als in den Ringpuffer 16 passen, wird der Speicherprozess 22 entweder von dem Betriebssystemkern 24 oder von dem Protokollprozess 21 veranlasst, den Ringpuffer 16 zu leeren.
    • - Ebenso kann der Protokollprozess 21 bei der Interpretation 51 der eintreffenden Daten das INS-Byte, welches einen Rückschluss auf das von der Kommando-APDU übertragene Kommando zulässt, auswerten, um
    • - eine Gültigkeitsprüfung der vorliegenden Daten durchzuführen. Ebenso ist es möglich, dass die Interpretation den endgültigen Speicherort der Daten im EEPROM-Speicher 5 der Chipkarte 1 ermittelt, um diese Information dem Speicherprozess 22 per Interprozess-Kommunikation (IPC) mitzuteilen 52.
    • - Der Protokollprozess 21 wird nach Erledigung seiner Aufgabe inaktiv -und wartet auf die nächste Aktivierung durch den Betriebssystemkern 24 oder die Eingangssteuerung 10 aufgrund im Ringpuffer 16 vorliegender Daten.
    • - Nun wird der mit niedriger Priorität ausgeführte Speicherprozess 22 von dem Betriebssystemkern 24 bzw. der Eingangssteuerung 10 aktiviert. Ebenso kann der Speicherprozess 22 aktiviert werden, wenn der Ringpuffer 16 einen bestimmten vorgegebenen Füllstand überschritten hat, um diesen rechtzeitig zu leeren, damit weitere eingehende Daten aus dem Eingangspuffer 18 in den Ringpuffer 16 übertragen werden können. Das Überschreiten des Füllstandes kann dann mittels eines Ereignisses (Event) gemeldet werden. Ebenso ist es möglich, dass der Speicherprozess 22 aufgrund eines Ablaufens einer Zeitscheibe oder abhängig von dem Ergebnis einer aktiven Prüfung des Füllstandes des Ringpuffers 16 („Polling“) aktiviert wird.
    • - Der Speicherprozess 22 liest 53 die in dem Ringpuffer 16 vorliegenden Daten und schreibt 54 diese in den nicht-volatilen Speicherbereich 14. Vorzugsweise kann der Speicherprozess 22 auch warten, bis eine Speicherseite in dem Ringpuffer 16 vollständig vorliegt, d.h. beispielsweise 32 Byte, da ein Speicherzugriff auf den nicht-volatilen Speicher 5 ohnehin zumeist seitenweise erfolgt.
    • - Der Speicherprozess 22 kann die Nachricht 16 direkt in einen im EEPROM-Speicher 5 angelegten Zielspeicherbereich des Applikationsprozesses 19, für den die Daten bestimmt sind, aus den Teilnachrichten B1 - B8 zusammenfügen. In der Regel existiert jedoch ein spezieller nicht-volatiler Speicherbereich 14, um eine Nachricht dort einerseits aus den empfangenen Teilnachrichten zusammenfügen zu können und andererseits dort eine Vorprüfung der empfangenen Nachricht durchzuführen, z. B. eine kryptographische Sicherheitsoperation oder eine Prüfsummenverifikation. Die Verwendung eines speziellen Speicherbereichs 14 ist insbesondere bei Aktualisierungskommandos sinnvoll (z.B. UPDATE DATA), da ein sofortiges Überschreiben der zu aktualisierenden Daten im Zielspeicherbereich zu einer unerwünschten Dateninkonsistenz führen kann, falls das Aktualisierungskommando unvollständig oder fehlerhaft übertragen wird oder falls eine Verifikation durch einen Prüfsummenvergleich fehlschlägt. Ein unvollständiges oder fehlerhaftes Aktualisierungskommando kann demgegenüber aus einem separaten nicht-volatilen Speicherbereich 14 gelöscht werden, ohne dass die eigentlichen zu aktualisierenden Daten beschädigt werden.
    • - In dem nicht-volatilen Speicherbereich 14 fügt der Speicherprozess 22 die vollständige Nachricht B1 - B8 so zusammen, dass die Nachricht vorverarbeitet oder im Hinblick auf ihre Gültigkeit oder sicherheitsrelevante Aspekte verifiziert werden kann.
    • - Da der Speicherprozess 22 eine niedrigere Priorität als der Unterbrechungsprozess 20 hat, kann er nur zwischen zwei Unterbrechungsphasen, wenn der Unterbrechungsprozess 20 inaktiv ist, aktiviert werden, um aus dem Ringpuffer 16 Teilnachrichten auszulesen. Der Speicherprozess 22 ist also nur für die Zeitdauer der Übertragung von Daten von dem Terminal in den UART-Eingangspuffer 18 aktiv, da er Teilnachrichten nur solange aus dem Zwischenpuffer 16 auslesen kann, wie der Eingangspuffer 18 einen vorgegebenen Füllstand nicht überschreitet. Dann wird wieder der hochprioritäre Unterbrechungsprozess 20 aktiviert.
    • - Falls die Nachricht vollständig im nicht-volatilen Speicherbereich 14 vorliegt, was von dem Protokollprozess 22 durch Auswerten des CLA-Bytes ermittelt werden kann, wird abschließend der Applikationsprozess 19 per Interprozesskommunikation (IPC) informiert. Die Aktivierung des Applikationsprozesses 19 kann durch den Speicherprozess 22 selbst, den Betriebssystemkern 24, die Eingangssteuerung 10 oder event-gesteuert erfolgen.
    • - Die im nicht-volatilen Speicherbereich 14 nunmehr vollständig vorliegende Nachricht kann auch direkt in den Adressbereich der Applikation 19 kopiert werden, was ein Aufrufen des Kommandointerpreters erforderlich macht, um die Applikation zu ermitteln. Andererseits kann die Applikation aufgefordert werden, auf die Daten ihrerseits zuzugreifen (42).
  • Das oben beschriebene Verfahren hat den Vorteil, dass die Zeit, in der der UART-Eingangspuffer 18 sich füllt, von dem Protokollprozess 21 oder dem Speicherprozess 22 ausgenutzt werden kann, so dass keine Totzeit (CPU Idle Time) des Prozessors 2 beim Senden und Empfangen entsteht.
  • Das in 4 skizzierte Verfahren wird durch Synchronisationsmechanismen realisiert, die von der Übertragungsgeschwindigkeit der Daten und der internen Prozessortaktung der Chipkarte 1 abhängig sind. Die minimal verbleibende Zeit für den Speicherprozess 22 ergibt sich beim T=1 Protokoll als 11 ETU („Elementary Time Unit“; die Dauer eines Bits bei der Datenübertragung zur Chipkarte; sie ist u. a. abhängig von dem Prozessortakt) abzüglich des jeweiligen Zeitaufwands für den Prozesswechsel und die Unterbrechungsbehandlung. Die maximal verbleibende Zeit für den Speicherprozess 22 ist abhängig von der CWT („Character Waiting Time“), die die maximale Wartezeit zwischen zwei Bytes angibt, bevor ein Datenempfang als beendet angesehen wird.
  • Das vorbeschriebene Verfahren kann mit einem Speicherbereich 14 in dem nicht-volatilen Speicher 5 durchgeführt werden. Da die Schreibzeiten bei einem klassischen EEPROM-Speicher jedoch eingeschränkt sein können, können auch andere nicht-volatile Speicher, wie z. B. Flash-Speicher, oder auch zukünftige Speichertechnologien, wie z. B. M-RAM oder FeRAM, verwendet werden.
  • Bei der Kombination der Vorrichtungen der 1 und 3 (bzw. der Verfahren der 2 und 4) übernimmt der Sekundärpuffer 17 als virtueller Eingangspuffer der 1 und 2 im Hinblick auf den Verfahrensablauf der 4 die Funktion des UART-Eingangspuffers 18, indem er zwischen den UART-Eingangspuffer 18 und den Zwischenpuffer 16 geschaltet wird.
  • Bei dieser kombinierten Konfiguration entspricht der Zwischenpuffer 16 der 3 dem Speicherbereich 15 der 1. Hierbei überträgt 43, 44 der Sekundärunterbrechungsprozess 23 - als virtueller Unterbrechungsprozess - Teilnachrichten aus dem Sekundärpuffer 17 in den Zwischenpuffer 16, wenn mittels einer virtuellen Unterbrechung 43 signalisiert wird, dass der Sekundärpuffer 17 einen vorgegebenen Füllstand überschritten hat. Danach werden die nunmehr im Zwischenspeicher 16 befindlichen Teilnachrichten von dem Protokoll- und Speicherprozess 21, 22 entsprechend des in 4 illustrierten Verfahrens weiter verarbeitet.

Claims (38)

  1. Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger (1), mit folgenden Schritten: Empfangen einer ersten Teilnachricht (30) einer Nachricht in einem Eingangspuffer (18); und Übertragen zumindest der ersten Teilnachricht (30) in einen Nachrichtenpuffer (15); Empfangen einer zweiten Teilnachricht (30) der Nachricht in dem Eingangspuffer (18); und dadurch gekennzeichnet, dass der tragbare Datenträger ein Betriebssystem (7) aufweist, das eine nebenläufige Abarbeitung von Prozessen durch den Prozessor des tragbaren Datenträgers ermöglicht; die erste empfangene Teilnachricht aus dem Eingangspuffer (18) in einen Sekundärpuffer (17) weitergeleitet wird (43,44); und in dem Schritt des Übertragens (49) die weitergeleitete erste Teilnachricht (30) und die zweite Teilnachricht in den Nachrichtenpuffer (15) übertragen werden.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass eine Unterbrechung (31) einer Arbeit des Prozessors (4) ausgelöst und der Schritt des Weiterleitens (43,44) eingeleitet wird, wenn der Eingangspuffer (18) einen vorgegebenen Füllstand überschreitet.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass in Reaktion auf die Unterbrechung (31) eine Sekundärpuffersteuerung (12, 25) aktiviert wird, welche das Weiterleiten (43,44) von Teilnachrichten aus dem Eingangspuffer (18) in den Sekundärpuffer (17) derart durchführt, dass kein Prozesswechsel durch das Betriebssystem (7) vorgenommen werden muss.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass ein Füllstand des Sekundärpuffers (17) überwacht und ein Sekundärunterbrechungssignal (46) ausgelöst wird, wenn der Sekundärpuffer (17) einen vorgegebenen Füllstand überschreitet.
  5. Verfahren nach Anspruche 4, dadurch gekennzeichnet, dass in Reaktion auf das Sekundärunterbrechungssignal (46) ein Prozess (23) aktiviert wird, welcher in dem Sekundärpuffer (17) vorliegende Teilnachrichten in einen Speicherbereich (15) des Datenträgers (1) überträgt.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass der Sekundärunterbrechungsprozess (23) von dem Betriebssystem (7) in dem eingeschränkten Benutzermodus (27) ausgeführt wird.
  7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, dass zum Ausführen des Sekundärunterbrechungsprozesses (23) ein Prozesswechsel durch das Betriebssystem vorgenommen wird.
  8. Verfahren nach einem der Ansprüche 5 bis 7, dadurch gekennzeichnet, dass in dem Speicherbereich (15) des Datenträgers (1) vorliegende Teilnachrichten verarbeitet werden und/oder in einem Zielspeicherbereich gespeichert werden und/oder einer Applikation (13, 19) bereitgestellt werden.
  9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass Verfahrensschritte durch den Prozessor (2) in Form von zumindest teilweise nebenläufigen Operationen und/oder Prozessen durchgeführt werden.
  10. Tragbarer Datenträger (1), umfassend einen Prozessor (2), ein Betriebssystem (7), welches einen Systemmodus (26) und einen demgegenüber eingeschränkten Benutzermodus (27) unterstützt, und einen asynchronen Eingangspuffer (18), welcher eingerichtet ist, sich beim Empfang einer Nachricht kontinuierlich mit Teilnachrichten der Nachricht zu füllen, dadurch gekennzeichnet, dass der Datenträger (1) einen Sekundärpuffer (17), der größer als der Eingangspuffer (18) ist, und eine von dem Prozessor (2) in dem privilegierten Systemmodus (26) ausführbare Sekundärpuffersteuerung (12, 25) umfasst, welche eingerichtet ist, in dem Eingangspuffer (18) vorliegende Teilnachrichten in den Sekundärpuffer (17) weiterzuleiten (43, 44).
  11. Datenträger (1) nach Anspruch 10, dadurch gekennzeichnet, dass der asynchrone Eingangspuffer (18) ein UART-Speicherbaustein ist.
  12. Datenträger (1) nach Anspruch 10 oder 11, dadurch gekennzeichnet, dass der Sekundärpuffer (17) als Speicherbereich in einem RAM-Speicher (6) des Datenträgers (1) realisiert ist.
  13. Datenträger (1) nach einem der Ansprüche 10 bis 12, dadurch gekennzeichnet, dass die Sekundärpuffersteuerung (12, 25) als im Systemmodus betreibbare virtuelle Firmware des Sekundärpuffers (17) in das Betriebssystem (7) integriert ist.
  14. Datenträger (1) nach einem der Ansprüche 10 bis 13, dadurch gekennzeichnet, dass der Datenträger (1) eine Unterbrechungseinrichtung (9) umfasst, die eingerichtet ist, eine Unterbrechung (31) einer Arbeit des Prozessors (4) auszulösen, wenn der Eingangspuffer (18) einen vorgegebenen Füllstand überschreitet.
  15. Datenträger (1) nach Anspruch 14, dadurch gekennzeichnet, dass die Unterbrechungseinrichtung (9) eingerichtet ist, bei der Unterbrechung (31) die im Systemmodus (26) betreibbare Sekundärpuffersteuerung (12, 25) als der Unterbrechung (31) zugeordnete Unterbrechungsbehandlungsroutine zu aktivieren.
  16. Datenträger (1) nach Anspruch 15, dadurch gekennzeichnet, dass die Sekundärpuffersteuerung (12, 25) eingerichtet ist, bei einer Unterbrechung (31) ohne einen Prozesswechsel durch das Betriebssystem (7) aktivierbar zu sein.
  17. Datenträger (1) nach einem der Ansprüche 10 bis 16, dadurch gekennzeichnet, dass der Datenträger (1) eine Ereignisüberwachung (11) umfasst, die eingerichtet ist, einen Füllstand des Sekundärpuffers (17) zu überwachen und ein Sekundärunterbrechungssignal (46) auszulösen, wenn der Sekundärpuffer (17) einen vorgegebener Füllstand überschreitet.
  18. Datenträger (1) nach Anspruch 17, dadurch gekennzeichnet, dass der Datenträger (1) eine Eingangssteuerung (10) umfasst, welche eingerichtet ist, in Reaktion auf ein Sekundärunterbrechungssignal (46) eine Ausführung eines Sekundärunterbrechungsprozesses (23) zum Übertragen (48, 49) von in dem Sekundärpuffer (17) vorliegenden Teilnachrichten in einen Speicherbereich (15) des Datenträgers (1) einzuleiten.
  19. Datenträger (1) nach Anspruch 18, dadurch gekennzeichnet, dass das Betriebssystem (18) eingerichtet ist, den Sekundärunterbrechungsprozess (23) in dem eingeschränkten Benutzermodus (27) zu betreiben.
  20. Datenträger (1) nach Anspruch 18 oder 19, dadurch gekennzeichnet, dass die Eingangssteuerung (10) eingerichtet ist, in dem Speicherbereich (15) vorliegende Teilnachrichten zu verarbeiten und/oder in einen Zielspeicherbereich zu kopieren und/oder einer Applikation (13, 19) bereitzustellen.
  21. Datenträger (1) nach einem der Ansprüche 10 bis 20, dadurch gekennzeichnet, dass das Betriebssystem (7) eingerichtet ist, Prozesse auf dem Prozessor (2) nebenläufig auszuführen.
  22. Datenträger (1) nach einem der Ansprüche 10 bis 21, dadurch gekennzeichnet, dass der Datenträger (1) eine Chipkarte, eine sichere Multimediakarte, ein USB-Speichermedium oder eine Mobilfunkkarte ist.
  23. Datenträger (1) nach einem der Ansprüche 10 bis 22, dadurch gekennzeichnet, dass der Eingangspuffer (18) weniger als fünf Byte, vorzugsweise ein Byte, aufnehmen kann und der Sekundärpuffer (17) mindestens fünf Byte aufnehmen kann.
  24. Verfahren nach einem der Ansprüche 1 bis 9, gekennzeichnet durch die Schritte: - Übertragen (33, 34) von in dem Eingangspuffer (18) vorliegenden Teilnachrichten in einen Zwischenpuffer (16) des Datenträgers (1); und - Speichern (53, 54) von in dem Zwischenpuffer (16) vorliegenden Teilnachrichten in dem nicht-volatilen Speicher (5) des Datenträgers (1) der- art, dass die vollständige Nachricht aus den Teilnachrichten zusammengefügt wird; wobei die Schritte des Übertragens (33, 34) und des Speicherns (53, 54 derart synchronisiert werden, dass Teilnachrichten aus dem Zwischenpuffer (16) in dem nicht-volatilen Speicher (5) gespeichert werden, solange der Eingangspuffer (18) einen vorgegebenen Füllstand nicht überschreitet.
  25. -Verfahren nach Anspruch 24, dadurch gekennzeichnet, dass die Schritte des Übertragens (33, 34) von Teilnachrichten in den Zwischenpuffer (16) und des Speicherns (53, 54) der Teilnachrichten in dem nicht-volatilen Speicher (5) derart synchronisiert werden, dass Teilnachrichten aus dem Eingangspuffer (18) in den Zwischenpuffer (16) übertragen werden, wenn der Eingangspuffer (18) einen vorgegebenen Füllstand überschreitet.
  26. Verfahren nach Anspruch 24 oder 25, dadurch gekennzeichnet, dass beim Schritt des Übertragens (33, 34) von Teilnachrichten in den Zwischenpuffer (16) die Teilnachrichten in einen in einem RAM-Speicher (6) des Datenträgers (1) eingerichteten Zwischenpuffer (16) übertragen werden, der größer ist als der Eingangspuffer (18).
  27. Verfahren nach einem der Ansprüche 24 bis 26, dadurch gekennzeichnet, dass beim Schritt des Speicherns (53, 54) von Teilnachrichten in dem nicht-volatilen Speicher (5) die Nachricht in einem separaten Speicherbereich (14) des nicht-volatilen Speichers (5) vollständig zusammengefügt und dort verifiziert wird.
  28. Verfahren nach einem der Ansprüche 24 bis 27, dadurch gekennzeichnet, dass die in dem nicht-volatilen Speicher (5) zusammengefügte Nachricht einer Applikation (13,19) bereitgestellt wird, für welche die Nachricht bestimmt ist.
  29. Verfahren nach einem der Ansprüche 24 bis 28, dadurch gekennzeichnet, dass die Teilnachrichten seitenweise in dem nicht-volatilen Speicher (5) gespeichert werden.
  30. -Verfahren nach einem der Ansprüche 24 bis 29, dadurch gekennzeichnet, dass Teilnachrichten in dem nicht-volatilen Speicher (5) gespeichert werden, während sich der durch den Schritt des Übertragens (33, 34) geleerte Eingangspuffer (18) füllt.
  31. Verfahren nach einem der Ansprüche 24 bis 30, gekennzeichnet durch den weiteren Schritt des Ermittelns (51) einer Information aus im Zwischenpuffer (16) vorliegenden Teilnachrichten, wobei die ermittelte Information eine Längeninformation über die Länge der Nachricht und/oder eine Strukturinformation über die Struktur der Nachricht ist.
  32. Verfahren nach Anspruch 31, dadurch gekennzeichnet, dass nach dem Schritt des Ermittelns (51) der Information aus den im Zwischenpuffer (16) vorliegenden Teilnachrichten der Schritt des Speicherns (53, 54) der Teilnachrichten in dem nicht-volatilen Speicher (5) veranlasst wird, wobei die ermittelte Information beim Schritt des Speicherns (53, 54) berücksichtigt wird.
  33. Verfahren nach Anspruch 31 oder 32, dadurch gekennzeichnet, dass das Ermitteln (51) der Information und/oder das Speichern (53, 54) der Teilnachrichten in dem nicht-volatilen Speicher (5) veranlasst oder fortgesetzt wird und das Übertragen (33, 34) von Teilnachrichten in den Zwischenpuffer (16) eingestellt oder unterbrochen wird, wenn der Zwischenpuffer (16) beim Übertragen (33, 34) von Teilnachrichten in den Zwischenpuffer (16) einen vorgegebenen Maximalfüllstand überschreitet.
  34. Verfahren nach einem der Ansprüche 31 bis 33, dadurch gekennzeichnet, dass das Übertragen (33, 34) von Teilnachrichten in den Zwischenpuffer (16) veranlasst oder fortgesetzt wird und das Ermitteln (38) der Information und/oder das Speichern (53, 54) der Teilnachrichten in dem nicht-volatilen Speicher (5) eingestellt oder unterbrochen wird, wenn der Zwischenpuffer (16) einen vorgegebenen Minimalfüllstand unterschreitet und/oder wenn der Eingangspuffer (18) einen vorgegebenen Füllstand überschreitet.
  35. Verfahren nach einem der Ansprüche 31 bis 34, dadurch gekennzeichnet, dass die Schritte des Übertragens (33, 34) von Teilnachrichten in den Zwischenpuffer (16) und/oder des Speicherns (53, 54) der Teilnachrichten in dem nicht-volatilen Speicher (5) und/oder des Ermittelns (38) der Information als zumindest teilweise nebenläufige Prozesse von einem Prozessor (2) des Datenträgers (1) ausgeführt werden.
  36. Verfahren nach einem der Ansprüche 24 bis 35, dadurch gekennzeichnet, dass eine Unterbrechung (31) einer Arbeit eines Prozessors (2) des Datenträgers (1) ausgelöst wird und das Übertragen (33, 34) von Teilnachrichten in den Zwischenpuffer (16) veranlasst wird, sobald der Eingangspuffer (18) einen vorgegebenen Füllstand überschreitet.
  37. Verfahren nach einem der Ansprüche 31 bis 35 mit 36, dadurch gekennzeichnet, dass das Übertragen (33, 34) von Teilnachrichten in den Zwischenpuffer (16) als Prozess mit hoher Ausführungspriorität, das Ermitteln (51) der Information als Prozess mit mittlerer Ausführungspriorität und das Speichern (40, 41) der Teilnachrichten in dem nicht-volatilen Speicher (5) als Prozess mit niedriger Ausführungspriorität auf dem Prozessor (2) ausführt wird.
  38. Datenträger nach einem der Ansprüche 10 bis 23, gekennzeichnet durch einen Zwischenpuffer (16) und eine von dem Prozessor (2) ausführbare Eingangssteuerung (10), welche eingerichtet ist, - in dem Eingangspuffer (18) vorliegende Teilnachrichten in den Zwischenpuffer (16) zu übertragen; - in dem Zwischenpuffer (16) vorliegende Teilnachrichten in dem nicht-volatilen Speicher (5) zu speichern; und - das Übertragen (33, 34) und das Speichern (40, 41) derart zu synchronisieren, dass Teilnachrichten aus dem Zwischenpuffer (16) in dem nicht-volatilen Speicher (5) gespeichert werden, solange der Eingangspuffer (18) einen vorgegebenen Füllstand nicht überschreitet.
DE102006058512.7A 2006-12-12 2006-12-12 Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger Expired - Fee Related DE102006058512B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102006058512.7A DE102006058512B4 (de) 2006-12-12 2006-12-12 Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102006058512.7A DE102006058512B4 (de) 2006-12-12 2006-12-12 Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger

Publications (2)

Publication Number Publication Date
DE102006058512A1 DE102006058512A1 (de) 2008-06-19
DE102006058512B4 true DE102006058512B4 (de) 2021-07-22

Family

ID=39399510

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006058512.7A Expired - Fee Related DE102006058512B4 (de) 2006-12-12 2006-12-12 Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger

Country Status (1)

Country Link
DE (1) DE102006058512B4 (de)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19928939A1 (de) 1999-06-24 2001-01-11 Giesecke & Devrient Gmbh Datenträger sowie Verfahren zur Datenübertragung und zur Speicherverwaltung
DE10040241A1 (de) 1999-08-18 2001-03-22 Giesecke & Devrient Gmbh Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung
US20050289291A1 (en) 2004-06-25 2005-12-29 Kabushiki Kaisha Toshiba Mobile electronic equipment
DE102004040296B3 (de) 2004-08-19 2006-03-02 Giesecke & Devrient Gmbh Schreiben von Daten in einen nichtflüchtigen Speicher eines tragbaren Datenträgers
EP1770533A1 (de) 2004-06-15 2007-04-04 Sony Corporation Informationsverwaltungseinrichtung und informationsverwaltungsverfahren

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19928939A1 (de) 1999-06-24 2001-01-11 Giesecke & Devrient Gmbh Datenträger sowie Verfahren zur Datenübertragung und zur Speicherverwaltung
DE10040241A1 (de) 1999-08-18 2001-03-22 Giesecke & Devrient Gmbh Speicheranordnung für einen Datenträger und Verfahren zur Speicherverwaltung
EP1770533A1 (de) 2004-06-15 2007-04-04 Sony Corporation Informationsverwaltungseinrichtung und informationsverwaltungsverfahren
US20050289291A1 (en) 2004-06-25 2005-12-29 Kabushiki Kaisha Toshiba Mobile electronic equipment
DE102004040296B3 (de) 2004-08-19 2006-03-02 Giesecke & Devrient Gmbh Schreiben von Daten in einen nichtflüchtigen Speicher eines tragbaren Datenträgers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ISO/IEC 7816-4

Also Published As

Publication number Publication date
DE102006058512A1 (de) 2008-06-19

Similar Documents

Publication Publication Date Title
DE2854485C2 (de) Datenverarbeitungsanlage
DE2856483C2 (de)
DE3114961C2 (de)
DE2523399C2 (de) Datenverarbeitungsanlage mit Eingabe/Ausgabeprozessoren
DE4244266C2 (de) Verfahren und Schaltungseinrichtung zum dynamischen Konfigurieren von Gerätetreibern für Computersystem-Betriebsmittel
EP2021905B1 (de) Simultaner schnittstellenbetrieb
DE69826009T2 (de) Smart-kartensteuerung vom endgerät und von netz-betriebsmitteln
DE2523372C3 (de) Eingabe-/Ausgabe-Anschlußsteuereinrichtung
DE102004004796B4 (de) Vorrichtung zur Datenübertragung zwischen Speichern
DE3744841C2 (de)
DE102005036648A1 (de) IC-Karte und IC-Kartensystem
DE102008055892A1 (de) Abspeichern von Abschnitten eines Datenübertragungsdeskriptors in einem gecachten und einem nicht gecachten Adressbereich
DE3103786A1 (de) Datenuebertragungssystem
DE1774053A1 (de) Digitaldaten-UEbertragungssystem
DE102006058512B4 (de) Verfahren zum Empfangen einer Nachricht in einem tragbaren Datenträger und tragbarer Datenträger
DE102006058511B4 (de) Verfahren zum Empfangen von Nachrichten durch einen portablen Datenträger und portabler Datenträger
DE2629401C2 (de)
DE102004050039B4 (de) Karte mit integrierter Schaltung, Betriebsverfahren und Kartensystem
EP1308846B1 (de) Datenübertragungseinrichtung
DE19928939A1 (de) Datenträger sowie Verfahren zur Datenübertragung und zur Speicherverwaltung
EP1610218B1 (de) Tragbarer Datenträger, System mit einem solchen Datenträger und Verfahren zum Betreiben eines solchen Datenträgers
WO2002099729A2 (de) Elektronischer schaltkreis für chipkarten-schnittstellen und verfahren zur kommunikation mit chipkarten-schnittstellen
EP1791057B1 (de) Pipeline-Mechanismus für den Datenaustausch zwischen Chipkarte und Terminal
DE2900380C2 (de)
DE10056198A1 (de) Kommunikationssystem zum Austausch von Daten unter Verwendung eines zusätzlichen Prozessors

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
R012 Request for examination validly filed

Effective date: 20130807

R081 Change of applicant/patentee

Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, DE

Free format text: FORMER OWNER: GIESECKE & DEVRIENT GMBH, 81677 MUENCHEN, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee