[go: up one dir, main page]

DE69737608T2 - Verfahren zum laden eines anwendungsprogramms auf eine chipkarte - Google Patents

Verfahren zum laden eines anwendungsprogramms auf eine chipkarte Download PDF

Info

Publication number
DE69737608T2
DE69737608T2 DE69737608T DE69737608T DE69737608T2 DE 69737608 T2 DE69737608 T2 DE 69737608T2 DE 69737608 T DE69737608 T DE 69737608T DE 69737608 T DE69737608 T DE 69737608T DE 69737608 T2 DE69737608 T2 DE 69737608T2
Authority
DE
Germany
Prior art keywords
program
memory
instructions
data
chip
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 - Lifetime
Application number
DE69737608T
Other languages
English (en)
Other versions
DE69737608D1 (de
Inventor
Pierre Paradinas
Jean-Jacques Vandewalle
Patrick Biget
Patrick Redwood City GEORGE
Sylvain Lecomte
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.)
Gemplus SA
Original Assignee
Gemplus Card International SA
Gemplus SA
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 Gemplus Card International SA, Gemplus SA filed Critical Gemplus Card International SA
Publication of DE69737608D1 publication Critical patent/DE69737608D1/de
Application granted granted Critical
Publication of DE69737608T2 publication Critical patent/DE69737608T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)
  • Circuits Of Receivers In General (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)
  • Die Bonding (AREA)
  • Credit Cards Or The Like (AREA)

