DE102006058511A1 - Method for receiving message by portable data carrier, involves transferring partial messages into temporary buffer of data carrier, which is available in starting buffer - Google Patents
Method for receiving message by portable data carrier, involves transferring partial messages into temporary buffer of data carrier, which is available in starting buffer Download PDFInfo
- Publication number
- DE102006058511A1 DE102006058511A1 DE102006058511A DE102006058511A DE102006058511A1 DE 102006058511 A1 DE102006058511 A1 DE 102006058511A1 DE 102006058511 A DE102006058511 A DE 102006058511A DE 102006058511 A DE102006058511 A DE 102006058511A DE 102006058511 A1 DE102006058511 A1 DE 102006058511A1
- Authority
- DE
- Germany
- Prior art keywords
- buffer
- messages
- sub
- disk
- data carrier
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
Description
Die vorliegende Erfindung betrifft ein Verfahren zum Empfangen von Nachrichten durch einen portablen Datenträger sowie einen derartigen Datenträger, insbesondere eine Chipkarte, eine sichere Multimediakarte, ein USB-Speichermedium, eine Mobilfunkkarte oder dergleichen.The The present invention relates to a method for receiving messages through a portable disk and such a data carrier, in particular a chip card, a secure multimedia card, a USB storage medium, a mobile phone card or similar.
Im Bereich der Datenkommunikation zwischen portablen Datenträgern und entsprechenden Lese-/Schreibgeräten oder Terminals ist aufgrund neuer Anwendungen und Anforderungen der Bedarf entstanden, Nachrichten zu empfangen und zu senden, deren Länge die üblichen von portablen Datenträgern verarbeitbaren Nachrichtenlängen überschreitet.in the Area of data communication between portable data carriers and corresponding reading / writing devices or terminals is due to new applications and requirements the need arose to receive and send messages whose Length the usual from portable data carriers exceeds processable message lengths.
Es sind verschiedene Möglichkeiten bekannt, das Empfangen von überlangen Nachrichten durch einen portablen Datenträger zu ermöglichen. Einerseits ist es möglich, die verwendeten Empfangs-/Sendepuffer zu vergrößern, was jedoch zu erhöhten Kosten führt, da Empfangspuffer üblicherweise als teure RAM-Speicher realisiert werden. Ebenso ist es möglich, zu empfangende überlange Nachrichten bereits vor dem Senden durch den Sender so aufzuspalten, dass sie von dem Datenträger schrittweise empfangen und verarbeitet werden können („Off-Card Splitting"). Dies hat jedoch den Nachteil, dass einerseits vergleichsweise komplexe Übertragungsprotokolle eingesetzt werden müssen und andererseits jedes Terminal, das mit derartigen portablen Datenträgern kommunizieren soll, umgerüstet werden muss, um es an die eingeschränkten Möglichkeiten der Datenträger anzupassen.It are different possibilities known to receive overlong To allow messages through a portable volume. On the one hand, it is possible, to increase the reception / transmission buffers used, but at an increased cost leads, since receiving buffer usually be realized as expensive RAM memory. It is also possible to receiving overlong Splitting messages before they are sent by the sender that they are from the disk can be received and processed step by step ("off-card splitting") the disadvantage that on the one hand comparatively complex transmission protocols must be used and on the other hand each terminal communicating with such portable media should be converted must be limited to it options the disk adapt.
Allgemein besteht bei derartigen Lösungen häufig das zusätzliche Problem, dass beim sequentiellen Empfang von Teilnachrichten einer Nachricht ein Performanceverlust zu erwarten ist, da der Prozessor des Datenträgers den sequentiellen Dateneingang koordinieren muss und währenddessen keine anderen Aufgaben übernehmen kann. Deshalb 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 zumindest in gewissem Umfang vorgeben kann. Hierzu werden häufig separate, asynchrone Eingangspuffer, wie z. B. UART-Bausteine („Universal Asynchronous Receiver/Transmitter") eingesetzt, die von dem Datenträger zu empfangende Teilnachrichten unmittelbar aufnehmen können. Die Funktion derartiger UART-Bausteine ist somit unabhängig von der Prozessorgeschwindigkeit und benötigt für die Kommunikation auf Byte-Ebene keine Softwareunterstützung. Den Empfang überlanger Nachrichten unterstützt ein asynchroner Eingangspuffer jedoch nicht, da er bei Chipkarten in der Regel lediglich Datenmengen der Größe eines Bytes fasst.Generally exists in such solutions often the additional Problem that with the sequential receipt of partial messages a Message a performance loss is expected as the processor of the disk must coordinate the sequential data input and meanwhile do not take on any other tasks can. Therefore, it is desirable in digital data transmission, the inclusion of message blocks an incoming stream of data from the speed of the processor of the receiving volume and decouple from its clock rate, so that the sending communication partner the disk the At least to a certain extent. For this become common separate, asynchronous input buffers, such as. B. UART devices ("Universal Asynchronous Receiver / Transmitter "), which can be received by the data carrier Can directly record part messages. The function of such UART blocks is thus independent from the processor speed and needed for byte-level communication no software support. The receipt of long messages supports an asynchronous input buffer, however, not because it is in smart cards usually summarizes only amounts of data the size of a byte.
Es ist deshalb die Aufgabe der vorliegenden Erfindung, ein effizientes Empfangen von überlangen Nachrichten durch einen Datenträger zu ermöglichen.It Therefore, the object of the present invention is an efficient Receive overlong messages through a disk to enable.
Diese Aufgabe wird erfindungsgemäß durch ein Verfahren und einen portablen Datenträger mit den Merkmalen der unabhängigen Ansprüchen gelöst. In davon abhängigen Ansprüchen sind vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung angegeben.These The object is achieved by a Method and a portable data carrier with the features of the independent claims solved. In it dependent claims are advantageous embodiments and developments of the invention specified.
Ein erfindungsgemäßer, mit einem Prozessor ausgestatteter portabler Datenträger umfasst einen nicht-volatilen Speicher und einen asynchronen Eingangspuffer, der kontinuierlich und sequentiell (z. B. bit- oder byteweise) Teilnachrichten einer zu empfangenden überlangen Nachricht unabhängig von dem Prozessor des Datenträgers empfängt. In dem asynchronen Eingangspuffer vorliegende Teilnachrichten werden zunächst in einen Zwischenpuffer des Datenträgers übertragen, der die überlange Nachricht unter Umständen auch nicht vollständig aufnehmen kann, und von dort in dem ausreichend großen nicht-volatilen Speicher des Datenträgers gespeichert. Beim Speichern wird die überlange Nachricht im nicht-volatilen Speicher aus ihren Teilnachrichten zusammengefügt.One according to the invention, with A portable medium equipped with a processor includes a non-volatile one Memory and an asynchronous input buffer that is continuous and sequentially (eg, bit or byte wise) submessages of a to be received overlong Message independent from the processor of the volume receives. In the asynchronous input buffer present sub-messages first transferred to an intermediate buffer of the volume, which is the overlong Message under circumstances not completely and from there in the sufficiently large non-volatile Memory of the data carrier saved. When saving, the overlong message is in non-volatile Memory merged from their sub-messages.
Hierbei werden die Schritte des Übertragens von Teilnachrichten von dem Eingangspuffer in den Zwischenpuffer und des Speicherns von im Zwischenpuffer vorliegenden Teilnachrichten in den nicht-volatilen Speicher derart abgestimmt und synchronisiert durchgeführt, dass in dem Zwischenpuffer vorliegende Teilnachrichten in dem nicht-volatilen Speicher nur gespeichert werden können, solange der Eingangspuffer einen vorgegebenen Füllstand nicht überschreitet. Wenn der vorgegebene Füllstand des sich kon tinuierlich füllenden Eingangspuffers erreicht ist, werden die darin vorliegenden Teilnachrichten prioritär in den Zwischenpuffer übertragen.In this case, the steps of transmitting partial messages from the input buffer into the intermediate buffer and storing partial messages in the intermediate buffer into the non-volatile memory are performed in a coordinated and synchronized manner so that partial messages present in the intermediate buffer can only be stored in the non-volatile memory as long as the input buffer does not exceed a predetermined level. When the predetermined level of the continuously filling input buffer is reached, the Teilnachrich present therein prioritized into the intermediate buffer.
Die Schritte des Übertragens und Speicherns werden ferner derart synchronisiert, dass Teilnachrichten aus dem Eingangspuffer in den Zwischenpuffer übertragen werden können, wenn der Eingangspuffer einen vorgegebenen Füllstand überschreitet, d. h., dass im Zwischenpuffer immer ausreichend freier Speicherplatz vorhanden ist, um im Eingangspuffer vorliegende Teilnachrichten ohne Pufferüberlauf oder Datenverlust in dem Zwischenpuffer zu übertragen.The Steps of transferring and storing are further synchronized so that partial messages can be transferred from the input buffer to the intermediate buffer when the input buffer exceeds a predetermined level, d. h. that in the Between buffer always enough free space available is to present in the input buffer part messages without buffer overflow or transfer data loss in the intermediate buffer.
Der Vorteil der vorliegenden Erfindung besteht darin, dass durch das oben beschriebene synchronisierte Füllen und Leeren des in Reihe geschalteten asynchronen Eingangspuffers, Zwischenpuffers und für überlange Nachrichten ausreichend großen nicht-volatilen Speichers weder eine Vergrößerung des an sich nicht ausreichend großen Eingangs- oder Zwischenpuffers noch ein Aufspalten überlanger Nachrichten durch den Sender erforderlich ist. Der Sender kann seine Nachricht vielmehr blockweise sequentiell und ohne vorherige Aufspaltung an den Datenträger senden, wo sie infolge der synchronisierten Weiterbehandlung von im Eingarigspuffer eintreffenden Teilnachrichten kontinuierlich bit- oder byteweise von dem Eingangspuffer ohne Datenverlust aufgenommen werden kann. Hierbei können die bewährten Kommunikationsprotokolle (z. B. T = 0 und T = 1 im Chipkartenbereich) unverändert eingesetzt werden. Darüber hinaus hat der Prozessor keine Totzeiten, da er weiterverarbeitende Prozesse ausführen kann, während sich der Eingangspuffer mit neuen Teilnachrichten füllt.Of the Advantage of the present invention is that by the above-described synchronized filling and emptying of the series switched asynchronous input buffers, intermediate buffers and for extra long News big enough non-volatile memory, neither an increase in itself sufficient huge Input or intermediate buffer still splitting up too long Messages required by the sender. The transmitter can be his Message rather block by block sequential and without prior splitting to the disk Send, where they as a result of the synchronized further treatment of in the input buffer incoming partial messages continuously recorded in bit or byte by byte from the input buffer without data loss can be. Here you can the proven ones Communication protocols (eg T = 0 and T = 1 in the chip card area) unchanged be used. About that In addition, the processor has no dead times as it is processing Execute processes can, while the input buffer fills with new partial messages.
Vorzugsweise ist der asynchrone Eingangspuffer ein UART-Baustein („Universal Asynchronous Receiver/Transmitter"), welcher nicht an die Ge schwindigkeit oder Taktung des Prozessors des Datenträgers gebunden ist, da der Nachrichtenempfang auf Hardware-Ebene realisiert wird. Ein derartiger UART-Baustein besitzt eine relativ geringe Datenkapazität von in der Regel lediglich einem Byte.Preferably the asynchronous input buffer is a UART block ("Universal Asynchronous Receiver / Transmitter "), which does not respond to the speed or clocking the processor of the disk is bound, as the message reception on Hardware level is realized. Such a UART module has a relatively small data capacity of usually only one byte.
Der Zwischenpuffer ist vorzugsweise ein in einem RAM-Speicher des Datenträgers eingerichteter Pufferbereich, dessen Größe die des Eingangspuffers übersteigt. Vorzugsweise wird der Zwischenpuffer als Ringspeicher realisiert, der durch koordinierte Schreib- und Leseprozesse im FIFO-Prinzip („first in first out") kontinuierlich mit Daten gefüllt und geleert werden kann.Of the The intermediate buffer is preferably one set up in a RAM memory of the data carrier Buffer area whose size is that of the Exceeds input buffer. Preferably, the intermediate buffer is realized as a ring memory, through coordinated writing and reading processes in the FIFO principle ("first in first out ") continuously filled with data and can be emptied.
Dadurch kann der schnelle und gegenüber dem Eingangspuffer größere RAM-Zwischenpuffer eine überbrückende Funktion zwischen dem kleinen, asynchronen Eingangspuffer und dem großen, verhältnismäßig langsamen nicht-volatilen Speicher übernehmen, wodurch eine koordinierte Aufnahme von Teilnachrichten ermöglicht wird. Eine direkte Hintereinanderschaltung des Eingangspuffers und des nicht-volatilen Speichers, ohne den überbrückenden Zwischenpuffer, könnte demgegenüber aufgrund der Diskrepanz zwischen der Transferrate eingehender Teilnachrichten im Eingangspuffer und der Speichergeschwindigkeit des nicht-volatilen Speichers zu Pufferüberläufen und Datenverlusten führen. Zudem kann so die Schreibgeschwindigkeit optimiert werden, da der nicht-volatile Speicher seitenweise beschrieben wird und die Größe des Eingangspuffer in der Regel kleiner ist als die Seitengröße des nicht-volatilen Speichers.Thereby can the fast and the opposite Input buffer larger RAM intermediate buffer a bridging function between the small, asynchronous input buffer and the large, relatively slow one adopt non-volatile memory, whereby a coordinated recording of sub-messages is made possible. A direct series connection of the input buffer and the non-volatile Memory, without the bridging buffer, could In contrast, due to the discrepancy between the transfer rate of incoming submessages in the input buffer and the memory speed of the non-volatile Memory to Buffer Overflows and Data loss lead. In addition, the writing speed can be optimized, as the non-volatile memory is described page by page and the size of the input buffer usually smaller than the page size of the non-volatile memory.
Ein erfindungsgemäßer portabler Datenträger umfasst ferner eine von dem Prozessor ausführbare Eingangssteuerung, die so eingerichtet ist, dass sie durch alternierendes Übertragen von in dem Eingangspuffer vorliegenden Teilnachrichten in den Zwischenpuffer und Speichern von in dem Zwischenpuffer vorliegenden Teilnachrichten in dem nicht-volatilen Speicher einen Nachrichtenempfang derart synchronisiert, dass der Zwischenpuffer nicht vollständig gefüllt ist, wenn der Eingangspuffer einen vorgegebenen Füllstand überschreitet. Darüber hinaus führt die Eingangssteuerung das Übertragen und Speichern derart alternierend durch, dass andererseits auch der Eingangspuffer nicht vollständig gefüllt ist, wenn noch nicht alle Teilnachrichten der zu empfangenden Nachricht eingetroffen sind. Diese beiden Synchronisationsbedingungen garantieren den reibungslosen Ablauf eines Nachrichtenempfangs von der Aufnahme von Teilnachrichten im Eingangspuffer bis zum Vorliegen der vollständig zusammengefügten Nachricht im nicht-volatilen Speicher.One portable according to the invention disk further comprises an input-side processor executable by the processor is set up so that they are transmitted by alternation of sub-messages present in the input buffer into the intermediate buffer and storing submessages present in the intermediate buffer in the non-volatile memory, a message receiving such synchronizes that the intermediate buffer is not completely filled, when the input buffer exceeds a predetermined level. Furthermore leads the input control the transferring and storing so alternately through, on the other hand, too the input buffer is not complete filled is, if not all partial messages of the message to be received have arrived. These two synchronization conditions guarantee the smooth running of a message reception from the recording from partial messages in the input buffer to the presence of the fully assembled message in non-volatile memory.
Die Eingangssteuerung realisiert die beiden Schritte des Kopierens und des Auslesens als separate, konkurrierende Prozesse mittels eines Multitasking/Multithreading-fähigen Betriebssystems des Datenträgers. Das Eintreffen von Teilnachrichten in dem Eingangspuffer und/oder das Überschreiten des vorgegebenen Füllstandes wird von einer Unterbrechungseinrichtung des Datenträgers registriert, die dann ein Unterbrechungssignal („Interrupt") auslöst. Das Unterbrechungssignal bewirkt, dass der Prozessor den momentan ausgeführten Prozess temporär unterbricht und den Nachrichtenempfang prioritär behandelt.The Input control realizes the two steps of copying and of reading out as separate, competing processes by means of a Multitasking / multithreaded Operating system of the disk. The arrival of partial messages in the input buffer and / or the crossing the predetermined level is registered by an interrupt device of the data carrier, which then triggers an interrupt signal ("interrupt") causes the processor to temporarily interrupt the currently executing process and the message reception priority.
Sobald die Unterbrechungseinrichtung ein Unterbrechungssignal auslöst, wird ein die Unterbrechung bearbeitender Unterbrechungsprozess von der Eingangssteuerung zum Übertragen von in dem Eingangspuffer vorliegenden Teilnachrichten in den Zwischenpuffer ausgeführt. Wenn der Unterbrechungsprozess ein vorgegebenes Datenvolumen und/oder sämtliche im Eingangspuffer vorliegende Teilnachrichten in den Zwischenpuffer übertragen hat, beendet er seine Arbeit, bis wieder neue Teilnachrichten in dem Eingangspuffer vorliegen und/oder ein bestimmter vorgegebener Füllstand des Eingangspuffers erreicht oder überschritten wird. Daraufhin wird von der Eingangssteuerung ein Speicherprozess aktiviert, der in dem Zwischenpuffer vorliegende Teilnachrichten in dem nicht-volatilen Speicher des Datenträgers speichert. Dadurch wird der Zwischenpuffer zumindest teilweise geleert, so dass der Unterbrechungsprozess ihn bei Bedarf wieder füllen kann.Once the interrupt device triggers an interrupt signal, an interrupt processing interrupt process is performed by the input controller to transmit sub messages present in the input buffer to the intermediate buffer. When the interruption process has transferred a given volume of data and / or all submessages present in the input buffer to the intermediate buffer, it terminates its work until new part again present messages in the input buffer and / or a certain predetermined level of the input buffer is reached or exceeded. Thereafter, the input controller activates a memory process which stores sub-messages present in the intermediate buffer in the nonvolatile memory of the data carrier. As a result, the intermediate buffer is at least partially emptied, so that the interruption process can refill it if necessary.
Die Teilnachrichten werden von dem Speicherprozess derart abspeichert und zusammenfügt, dass, nachdem sämtliche Teilnachrichten einer zu empfangenden überlangen Nachricht eingegangen sind, diese Nachricht vollständig im nicht-volatilen Speicher vorliegt. Dort wird die vollständige Nachricht einer Applikation bereitgestellt, für die die Nachricht bestimmt ist.The Partial messages are stored by the storage process in this way and put together that, after all Have received submessages of an overlong message to be received, this message completely in non-volatile memory. There will be the complete message an application for which the message is intended is.
Bevor die im nicht-volatilen Speicher zusammengefügte Nachricht einer Applikation bereitgestellt wird, kann sie verifiziert werden, z. B. durch den Speicherprozess. Diese Verifikation kann eine der normalen Verarbeitung der Nachricht vorgeschaltete Prüfung umfassen, beispielsweise die Überprüfung einer Prüfsumme oder das Durchführen einer kryptographischen oder sonstigen sicherheitstechnischen Operation. Die Nachricht kann von dem Speicherprozess vorzugsweise in einem im nicht-volatilen Speicher eingerichteten, ausreichend großen separaten Speicherbereich zusammengefügt werden, der nicht dem endgültigen Speicherort der empfangenen Nachricht entspricht. Dies ist insbesondere dann hilfreich, wenn es sich bei der empfangenen Nachricht um eine Aktualisierungsanweisung von im nicht-volatilen Speicher bereits vorhandenen Daten handelt, die bei einem direkten Überschreiben des endgültigen Speicherorts nicht mehr rekonstruiert werden könnten, wenn z. B. die Verifikation der Nachricht durch Überprüfen einer Prüfsumme fehlschlägt oder die Nachricht infolge eines Übertragungsfehlers unvollständig ist.Before the message of an application assembled in the non-volatile memory can be verified, z. B. by the Storage process. This verification can be one of the normal processing the test upstream of the message include, for example, the verification of a checksum or the performing a cryptographic or other safety-related operation. The message may preferably be from the storage process in one in the non-volatile memory, sufficiently large separate memory area together that will not be the final one Location of the received message. This is special then helpful if the received message is a Update instruction from in non-volatile storage already existing data, which is a direct overwriting of the final Storage locations could not be reconstructed if z. B. the verification the message fails by checking a checksum or the Message due to a transmission error incomplete is.
Vorzugsweise werden die in dem Zwischenpuffer vorliegenden Teilnachrichten in Übereinstimmung mit einer Speicherverwaltung des Datenträgers seitenweise in den nicht-volatilen Speicher geschrieben.Preferably the sub-messages present in the intermediate buffer are matched with a storage management of the volume page by page in the non-volatile Memory written.
Um die Ausführung des Unterbrechungs- und des Speicherprozesses durch die Eingangssteuerung wirkungsvoll synchronisieren zu können, umfasst der Datenträger ein Multitasking/Multithreading-fähiges Betriebssystem, welches Prozesse/Threads auf dem Prozessor nebenläufig ausführen kann, so dass die Eingangssteuerung eine nebenläufige Ausführung des Unterbrechungsprozesses und des Speicherprozesses einleiten kann. Die Ausführung eines Unterbrechungsprozesses kann dann unterbrochen werden, um die Ausführung eines unterbrochenen Speicherprozesses fortzusetzen, wenn der Unterbrechungsprozess den Eingangspuffer geleert hat. Umgekehrt wird der Speicherprozess unterbrochen, um den Unterbrechungsprozess fortzusetzen, wenn der Eingangspuffer den vorgegebenen Füllstand überschreitet.Around execution the interruption and storage processes by the input control To effectively synchronize, the volume includes a Multitasking / multithreaded Operating system, which can run processes / threads concurrently on the processor, so that the input control is a concurrent execution of the interruption process and the storage process. The execution of a Interruption process can then be interrupted to stop the execution of an interrupted Continue storage process when the interruption process Has emptied input buffer. Conversely, the storage process is interrupted, to continue the interrupt process when the input buffer exceeds the predetermined level.
Zusätzlich zu dem Unterbrechungsprozess und dem Speicherprozess kann die Steuereinrichtung die Ausführung eines Protokollprozesses einleiten, welcher eine in dem Zwischenpuffer vorliegende Teilnachricht interpretiert, indem eine z. B. für die Ausführung des Speicherprozesses benötigte Information aus den Teilnachrichten des Zwischenspeichers ermittelt wird. Bei einer solchen Information kann es sich insbesondere um eine Längeninformation über die Länge der Nachricht und/oder einer Strukturinformation über die Struktur der Nachricht handeln.In addition to the interrupt process and the storage process, the controller execution of a protocol process, which one in the intermediate buffer present sub-message interpreted by a z. B. for the execution of Storage process needed Information determined from the partial messages of the buffer becomes. Such information may be in particular a length information about the Length of Message and / or structure information about the structure of the message act.
Der Protokollprozess kann durch Auswertung bestimmter Bytes einer Teilnachricht feststellen, ob die Teilnachricht zu einer überlangen Nachricht gehört, so dass der Speicherprozess zur entsprechenden Behandlung der Teilnachrichten hierüber informiert werden kann. Diese Behandlung kann beispielsweise darin bestehen, die Teilnachricht in dem separaten Speicherbereich des nicht-volatilen Speichers abzulegen oder sie an bereits empfangene Teilnachrichten anzufügen. Ebenso kann die Interpretation in einer reinen Gültigkeitsprüfung der empfangenen Teilnachrichten bestehen, um Datenübertragungsfehler frühzeitig zu erkennen.Of the Protocol process can by evaluating certain bytes of a partial message determine if the partial message belongs to an overlong message, so that the storage process for handling the partial messages accordingly here over can be informed. For example, this treatment can be exist in the separate memory area of the partial message non-volatile memory or transfer it to already received partial messages to add. Likewise, the interpretation in a pure validation of the received submessages insist on data transmission errors early to recognize.
Nach der Interpretation einer im Zwischenpuffer vorliegenden Teilnachricht wird der Protokollprozess von der Eingangssteuerung unterbrochen oder beendet und der Speicherprozess fortgesetzt oder begonnen, wobei der Speicherprozess die von dem Protokollprozess ermittelte Information nutzt.To the interpretation of a sub-message present in the intermediate buffer the protocol process is interrupted by the input control or stopped and the storage process continued or started, taking the storage process the information determined by the protocol process uses.
Bei einem Multitasking/Multithreading-fähigen Betriebssystem wird die Ausführung des Unterbrechungsprozesses einerseits und des Protokollprozesses und/oder des Speicherprozesses andererseits derart synchronisiert, dass die Ausführung des Protokollprozesses und/oder des Speicherprozesses eingeleitet oder fortgesetzt wird und die Ausführung des Unterbrechungsprozesses beendet oder unterbrochen wird, wenn der Zwischenpuffer infolge der Teilnachrichtenübertragung des Unterbrechungsprozesses einen vorgegebenen Maximalfüllstand überschreitet. Vorzugsweise wird der Speicherprozess gestartet, wenn sich der Eingangspuffer füllt.at a multitasking / multithreaded operating system will use the execution the interruption process on the one hand and the protocol process on the other and / or the storage process otherwise synchronized, that the execution the logging process and / or the storage process or continues and the execution of the interrupt process terminated or interrupted when the intermediate buffer due the sub-message transmission the interruption process exceeds a predetermined maximum level. Preferably, the storage process is started when the input buffer crowded.
Dementsprechend unterbricht oder beendet die Eingangssteuerung die Ausführung des Interpretationsprozesses und/oder des Speicherprozesses und setzt die Ausführung des Unterbrechungsprozesses fort oder beginnt sie, wenn der Eingangspuffer infolge des kontinuierlichen Füllens mit weiteren Teilnachrichten einen vorgegebenen Füllstand überschreitet und/oder wenn der Zwischenpuffer infolge der Arbeit des Speicherprozesses einen vorgegebenen Minimalfüllstand unterschreitet.Accordingly, the input controller suspends or terminates the execution of the interpretation process and / or the storage process, and suspends execution of the interrupt pro cesses continues or starts when the input buffer exceeds a predetermined level due to the continuous filling with further sub-messages and / or if the intermediate buffer falls below a predetermined minimum level as a result of the operation of the storage process.
Zur reibungslosen Abwicklung eines Empfangs einer überlangen Nachricht ist es demzufolge notwendig, dass kontinuierlich überprüft wird, ob einerseits in dem Eingangspuffer Teilnachrichten vorliegen und/oder ein vorgegebener Füllstand überschritten wird und ob andererseits der Zwischenpuffer ausreichend Speicherplatz zur Aufnahme von Teilnachrichten aus dem Eingangspuffer hat oder Speicherplatz geschaffen werden muss.to smooth processing of receiving an overlong message is it Consequently, it is necessary to continuously check whether, on the one hand, in the Input buffer sub-messages are present and / or a predetermined Level exceeded and on the other hand, if the intermediate buffer has enough memory space to receive partial messages from the input buffer or memory space must be created.
Das Überschreiten eines vorgegebenen Füllstands des Eingangspuffers wird unterbrechungsgesteuert (mittels „Interrupts") signalisiert, so dass weder die Eingangssteuerung noch das Betriebssystem des Datenträgers ein Vorliegen von Teilnachrichten in dem Eingangspuffer überprüfen müssen. Der Zwischenpuffer wird demgegenüber vorzugsweise von einer Ereignissteuerung ereignisgesteuert überwacht, wobei ein Unterschreiten eines Minimalfüllstands oder ein Überschreiten eines Maximalfüllstands mittels eines Füllstandssignals (eines „Events") der Eingangssteuerung mitgeteilt wird.The passing a predetermined level of the input buffer is signaled interrupt (using "interrupts"), so that neither the input control nor the operating system of the data carrier Presence of sub-messages in the input buffer. Of the Intermediate buffer is in contrast preferably monitored by an event control event-controlled, wherein a falling below a minimum level or exceeding a maximum level by means of a level signal (an "event") of the input control is communicated.
Die Behandlung einer zu empfangenden Nachricht wird bei Eintreffen der ersten Teilnachrichten prinzipiell durch eine Unterbrechung und Aktivierung des entsprechenden Unterbrechungsprozesses durch die Eingangssteuerung eingeleitet. Die im weiteren von der Eingangssteuerung aktivierten und/oder fortgesetzten Prozesse werden aufgrund ihrer unterschiedlichen Wichtigkeit mit verschiedenen Ausführungsprioritäten belegt. Hierbei ist es sinnvoll, den Unterbrechungsprozess mit der im Vergleich zu den anderen Prozessen höchsten Ausführungspriorität auszustatten, da dieser bei Eintref fen von Teilnachrichten in dem kleinen Eingangspuffer sofort reagieren muss.The Treatment of a message to be received is on arrival of the first part messages in principle by an interruption and Activation of the corresponding interruption process by the Input control initiated. The further from the input control activated and / or continued processes are due to their different importance with different execution priorities. It makes sense to compare the interruption process with that highest to the other processes Equip execution priority, because this when Einfref fen of sub-messages in the small input buffer immediately must react.
Der nach Beendigung/Unterbrechung des Unterbrechungsprozesses zu aktivierende Protokollprozess wird mit einer mittleren Ausführungspriorität und der nach Beendigung/Unterbrechung des Protokollprozesses zu aktivierende Speicherprozess mit einer niedrigen Ausführungspriorität gestartet/fortgesetzt. Insgesamt sorgt jedoch des Betriebssystem des Datenträgers dafür, dass alle anderen von dem Prozessor auszuführenden Prozesse bei Bearbeitung eines Eingangs von Teilnachrichten im Verhältnis zu den drei oben genannten Prozessen jeweils niedrigere Ausführungsprioritäten haben.Of the to be activated after termination / interruption of the interruption process Protocol process is run with a medium execution priority and the to be activated after termination / interruption of the protocol process Storage process started with a low execution priority / continued. Overall, however, the operating system of the disk ensures that all other processes to be executed by the processor during processing an input of sub messages in relation to the three above Processes each have lower execution priorities.
Die Eingangssteuerung kann sowohl als Teil des Betriebssystems oder des privilegierten Betriebssystemkerns als auch unabhängig vom Betriebssystem des Datenträgers realisiert sein. Neben der Verwendung von Prozessen, die von der Eingangssteuerung aktiviert werden, ist es auch möglich, die Eingangssteuerung ihrerseits als Ein-/Ausgabe-Prozess vorzusehen, in dessen Rahmen jeweils ein Unterbrechungs-Thread, ein Protokoll-Thread und ein Speicher-Thread zur Durchführung der oben geschilderten Aufgaben synchronisiert aktiviert werden. Der Ein-/Ausgabeprozess kann dann als von dem Betriebssystemkern zu aktivierender Prozess ausgestaltet werden.The Input control can be either as part of the operating system or of the privileged operating system kernel as well as independent of Operating system of the data carrier be realized. In addition to the use of processes by the It is also possible to activate the input control Provide input control in turn as an input / output process, in each case an interrupt thread, a protocol thread and a memory thread for performing the above Tasks synchronized to be activated. The input / output process can then act as a process to be activated by the kernel be designed.
Als erfindungsgemäßer Datenträger ist insbesondere eine Chipkarte, eine sichere Multimediakarte, ein USB-Speichermedium, eine Mobilfunkkarte oder dergleichen vorgesehen.When Inventive disk is in particular a chip card, a secure multimedia card, a USB storage medium, a mobile card or the like provided.
Obwohl die obige Beschreibung nur den Datenempfang erläutert, ist das erfinderische Prinzip uneingeschränkt auch auf das Senden von Daten an wendbar, indem der Sekundärpuffer als virtueller Ausgangspuffer eingerichtet wird.Even though the above description explains only the data reception is the inventive Principle unrestricted Also applicable to sending data to the secondary buffer is set up as a virtual output buffer.
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:Further Features and advantages of the invention will become apparent from the following Description of various inventive embodiments and alternative embodiments in conjunction with the accompanying drawings. Show:
Die
folgende Figurenbeschreibung erläutert ein
Verfahren und eine Vorrichtung zum Empfangen von überlangen
Nachrichten durch einen portablen 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
Die
in den
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 portable Datenträger eingesetzt wird.in the Chip card area have for data transmission and communication with external readers, Terminals or other communication partners the transmission protocols T = 0 and T = 1 established which standardized block-oriented half-duplex protocols for mobile phone cards and chip cards represent. In this case, the byte-oriented T = 0 protocol becomes predominantly for GSM mobile smart card used while the T = 1 protocol for other chip cards and chip card-like portable data carriers are used becomes.
Bei einem Chipkarten-Betriebssystem, welches ein Multitasking (oder Multithreading) unterstützt, werden mehrere geschützte Pozesse („Tasks") oder Prozessfäden („Threads") durch häufigen Prozess- oder Thread-Wechsel scheinbar gleichzeitig, nebenläufig ausgeführt. Ein Prozess umfasst in der Regel einen Adressraum sowie zumindest einen Prozessfaden. 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 Betriebs systemkern 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. 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. Eine Kommunikation zwischen Tasks ist mit Hilfe einer Interprozesskommunikation (IPC) möglich. Threads, die demselben Prozess zugeordnet sind, können sich mit Hilfe der IPC synchronisieren. 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.at a smart card operating system, which is a multitasking (or Multithreading), become several protected Pozesse ("tasks") or process threads ("threads") through frequent process or thread change seemingly simultaneously, running concurrently. One Process usually includes an address space and at least one Process thread. In the following description is for the from the Processor of the chip card concurrent to be processed in the context of the treatment of an incoming message mainly spoken by processes that kernel of the operating to be activated. The same tasks can also be done by threads if the operating system is a multithreaded operating system is. The overhead of threads is common less than that for Processes, as there is no change in a thread complete Context change (states, Register contents, etc.) must be made, because concurrent threads Partial tasks of a process and a common part of the process context. A communication between tasks is possible using interprocess communication (IPC). threads which are assigned to the same process, can synchronize using the IPC. All explained in this description functionalities and tasks are alike as processes or as threads realizable, whereby, apart from the described administrative differences, also the Advantages and disadvantages of processes and threads with regard to the present invention are comparable.
Desweiteren
umfasst die Chipkarte
Das
Ausführen
von Applikationen
In
den
Die
gesamte Nachricht B1–B8
wird von einem Sender kontinuierlich, bitweise sequentiell über die
Kommunikationsschnittstelle
Im
Zusammenhang mit den
- – 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 Eingangspuffers18 wird eine Unterbrechung (Interrupt) unabhängig von dem Betriebssystemkern24 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 Betriebssystemkern24 die Ausführung des momentan von dem Prozessor2 aus geführten Anwendungsprozesses, um den Nachrichteneingang prioritär zu bearbeiten. Durch die Unterbrechung DATA AVAILABLE wird der Unterbrechungsprozess20 von dem Betriebssystemkern24 mit höchster Ausführungspriorität aktiviert (32 ), so dass Teilnachrichten aus dem Eingangspuffer18 in den Zwischenpuffer16 übertragen werden, sobald der Eingangspuffer16 einen vorgegebenen Füllstand überschreitet. - – Der
Unterbrechungsprozess
20 liest eine vorgegebene Anzahl oder alle Bits aus dem UART-Eingangspuffer18 aus (33 ) und schreibt sie in den RAM-Ringpuffer16 (34 ). Durch die Synchronisation der Prozesse20 ,21 und22 wird dafür gesorgt, dass der Ringpuffer16 niemals gänzlich gefüllt ist, wenn im UART-Eingangspuffer18 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 Eingangspuffer18 vorliegenden weiteren Teilnachrichten. Ebenso gut kann der Unterbrechungsprozess20 auch wieder aktiviert werden, wenn der Zwischenpuffer16 vollständig geleert ist, selbst wenn der UART-Eingangspuffer18 noch nicht den zum Auslösen einer Unterbrechung erforderlichen Füllstand erreicht hat. Die Signalisierung, dass der Ringpuffer16 vollständig geleert ist, kann durch einen Event ausgelöst werden oder dem Unterbrechungsprozess20 durch Interprozesskommunikation (IPC) von dem Speicherprozess22 , der den Ringpuffer16 ausliest, mitgeteilt werden. - – Sobald
der hochprioritäre
Unterbrechungsprozess
16 inaktiv wird, wird der Protokollprozess21 mit mittlerer Priorität von dem Betriebssystemkern24 bzw. der Eingangssteuerung10 aktiviert (35 ). - – 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 Ringpuffers16 , um eintreffende übergroße Nachrichten erkennen zu können), wird nun durch den Betriebssystemkern24 aktiviert oder fortgesetzt, falls er temporär inaktiv ist. Optional ist es auch möglich, dass der Protokollprozess21 prüft, ob Teilnachrichten für ihn im Zwischenpuffer16 liegen. Ebenso kann der Protokollprozess21 durch ein Event „Neue Daten im Zwischenpuffer" von dem Betriebssystemkern24 aktiviert werden. - – Der
Protokollprozess
21 interpretiert die im Zwischenpuffer16 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 Protokollprozess21 daraus schließen kann, dass mehr Teilnachrichten zu erwarten sind, als in den Ringpuffer16 passen, wird der Speicherprozess22 entweder von dem Betriebssystemkern24 oder von dem Protokollprozess21 veranlasst, den Ringpuffer16 zu leeren. - – Ebenso
kann der Protokollprozess
21 bei der Interpretation 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-Speicher5 der Chipkarte1 ermittelt, um diese Information dem Speicherprozess22 per Interprozess-Kommunikation (IPC) mitzuteilen (39 ). - – Der
Protokollprozess
21 wird nach Erledigung seiner Aufgabe inaktiv und wartet auf die nächste Aktivierung durch den Betriebssystemkern24 oder die Eingangssteuerung10 aufgrund im Ringpuffer16 vorliegender Daten. - – Nun
wird der mit niedriger Priorität
ausgeführte Speicherprozess
22 von dem Betriebssystemkern24 bzw. der Eingangssteuerung10 aktiviert (37 ). Ebenso kann der Speicherprozess22 aktiviert werden, wenn der Ringpuffer16 einen bestimmten vorgegebenen Füllstand überschritten hat, um diesen rechtzeitig zu leeren, damit weitere eingehende Daten aus dem Eingangspuffer18 in den Ringpuffer16 übertragen werden können. Das Überschreiten des Füllstandes kann dann mittels eines Ereignisses (Event) gemeldet werden. Ebenso ist es möglich, dass der Speicherprozess22 aufgrund eines Ablaufen einer Zeitscheibe oder abhängig von dem Ergebnis einer aktiven Prüfung des Füllstandes des Ringpuffers16 („Polling") aktiviert wird. - – Der
Speicherprozess
22 liest (40 ) die in dem Ringpuffer16 vorliegenden Daten und schreibt (41 ) diese in den nicht-volatilen Speicherbereich14 . Vorzugsweise kann der Speicherprozess22 auch warten, bis eine Speicherseite in dem Ringpuffer16 vollständig vorliegt, d. h. beispielsweise 32 Byte, da ein Speicherzugriff auf den nicht-volatilen Speicher5 ohnehin zumeist seitenweise erfolgt. - – Der
Speicherprozess
22 kann die Nachricht16 direkt in einen im EEPROM-Speicher5 angelegten Zielspeicherbereich des Applikationsprozesses19 , für den die Daten bestimmt sind, aus den Teilnachrichten B1–B8 zusammenfügen. In der Regel existiert jedoch ein spezieller nicht-volatiler Speicherbereich14 , 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 Speicherbereichs14 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 Speicherbereich14 gelöscht werden, ohne dass die eigentlichen zu aktualisierenden Daten beschädigt werden. - – In
dem nicht-volatilen Speicherbereich
14 fügt der Speicherprozess22 die vollständige Nachricht B1–B8 so zusammen, dass die Nachricht vorver arbeitet oder im Hinblick auf ihre Gültigkeit oder sicherheitsrelevante Aspekte verifiziert werden kann. - – Da
der Speicherprozess
22 eine niedrigere Priorität als der Unterbrechungsprozess20 hat, kann er nur zwischen zwei Unterbrechungsphasen, wenn der Unterbrechungsprozess20 inaktiv ist, aktiviert werden, um aus dem Ringpuffer16 Teilnachrichten auszulesen. Der Speicherprozess22 ist also nur für die Zeitdauer der Übertragung von Daten von dem Terminal in den UART-Eingangspuffer18 aktiv, da er Teilnachrichten nur solange aus dem Zwischenpuffer16 auslesen kann, wie der Eingangspuffer18 einen vorgegebenen Füllstand nicht überschreitet. Dann wird wieder der hochprioritäre Unterbrechungsprozess20 aktiviert. - – Falls
die Nachricht vollständig
im nicht-volatilen Speicherbereich
14 vorliegt, was von dem Protokollprozess22 durch Auswerten des CLA-Bytes ermittelt werden kann, wird abschließend der Applikationsprozess19 per Interprozesskommunikation (IPC) informiert. Die Aktivierung des Applikationsprozesses19 kann durch den Speicherprozess22 selbst, den Betriebssystemkern24 , die Eingangssteuerung10 oder event-gesteuert erfolgen. - – Die
im nicht-volatilen Speicherbereich
14 nunmehr vollständig vorliegende Nachricht kann auch direkt in den Adressbereich der Applikation19 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 ).
- - First, the UART input buffer takes
18 some bits of an incoming message as partial messages on (30 ). The incoming partial message is in particular a command APDU ("Application Protocol Data Unit") as the basic communication unit for data transmission from a terminal to a chip card. - - If there is a partial message in the input buffer
18 and / or when exceeding a predetermined level of the input buffer18 becomes an interrupt regardless of the operating system kernel24 an interrupt table which, in the case of the present interruption type "DATA AVAILABLE" (31 ) to be executed interrupt handling routine (ISR). - - Due to the triggered interruption (
31 ) interrupts the kernel24 the execution of the momentary of the processor2 from a guided application process to prioritize the receipt of the message. The DATA AVAILABLE interruption becomes the interrupt process20 from the kernel24 activated with the highest execution priority (32 ), so that partial messages from the input buffer18 in the intermediate buffer16 transmitted as soon as the input buffer16 exceeds a predetermined level. - - The interruption process
20 reads a given number or all bits from the UART input buffer18 out (33 ) and write them into the RAM ring buffer16 (34 ). By the synchronization of the processes20 .21 and22 is made sure that the ring buffer16 never completely filled when in the UART input buffer18 data to be read, otherwise data loss may occur. - - The interruption process
20 becomes inactive after completing its task and waits for the next activation due to a break in the input buffer18 present further sub-messages. The interruption process is just as good20 also be reactivated when the intermediate buffer16 is completely emptied, even if the UART input buffer18 has not yet reached the level required to trigger an interruption. The signaling that the ring buffer16 is completely emptied, may be triggered by an event or the interruption process20 by interprocess communication (IPC) from the storage process22 that's the ring buffer16 read out, be communicated. - - Once the high-priority interruption process
16 becomes inactive, becomes the logging process21 with medium priority from the kernel24 or the input control10 activated (35 ). - - The log process
21 , which was possibly already activated immediately after contacting the smart card with the transmitter terminal during an initialization phase of the smart card (the protocol process sends an ATR message ("Answer to Reset") to the terminal with various chip card and Übertra during initialization transmission parameters, z. B. also the size of the ring buffer16 to detect incoming oversized messages) is now through the kernel24 activated or continued if it is temporarily inactive. Optionally, it is also possible that the logging process21 Checks if sub messages for him in the intermediate buffer16 lie. Likewise, the log process21 through an event "New data in the intermediate buffer" from the kernel24 to be activated. - - The log process
21 interprets them in the intermediate buffer16 lying bytes of the command APDU to obtain information about the total length of the message to be received or structure information about the message, which are needed for further processing. In this case, certain bytes of the incoming command APDU are evaluated, for. For example, the class byte CLA, which according to ISO / IEC 7816-4 in bit 5 indicates whether the currently arriving command APDU is the last / only command (CLA bit 5 = 0) of a chain of commands, or whether the current one Command APDU is not the last command of the chain (CLA bit 5 = 1) and further commands follow. Such linked chains of commands ("command chaining") are suitable for some types of commands, for example PUT DATA, which comprise more than 255 bytes of data to be transferred to the chip card21 From this it can be concluded that more sub-messages are to be expected than in the ring buffer16 fit, becomes the storage process22 either from the kernel24 or from the log process21 causes the ring buffer16 to empty. - - Likewise, the log process
21 in the interpretation of the incoming data, evaluate the INS byte, which allows a conclusion on the command transmitted by the command APDU, in order to carry out a validity check of the available data. Likewise, it is possible for the interpretation to be the final location of the data in the EEPROM memory5 the chip card1 determines this information to the storage process22 communicate by interprocess communication (IPC) (39 ). - - The log process
21 will be inactive after completing its task and waiting for the next activation by the kernel24 or the input control10 due to the ring buffer16 available data. - - Now, the low-priority storage process will be executed
22 from the kernel24 or the input control10 activated (37 ). Likewise, the storage process22 be activated when the ring buffer16 has exceeded a certain predetermined level to empty it in time, so that further incoming data from the input buffer18 in the ring buffer16 can be transmitted. Exceeding the level can then be reported by means of an event. Likewise it is possible that the storage process22 due to expiration of a time slice or depending on the result of an active check of the fill level of the circular buffer16 ("Polling") is activated. - - The storage process
22 read (40 ) in the ring buffer16 present data and write (41 ) these in the non-volatile storage area14 , Preferably, the storage process22 also wait for a memory page in the ring buffer16 is completely present, ie, for example 32 bytes, as a memory access to the non-volatile memory5 anyway mostly done page by page. - - The storage process
22 can the message16 directly into one in the EEPROM memory5 created target storage area of the application process19 for which the data is intended to be composed of the sub-messages B1-B8. In general, however, there is a special non-volatile memory area14 in order to be able to combine a message there on the one hand from the received submessages and on the other hand to carry out a preliminary check of the received message there, eg. B. a cryptographic security operation or a checksum verification. The use of a special memory area14 is useful, in particular, for update commands (eg, UPDATE DATA), since an immediate overwriting of the data to be updated in the destination memory area can lead to undesired data inconsistency if the update command is incompletely or incorrectly transmitted or if verification by a checksum comparison fails. In contrast, an incomplete or erroneous update command may consist of a separate non-volatile storage area14 be deleted without damaging the actual data being updated. - - In the non-volatile storage area
14 adds the storage process22 the complete message B1-B8 together so that the message can be pre-processed or verified for validity or security-related aspects. - - because the storage process
22 a lower priority than the interrupt process20 has, he can only between two interruption phases when the interruption process20 is inactive, enabled to get out of the ring buffer16 Read out part messages. The storage process22 So it is only for the duration of the transfer of data from the terminal to the UART input buffer18 active, since it only sub messages from the intermediate buffer16 can read out how the input buffer18 does not exceed a predetermined level. Then again the high priority interruption process20 activated. - - If the message is completely in the non-volatile storage area
14 what is the protocol process22 can be determined by evaluating the CLA byte, finally the application process19 informed by interprocess communication (IPC). The activation of the application process19 can through the storage process22 itself, the kernel24 , the input control10 or event-controlled. - - The non-volatile storage area
14 now completely present message can also directly in the address area of the application19 which calls for calling the command interpreter to determine the application. On the other hand, the application may be requested to access the data for its part (42 ).
Das
oben beschriebene Verfahren hat den Vorteil, dass die Zeit, in der
der UART-Eingangspuffer
Das
in
Das
vorbeschriebene Verfahren kann mit einem Speicherbereich
Die
durch die in den
Im
RAM-Speicher
Im
Hinblick auf die Ausführungsvariante
der
In
dem RAM-Speicher
Der
Multitasking/Multithreading-fähige
Betriebssystemkern
Im
ROM-Speicher
Entgegen
dem im Zusammenhang mit
Die
Sekundärpuffersteuerung
Das Überschreiten
eines vorgegebenen Füllstandes
des Sekundärpuffers
Anschließend wird
der Sekundärunterbrechungsprozess
Im
Ergebnis wird ein zeitaufwändiger
Prozesswechsel bei dem in
Claims (55)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102006058511.9A DE102006058511B4 (en) | 2006-12-12 | 2006-12-12 | Method for receiving messages by means of a portable data carrier and portable data carrier |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102006058511.9A DE102006058511B4 (en) | 2006-12-12 | 2006-12-12 | Method for receiving messages by means of a portable data carrier and portable data carrier |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102006058511A1 true DE102006058511A1 (en) | 2008-06-19 |
DE102006058511B4 DE102006058511B4 (en) | 2021-07-08 |
Family
ID=39399509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102006058511.9A Expired - Fee Related DE102006058511B4 (en) | 2006-12-12 | 2006-12-12 | Method for receiving messages by means of a portable data carrier and portable data carrier |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102006058511B4 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19928939A1 (en) * | 1999-06-24 | 2001-01-11 | Giesecke & Devrient Gmbh | Data carriers and methods for data transmission and memory management |
DE10040241A1 (en) * | 1999-08-18 | 2001-03-22 | Giesecke & Devrient Gmbh | Memory arrangement for portable data carrier e.g. chip card, updates information following deactivation process in such way, that referenced memory areas cover joined memory area |
US20050289291A1 (en) * | 2004-06-25 | 2005-12-29 | Kabushiki Kaisha Toshiba | Mobile electronic equipment |
EP1628223A2 (en) * | 2004-08-19 | 2006-02-22 | Giesecke & Devrient GmbH | Writing data to a non-volatile memory of a portable data carrier |
EP1770533A1 (en) * | 2004-06-15 | 2007-04-04 | Sony Corporation | Information management device and information management method |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997002543A1 (en) | 1995-07-05 | 1997-01-23 | International Business Machines Corporation | Processing of long messages in a process card |
-
2006
- 2006-12-12 DE DE102006058511.9A patent/DE102006058511B4/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19928939A1 (en) * | 1999-06-24 | 2001-01-11 | Giesecke & Devrient Gmbh | Data carriers and methods for data transmission and memory management |
DE10040241A1 (en) * | 1999-08-18 | 2001-03-22 | Giesecke & Devrient Gmbh | Memory arrangement for portable data carrier e.g. chip card, updates information following deactivation process in such way, that referenced memory areas cover joined memory area |
EP1770533A1 (en) * | 2004-06-15 | 2007-04-04 | Sony Corporation | Information management device and information management method |
US20050289291A1 (en) * | 2004-06-25 | 2005-12-29 | Kabushiki Kaisha Toshiba | Mobile electronic equipment |
EP1628223A2 (en) * | 2004-08-19 | 2006-02-22 | Giesecke & Devrient GmbH | Writing data to a non-volatile memory of a portable data carrier |
Also Published As
Publication number | Publication date |
---|---|
DE102006058511B4 (en) | 2021-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2021905B1 (en) | Simultaneous interface use | |
DE102006010091B4 (en) | Smart card and method for controlling a smart card | |
DE2854485C2 (en) | Data processing system | |
DE2523399C2 (en) | Data processing system with input / output processors | |
DE102004004796B4 (en) | Device for data transmission between memories | |
DE102005036648A1 (en) | Integrated circuit card e.g. smart media, has suspend/resume controller halting execution of command and storing current state information upon receipt of suspend command related to another command | |
DE19919137A1 (en) | Method of developing a threshold signal for performing a thread in a multithread process does not terminate the entire process, which can have other threads running | |
DE2118581A1 (en) | Data processing system | |
DE2523372B2 (en) | Input-output port controller | |
DE202009018814U1 (en) | Information processing apparatus, information processing system and computer program | |
DE3103786A1 (en) | DATA TRANSFER SYSTEM | |
DE60127520T2 (en) | Processor with low power command cache | |
EP1079307B1 (en) | Method for operating a memory system as well as memory system | |
DE102006058511B4 (en) | Method for receiving messages by means of a portable data carrier and portable data carrier | |
DE60211211T2 (en) | COMMUNICATION DEVICE, RECEPTION PROCESSING METHOD AND PROGRAM, AND COMPUTER READABLE MEDIUM ON WHICH THIS PROGRAM IS STORED | |
DE102006058512B4 (en) | Method for receiving a message in a portable data carrier and portable data carrier | |
DE602006000968T2 (en) | Terminal Equipment | |
DE19928939A1 (en) | Data carriers and methods for data transmission and memory management | |
DE102007051201A1 (en) | Coordinated dual-interface communication | |
EP1528480A1 (en) | Bus system having few control lines | |
EP1791057B1 (en) | Pipeline-Mechanism for data exchange between a chipcard and a terminal | |
EP2219115B1 (en) | Method for using a multifunction storage card on terminals | |
EP1610218A2 (en) | Portable data carrier, system with said data carrier and method of operating said data carrier | |
EP2740070B1 (en) | Mechanism for communicating between two applications on a safety module | |
EP2018623B1 (en) | Portable data carrier and system comprising an end device and a portable data carrier |
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 |