-
Die vorliegende Erfindung betrifft
ein Verfahren zur Steuerung der Unterbrechung und/oder der Aufzeichnung
von Ausführungsdaten
eines Programms in einem Mikrocontroller und einen Mikrocontroller
mit einer Anordnung zur Durchführung
des Verfahrens.
-
Mikrocontroller umfassen nicht nur
Steuer- und Rechenwerk, sondern zusätzlich auch ROM (read-only
memory) und RAM (random access memory)- Speicher. Solche Bausteine
werden in großer Breite
zu Aufgaben der Steuerung von Geräten und Anlagen eingesetzt.
-
Mikrocontroller, die sicherheitsrelevante
Informationen verarbeiten, die außerhalb des Controllers nicht
beobachtet werden dürfen,
wie zum Beispiel Smart Card Controller, die in Ausweiskarten, Kreditkarten,
Buchungskarten und dergleichen eingesetzt werden, aber auch solche
z.B. in digitalen Set Top Boxen oder Trusted Platform Modules, erlauben eine
umfangreiche Datenverarbeitung im Controller selbst.
-
Einer der wesentlichen Vorteile eines
Mikrocontrollers in einer solchen Smart Card zum Beispiel besteht
in der vielfältigen
Verwendungsmöglichkeit durch
den Karteninhaber. Der Kartenhersteller stattet den Mikrocontroller
mit einem fest gespeicherten Betriebssystem aus, welches grundlegende
Funktionen, beispielsweise einen Vergleich eines extern eingegebenen
Codes mit einem gespeicherten Code, übernimmt. Die zum Mikrocontroller
gehörigen
Speicher dienen außer
zur Abspeicherung des Betriebssystems auch zur Abspeicherung von
Fremdprogrammen und den Fremdprogrammen zugeordnete Daten. Der Kartenher steller
stellt somit für
den Anwender, daß heißt, für die die
Karten ausgebende Organisation, einen Speicherbereich zur Einprogrammierung
ihres Fremdprogramms bzw. der Applikation, zur Verfügung.
-
Die Entwicklung von Applikationen
für Mikrocontroller
benötigt
eine Test- und Systemumgebung, um den korrekten Ablauf der Applikation
unter Systembedingungen zu testen. Hierzu werden Emulatoren eingesetzt,
die idealer weise den Zustand des Zielsystems beim Programm-Ablauf
für den
Applikations-Entwickler
zu beliebigen Zeitpunkten beobachtbar darstellen können.
-
Die Emulatoren von Mikrocontrollern
zeichnen jede Zustandsänderung
des Zielsystems auf und verarbeiten sie nachträglich weiter, um dem Programmierer
die gewünschte
Information darzustellen. Die komplette Darstellung aller Daten
kann dann auch zur Programmoptimierung genutzt werden.
-
Eine übliche Realisierungsmöglichkeit
für den
Emulator eines ersten Mikrocontrollers (Zielsystems) besteht darin,
einen zweiten Mikrocontroller zu entwickeln, der zusätzlich zu
den Schaltkeisen des ersten Mikrocontrollers über eine Debug-Einheit verfügt, das
heißt
eine Zusatz- Soft- und Hardware, die die Aufgabe hat, den internen
Datenfluß zu
beobachten und die Daten über
eine oder mehrere Schnittstellen an beispielsweise externe Zusatzplatinen
des Emulators, die mit einer komplizierten Logik und großen Speichern
die Daten aufzeichnen, weiterzureichen. Die Verarbeitung dieser
Daten außerhalb
des Mikrocontrollers hat den Nachteil, daß zur Prozessierung der Daten
eine hohe Anzahl an Pins der Debug-Einheit notwendig ist und somit
ihre Fläche durch
die Anzahl der Pins bestimmt ist.
-
Damit das Testsystem unter realen
Systembedingungen arbeiten kann, müssen die Daten in Echtzeit über einen
spezielle Datenbus, der zur Kommunikation zwischen der Debug-Einheit
und dem Emulator benötigt
wird, übertragen
werden. Mit zunehmender Frequenz des Mikrocontrollers ist die Übertragung
der Daten nicht mehr möglich,
so daß das
Testsystem sich anders verhält
als das zu testende Produkt. Da die Debug-Einheit nur über begrenzte Speicherressourcen,
d. h. über
einen begrenzten Speicherbereich zur Aufzeichnung der erfaßten Ausführungsdaten
verfügt,
bleibt nur die Möglichkeit,
die Frequenz des Zielsystems zu verringern und auf die des Testsystems
abzustimmen oder den Programmablauf des Zielsystems bei einem Überlauf
des Speicherbereichs anzuhalten und die aufgezeichneten Daten zu übertragen.
-
Der Emulator bzw. dem Emulator zugeordnete
Zusatzplatinen haben weiterhin die Aufgabe, Steuersignale zur Unterbrechung
des Programmablaufs, beispielsweise bei der Detektion eines Ereignisses,
welches vorab durch den Benutzer programmiert wurde oder wenn der
Benutzer unterbrechen möchte,
an die Debug-Einheit zu versenden, um den eigentlichen Programmablauf
anzuhalten und ein Debug-Programm ablaufen zu lassen. Das Debug-Programm
kann zu jeder Zeit des Programmablaufs durch den Benutzer gestartet
werden und ermöglicht
aufgrund der vorab beschriebenen Arbeitsweise der Debug-Einheit
das Auslesen von Ausführungsdaten,
das heißt,
von abgearbeiteten Programmbefehlen und die den Programmbefehlen
zugeordneten Registeradressen und Registerinhalte. Somit ist während der
Ausführung
des Debug-Programms auch das unerwünschte Auslesen und Auswerten
der Betriebssystemdaten ermöglicht.
-
Aufgabe der Erfindung ist es, ein
Verfahren und eine Anordnung zur Steuerung der Unterbrechung und/oder
der Aufzeichnung und Ausgabe von Ausführungsdaten von Befehlen einer
Applikationen auf einem Mikrocontroller anzugeben, wobei mittels einer
auf dem Mikrocontroller integrierten Debug-Einheit in Echtzeit die
Ausführungsdaten
gelesen und gefiltert an die Programmier-Umgebung weitergeleitet
werden, um bei einer optimalen Nutzung der auf dem Mikrocontroller
verfügbaren
Speicherressourcen ein Debugging von Fremdprogrammen ohne Be kanntgabe
geheimer Betriebssystemdaten des Kartenherstellers an den Fremdprogramm-Entwickler
zu ermöglichen.
-
Diese Aufgabe wird gelöst durch
ein Verfahren zur Steuerung der Unterbrechung und/oder der Aufzeichnung
von Ausführungsdaten
eines Programms in einem Mikrocontroller, wobei durch ein bestimmten
Programmbefehlen zugeordnetes Selektionsattribut der Debug-Einheit
mitgeteilt wird, ob bei einem gerade ausgeführten Programmbefehl ein Programm
unterbrochen werden darf und/oder die zugehörigen Ausführungsdaten aufgezeichnet werden.
-
Weiterhin wird die Aufgabe gelöst durch
einen Mikrocontroller, der zusätzlich
zu den Schaltkreisen und Datenspeichern eines zu emulierenden Mikrocontrollers
eine Anordnung zur Steuerung der Unterbrechung und/oder zur Aufzeichnung
von Ausführungsdaten
eines Programms aufweist, wobei die Anordnung eine Debug-Einheit
und eine Steuerlogik enthält,
und die Steuerlogik anhand eines bestimmten Programmbefehlen zugeordneten
Selektionsattributs steuert, ob an der Stelle eines Programmbefehls in
einem Programm der Programmablauf unterbrochen wird und/oder die
Ausführungsdaten
aufgezeichnet werden.
-
Voraussetzung für den Schutz vor der Bekanntgabe
geheimer Betriebssystemdaten des Kartenherstellers ist eine Einschränkung der
Eingriffsmöglichkeit
der Debug-Einheit in den Programmablauf sowie die Steuerung der
Ausgabe der Ausführungsdaten
durch Selektion der Programmbefehle des Programms.
-
Durch die vorteilhafte Einführung definierter Zugriffsrechte
für die
Debug-Einheit auf die Adressen eines Adressraums, in dem der Programm-Code
abgelegt ist, kann eine Auswahl der Ausgabe der Ausführungsdaten
bestimmter Programmbefehle erfolgen. Die Zugriffsrechte können hierbei über ein
oder mehrere den Programmbefehlen zugeordnete Zugriffsattribute
erteilt werden, wobei über
ein erstes Zugriffsattribut, das Programmbefehlen eines Programm-Codes
zugeordnet ist, die Ermöglichung
der Unterbrechung dieses Programm-Codes und über ein zweites, Programmbefehlen
eines Programm-Codes zugeordneten Zugriffsattribut die Ermöglichung
der Aufzeichnung der Ausführungsdaten dieses
Programm-Codes steuerbar ist. Vorteilhafter Weise kann ein Zugriffsattribut
hierbei durch ein Zugriffsbit realisiert sein, das direkt einzelnen
Programmbefehlen zugeordnet ist. Es kann sich dabei z.B. aber auch
um einen Adressbereich von Programmbefehlen handeln, der durch eine
untere und eine obere Bereichsgrenze gekennzeichnet ist.
-
In einer weiteren, vorteilhaften
Weise kann die Aufzeichnung der den Programmbefehlen zugeordneten
Ausführungsdaten
dadurch eingeschränkt werden,
daß in
einem Speicherbereich die zweiten Zugriffsattribute in Form einer
Referenz-Tabelle von Adressen von einzelnen Programmbefehle hinterlegt sind,
für die
die Ausgabe der Ausführungsdaten
erwünscht
ist.
-
In einer dritten, vorteilhaften Weise
ist das zweite Zugriffsattribut eines Programmbefehls für die Steuerlogik
genau dann logisch gesetzt, wenn das erste Zugriffsattribut für den Programmbefehl
gesetzt ist und die Adresse des Programmbefehls in einer Referenz-Tabelle
von Adressen von Programmbefehlen hinterlegt ist.
-
Sind die den Programmbefehls-Adressen zugeordneten
Zugriffsattribute nicht gesetzt, kann das Programm beim Ausführen der
diesen Adressen zugeordneten Programmbefehle nicht unterbrochen werden
und die Ausführungsdaten
durch einen Benutzer nicht ausgelesen werden.
-
Der Aufzeichnungsspeicher für die durch
das zweite Zugriffsbit gefilterten Ausführungsdaten kann sich im Mikrocontroller
oder außerhalb
des zweiten Mikrocontrollers befinden.
-
Die erste Variante hat den Vorteil,
daß der zweite
Mikrocontroller wie der erste Mikrocontroller in einer Produktumgebung
einsetzbar ist. Sollte der Aufzeichnungsspeicher einen bestimmten
Füllzustand
erreicht haben oder Programm-Entwickler
ein Auslesen des Aufzeichnungsspeichers signalisieren, wird an dem
nächsten
Programmbefehl, dem das erste, gesetzte Zugriffsattribut zugeordnet
ist, der Programmablauf durch ein Kontrollsignal unterbrochen und
die Debug-Einheit im Mikrocontroller sendet daraufhin die Ausführungsdaten
an die Programmier-Umgebung des Programm-Entwicklers. Die Echtzeitfähigkeit
des Emulators ist jedoch dann nur zwischen solchen Unterbrechungen
realisierbar, wenn die Debug-Einheit zur Steuerung des Debug-Prozesses
auf die CPU des Mikrocontrollers zugreift.
-
Die zweite Variante hat den Vorteil,
daß die Echtzeitfähigkeit
des Emulators auch ohne eine zweite CPU im Mikrocontroller, die
den Debug-Prozess steuern würde,
nie verletzt wird, da der externe Aufzeichnungsspeicher hinreichend
groß gewählt werden
kann.
-
In jedem Fall werden nicht alle Ausführungsdaten
aufgezeichnet bzw. ausgegeben, sondern nur die den Programmbefehlen
zugeordneten, für
die das zweite Zugriffsattribut gesetzt ist.
-
Anforderungen, eine Programm-Unterbrechung
auszuführen,
werden von der Steuerlogik nur dann ausgeführt, wenn dem Programm-Befehl,
an dem das Programm unterbrochen werden soll, ein gesetztes erstes
Zugriffsattribut zugeordnet ist.
-
Vorteilhafter Weise enthält der zweite
Mikrocontroller eine Liste von Befehlsadressen, die von der Debug-Einheit
verwaltet wird und die Programm-Adressen speichert, an denen der
Programm-Entwickler eine Unterbrechung des Programms wünscht. Vorteilhafter
Weise speichert die Debug-Einheit nur solche Adressen in der Liste
von Befehlsadressen, für
die die Debug- Einheit überprüft hat,
daß das
zweite Zugriffsattribut für
die Adressen gesetzt ist.
-
Ein Ausführungsbeispiel der Erfindung
wird anhand der nachfolgenden 1 näher erläutert.
-
Es zeigt:
-
1 ein
Ausführungsbeispiel
eines erfindungsgemäßen Mikrocontrollers.
-
Die 1 zeigt
ein Auführungsbeispiel
eines Mikrocontrollers 1 mit einer Anordnung zur Steuerung
der Unterbrechung und/oder der Aufzeichnung von Ausführungsdaten
eines Programms. Der Mikrocontroller 1 emmuliert in seiner
Funktion als Test- und Systemumgebung ein Zielsystem, um unter Systembedingungen
den Programmablauf einer zu entwickelnden Applikation zu testen.
Im Mikrocontroller 1 sind deshalb die Komponenten des Zielsystems 2, wie
beispielsweise eine logische Schaltung 21, Speicher 22,
Interrupt-Steuerung 24 und I/O-Interface 23 integriert. Neben
dem Zielsystem 2 weist der Mikrocontroller 1 weiterhin
eine Debug-Einheit 3, einen Ausführungsspeicher 4 und
eine Steuerlogik 5 auf. Die logische Schaltung 21,
der Speicher 22 und das I/O-Interface 23 des Zielsystems 2 sind über eine
Datenleitung 25 mit der Debug-Einheit 3, dem Ausführungsspeicher 4 und
der Steuerlogik 5 verbunden. Die Debug-Einheit setzt sich
aus Hard- und Software zusammen und hat die Aufgabe, über die
Datenleitung 26 die Ausführungsdaten des Programms in Echtzeit
auszulesen und über
eine Schnittstelle 7 an ein zur Programmoptimierung vorgesehenes
System 9 weiterzuleiten.
-
Damit die Debug-Einheit keine geheimen Betriebssystemdaten
ausgeben kann, steuert die Steuerlogik 5 anhand eines bestimmten
Programmbefehlen zugeordneten Selektionsattributs, ob an er Stelle
eines Programmbefehls in einem Programm der Programmablauf unterbrochen
wird und/oder die Ausführungsda ten
aufgezeichnet werden können. Die
Selektionsattribute definieren Zugriffsrechte für die Debug-Einheit 3 auf
die Adressen eines Adressraums, so daß eine Auswahl der Ausgabe
der Ausführungsdaten
bestimmter Programmbefehle erfolgen kann. Dabei ermöglicht eine
erstes und gesetztes, einem Programmbefehl zugeordnetes Zugriffsbit die
Unterbrechung des Programm-Codes und eine zweites und gesetztes,
einem Programmbefehl zugeordnetes Zugriffsbit die Aufzeichnung der
Ausführungsdaten
in dem Ausführungsspeicher 4.
Die Aufzeichnung der Ausführungsdaten
kann weiterhin eingeschränkt
werden, indem das zweite Zugriffsbit in Form einer Referenz-Tabelle 6,
die Adressen von Programmbefehlen aufweist, hinterlegt wird und
die Debug-Einheit 3 nur die Ausführungsdaten der in dieser Tabelle 6 hinterlegten
Adressen aufzeichnet.
-
Der erfindungsgemäße Mikrocontroller und das
vorgeschlagene Verfahren stellen sicher, daß nur für den Fall, daß dem Programmbefehl,
an dem das Programm unterbrochen werden soll, ein gesetztes erstes
Zugriffsbit zugeordnet ist, eine durch die Steuerlogik 5 durchgeführte Programm-Unterbrechung erfolgt.
Es ist auch sichergestellt, daß nur
diejenigen Ausführungsdaten
aufgezeichnet werden, bei denen die den Programmbefehlen zugeordneten
zweiten Zugriffsbits gesetzt sind.
-
- 1
- Mikrocontroller
- 2
- Zielsystem
- 3
- Debug-Einheit
- 4
- Aufzeichnungsspeicher
- 5
- Steuerlogik
- 6
- Referenz-Tabelle
- 7
- Schnittstelle
- 8
- Datenleitung
- 9
- System
- 21
- logische
Schaltung
- 22
- Speicher
- 23
- I/O-Interface
- 24
- Interrupt-Schaltung
- 25
- Datenleitung
- 26
- Datenleitung