Description

  • Gegenstand der vorliegenden Erfindung ist ein Ladeverfahren eines Nutzungsprogramms in einem tragbaren Chipträger. Sie ist insbesondere im Bereich der Chipkarten anwendbar. Sie betrifft ganz besonders die Situationen, in denen in einem Speicher eine Chipkarte mit mehreren Anwendungen unterschiedlicher Typen koexistieren soll. Als Anwendung wird die Folge der sowohl im Innern einer Chipkarte als auch in einem Lesegerät durchgeführten Operationen bezeichnet, mit dem diese Karte in Verbindung steht und die zur Befriedigung eines durch einen Nutzer, den Träger der Chipkarte, ausgedrückten Bedürfnisses führen. Diese Operationen umfassen elektronische Verarbeitungen im Innern der Schaltkreise der Karte und des Lesegeräts und eventuell mechanische Aktionen auf den Peripheriegeräten, an denen das Lesegerät angeschlossen ist. Eine Anwendung umfasst daher gespeichert im Speicher der Karte ein Nutzungsprogramm dieser Karte zu diesem Zweck, wobei dieses Programm einen Anweisungssatz umfasst.
  • Eine Chipkarte umfasst in ihrer allgemeinen Struktur einen Mikroprozessor in Beziehung mit einem Programmspeicher, einem oder mehreren Datenspeicher(n) und eine Kommunikationsschnittstelle mit der Außenwelt. Um die Nutzung einer Chipkarte praktischer zu gestalten, wurde daran gedacht, auf einer und derselben Karte mehrere Nutzungsprogramme koexistieren zu lassen. Z. B. ein Bankennutzungsprogramm und ein Nutzungsprogramm zur Buchung von Mietwagen. Die beiden für diese Nutzungsprogramme verantwortlichen Dienstleister, eine Bank und eine Bankinstitution, werden im Allgemeinen keine Gemeinsamkeiten haben, da sie voneinander vollkommen qunabhängig sind. Sie können nicht einmal wissen, dass von ihren Kunden getragene Chipkarten mit Nutzungsprogrammen der Leistungen eines anderen Dienstleisters versehen sind.
  • Das von dieser Art von Ressourcenteilung der Chipkarte durch mehrere Anwendungen dargestellte Problem ist grundlegend die Wahrung der Integrität der Daten und der Anweisungen eines anderen Nutzungsprogramms durch eines der Nutzungsprogramme.
  • Um das Problem der Koexistenz zu lösen, wurde an mehrere Lösungen gedacht, die alle in ihrem Prinzip auf der Intervention einer höheren Autorität beruhen, z. B. dem Unternehmen, das die Karten herstellt. In diesem Fall sind mehrere Lösungen denkbar.
  • Z. B. kann den Herstellern von integrierten Schaltkreisen, die die in die Karten einzupassenden integrierten Schaltkreise herstellen, die Autorität verliehen werden. Andernfalls kann der hergestellte integ rierte Schaltkreis vollständig leer sein oder in seinem Speicherprogramm nur einen Satz zu dessen Betrieb bestimmte elementare Anweisungen enthalten. Dieser Satz elementarer Anweisungen ist das Betriebssystem des integrierten Schaltkreises. Dieses Betriebssystem kann selbst im Innern des integrierten Schaltkreises entweder direkt bei der Herstellung (in diesem Fall wird er im Allgemeinen per Maske programmiert) oder z. B. im Verlauf einer Testoperation programmiert sein.
  • In einer anderen Art der Ausführung kann das Betriebssystem im integrierten Schaltkreis durch ein Unternehmen installiert werden, das einem Dienstleister einen Satz Karten mit einem Betriebssystem und Nutzungsprogrammen zur Verfügung stellt, die an die Anforderungen dieses Dienstleisters angepasst sind. In diesem letzteren Fall die ausgewählte Lösung, um unterschiedliche Anwendungen auf einem und demselben integrierten Schaltkreis in einer und derselben Chipkarte koexistieren zu lassen und jedes Mal ein spezielles Betriebssystem zu erstellen, damit mehrere Anwendungen unterschiedlicher Art, die jedoch zuvor bekannt sind, in der Karte gespeichert werden können und die Anwendungen nicht ohne das Einverständnis der betroffenen Dienstleister die einen vor den anderen nachwirken können.
  • Diese Lösung weist den Nachteil auf, dass das Unternehmen, das sie umsetzt, von Anfang an alle Nutzungen kennen muss, die mit den Karten durchgeführt werden sollen, die es den Dienstleistern zur Verfügung stellt. Das verhindert damit jegliche Entwicklung. Der andere von dieser Methode dargestellte Nachteil besteht darin, dass sie auf dem Vertrauen der unterschiedlichen Dienstleister gegenüber der Gesellschaft beruht, die das Betriebssystem und die Anwendungsprogramme in den integrierten Schaltkreisen der Karten umsetzt. Da die Anwendungen für diese Dienstleister sensible Aktionen beinhalten können, ist dieses Vertrauen schwer zu erhalten oder zu kontrollieren.
  • Neben diesem Entwicklungsproblem der Anwendungen weist es die Schwierigkeit auf, dass das Speichern von Nutzungsprogrammen im Speicher des integrierten Schaltkreises der Chipkarte nur durch Bezeichnen der absoluten Adressen der in dieser Karte verfügbaren Speicherbereiche in diesen Programmen erfolgen kann. D. h., dass es notwendig wäre, die gesamte Struktur des integrierten Schaltkreises der Karte offen zu legen, insbesondere die Adressen offen zu legen, an denen die Geheimnisse der Karte, ihre privaten Verschlüsselungsschlüssel gespeichert sind, wenn gewünscht wird, dass irgendjemand seine eigenen Nutzungsprogramme in einer Chipkarte speichern kann.
  • Gegenstand der Erfindung ist es, diesem Problem abzuhelfen, indem im Betriebssystem des integrierten Schaltkreises eine Makro-Ladeanweisung umgesetzt wird, deren Merkmale einerseits in der Berechnung der absoluten Adressen bestehen, an denen die Anweisungen des Nutzungsprogramms ausgehend von einer bekannten Ausgangsadresse angeordnet werden müssen, in der entsprechenden Änderung des Nutzungsprogramms und dem Spei chern der Anweisungen dieses Programms an diesen berechneten Adressen.
  • Erfindungsgemäß umfasst das Nutzungsprogramm des integrierten Schaltkreises andererseits eine Definition eines Datenspeicherplatzes, der für die Umsetzung dieser Nutzung notwendig sein wird. In der Erfindung liest dann die Makro-Ladeanweisung diese in diesem Nutzungsprogramm vorhandene Definition (im Allgemeinen am Kopf dieses Programms) und reserviert im Datenspeicher einen zum Speichern der entsprechenden Daten notwendigen Platz. Im Verlauf des Ladens führt die Makro-Ladeanweisung der Erfindung bevorzugt auch darüber hinaus eine Aktualisierung eines Speicherbereichs durch, der das Besetzen im Speicher des Nutzungsprogramms zu dieser Anwendung darstellt. Dieser Speicherbereich kann z. B. einen Dateienbeschreiber umfassen.
  • Der europäische Patentantrag Nummer EP 0 519 071 legt das Laden von Programmen einer Funktionsbibliothek im Speicher eines Computerterminals offen. Die absoluten Adressen der im Terminal zum Speichern eines Programms verfügbaren Speicherbereiche werden vor dem Speichern definiert und werden in einer Adressenverwaltungsübersicht gespeichert, die zum Zeitpunkt des Ladens des Programms verwendet wird.
  • Die Erfindung betrifft ein Ladeverfahren in einem durch einen tragbaren Chipträger getragenen und einen Mikroprozessor und einen Speicher umfassenden elektronischen Chip gemäß Anspruch 1, eines Nutzungsprogramms dieses Chipträgers, wobei dieses Programm Anweisungen umfasst, und in dem
    • – der Chip mit einem Betriebssystem mit insbesondere einem Ladeprogramm in den Speicher versehen wird, wobei dieses Betriebssystem den Betrieb des Mikroprozessors und des Speichers steuert,
    • – im Speicher mittels des Ladeprogramms in den Speicher das Nutzungsprogramm im Speicher gespeichert wird,
    • – im Nutzungsprogramm eine Menge an im Speicher des Chips zum Enthalten der durch dieses Nutzungsprogramm zu nutzenden Daten notwendigem Platz definiert wird,
    • – durch dieses Ladeprogramm in den Speicher zum Zeitpunkt dieses Ladens absolute Adressen zum Speichern der in dem Nutzungsprogramm genutzten Daten und der Anweisungen dieses Nutzungsprogramms in den Speicher berechnet werden,
    • – dieses Nutzungsprogramm entsprechend geändert wird und
    • – durch dieses Ladeprogramm die Daten und die in dem Nutzungsprogramm vorhandenen Anwendungen an diesen berechneten absoluten Adressen gespeichert werden.
  • Ein weiteres, den Chipkarten inhärentes Problem besteht darin, den Dienstleistern die Möglichkeit zur Programmierung neuer Anwendungen oder zur Änderung ihrer Anwendungen zu geben, ohne die Funktionsweise des Betriebssystems der Erfindung kennen zu müssen. Dann ist in der Erfindung vorgesehen, den integrierten Schaltkreis der Karte mit einem Befehl-Interpretationsprogramm zu versehen. Ein derartiges Befehl-Interpretationsprogramm ist in der Lage, durch den Mikroprozessor des integrierten Schaltkreises Anweisungen in einer entwickelten (symbolischen) Sprache ausführen zu lassen, die in einem Programmspeicher gelesen werden, indem sie unterwegs interpretiert werden, d. h. durch ihr Umformen in durch den Mikroprozessor ausführbare Anweisungen. Diese ausführbaren Anweisungen können dann so wie sie sind in das Anweisungsverzeichnis dieses Mikroprozessors geladen werden.
  • Unter diesen Bedingungen sind die einzigen Auflagen, die den Dienstleistern auferlegt werden, das Ausrüsten ihrer Nutzungsprogramme erstens mit einer Definition des für die Daten notwendigen Platzes und andererseits die Nutzung eines Programms in allgemein im IT-Bereich genutzter, entwickelter Sprache. Z. B. kann dieses Programm in entwickelter Sprache ein Programm in der Sprache C, FORTH, FORTRAN oder COBOL oder einer anderen Sprache sein. Die Makro-Ladeanweisung kann ggf. in der Lage sein, zuvor die eingesetzte entwickelte Sprache zu erkennen, so dass der Interpretierer der Befehle entsprechend ausgerichtet wird. Ein unterschiedler Interpretierer kann dann den unterschiedlichen Sprachtypen entsprechen.
  • Gegenstand der Erfindung mit dieser Aufgabe ist ein Verfahren wie zuvor, dadurch gekennzeichnet, dass
    • – der Chip mit einem Betriebssystem mit einem Befehl-Interpretations-Programm 33 versehen wird,
    • – im Speicher des Chips mittels des Ladeprogramms in den Speicher ein Nutzungsprogramm 15 des Chipträgers mit in einer entwickelten Sprache geschriebenen, nicht direkt vom Mikroprozessor ausführbaren Anweisungen mit dem Ziel gespeichert wird, vom Mikroprozessor interpretierte, aus diesen nicht direkt ausführbaren Anweisungen resultierende Anweisungen ausführen zu lassen, nachdem diese einer Interpretation durch das Befehl-Interpretationsprogramm unterzogen worden sind,
    • – durch das Ladeprogramm in den Speicher zum Zeitpunkt dieser Speicherung Adressen zum Speichern de Anweisungen des Programms in entwickelter Sprache im Speichern des Chips berechnen zu lassen,
    • – die Anweisungen in entwickelter Sprache in Abhängigkeit von dieser Berechnung zu ändern,
    • – diese Anweisungen in entwickelter Sprache im Speicher an durch dieses Ladeprogramm berechneten absoluten Adressen gespeichert werden.
  • Die Erfindung wird bei der Lektüre der nachstehenden Beschreibung und bei der Prüfung der sie begleitenden Figuren besser verstanden werden. Diese werden nur zu Anschauungszwecken und keineswegs als Einschränkung der Erfindung gegeben. Die Figuren zeigen:
  • 1: eine integrierte Schaltkreisstruktur für einen elektronischen Träger, die geeignet ist, das Verfahren der Erfindung umzusetzen;
  • 2: ein die Folge der Ladeoperationen gemäß dem Verfahren der Erfindung zeigendes Organigramm;
  • 3a bis 3c: ein schematisches Beispiel eines in entwickelter Sprache geschriebenen Programms mit einer relativen Adressierung und die unterschiedlichen Umwandlungen, denen es vor seinem Speichern im Speicher des integrierten Schaltkreises unterzogen wird;
  • 4: eine Beschreibung der Syntax der unterschiedlichen, in einem derartigen Programm nutzbaren Anweisungen.
  • 1 zeigt die Struktur eines integrierten Schaltkreises für einen zur Umsetzung des Verfahrens der Erfindung geeigneten tragbaren Träger. Ein elektronischer Chip 1 wird von einem nicht dargestellten, tragbaren Träger getragen. In einem Beispiel ist der tragbare Träger eine Chipkarte. Der Chip 1 umfasst einen Mikroprozessor 2 und einen Speicher. In dem Beispiel ist der Speicher ein doppelter Speicher. Er umfasst einen zum Speichern eines Betriebssystems mit integriertem Schaltkreis bestimmten ersten Speicher 3. Der Speicher 3 ist bevorzugt ein nicht programmierbarer Speicher, der z. B. per Maske programmiert wird oder eventuell programmierbar und dann nach seiner Programmierung verriegelbar ist, um es im Anschluss nicht mehr zu sein. Er ist vom nicht flüchtigen Typ, seine Speicherzellen können Speicherzellen vom Typ EPROM oder auch EEPROM sein. Ein anderer Teil 4 des Speichers ist vom programmierbaren Typ und beliebig löschbar, bevorzugt ist er vom Typ EEPROM. Er ist ebenfalls nicht flüchtig. Der Dienstleister kann dort alle Nutzungsprogramme einfügen, die er möchte, damit der integrierte Schaltkreis 1 alle für sein Konto gewünschten Anwendungen ausführen kann.
  • Das im Speicher 3 gespeicherte Betriebssystem umfasst wenigstens einen ersten Anweisungssatz 5 vom bekannten Typ. Z. B. sind diese Anweisungen Anweisungen MOVE, MULT, PLUS oder GOTO, deren Ziel es ist, nach dem Laden in ein Anweisungsverzeichnis 6 des Prozessors 2 den Datentransfer (oder Anweisungstransfer) in ein Datenverzeichnis 7 des Mikroprozessors 2 zwecks ihrer Verarbeitung durch letzteren hervorzurufen. Der Betrieb bekannten Typs dieses Systems ist folgender. Zum Zeitpunkt des Startens des z. B. in einem Teil 8 des Speichers 4 enthaltenen Nutzungsprogramms ruft eine in diesem Teil gelesene Anweisung das Laden einer Anweisung des Betriebssystems 5 in das Verzeichnis 6 hervor (in bestimmten Fällen ruft sie das sukzessive Laden mehrerer dieser Anweisungen des Betriebssystems hervor). Gleichzeitig werden in das Datenverzeichnis 7 des Mikroprozessors die Arbeitsdaten geladen. Die Daten werden z. B. in einem Teil 9 des Speichers 4 entnommen. Dann werden diese Daten vom Mikroprozessor 2 verarbeitet, wobei das Ergebnis sich (z. B.) im Verzeichnis 7 befindet. Die Teile 8 und 9 bilden zusammen einen Bereich 10 des in der betroffenen Anwendung reservierten Speichers 4. In dem gezeigten Beispiel ist die Anwendung schematisch eine Anwendung vom Bankentyp. Sie kann z. B. einem Anzeigeschema eines Kontensaldos auf einem Bildschirm eines Lesegeräts entsprechen.
  • Im Stand der Technik wird das Einsetzen der Anwendungen der Bankenanwendung und der sich auf diese Anwendung beziehenden Daten in den Bereichen 8 und 9 bzw. des Speichers 4 durch ein externes System 11 hervorgerufen, das auf dem integrierten Schaltkreis 1 über eine Kommunikationsschnittstelle 12 des integrierten Schaltkreises 1 mit der Außenwelt einspringt. Die Schnittstelle 12 sowie alle Schaltkreise des integrier ten Schaltkreises werden untereinander durch einen Bus 13 verbunden, der zur Vereinfachung zur Übertragung der Adressen, Daten und Befehle sinnvoll ist.
  • Das Steuern eines Schreibschaltkreises 14 im Speicher 4 kann damit von der Außenseite aus durch den Schaltkreis 11 durchgeführt werden. Es ist notwendig, den Schreibschaltkreis 14 mit den Bezeichnungen absoluter Adressen zu steuern. Die erste Anweisung INSTRUCTION 1 muss nämlich z. B. an der Adresse 0000 des Speichers 4 gespeichert sein. Im Stand der Technik wirkt der Schaltkreis 14 unter der Kontrolle des Schaltkreises 11 durch die Schnittfläche 12. Der Schaltkreis 11 und damit diejenigen, die ihn steuern, musste über die notwendige Kenntnis und das ihnen entgegengebrachte Vertrauen verfügen, um dieses Speichern erfolgreich zu Ende zu führen.
  • Um ungewollte Aktionen eines Schaltkreises 11 zu verhindern, insbesondere in dem Fall, in dem mehrere Nutzungstypen im Bereich 4 durchgeführt werden sollen, wird in der Erfindung davon abgesehen, Anweisungen im Bereich 8 unter der Kontrolle eines externen Schaltkreises 11 zu speichern.
  • Um zu dem Ergebnis zu gelangen, wird das Betriebssystem 5 in der Erfindung mit einer spezifischen, hier symbolisch durch eine Anweisung CHAR dieses Betriebssystems dargestellten Makro-Ladeanweisung versehen. Gegenstände der Anweisung CHAR sind das Speichern der Anweisungen eines Nutzungsprogramms 15 im Speicher 4 sowie das Reservieren des notwendigen Platzes für die durch das Programm 15 genutzten Daten im Speicher.
  • Nunmehr werden diese beiden Operationen beschrieben, wobei es sich von selbst versteht, dass sie dies in einer beliebigen Reihenfolge tun können, soweit dies im Vorab vorgesehen wird. In der Praxis sind das Programm 15 und die Definitionen der genutzten Daten in der Schnittstelle 12 in Form einer Datei 17 vorhanden, die die Anweisung CHAR konsultiert. In der Erfindung wird mittels eines Zählers 16, der die bereits gespeicherten Anweisungen zählt, eine ursprüngliche Adresse CPTIO gespeichert, die anzeigt, dass sie die erste für ein neues Programm verfügbare Anweisungsadresse ist.
  • Das Laden erfolgt dann auf folgende Weise. In 2 wird der Mikroprozessor 2 in Ausführung der Anweisung CHAR in der Stufe 8 über die Schnittstelle 12 die erste Anweisung des Programms 15 lesen, deren Rang 1 ist. Die Anweisung CHAR ordnet dann in der Stufe 19 dieser Anweisung des Rangs 1 eine absolute Adresse von gleich CPTI zu. Zu Beginn des Ladens ist die Adresse CPTI eine ursprüngliche Adresse CPTIO. In einem völlig wahllos herausgegriffenen Beispiel ist die Adresse CPTIO im Speicher 4 2356. Im Verlauf einer folgenden Stufe 20 der Anweisung CHAR wird diese Anweisung des Rangs 1 im Speicher 4 im Bereich 21 an der gewünschten Adresse gespeichert: 2356. Die genannte Zuordnung umfasst daher die Berechnung der absoluten Adresse. Diese Zuordnung kann die Änderung des Programms umfassen, um zu Beginn der Anweisung (oder am Ende) die absolute Adresse erscheinen zu lassen, an der sie gespeichert werden muss. Zum Zeitpunkt dieser Speicherung liest die Anweisung CHAR diese absolute Adresse und speichert die Anweisung an der entsprechenden Adresse. Durch eine Teststufe 21 überprüft die Anweisung CHAR anschließend, dass die Anweisung des Programms 15 (die gerade gespeichert wurde) die letzte zu speichernde Anweisung war. Da dies hier nicht der Fall ist, wird der Inhalt des Zählers 16 in einer Stufe 22 derart inkrementiert, dass ein Bereich 23 des Zählers 16 nunmehr einen erhöhten aktuellen Wert CPTI umfasst (in einem Beispiel gleich 2357). Dann ruft die Anweisung CHAR die Rückkehr in die Stufe 18 hervor, um eine folgende Anweisung, die Anweisung des Rangs 2 in dem Programm 15 zu lesen und sie an der Adresse 2357 zu speichern. Auf diese Weise werden alle Anweisungen gespeichert.
  • Ein Programm wie das Programm 15 umfasst normalerweise Sprunganweisungen. Wie im Programm 15 gezeigt, ist eine einen Sprung zur Anweisung zum Rang p hervorrufende Anweisung vom Rang n vorgesehen. Eine Sprunganweisung ist normalerweise eine Anweisung vom Typ IF oder GOTO. Manchmal wird auch der Begriff Verzweigungsanweisung eingesetzt. Der Rang p ist hier das Ziel der Anweisung vom Rang n. Da es sich um ein Programm in entwickelter Sprache vom unbekannten Typ handelt, umfasst die Anweisung CHAR dann einen Test 24, um herauszufinden, ob die Anweisung von Rang n, die zu speichern ist, eine Anweisung mit einem Sprung ist oder nicht. Bisher war das nicht der Fall. Das ist allerdings bei der Anweisung vom Rang n der Fall.
  • Im Verlauf einer Stufe 25 wird das Ziel P (relative Angabe) durch ein absolutes Ziel (eine absolute Adresse im Speicher) ersetzt. Diese absolute Adresse ist gleich dem Zustand des um den Wert p addierten Zählers ursprünglicher Anweisungen CPTIO. Im Verlauf der Anweisung 25 ändert die Anweisung CHAR nach der Berechnung der absoluten Zieladresse die Anweisung vom Rang n, um sie in eine Anweisung umzuwandeln, in der das Ziel nicht mehr p ist (relatives Ziel), sondern das neue absolute Ziel. Im Folgenden wird in der Stufe 20 der Anweisung CHAR die Anweisung des Rangs n an der Adresse CPTI0 + n – 1 im Bereich 21 gespeichert. Das Programm läuft auf diese Weise weiter ab, bis zum Speichern der q Anweisungen des Programms 15.
  • In dem Fall, in dem die Folge der Ränge 1, 2, 3, n, p, q der Anweisungen des Programms 16 Löcher enthalten sollte, kann von der Anweisung CHAR erstens vorgesehen werden, diese Löcher zu stopfen (Berechnung einer kontinuierlichen relativen Adresse) und zweitens ein erstes Mal im Fall eines Sprungs die Zieladressen p zu berechnen, um eine kontinuierliche Sequenz zu berücksichtigen. In diesem Fall würde p durch p' ersetzt werden (das den sich kontinuierlich entwickelnden Rängen entspricht), und die Stufe 25 der Anweisung CHAR würde auf den Wert p' Anwendung finden.
  • Für die Reservierung der Daten im Speicher kann auf zweierlei Weisen vorgegangen werden. Eine erste, in den 3a bis 3c vorgesehenen Weise, werden Variable resul, index, temp, nain des Programms 15 bei einem ersten Lesen des Programms 15 festgestellt. Dann wird ihnen allmählich eine geordnete Adresse @ Daten: 0 bis @ Daten: 3 zugeordnet. Diese geordneten relativen Adressen werden anschließend in absolute Adressen umge wandelt (mit einem und demselben Mechanismus wie bei den Anweisungen). Das Programm 15 wird dann geändert, um diese relativen geordneten Adressen durch absolute Adressen zu ersetzen, hier von 2450 bis 2495. Dies ist in den 3a bis 3c ersichtlich.
  • Auf eine andere Weise wird das Programm 15 eine Definitionsanweisung DEFIN mit der Menge des im Speicher notwendigen Platzes als zugeordnetes Argument umfassen. Hier z. B. beginnt das Programm 15 mit der dem Argument 45 zugeordneten Anweisung vom Rang 0, DEFIN. Mit dieser Anweisung vom Rang 0 weiß die Anweisung CHAR, dass im Datenspeicher 4 ein Bereich 26 zum dortigen Speichern der vom Programm 15 zu nutzenden Daten reserviert werden muss. Dies erlaubt ggf. eine problemlose Nutzung einer Speichermöglichkeit in variabler Länge des Betriebssystems 5.
  • In den beiden Fällen wird in der Erfindung ein zweiter Zähler 22 genutzt, um einerseits die im Speicher 4 verfügbare Ausgangsadresse zu enthalten, um dort die Daten zu speichern, und andererseits eine die Anzahl von im Programm 15 genutzten Variablen oder das im Befehl DEFIN angezeigte Argument (hier 45) berücksichtigende endgültige Adresse. Der im Speicher reservierte Platz liegt zwischen diesen beiden Adressen. Im Anschluss werden wir sehen, wie die Zähler 16 und 27 unterschiedlich eingerichtet werden können. Die hier gebotene Erläuterung ist eine Erläuterung, die versucht das Verfahren der Erfindung, verständlich zu machen.
  • In einem bevorzugten Beispiel sind die Bereiche 21 und 26 des Speichers anliegend: Ihre Adressen folgen aufeinander. Die den Wert CPTIO des Zählers 16 enthaltende Ausgangsadresse und die endgültige Adresse des Zählers 27 bestimmen das gesamte Besetzen im Speicher. Unter diesen Bedingungen kann der Anfang des Zählers der Datenadressen 27 durch die Anweisung CHAR im Verlauf einer ursprünglichen Stufe 28 berechnet werden. Somit wurde mit einem zum Test 22 analogen Test aufgezeigt, dass durch die letzte Anweisung vom Rang q übergegangen wurde: Es ist bekannt, dass es Anweisungen gibt, den Daten können die Adressen CPTD0 und die folgenden, mit CPTI0 + a beginnenden und folgenden zugeordnet werden.
  • Das Organigramm der 2 ist optional, es kann unterschiedlich durchgeführt werden, wie im Folgenden verständlich werden wird. In einem Beispiel, in dem das Programm 15 Anweisungen q = 94 umfasst 94, wird die Ausgangsadresse des Datenzählers CPTD0 die der Addition der Ausgangsadresse des Zählers CPTIO und der Anzahl von gespeicherten Anweisungen entsprechende Adresse 2450 sein. Im Verlauf einer Stufe 29 liest die Anweisung CHAR anschließend die Anweisung vom Rang 0, wenn sie existiert, und reserviert im Speicher den Platz des Bereichs 26 bis zur Adresse 2495. Anschließend werden mit der Anweisung CHAR in der Stufe 30 die Anweisungen des Programms geändert, um dort die notwendigen absoluten Adressen einzuschreiben: die Sprungadressen (die ihrerseits an der Adresse 2362 rangmäßig angeordneten Adresse 2358 für die Anweisung vom Rang 6 BNZE) und die Adressen in dem Speicher, in dem die Werte der im Programm genutzten Variablen gespeichert sind.
  • Die 3a bis 3c zeigen eine Erläuterung des Programms im Hinblick auf sein Speichern im Speicher 4. In einer ersten Etappe in 3b werden die genannten Variablen durch relative geordnete Adressen ersetzt, deren Ordnung der Ordnung des Auftretens der Variablen im Programm entspricht.
  • In der Praxis wandelt die Anweisung CHAR das in 3a gezeigte Programm 15 in ein in 3c gezeigtes Programm 15 um. Es kann sinnvoller sein, die Datenreservierung zuerst vorzunehmen, den Daten und den Variablen absolute Adressen im Datenspeicher 26 zuzuordnen und anschließend ihren Platz den Anweisungen im Speicher 4 zuzuordnen.
  • Sobald das Programm 15 in die Bereiche 21 und 26 des Speichers 4 geladen wurde, speichert die Anweisung CHAR in einer Stufe 31 einen Beschreiber in einem Bereich 32 des Speichers 4. Der Beschreiber im Bereich 32 betrifft den Namen der Anwendung, hier handelt es sich zum Beispiel um die Anwendung SERVICE. Er betrifft auch die absoluten Ausgangsadressen 2356 und Ankunftsadressen 2495, in denen alle Anweisungen und Daten des Programms gespeichert waren. Der Vorteil bei der Speicherung der Anweisungen im Bereich 21 an Adressen niedrigen Rangs an denen der Daten des Bereichs 26 ist, dass das Programm direkt an der Adresse 2356 beginnen kann. Beim Erkennen des Namens der Anwendung SERVICE informiert der Beschreiber im Bereich 32 das Betriebssystem über die Tatsache, dass das betroffene Programm an der Adresse 2356 beginnt.
  • So, wie die Anweisungen im Programm 15 und in den 3a bis 3c angegeben werden, entsprechen sie gemäß einem bevorzugten Modus der Erfindung einer symbolischen entwickelten Sprache, die ihrerseits auf vom Mikroprozessor ausführbare Anweisungen verweist. MOV hat z. B. das Kopieren des Wertes zum Gegenstand, der im zweiten Argument an der Adresse angegeben wird, der im ersten Argument angezeigt wird. Die Anweisung MULT hat die Multiplikation des an der Adresse des zweiten Arguments dieser Anweisung durch den an der Adresse des ersten Arguments gespeicherten Inhalt und das Verbringen des Ganzen an die Adresse des ersten Arguments zum Gegenstand. 4 weist auf diese Besonderheiten hin. Dort ist insbesondere festzustellen, dass die Anweisung BNZE die Sprunganweisung ist.
  • Normalerweise wird ein derartiges Programm vor seinem Speichern im Speicher 4 kompiliert. Die Kompilation hat die Umwandlung jeder Anweisung MOVE, MULT oder anderer Anweisungen, die Makro-Anweisungen sind, in Folgen von direkt durch den Mikroprozessor 2 ausführbare Mikro-Anweisungen zum Gegenstand. Diese Folgen von Mikro-Anweisungen haben selbstverständlich das Erfüllen der Funktion der Makro-Anweisung zum Gegenstand, aber auch die Organisation aller Ablesungen im Speicher 3 und 4, aller Transfers auf dem Bus 13, aller sinnvoller Verzeichnisfreigaben 7, usw.
  • Um die Arbeit der Dienstleister zu erleichtern, wird ihnen in der Erfindung selbstverständlich weder die Kompilation ihres Programms noch das Schreiben des Programms 15 in einer vom Prozessor 2 ausführbaren Maschinensprache auferlegt.
  • Anstatt die Anweisungen in einer direkt vom Mikroprozessor 2 ausführbaren Sprache und damit von in ihrem derzeitigen Zustand im Anweisungsverzeichnis 6 dieses Mikroprozessors ladbaren Anweisungen zu speichern, wird es bevorzugt, von den Dienstleistern die Programmierung ihrer Programme 15 in einer entwickelten Sprache zu verlangen. Mit den Anweisungen von dem Typ, der in 4 gesehen wurde.
  • In diesem Fall wird darüber hinaus das im Speicher 3 gespeicherte Betriebssystem mit einem Befehl-Interpretierer 33 versehen, der zum Umwandeln jeder Makro-Anweisung MOVE MULT PLUS, usw. in eine Folge von direkt durch den Mikroprozessor 2 ausführbaren Mikroanweisungen in der Lage ist.
  • In der Erfindung ist die Anweisung CHAR eine der in das Betriebssystem 5 geladenen Anweisungen. Das Befehl-Interpretierprogramm 32 umfasst dann eine Sequenz von dieser Anweisung CHAR entsprechenden Mikroanweisungen.
  • Die Mikroanweisungen sind die, die von den Stufen 18 bis 31 angesprochen werden. Zum Zeitpunkt der Umsetzung einer Anwendung verweist dann eine im Bereich 21 abgegriffene Anweisung (in entwickelter Sprache) auf eine Makroanweisung zum Interpretieren durch das Interpretierprogramm 33.
  • Im Verlauf der Anwendung wird jedes Mal der Anwendungsbeschreiber genutzt, um zu überprüfen, das die Adressen, an denen das herangezogene Programm einwirkt, zwischen den durch den Beschreiber im Bereich 32 angezeigte Grenzen enthaltene Adressen sind.
  • Das Betriebssystem sowie das Interpretierprogramm 33 werden, wenn die Umsetzung eines von ihnen gewählt wird, bevorzugt im Speicher 3 vom nicht programmierbaren Typ zum Zeitpunkt der Herstellung des integrierten Schaltkreises 1 gespeichert. Auf diese Weise können diese Programmteile nicht von den z. B. in den Speicher 4 geladenen Anwendungen geändert werden.
  • Die Zähler 16 und 27 wurden insbesondere mit Verzeichnissen beschrieben. Es ist jedoch möglich, diese Zähler durch durch den Mikroprozessor 2 ausführbare und die Anweisung CHAR begleitende Anweisungen vom Typ Zähler zu ersetzen. Diese Zähleranweisungen hätten insbesondere die genaue Prüfung der bereits im Speicher vorhandenen Beschreiber zum Gegenstand. Diese Zähler können jedoch ebenfalls eine physische Form haben. Damit kann das Speichern der Ausgangswerte der Zähler 16 und 27 durch ein Ablesen des letzten Beschreibers 32 ersetzt werden. Wenn mehrere Anwendungen im Speicher 4 gespeichert sind, gibt es mehrere Beschreiber. Der zuletzt eingeschriebene wird durch Lesen des Speichers von hinten nach vorn gefunden: Es ist der letzte genutzte Platz vor einem leeren Platz.

Claims (6)

  1. Ladeverfahren in einen auf einem Chipträger getragenen und einen Mikroprozessor (2) und einen Speicher (3, 4) umfassenden elektronischen Chip (1) eines Nutzungsprogramms dieses Chipträgers, wobei dieses Programm auf Daten einwirkende Anweisungen umfasst, wobei das Verfahren Folgendes umfasst: – eine im Versehen des Chips mit einem Betriebssystem (5) mit insbesondere einem Ladeprogramm (CHAR) in den Speicher bestehenden Stufe, wobei dieses Betriebsystem den Betrieb des Mikroprozessors und des Speichers umfasst, und – eine Speicherstufe (20) im Speicher mittels des Ladeprogramms des genannten Nutzungsprogramms in den Speicher, wobei die genannte Speicherstufe Folgendes umfasst: – in dem Nutzungsprogramm eine Definitionsstufe einer im Speicher (4) des Chips zum Enthalten der durch das Nutzungsprogramm zu nutzenden Daten notwendigen Platzmenge, – eine zum Zeitpunkt des Speicherns des Speicherprogramms realisierte Berechnungsstufe der absoluten Adressen, an denen im Speicher des genannten Chips die genannten Anweisungen und die genannten, vom genannten Programm genutzten Daten gespeichert werden müssen, wobei die genannten absoluten Adressen für jede Anweisung des genannten Programms ausgehend von einer im Speicher vorhandenen absoluten Ausgangsadresse, um dort die ge nannten Anweisungen zu speichern, und eines jeder Anweisung in dem genannten Programm zugeordneten Rangs berechnet werden, und wobei die genannten absoluten Adressen für jede der von dem genannten Programm genutzten Daten ausgehend von einer im Speicher vorhandenen absoluten Ausgangsadresse, um dort die genannten Daten zu speichern, und einer geordnet jeder der vom genannten Programm genutzten Daten zugewiesenen relativen Adresse, – eine in dem Ersatz bestehende Änderungsstufe des genannten, bei jeder Anweisung des genannten zu ladenden Programms, wobei der genannte Rang, der der genannten Anweisung durch die entsprechende berechnete absolute Adresse zugeordnet wird und bei jeder der vom genannten Programm genutzten Daten, der gesamten relativen geordneten Adresse, die den genannten Daten zugeordnet wird, durch die entsprechende berechnete absolute Adresse, und – eine aus dem Lesen der genannten, den genannten Anweisungen in dem genannten geänderten Programm zugeordneten absoluten Adressen und dem Speichern der genannten Anweisungen im Speicher des Chips und der genannten Daten an den entsprechenden absoluten Adressen bestehende Speicherstufe.
  2. Verfahren gemäß Anspruch 1, dadurch gekennzeichnet, dass es eine in dem Versehen des Betriebssystems mit dem Chip eines Befehl-Interpretationsprogramms (33) bestehende Stufe umfasst und dass die Speicherstufe in dem Speicher des Chips mittels des Ladeprogramms eines Nutzungsprogramms (15) eines Chipträgers das Speichern von in einer nicht direkt durch den Mikroprozessor ausführbaren entwickelten Sprache geschriebenen Anweisungen umfasst.
  3. Verfahren gemäß Anspruch 1 oder 2, dadurch gekennzeichnet, dass es Folgendes umfasst: – eine Berechnungsstufe der Grenzen der im Speicher reservierten Plätze, in dem sich die Anweisungen und die Daten des Nutzungsprogramms befinden, durch das Ladeprogramm; – eine Speicherstufe der genannten Grenzen in einem Beschreiber (32).
  4. Verfahren gemäß Anspruch 1 bis 3, dadurch gekennzeichnet, dass, wenn eine zu ladende Anweisung eine Sprunganweisung ist, das Verfahren dann Folgendes umfasst: – eine Berechnungsstufe einer absoluten Adresse der Bestimmung des Sprungs; – eine Änderungsstufe in dieser Anweisung der Bestimmung des Sprungs durch den Ersatz dieser Bestimmung durch die absolute Adresse des berechneten Sprungs; – eine Speicherstufe der Anweisung des geänderten Sprungs.
  5. Verfahren gemäß Anspruch 1 bis 4, dadurch gekennzeichnet, dass es Folgendes umfasst: – eine Ladestufe der Daten und der Anweisungen des Nutzungsprogramms in anliegenden Bereichen des Speichers; – eine Speicherstufe der Grenzen der genannten anliegenden Bereiche in einem Beschreiber des Speichers.
  6. Verfahren gemäß Anspruch 1 bis 5, dadurch gekennzeichnet, dass die Stufe zum Versehen des Chips des Betriebssystems bereits bei der Bildung dieses Chips realisiert wird.
DE69737608T 1996-12-30 1997-12-30 Verfahren zum laden eines anwendungsprogramms auf eine chipkarte Expired - Lifetime DE69737608T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR9616212A FR2757970B1 (fr) 1996-12-30 1996-12-30 Procede de chargement d'un programme d'utilisation dans un support a puce
FR9616212 1996-12-30
PCT/FR1997/002448 WO1998029803A1 (fr) 1996-12-30 1997-12-30 Procede de chargement d'un programme d'utilisation dans un support a puce

Publications (2)

Publication Number Publication Date
DE69737608D1 DE69737608D1 (de) 2007-05-24
DE69737608T2 true DE69737608T2 (de) 2007-12-13

Family

ID=9499298

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69737608T Expired - Lifetime DE69737608T2 (de) 1996-12-30 1997-12-30 Verfahren zum laden eines anwendungsprogramms auf eine chipkarte

Country Status (11)

Country Link
EP (1) EP1012710B1 (de)
JP (1) JP2001500655A (de)
KR (1) KR20000062382A (de)
CN (1) CN100557568C (de)
AT (1) ATE359547T1 (de)
AU (1) AU733631B2 (de)
BR (1) BR9713630A (de)
CA (1) CA2276716A1 (de)
DE (1) DE69737608T2 (de)
FR (1) FR2757970B1 (de)
WO (1) WO1998029803A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19840029C1 (de) * 1998-09-02 2000-04-20 Siemens Ag Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte
FR2785695B1 (fr) * 1998-11-06 2003-01-31 Bull Cp8 Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants
FR2795835B1 (fr) * 1999-07-01 2001-10-05 Bull Cp8 Procede de verification de transformateurs de codes pour un systeme embarque, notamment sur une carte a puce
DE10006291A1 (de) * 2000-02-14 2001-08-30 Giesecke & Devrient Gmbh Computeranordnung für einen tragbaren Datenträger
FR2806188A1 (fr) * 2000-03-10 2001-09-14 Schlumberger Systems & Service Dispositif a circuit integre comportant un programme applicatif
CN101135867B (zh) * 2006-08-31 2010-10-06 珠海天威技术开发有限公司 智能芯片的数据记录方法
FR3105854B1 (fr) 2019-12-31 2024-07-19 St Microelectronics Rousset Système embarqué
FR3105853B1 (fr) 2019-12-31 2023-01-06 Proton World Int Nv Système embarqué

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04211896A (ja) * 1990-03-06 1992-08-03 Omron Corp プログラム作成装置およびこの装置を用いたデータ処理システム
FR2667171B1 (fr) * 1990-09-25 1994-08-26 Gemplus Card Int Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit.

Also Published As

Publication number Publication date
CN100557568C (zh) 2009-11-04
DE69737608D1 (de) 2007-05-24
CA2276716A1 (fr) 1998-07-09
EP1012710B1 (de) 2007-04-11
FR2757970B1 (fr) 1999-03-26
AU733631B2 (en) 2001-05-17
FR2757970A1 (fr) 1998-07-03
WO1998029803A1 (fr) 1998-07-09
KR20000062382A (ko) 2000-10-25
CN1247609A (zh) 2000-03-15
BR9713630A (pt) 2000-04-11
AU5769598A (en) 1998-07-31
ATE359547T1 (de) 2007-05-15
EP1012710A1 (de) 2000-06-28
JP2001500655A (ja) 2001-01-16

Similar Documents

Publication Publication Date Title
DE19681256C2 (de) Ausführung von Anwendungen am Platz vom Speicher
DE69835879T2 (de) Multifunktionschipkarte mit delegierungsmerkmal
DE69814174T2 (de) Java laufzeitsystem mit veränderter sammlung von konstanten
DE69819686T2 (de) Objekt und verfahren zum bereitstellen eines effizienten mehrbenutzerzugriff auf verteilten betriebssystemkernkode durch instanzierung
DE69523142T2 (de) Verteiltes datenbanksystem
DE68916853T2 (de) Unabhängige Programmlader für virtuelle Maschinenarchitektur.
DE69701965T2 (de) Verfahren zur modifizierung des befehlsatzes in einer smartkarte
DE2423194A1 (de) Vorrichtung zur adressengewinnung und -berechnung in einem segmentierten speicher
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE102004061597A1 (de) Betriebssystem, das den Lauf von Echtzeitprogrammen ermöglicht, Steuerungsverfahren hierfür sowie Verfahren zum Laden von DLLs
DE69737608T2 (de) Verfahren zum laden eines anwendungsprogramms auf eine chipkarte
DE19614789C1 (de) Verfahren zur automatischen Konfigurierung eines technischen Systems unter Berücksichtigung unterschiedlicher Qualitäten von Komponenten-Außenwirkungen
DE102005019842A1 (de) System und Verfahren zum sequentiellen Schreiben von Daten in einen Flash-Speicher
DE102005022893B3 (de) Verfahren zum Zugreifen auf Speicherbereiche einer Speicherkarte durch eine anfordernde Anwendung und Speicherkarte
WO2000014631A2 (de) Verfahren zum linken von in einen arbeitsspeicher eines prozessors nachgeladenen programmodulen auf einer chipkarte
DE3789152T2 (de) Mikrorechner.
DE10109848B4 (de) Programmierbarer Logik Controller und Programmerzeugungsvorrichtung zum Erzeugen eines Sequenzprogramms für einen programmierbaren Logik Controller
DE3413832C2 (de)
EP0265636A1 (de) Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher
EP1623394A1 (de) Speicherverwaltung bei einem tragbaren datentrager
DE112009005012T5 (de) Eine Mehrzahl von Schnittstellendateien, die für einen Zugriff auf ein BIOS nutzbar sind
EP0230994A2 (de) Verfahren zur Steuerung des Programmablaufs bei der Formularbearbeitung in Datenverarbeitungsanlagen
DE102015218589A1 (de) Verfahren und Vorrichtung zum Betreiben eines Many-Core-System
DE19629058C2 (de) Verfahren zum Betreiben einer Telekommunikationsanlage, bei dem eine ausführbare Befehlsfolge kopiert wird
DE102004056006B3 (de) Verfahren zur Emulation eines für einen Ursprungsprozessor in einem Ursprungscode erstellten Programms auf einem Zielprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1012710

Country of ref document: EP

Representative=s name: HOFFMANN - EITLE, DE