DE102020122702A1 - System-on-Chip und Verfahren zum Betreiben eines System-on-Chip - Google Patents

System-on-Chip und Verfahren zum Betreiben eines System-on-Chip Download PDF

Info

Publication number
DE102020122702A1
DE102020122702A1 DE102020122702.7A DE102020122702A DE102020122702A1 DE 102020122702 A1 DE102020122702 A1 DE 102020122702A1 DE 102020122702 A DE102020122702 A DE 102020122702A DE 102020122702 A1 DE102020122702 A1 DE 102020122702A1
Authority
DE
Germany
Prior art keywords
debug
chip
access
configuration software
software
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.)
Pending
Application number
DE102020122702.7A
Other languages
English (en)
Inventor
Albrecht Mayer
Patrik Eder
Kajetan Nürnberger
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102020122702.7A priority Critical patent/DE102020122702A1/de
Publication of DE102020122702A1 publication Critical patent/DE102020122702A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

In verschiedenen Ausführungsbeispielen wird ein System-on-Chip bereitgestellt. Das System-on-Chip kann eingerichtet sein, in einem Debug-Modus betrieben zu werden, und kann eine Mehrzahl von Prozessorkernen, die eine Mehrzahl virtueller Maschinen aufweisen, einen weiteren Prozessorkern, der eingerichtet ist, im Debug-Modus nach einem Betriebsstart des System-on-Chip zunächst nur eine Debug-Konfigurations-Software zu starten, aufweisen, wobei die Debug-Konfigurations-Software eingerichtet ist, eine Debug-Einstellung vorzunehmen, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software auf mindestens eine der virtuellen Maschinen verhindert und einen Zugriff durch die Debugger-Software auf mindestens eine weitere der virtuellen Maschinen ermöglicht.

Description

  • Die Erfindung betrifft ein System-on-Chip (SoC) und ein Verfahren zum Betreiben eines System-on-Chip.
  • Im Zusammenhant mit Virtualisierung kann ein System (z.B. ein Microcontroller) mit mehreren Prozessorkernen in mehrere virtuelle Maschinen (VM) partitioniert sein, von denen jede einen oder mehr der Prozessorkerne aufweisen kann. Außerdem ist es möglich, dass ein einzelner Prozessorkern mehrere VMs aufweist, so dass dieser einzelne Prozessorkern entsprechend mehrere isolierte Softwareanwendungen ausführen kann.
  • Ein solches System, auch als „System-on-Chip“ bezeichnet, kann es ermöglichen, komplexe (betriebs-)sicherheitskritische (Echtzeit-)Hardwaresysteme zu steuern oder zu regeln.
  • Das Ausführen von Software (SW) in verschiedenen unabhängigen VMs kann ein Isolieren der Software vereinfachen, was aus Sicherheitsgründen attraktiv ist.
  • Der deutsche Begriff „Sicherheit“ und damit zusammenhängende Begriffe (z.B. „sicherheitskritisch“) wird allgemein in zwei verschiedenen Zusammenhängen gebraucht, welche im Englischen mittels der Begriffe „safety“ bzw. „security“ unterschieden werden. Hierbei bezeichnet „safety“ eine Betriebssicherheit, also dass ein System in einem Zustand betrieben wird, in welchem seine Nutzung weder Schäden am System selbst noch an seiner Umgebung (z.B. einem Nutzer oder einem anderen System) verursacht, also eine schädliche Wechselwirkung vermieden wird. „Security“ hingegen bezieht sich auf eine Datensicherheit. Also darauf, dass ein Zugriff auf Daten und/oder Funktionen, welche von einem System bereitstellbar bzw. ausführbar sind, nur Zugriffsberechtigten ermöglicht sind, also beispielsweise ein Angriff verhindert wird.
  • Das Konzept der Virtualisierung, bei welcher typischerweise ein so genannter Hypervisor (HV) die VMs verwaltet, wird, wie oben bereits angedeutet, auch zunehmend so umgesetzt, dass die VMs und der HV auf derselben Hardware (HW), z.B. innerhalb eines einzelnen Chips, integriert werden.
  • Das ist zwar kostensparend, verkompliziert allerdings sowohl die Betriebs- als auch die Datensicherheit.
  • Häufig liegen, wie beispielsweise in 1 dargestellt ist, in einem System eine erste virtuelle Maschine VM1, eine zweite virtuelle Maschine VM2 und ein Hypervisor HV vor. VM1 soll dabei die Anwendung A ausführen, VM2 die Anwendung B, und der Hypervisor HV soll beide verwalten/steuern.
  • Häufig kann es jedoch inakzeptabel sein, dass jeder Softwareentwickler, z.B. der Anwendung A, die volle Information und Analysemöglichkeiten für die Anwendung B erhält. Beispielsweise kann es sich bei der Anwendung B um eine Anwendung aus dem Cybersecurity-Bereich (CS-Anwendung, wie z.B. eine Secure Hardware Extension (SHE+)-Emulation) oder um eine Software von einem direkten Mitbewerber handeln, so dass zum Aufrechterhalten der Datensicherheit und/oder zum Schutz geistigen Eigentums ausgeschlossen werden muss, dass eine Person, die die Anwendung A entwickelt oder debuggt, Zugriff auf die Anwendung B erhält (und natürlich ggf. auch umgekehrt).
  • Häufig werden in ein System (z.B. ein von Autoherstellern genutztes SoC) Software-Anwendungen von verschiedenen Zulieferern in unterschiedliche VMs integriert, und direkt nach der Installation versagt das Gesamtsystem, obwohl beide Anwendungen während der Entwicklung (in 2 für eine beispielhaft in der VM2 integrierte Anwendung B dargestellt) funktioniert haben, als sie allein auf dem Chip bereitgestellt waren. Selbstverständlich möchte in einer solchen Situation der Entwickler der Anwendung B dem Entwickler der Anwendung A keinen Zugriff auf seine Software gestatten.
  • Der Hersteller kann möglicherweise Zugriff auf beide VMs/beide Anwendungen haben, aber ihm kann möglicherweise das Know-How fehlen, um eine der Anwendungen (oder beide) zu debuggen.
  • Häufig wird Virtualisierung für große Anwendungskern-basierte Systeme genutzt (z.B. von Intel, AMD x86 oder ARM A-Serie), welche die verschiedenen VMs auch hinsichtlich der Hardware weitgehend trennen.
  • Das Debuggen wird in solchen Fällen typischerweise monitorbasiert vorgenommen. Der Debug-Monitor ist dann eine Software, welche innerhalb desselben VM-Kontexts läuft und deshalb kein zusätzliches Risiko hinsichtlich der Datensicherheit bildet.
  • Eingebettete System mit höheren Echtzeit-Ansprüchen könnten zwar im Prinzip eine ähnliche Herangehensweise nutzten, allerdings gibt es dabei verschiedene Hinderungsgründe.
  • Beispielsweise kann ein Debuggen von Echtzeitsystemen sehr komplex sein, wenn das Debuggen das Zeitmanagement verändert/beeinflusst. Während in frühen Entwicklungsphasen ein Debuggen der Ausführungssteuerung mit Haltepunkten (Breakpoints) und Einzelschrittverfolgung akzeptabel sein kann, ist dies in späteren Phasen der Entwicklung eines so genannten „harten“ Echtzeitsystems nicht angemessen.
  • Ferner sind die Ressourcen eines eingebetteten Systems typischerweise limitiert, so dass ein großer Debug-Monitor nicht bzw. schwer umsetzbar ist.
  • Weiterhin weist ein solches System typischerweise ein Speicher-Schutzsystem (Memory Protection System (MPU)) auf, anstelle der sonst üblichen Speicher-Verwaltungssystems (Memory Management Unit (MMU)). Ein MPU-basiertes System stellt eine wesentlich größere Herausforderung dar, wenn es darum geht, einen robusten und allgemein anwendbaren Debug-Monitor bereitzustellen.
  • Außerdem gibt es viele verschiedene Betriebssysteme, und ein solcher Debug-Monitor ist jeweils betriebssystemspezifisch.
  • Und schließlich ist es typischerweise erforderlich, dass der Debug-Monitor mit dem Hypervisor zusammenarbeitet oder ein Teil des HV ist, so dass der Debug-Monitor sogar noch spezieller angepasst sein muss, nämlich an das Betriebssystem in der Kombination mit dem Hypervisor. Anbieter von Debugger, Betriebssystem und Hypervisor sind typischerweise drei unterschiedliche Firmen, was es technisch und ökonomisch schwierig macht, eine gute Lösung zu finden.
  • In verschiedenen Ausführungsbeispielen wird ein System-on-Chip bereitgestellt, welches es ermöglicht, einem Debugger Zugriff auf eine virtuelle Maschine des System-on-Chip zu ermöglichen, und den Zugriff auf mindestens eine zusätzliche im System-on-Chip integrierte virtuelle Maschine zu verhindern.
  • In verschiedenen Ausführungsbeispielen kann ein privilegierter Nutzer (auch als System-Integrator bezeichnet) berechtigt sein, das System-on-Chip vorzubereiten, indem er Schutzmechanismen aktiviert. Dadurch können Restriktionen festgelegt werden, die durch ein on-Chip-Securitysystem umgesetzt werden.
  • Das SoC kann eingerichtet sein, einem „normalen“ Nutzer, z.B. einem Debugger-Benutzer, erst dann Zugriff zu ermöglichen, wenn die Schutzmechanismen aktiviert sind.
  • Damit kann in verschiedenen Auführungsbeispielen ermöglicht werden, dass der Systemintegrator eine Lese- und Schreibberechtigungen für die virtuellen Maschinen steuert, und ein Entwickler von auf einer der virtuellen Maschinen ausgeführten Software die Möglichkeit hat, Debug-Informationen zu erhalten.
  • In verschiedenen Ausführungsbeispielen kann das SoC so eingerichtet sein, dass eine Anpassung des Debuggers an ein spezifisches Betriebssystem und/oder Hypervisor überflüssig ist.
  • Das SoC kann in verschiedenen Ausführungsbeispielen für ein Trace-basiertes Debugging eingerichtet sein, so dass Debug-Artefakte infolge abweichenden zeitbezogenen Verhaltens beim Debuggen der Ausführungssteuerung vermieden werden kann.
  • Das System-on-Chip kann in verschiedenen Ausführungsbeispielen eingerichtet sein, in einem Debug-Modus betrieben zu werden. Dabei kann einer der Prozessorkerne eingerichtet sein, im Debug-Modus nach einem Betriebsstart des System-on-Chip zunächst nur eine Debug-Konfigurations-Software zu starten. Die Debug-Konfigurations-Software kann eingerichtet sein, eine Debug-Einstellung vorzunehmen, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software auf mindestens eine der virtuellen Maschinen verhindert und einen Zugriff durch die Debugger-Software auf mindestens eine weitere der virtuellen Maschinen ermöglicht.
  • In verschiedenen Ausführungsbeispielen kann zumindest ein Teil des Debuggers (z.B. einer Debugger-Software) als Teil des System-on-Chip bereitgestellt werden oder sein.
  • Der im SoC integrierte Teil des Debuggers kann in verschiedenen Ausführungsbeispielen eine fein granulierte, hinsichtlich Datensicherheit geschützte Zugriffssteuerung zu Registern und Speichern des SoC ermöglichen.
  • Das System-on-Chip kann in verschiedenen Ausführungsbeispielen ferner ein Trace-System (z.B. eine Tracing-Software) aufweisen, welches die genannte Zugriffssteuerung unterstützt, z.B. auf einer VM-Ebene.
  • In verschiedenen Ausführungsbeispielen kann ein Teil des Trace-Systems mittels der im SoC integrierten gesicherten Zugriffssteuerung konfigurierbar sein, und ein weiterer Teil mittels eines externen Teils der Debug-Software.
  • In verschiedenen Ausführungsbeispielen kann in einer Integrationsphase des System-on-Chip der privilegierte System-Integrator eine Schutz-und-Debug-Systemkonfiguration mit beschränkten Zugriffsrechten und Tracefähigkeiten vorbereiten. Das SoC kann eingerichtet sein, die Beschränkungen mittels eines on-Chip-CyberSecurity-Systems (CSRM) zu erzwingen.
  • Anwendungsentwicklern kann damit ermöglicht werden, mittels eines herkömmlichen (z.B. Debug-Schnittstellen (z.B. DAP/JTAG-) basierten) Debuggers, der lediglich auf Speicher und Peripheriegeräte bzw. -schaltkreise, die vom System-Integrator freigegeben sind, Zugriff hat, eine Softwareanwendung auf einer der virtuellen Maschinen zu debuggen.
  • In verschiedenen Ausführungsbeispielen kann der System-Integrator beispielsweise ein unbeschränktes Multi-Core-Debugsystem-Tracing der zu debuggenden virtuellen Maschine an den CPUs und Zustands- und Signaltraces relevanter Peripheriemodule bzw. -schaltkreise ermöglichen, beispielsweise mittels Definierens eines (Lese- )Zugriffsbereichs an Slave-Interfaces lokaler Speicher der CPU.
  • Ausführungsbeispiele der Erfindung sind in den Figuren dargestellt und werden im Folgenden näher erläutert.
  • Es zeigen
    • 1 eine schematische Veranschaulichung eines System-on-Chip und eines Debuggers während einer Integration durch einen privilegierten Nutzer;
    • 2 eine schematische Veranschaulichung eines System-on-Chip und eines Debuggers während einer Entwicklung einer Anwendung auf einer virtuellen Maschine;
    • 3 eine schematische Veranschaulichung eines System-on-Chip gemäß verschiedenen Ausführungsbeispielen und eines Debuggers während eines Debug-Vorgangs;
    • 4 ein Ablaufdiagramm eines Debug-Vorgangs bei einem System-on-Chip gemäß verschiedenen Ausführungsbeispielen;
    • 5 Register eines System-on-Chip gemäß verschiedenen Ausführungsbeispielen; und
    • 6 ein Flussdiagramm eines Verfahrens zum Betreiben eines System-on-Chip gemäß verschiedenen Ausführungsbeispielen.
  • In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die Teil dieser bilden und in denen zur Veranschaulichung spezifische Ausführungsformen gezeigt sind, in denen die Erfindung ausgeübt werden kann. In dieser Hinsicht wird Richtungsterminologie wie etwa „oben“, „unten“, „vorne“, „hinten“, „vorderes“, „hinteres“, usw. mit Bezug auf die Orientierung der beschriebenen Figur(en) verwendet. Da Komponenten von Ausführungsformen in einer Anzahl verschiedener Orientierungen positioniert werden können, dient die Richtungsterminologie zur Veranschaulichung und ist auf keinerlei Weise einschränkend. Es versteht sich, dass andere Ausführungsformen benutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne von dem Schutzumfang der vorliegenden Erfindung abzuweichen. Es versteht sich, dass die Merkmale der hierin beschriebenen verschiedenen beispielhaften Ausführungsformen miteinander kombiniert werden können, sofern nicht spezifisch anders angegeben. Die folgende ausführliche Beschreibung ist deshalb nicht in einschränkendem Sinne aufzufassen, und der Schutzumfang der vorliegenden Erfindung wird durch die angefügten Ansprüche definiert.
  • Im Rahmen dieser Beschreibung werden die Begriffe „verbunden“, „angeschlossen“ sowie „gekoppelt“ verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung. In den Figuren werden identische oder ähnliche Elemente mit identischen Bezugszeichen versehen, soweit dies zweckmäßig ist.
  • In verschiedenen Ausführungsbeispielen wird während einer Integrationsphase mehrerer virtueller Maschinen, die von einem privilegierten Nutzer (auch als System-Integrator bezeichnet) in einem System-on-Chip integriert werden, ermöglicht, eine Einstellung eines Schutz- und Debugsystems vorzunehmen, so dass es beschränkte Zugriffsrechte und TraceFähigkeiten aufweist. Dabei können zugehörige Beschränkungen mittels eines im Chip integrierten Sicherheitssystems (on-Chip CyberSecurity-System CSRM) erzwungen werden.
  • Anders ausgedrückt kann eine privilegierte Software, die als erstes nach einem Reset eines SoC läuft, eingerichtet sein, gewisse Einstellungen in einem Trace-System festzulegen, die später (bis zum nächsten Reset) nicht mehr änderbar sind, wobei der Rest des Trace-Systems frei programmierbar sein kann.
  • Anwendungsentwickler können daraufhin herkömmliche Debug-Schnittstellen-basierte (z.B. DAP/JTAG-basierte) Debug-Anwendungen verwenden, wobei sie lediglich Zugriff auf Speicher und Peripheriegeräte bzw. -schaltkreise haben, die der System-Integrator freigegeben hat.
  • Sofern lediglich eine der virtuellen Maschinen vor einem Zugriff geschützt zu werden braucht, kann einem Entwickler der dort installierten Software die Funktion des System-Integrators gewährt werden. Ein Verantwortungsbereich des System-Integrators betrifft ein Bereitstellen einer Debug-Umgebung für Anwendungsentwickler, welche bei Bedarf eine datensichere Umgebung für Anwendungen, welche gerade nicht debuggt werden, bereitstellt.
  • 3 zeigt eine schematische Veranschaulichung eines System-on-Chip 300 gemäß verschiedenen Ausführungsbeispielen und eines Debuggers 102 während eines Debug-Vorgangs. 4 zeigt ein Ablaufdiagramm eines Debug-Vorgangs bei einem System-on-Chip 300 gemäß verschiedenen Ausführungsbeispielen
  • Das System-on-Chip 300 kann eingerichtet sein, in einem Debug-Modus betrieben zu werden.
  • Der Debug-Modus ist auch in 4 veranschaulicht, welche ein Ablaufdiagramm eines Debug-Vorgangs bei einem System-on-Chip 300 gemäß verschiedenen Ausführungsbeispielen zeigt.
  • Das System-on-Chip 300 kann eine Mehrzahl von Prozessorkernen 332 aufweisen, die eine Mehrzahl virtueller Maschinen (hier beispielhaft zwei virtuelle Maschinen, nämlich die erste virtuelle Maschine VM1 und die zweite virtuelle Maschine VM2) aufweisen.
  • Das System-on-Chip 300 kann ferner einen weiteren Prozessorkern 334 aufweisen, der eingerichtet sein kann, im Debug-Modus nach einem Betriebsstart des System-on-Chip (auch als Power-on-Reset oder Energie-an-Reset bezeichnet) zunächst nur eine Debug-Konfigurations-Software zu starten.
  • Der weitere Prozessorkern 334 kann beispielsweise ein Hardware-Sicherheitsmodul (HSM) sein (in 4 als Security Prozessor und oben als CSRM bezeichnet). Der weitere Prozessorkern 334 kann eingerichtet sein, eine Start-Software zu laden (bei 456 veranschaulicht), beispielsweise aus einem Speicher, z.B. einem ROM. Die Debug-Konfigurations-Software kann Teil der Start-Software sein oder eingerichtet sein, von der Start-Software gestartet zu werden.
  • Die Debug-Konfigurations-Software kann in verschiedenen Ausführungsbeispielen eingerichtet sein, eine Debug-Einstellung vorzunehmen, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software (des Debuggers 102) auf mindestens eine der virtuellen Maschinen VM1 oder VM2 verhindert und einen Zugriff durch die Debugger-Software 102 auf mindestens eine weitere der virtuellen Maschinen (die andere von VM1 bzw. VM2) ermöglicht.
  • In 4 ist (bei 458) veranschaulicht, dass der weitere Prozessorkern 334 eingerichtet sein kann, unmittelbar nach dem Hochfahren des System-on-Chip 300 („Energie-an-Reset“ (auch als Power-on-Reset bezeichnet)) einem im System-on-Chip 300 integrierten Teil des Debug-Systems, z.B. dem so genannten Multicore Debug System (Mehrkern-Debug-System MCDS) 444 und dem Debug-Interface 446 (das Multicore Debug System 444 und das Debug-Interface 446 sind gemeinsam in 3 als „Debug-Anteil“ 330 bezeichnet), zu ermöglichen, Zugriffsberechtigungen zu der Mehrzahl von Prozessorkernen („Anwendungs-CPUs“) 332 festzulegen. Ferner kann der weitere Prozessorkern 334 eingerichtet sein, mittels des MCDS 444 Tracequellen zur Nutzung freizugeben (eine Leseberechtigung erteilen) oder zu verweigern (siehe 462 und 5, Tabellen d), e) f)). Anschließend kann die eingestellte Tracequellen-Konfiguration vom weiteren Prozessorkern 334 mittels des MCDS 444 verriegelt werden („lock“, siehe 464 und 5, Tabelle g)), d.h. vor einer Veränderung vor einem erneuten Reset des System-on-Chip 300 geschützt werden.
  • Das Festlegen und das Verriegeln der Berechtigungen kann mittels Schreiben in Register, die beispielhaft in 5 beschrieben sind, erfolgen.
  • Das mindestens eine Register kann beispielsweise mindestens ein Sperrbit aufweisen, welches beim Reset in einen Grundzustand setzbar ist und mittels der Debug-Konfigurations-Software einmalig in einen vorbestimmten Zustand änderbar ist. Die Debug-Einstellung kann unveränderbar sein, wenn das Sperrbit im vorbestimmten Zustand ist.
  • In verschiedenen anderen Ausführungsbeispielen kann die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software nur durch einen vertrauenswürdigen Master veränderbar sein. Der vertrauenswürdige Master kann beispielsweise ein Hardware Bus Master des Hardware-Sicherheitsmoduls sein.
  • Zum Verwalten der Zugriffsberechtigungen kann das System-on-Chip 300 in verschiedenen Ausführungsbeispielen mit mindestens einer so genannten Access Protection Unit (APU, auf Deutsch: Zugriffsschutzvorrichtung) ausgestattet sein, welche beispielsweise in den oben genannten Registern die Zugriffsrechte (lesen/schreiben) für jeden Master und/oder Slave innerhalb des System-on-Chip 300 und (z.B. über von außen zugängliche Schnittstellen) außerhalb des System-on-Chip 300 einräumen bzw. verweigern kann. Beispielsweise können alle Busverbindungs-Slave-Interfaces über Access Protection Units verfügen, welche es ermöglichen, Zugriffsberechtigungen für einen Lese- bzw. Schreibzugriff zuzuweisen. Eine Granularität der Zugriffsberechtigungen kann beispielsweise auf VM-Basis vorliegen und mittels Hardware geschützt sein.
  • Der Debugger 102 kann ein Master sein, dem Lesezugriff auf Tracequellen und ggf. Schreibzugriff für Tracekonfigurationen, z.B. auf Filtereinstellungen, Triggerpunkte usw., ermöglicht wird.
  • In dem in 3 veranschaulichten Beispiel kann das System-on-Chip 300 so eingerichtet sein, dass die zweite virtuelle Maschine VM2 (bzw. die dort installierte Software) debuggt wird, und die erste virtuelle Maschine VM1 währenddessen vor einem Zugriff durch den Debugger 102 geschützt ist.
  • Das bedeutet unter anderem, dass Software, die auf der ersten virtuellen Maschine VM1 bzw. auf der zweiten virtuellen Maschine VM2 installiert ist, erst nach der Debug-Konfigurations-Software gestartet wird, und erst danach die Debug-Software gestartet wird, allerdings frühestens dann, wenn die erste User-Code-Instruktion ausgeführt wird, welche verzögert wird, bis die Schutzmechanismen mit Hilfe der Debug-Konfigurations-Software installiert sind. Erst dann wird die Debug-Software des Debuggers 102 tatsächlich ausgeführt.
  • In verschiedenen Ausführungsbeispielen kann ein Datenmissbrauch-Schutzsystem („Protection System“) zum Schutz von Speichern und Peripheriemodulen bzw. -schaltkreisen der zu schützenden virtuellen Maschine (im Beispiel ist das die VM1) konfigurierbar sein, beispielsweise eine Eigenschaft, ob ein Zugriff durch den Debugger 102 erlaubt ist oder nicht.
  • Im Beispiel aus 3 kann dem Debugger 102 beispielsweise nur den Zugriff auf Peripheriegeräte, Peripherieschaltkreise und Speicher ermöglicht werden, die zur zweiten virtuellen Maschine VM2 gehören.
  • Der erlaubte Zugriff kann beispielsweise ein Lesezugriff sein. Das kann bedeuten, dass während eines Ausführens der Software der zweiten virtuellen Maschine VM2 ein Tracing ausgeführt werden kann. Das kann zwar bedeuten, dass die Debug-Möglichkeiten eingeschränkt sind, weil beispielsweise ein Single-Stepping usw. nicht zugänglich ist, sondern nur Informationen gewonnen werden können, die mittels Lesezugriff auf VM2-Ressourcen und tracebare Aktivitäten der VM2 erhaltbar sind. Allerdings kann mit dieser Beschränkung (auch auf die zu debuggende zweite virtuelle Maschine VM2 wird kein Schreibzugriff gestattet) kann die Datensicherheit für die erste virtuelle Maschine VM1 (bzw. allgemeiner: für die zu schützende(n) virtuelle(n) Maschine(n)) ermöglicht werden.
  • Anders ausgedrückt wird sichergestellt, dass mit dem Debugger 102 kein Code in die zu debuggende virtuelle Maschine (hier VM2) eingebracht werden kann (in die zu schützende(n) virtuelle(n) Maschine(n), hier VM1, selbstverständlich auch nicht), sondern dass die zu debuggende virtuelle Maschine (hier VM2) beim Debuggen lediglich (z.B. mittels Tracing) beobachtet wird.
  • Das bedeutet, dass auch ein bösartiger Angreifer nicht die Möglichkeit hat, Code in die geschützten virtuellen Maschinen (hier: VM1) oder in die zu debuggende virtuelle Maschine (hier: VM2) einzubringen.
  • In verschiedenen Ausführungsbeispielen kann nach dem Festlegen von Berechtigungen ein Konfigurieren der Tracefunktionen erfolgen (bei 468). Diese Berechtigung kann dem Debugger 102 eingeräumt sein. Die Tracefunktionen können beispielsweise eine Filtergestaltung, Triggerpunkte oder ähnliches betreffen und auf diejenigen Traces beschränkt sein, für die eine Leseberechtigung vorliegt, im beispielhaften Fall aus 3 also z.B. die Traces, welche die zweite virtuelle Maschine VM2 betreffen.
  • Anders ausgedrückt kann das System-on-Chip 300 gemäß verschiedenen Ausführungsbeispielen so gestaltet sein, dass feingranular einstellbar ist, auf welche Register, Peripheriemodule und Speicher das Debug-System 102 Zugriff hat.
  • Sollte der Debug-Vorgang ergeben, dass eine Änderung an der Software der zu debuggenden virtuellen Maschine (der VM2) nötig ist, kann diese beispielsweise offline erfolgen und die geänderte Software mittels des privilegierten Nutzers zu einem späteren Zeitpunkt ins System-on-Chip 300 (hier in die zweite virtuelle Maschine VM2) eingespeist werden.
  • In verschiedenen Ausführungsbeispielen kann der weitere Prozessorkern 334 so eingerichtet sein, dass die zu erteilenden (bzw. zu verweigernden) Zugriffsberechtigungen in der Software hartcodiert sind und nicht beeinflusst werden können.
  • Beispielsweise kann die privilegierte Software zuerst laufen, die Multiplexer-Register einstellen (also z.B., welche Quellen von welchen der virtuellen Maschinen VM tracebar sein sollen), Bits zum Einfrieren der Einstellung setzen (auch die privilegierte Software kann sie anschließend nicht mehr ändern), und dann die Software der zu debuggenden virtuellen Maschine VM und die Debug-Software des Debuggers 102 starten, die alles, was zugänglich ist, ändern kann (was insbesondere Tracing-Funktionalitäten wie Filter, Triggerpunkte usw. betrifft), aber insbesondere nicht mehr die von der privilegierten Software eingestellten Registereinträge/Bits, und auch keinen Code in den virtuellen Maschinen VM.
  • Das heißt, die vorzunehmende Einstellung kann in verschiedenen Ausführungsbeispielen als Teil der Debug-Konfigurations-Software bereitgestellt sein, z.B. als Teil des Codes oder als gespeicherte Daten.
  • In weiteren Ausführungsbeispielen kann die privilegierte Software (die Debug-Konfigurations-Software) zuerst laufen und eingerichtet sein, die vorzunehmende Einstellung als mittels eines authentifizierten Verfahrens erzeugte Daten von einer Quelle außerhalb des System-on-Chip 300 zu erhalten und zu authentizfizieren. Der privilegierte Nutzer kann beispielsweise die vorzunehmende Einstellung bereitstellen.
  • Haupt-Debug-Funktionen während der hierin beschriebenen Integrationsphase betreffen eine Beobachtung (das Tracing) für eine weitergehende Analyse. Diese Funktionen werden, wie oben beschrieben, vom MCDS Trace-System 444 (in Kooperation mit dem Debug-Interface 446 und dem Debugger 102) bereitgestellt, wobei lediglich die virtuelle Maschine VM (hier: VM2), auf welcher die zu debuggende Anwendung installiert ist, für einen Lesezugriff freigegebene Beobachtungspunkte aufweist.
  • Die Register, in welchen die Trace-Konfiguration eingestellt werden kann, sind beispielhaft mit Feldern, Bits, Typen, Beschreibungen usw. in 5 wiedergegeben. Der Übersichtlichkeit halber werden diese Informationen hier nicht wiederholt.
  • Auch Zustands- und Signaltraces können hartcodiert oder flexibel konfigurierbar sein, abhängig von einer Schutzeinstellung des entsprechenden Peripheriemoduls bzw - schaltkreises.
  • In verschiedenen Ausführungsbeispielen kann es ausreichend sein, ausschließlich ein Tracing zum Debuggen zu ermöglichen.
  • In weiteren Ausführungsbeispielen kann es vorteilhaft sein, eine beschränkte Ablaufsteuerungs-Funktionalität bereitzustellen, beispielsweise ein Anhalten der laufenden Prozesse mittels einer Triggerbedingung, die mittels des MCDS 444 setzbar ist. Das kann es ermöglichen, eine weitergehende Analyse von Peripheriemodulen oder -schaltkreisen oder Daten in Speichern im gewählten Zustand zu ermöglichen.
  • Bei einer Gestaltung des System-on-Chip 300 mit der umfassendsten Beschränkung kann die Einstellung so gewählt sein, dass ein Zugriff des Debuggers 102 lediglich auf das MCDS 444 und Speicher, in welchen Traces gespeichert werden, ermöglicht wird.
  • Bei einer Gestaltung des System-on-Chip 300 mit weniger umfassenden Beschränkungen kann die Einstellung so gewählt sein, dass ein Zugriff des Debuggers 102 (welcher beispielsweise als Bus-Master identifizierbar sein kann) dieselben Zugriffs- (z.B. Leserechte) auf Speicher und Peripheriegeräte bzw. -schaltkreise erhält wie die zu debuggende Anwendung, und ggf. zu weiteren Speichern der gewählten virtuellen Maschine (z.B. VM2), z.B. lokalen RAMs o.ä. Das kann beispielsweise mittels Bereitstellens von mindestens einem Bereich der APU für einen speziellen Zugangspfad zum Debuggen ermöglicht werden.
  • Obwohl die Beschreibung sich auf die Verwendung mehrerer virtueller Maschinen VM1, VM2 konzentriert, können Ausführungsbeispiele auch genutzt werden, wenn zwei oder mehr Anwendungen (ohne dass es sich um unterschiedliche virtuelle Maschinen handelt) unterschiedliche Prozessoren nutzen.
  • 6 zeigt ein Flussdiagramm eines Verfahrens zum Betreiben eines System-on-Chip, das eine Mehrzahl von Prozessorkernen mit einer Mehrzahl virtueller Maschinen und einen weiteren Prozessorkern aufweist, in einem Debug-Modus gemäß verschiedenen Ausführungsbeispielen.
  • Das Verfahren kann ein Starten des System-on-Chip (bei 610), ein Starten einer Debug-Konfigurations-Software mittels des weiteren Prozessorkerns (bei 620) und ein Vornehmen einer Debug-Einstellung mittels der Debug-Konfigurations-Software, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software auf mindestens eine der virtuellen Maschinen verhindert und einen Zugriff der Debugger-Software auf mindestens eine weitere der virtuellen Maschinen ermöglicht, aufweisen (bei 630).
  • Im Folgenden werden zusammenfassend einige Ausführungsbeispiele angegeben.
  • Ausführungsbeispiel 1 ist ein System-on-Chip. Das System-on-Chip kann eingerichtet sein, in einem Debug-Modus betrieben zu werden, und kann eine Mehrzahl von Prozessorkernen, die eine Mehrzahl virtueller Maschinen aufweisen, einen weiteren Prozessorkern, der eingerichtet ist, im Debug-Modus nach einem Betriebsstart des System-on-Chip zunächst nur eine Debug-Konfigurations-Software zu starten, aufweisen, wobei die Debug-Konfigurations-Software eingerichtet ist, eine Debug-Einstellung vorzunehmen, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software auf mindestens eine der virtuellen Maschinen verhindert und einen Zugriff durch die Debugger-Software auf mindestens eine weitere der virtuellen Maschinen ermöglicht.
  • Ausführungsbeispiel 2 ist ein System-on-Chip gemäß Ausführungsbeispiel 1, wobei der Zugriff als Lesezugriff, beispielsweise auf Tracedaten einer Traceinfrastruktur, erfolgt.
  • Ausführungsbeispiel 3 ist ein System-on-Chip gemäß Ausführungsbeispiel 1 oder 2, wobei die vorzunehmende Einstellung als Teil der Debug-Konfigurations-Software bereitgestellt ist, optional als Teil des Codes oder als gespeicherte Daten.
  • Ausführungsbeispiel 4 ist ein System-on-Chip gemäß Ausführungsbeispiel 1 oder 2, wobei die Debug-Konfigurations-Software eingerichtet ist, die vorzunehmende Einstellung als mittels eines authentifizierten Verfahrens erzeugte Daten von einer Quelle außerhalb des System-on-Chip zu erhalten und zu authentizfizieren.
  • Ausführungsbeispiel 5 ist ein System-on-Chip gemäß einem der Ausführungsbeispiele 2 bis 4, wobei der weitere Prozessorkern ein Hardware-Sicherheitsmodul (HSM) ist.
  • Ausführungsbeispiel 6 ist ein System-on-Chip gemäß einem der Ausführungsbeispiele 1 bis 5, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software unveränderbar ist.
  • Ausführungsbeispiel 7 ist ein System-on-Chip gemäß einem der Ausführungsbeispiele 1 bis 6, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software nur durch einen vertrauenswürdigen Master veränderbar ist.
  • Ausführungsbeispiel 8 ist ein System-on-Chip gemäß Ausführungsbeispiel 7, wobei der vertrauenswürdige Master ein Hardware Bus Master des Hardware-Sicherheitsmoduls ist.
  • Ausführungsbeispiel 9 ist ein System-on-Chip gemäß einem der Ausführungsbeispiele 1 bis 8, welches ferner mindestens ein Register zum Vornehmen der Debug-Einstellung aufweist.
  • Ausführungsbeispiel 10 ist ein System-on-Chip gemäß Ausführungsbeispiel 9 und einem der Ausführungsbeispiele 4 bis 8, wobei nur ein vertrauenswürdiger Master berechtigt ist, mittels der Debug-Konfigurations-Software in das mindestens eine Register zu schreiben.
  • Ausführungsbeispiel 11 ist ein System-on-Chip gemäß Ausführungsbeispiel 9 oder 10, wobei das mindestens eine Register mindestens ein Sperrbit aufweist, welches beim Reset in einen Grundzustand setzbar ist und mittels der Debug-Konfigurations-Software einmalig in einen vorbestimmten Zustand änderbar ist, und wobei die, durch dieses Sperrbit geschützten, Debug-Einstellung unveränderbar ist, wenn das Sperrbit im vorbestimmten Zustand ist.
  • Ausführungsbeispiel 12 ist ein System-on-Chip gemäß einem der Ausführungsbeispiele 9 bis 11, wobei der verhinderte Zugriff auf die mindestens eine virtuelle Maschine im Register als eine Eintragung einer fehlenden Lese- und Schreibberechtigung für einen die mindestens eine virtuelle Maschine betreffenden Adressbereich gestaltet ist.
  • Ausführungsbeispiel 13 ist ein System-on-Chip gemäß einem der Ausführungsbeispiele 9 bis 12, wobei der ermöglichte Zugriff auf die mindestens eine weitere virtuelle Maschine im Register als eine Eintragung Lese- und/oder Schreibberechtigung für einen die mindestens eine weitere virtuelle Maschine betreffenden Adressbereich gestaltet ist.
  • Ausführungsbeispiel 14 ist ein Verfahren zum Betreiben eines System-on-Chip, das eine Mehrzahl von Prozessorkernen mit einer Mehrzahl virtueller Maschinen und einen weiteren Prozessorkern aufweist, in einem Debug-Modus. Das Verfahren kann ein Starten des System-on-Chip, ein Starten einer Debug-Konfigurations-Software mittels des weiteren Prozessorkerns und ein Vornehmen einer Debug-Einstellung mittels der Debug-Konfigurations-Software, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software auf mindestens eine der virtuellen Maschinen verhindert und einen Zugriff der Debugger-Software auf mindestens eine weitere der virtuellen Maschinen ermöglicht, aufweisen.
  • Ausführungsbeispiel 15 ist ein Verfahren gemäß Ausführungsbeispiel 14, wobei der Zugriff als Lesezugriff erfolgt, beispielsweise auf Tracedaten einer Traceinfrastruktur.
  • Ausführungsbeispiel 16 ist ein Verfahren gemäß Ausführungsbeispiel 14 oder 15, wobei die vorzunehmende Einstellung als Teil der Debug-Konfigurations-Software bereitgestellt ist, optional als Teil des Codes oder als gespeicherte Daten.
  • Ausführungsbeispiel 17 ist ein Verfahren gemäß Ausführungsbeispiel 14 oder 15, welches ferner ein Empfangen der vorzunehmenden Einstellung als mittels eines authentifizierten Verfahrens erzeugte Daten von einer Quelle außerhalb des System-on-Chip und ein Authentifizieren der vorzunehmenden Einstellung aufweist.
  • Ausführungsbeispiel 18 ist ein Verfahren gemäß einem der Ausführungsbeispiele 14 bis 17, wobei der weitere Prozessorkern ein Hardware-Sicherheitsmodul (HSM) ist.
  • Ausführungsbeispiel 19 ist ein Verfahren gemäß einem der Ausführungsbeispiele 14 bis 18, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software unveränderbar ist.
  • Ausführungsbeispiel 20 ist ein Verfahren gemäß einem der Ausführungsbeispiele 14 bis 18, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software nur durch einen vertrauenswürdigen Master veränderbar ist.
  • Ausführungsbeispiel 21 ist ein Verfahren gemäß Ausführungsbeispiel 20, wobei der vertrauenswürdige Master ein Hardware Bus Master des Hardware-Sicherheitsmoduls ist.
  • Ausführungsbeispiel 22 ist ein Verfahren gemäß einem der Ausführungsbeispiele 14 bis 21, wobei das System-on-Chip ferner mindestens ein Register zum Vornehmen der Debug-Einstellung aufweist.
  • Ausführungsbeispiel 23 ist ein Verfahren gemäß Ausführungsbeispiel 22 und einem der Ausführungsbeispiele 20 oder 21, wobei nur der vertrauenswürdige Master berechtigt ist, mittels der Debug-Konfigurations-Software in das mindestens eine Register zu schreiben.
  • Ausführungsbeispiel 24 ist ein Verfahren gemäß Ausführungsbeispiel 22 oder 23, wobei das mindestens eine Register mindestens ein Sperrbit aufweist, welches beim Reset in einen Grundzustand setzbar ist und mittels der Debug-Konfigurations-Software einmalig in einen vorbestimmten Zustand änderbar ist, und wobei die, durch dieses Sperrbit geschützten, Debug-Einstellung unveränderbar ist, wenn das Sperrbit im vorbestimmten Zustand ist.
  • Ausführungsbeispiel 25 ist ein Verfahren gemäß einem der Ausführungsbeispiele 22 bis 24, welches ferner ein Eintragen einer fehlenden Lese- und Schreibberechtigung im Register für einen die mindestens eine virtuelle Maschine betreffenden Adressbereich zum Verhindern des Zugriffs auf die mindestens eine virtuelle Maschine aufweist.
  • Ausführungsbeispiel 26 ist ein Verfahren gemäß einem der Ausführungsbeispiele 22 bis 25, welches ferner ein Eintragen einer Lese- und/oder Schreibberechtigung im Register für einen die mindestens eine weitere virtuelle Maschine betreffenden Adressbereich zum Ermöglichen des Zugriffs auf die mindestens eine virtuelle Maschine aufweist.
  • Weitere vorteilhafte Ausgestaltungen der Vorrichtung ergeben sich aus der Beschreibung des Verfahrens und umgekehrt.

Claims (26)

  1. System-on-Chip (SOC), welches eingerichtet ist, in einem Debug-Modus betrieben zu werden, aufweisend: • eine Mehrzahl von Prozessorkernen, die eine Mehrzahl virtueller Maschinen aufweisen; • einen weiteren Prozessorkern, der eingerichtet ist, im Debug-Modus nach einem Betriebsstart des System-on-Chip zunächst nur eine Debug-Konfigurations-Software zu starten; • wobei die Debug-Konfigurations-Software eingerichtet ist, eine Debug-Einstellung vorzunehmen, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software auf mindestens eine der virtuellen Maschinen verhindert und einen Zugriff durch die Debugger-Software auf mindestens eine weitere der virtuellen Maschinen ermöglicht.
  2. System-on-Chip gemäß Anspruch 1, wobei der Zugriff als Lesezugriff, beispielsweise auf Tracedaten einer Traceinfrastruktur, erfolgt.
  3. System-on-Chip gemäß Anspruch 1 oder 2, wobei die vorzunehmende Einstellung als Teil der Debug-Konfigurations-Software bereitgestellt ist, optional als Teil des Codes oder als gespeicherte Daten.
  4. System-on-Chip gemäß Anspruch 1 oder 2, wobei die Debug-Konfigurations-Software eingerichtet ist, die vorzunehmende Einstellung als mittels eines authentifizierten Verfahrens erzeugte Daten von einer Quelle außerhalb des System-on-Chip zu erhalten und zu authentizfizieren.
  5. System-on-Chip gemäß einem der Ansprüche 2 bis 4, wobei der weitere Prozessorkern ein Hardware-Sicherheitsmodul (HSM) ist.
  6. System-on-Chip gemäß einem der Ansprüche 1 bis 5, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software unveränderbar ist.
  7. System-on-Chip gemäß einem der Ansprüche 1 bis 6, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software nur durch einen vertrauenswürdigen Master veränderbar ist.
  8. System-on-Chip gemäß Anspruch 7, wobei der vertrauenswürdige Master ein Hardware Bus Master des Hardware-Sicherheitsmoduls ist.
  9. System-on-Chip gemäß einem der Ansprüche 1 bis 8, ferner aufweisend: mindestens ein Register zum Vornehmen der Debug-Einstellung.
  10. System-on-Chip gemäß Anspruch 9 und einem der Ansprüche 4 bis 8, wobei nur ein vertrauenswürdiger Master berechtigt ist, mittels der Debug-Konfigurations-Software in das mindestens eine Register zu schreiben.
  11. System-on-Chip gemäß Anspruch 9 oder 10, wobei das mindestens eine Register mindestens ein Sperrbit aufweist, welches beim Reset in einen Grundzustand setzbar ist und mittels der Debug-Konfigurations-Software einmalig in einen vorbestimmten Zustand änderbar ist; und wobei die Debug-Einstellung unveränderbar ist, wenn das Sperrbit im vorbestimmten Zustand ist.
  12. System-on-Chip gemäß einem der Ansprüche 9 bis 11, wobei der verhinderte Zugriff auf die mindestens eine virtuelle Maschine im Register als eine Eintragung einer fehlenden Lese- und Schreibberechtigung für einen die mindestens eine virtuelle Maschine betreffenden Adressbereich gestaltet ist.
  13. System-on-Chip gemäß einem der Ansprüche 9 bis 12, wobei der ermöglichte Zugriff auf die mindestens eine weitere virtuelle Maschine im Register als eine Eintragung Lese- und/oder Schreibberechtigung für einen die mindestens eine weitere virtuelle Maschine betreffenden Adressbereich gestaltet ist.
  14. Verfahren zum Betreiben eines System-on-Chip, das eine Mehrzahl von Prozessorkernen mit einer Mehrzahl virtueller Maschinen und einen weiteren Prozessorkern aufweist, in einem Debug-Modus, das Verfahren aufweisend: • Starten des System-on-Chip; • Starten einer Debug-Konfigurations-Software mittels des weiteren Prozessorkerns; • Vornehmen einer Debug-Einstellung mittels der Debug-Konfigurations-Software, die nach einem Beenden der Debug-Konfigurations-Software einen Zugriff durch eine Debugger-Software auf mindestens eine der virtuellen Maschinen verhindert und einen Zugriff der Debugger-Software auf mindestens eine weitere der virtuellen Maschinen ermöglicht.
  15. Verfahren gemäß Anspruch 14, wobei der Zugriff als Lesezugriff, beispielsweise auf Tracedaten einer Traceinfrastruktur, erfolgt.
  16. System-on-Chip gemäß Anspruch 14 oder 15, wobei die vorzunehmende Einstellung als Teil der Debug-Konfigurations-Software bereitgestellt ist, optional als Teil des Codes oder als gespeicherte Daten.
  17. System-on-Chip gemäß Anspruch 14 oder 15, ferner aufweisend: Empfangen der vorzunehmenden Einstellung als mittels eines authentifizierten Verfahrens erzeugte Daten von einer Quelle außerhalb des System-on-Chip; und Authentifizieren der vorzunehmenden Einstellung.
  18. Verfahren gemäß einem der Ansprüche 14 bis 17, wobei der weitere Prozessorkern ein Hardware-Sicherheitsmodul (HSM) ist.
  19. Verfahren gemäß einem der Ansprüche 14 bis 18, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software unveränderbar ist.
  20. Verfahren gemäß einem der Ansprüche 14 bis 18, wobei die Debug-Einstellung nach dem Beenden der Debug-Konfigurations-Software nur durch einen vertrauenswürdigen Master veränderbar ist.
  21. Verfahren gemäß Anspruch 20, wobei der vertrauenswürdige Master ein Hardware Bus Master des Hardware-Sicherheitsmoduls ist.
  22. Verfahren gemäß einem der Ansprüche 14 bis 21, wobei das System-on-Chip ferner mindestens ein Register zum Vornehmen der Debug-Einstellung aufweist.
  23. Verfahren gemäß Anspruch 22 und einem der Ansprüche 20 oder 21, wobei nur der vertrauenswürdige Master berechtigt ist, mittels der Debug-Konfigurations-Software in das mindestens eine Register zu schreiben.
  24. Verfahren gemäß Anspruch 22 oder 23, wobei das mindestens eine Register mindestens ein Sperrbit aufweist, welches beim Reset in einen Grundzustand setzbar ist und mittels der Debug-Konfigurations-Software einmalig in einen vorbestimmten Zustand änderbar ist; und wobei die Debug-Einstellung unveränderbar ist, wenn das Sperrbit im vorbestimmten Zustand ist.
  25. Verfahren gemäß einem der Ansprüche 22 bis 24, ferner aufweisend: Eintragen einer fehlenden Lese- und Schreibberechtigung im Register für einen die mindestens eine virtuelle Maschine betreffenden Adressbereich zum Verhindern des Zugriffs auf die mindestens eine virtuelle Maschine.
  26. Verfahren gemäß einem der Ansprüche 22 bis 25, ferner aufweisend: Eintragen einer Lese- und/oder Schreibberechtigung im Register für einen die mindestens eine weitere virtuelle Maschine betreffenden Adressbereich zum Ermöglichen des Zugriffs auf die mindestens eine virtuelle Maschine.
DE102020122702.7A 2020-08-31 2020-08-31 System-on-Chip und Verfahren zum Betreiben eines System-on-Chip Pending DE102020122702A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102020122702.7A DE102020122702A1 (de) 2020-08-31 2020-08-31 System-on-Chip und Verfahren zum Betreiben eines System-on-Chip

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102020122702.7A DE102020122702A1 (de) 2020-08-31 2020-08-31 System-on-Chip und Verfahren zum Betreiben eines System-on-Chip

Publications (1)

Publication Number Publication Date
DE102020122702A1 true DE102020122702A1 (de) 2022-03-03

Family

ID=80221558

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020122702.7A Pending DE102020122702A1 (de) 2020-08-31 2020-08-31 System-on-Chip und Verfahren zum Betreiben eines System-on-Chip

Country Status (1)

Country Link
DE (1) DE102020122702A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115220978A (zh) * 2022-09-19 2022-10-21 瀚博半导体(上海)有限公司 包括在线调试模式的芯片启动方法和装置、芯片和设备
CN117370093A (zh) * 2023-12-05 2024-01-09 无锡亚科鸿禹电子有限公司 一种芯片调试方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KeyStone Architecture - Memory Protection Unit (MPU) - User Guide, Literature Number: SPRUGW5A, Texas Instruments Inc., June 2013<https://www.ti.com/lit/ug/sprugw5a/sprugw5a.pdf>(recherchiert am 4.6.2021)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115220978A (zh) * 2022-09-19 2022-10-21 瀚博半导体(上海)有限公司 包括在线调试模式的芯片启动方法和装置、芯片和设备
CN117370093A (zh) * 2023-12-05 2024-01-09 无锡亚科鸿禹电子有限公司 一种芯片调试方法、装置、设备及存储介质
CN117370093B (zh) * 2023-12-05 2024-02-02 无锡亚科鸿禹电子有限公司 一种芯片调试方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
DE10392470B4 (de) System und Verfahren zum Ausführen von Initialisierungsbefehlen einer gesicherten Umgebung
EP3274825B1 (de) Verfahren und ausführungsumgebung zum gesicherten ausführen von programmbefehlen
DE10394383B4 (de) Verfahren und Vorrichtung zum Laden eines vertrauenswürdigen Betriebssystems
DE60306952T2 (de) Zuordnung von virtuellen zu physischen speicheradressen in einem system mit einem sicheren bereich und einem nicht sicheren bereich
DE69718679T2 (de) System zur kontrolle des zugriffes auf ein register abgebildet auf einen e/a addressbereich eines rechnersystems
DE102013022299B3 (de) Schutz globaler Register in einem Multithreaded-Prozessor
DE102020122702A1 (de) System-on-Chip und Verfahren zum Betreiben eines System-on-Chip
DE60206924T2 (de) Prozessor mit geschütztem prüfungs- und fehlerbeseitigungsmodus
DE102014002181B4 (de) Chip und Verfahren zum Betreiben eines Chips
DE19847677C2 (de) Computer, Verfahren und Gerät zum Verhindern eines unautorisierten Zugriffs auf ein Computerprogramm
DE102018132970A1 (de) Verfahren und Vorrichtung zur Isolation von sensiblem nichtvertrauenswürdigem Programmcode auf mobilen Endgeräten
EP1101163A1 (de) Programmgesteuerte einheit und verfahren zum debuggen derselben
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
DE69815006T2 (de) Datenverarbeitungseinheit mit Fehlerbeseitungsmöglichkeiten
DE10297687B4 (de) Prozessor mit Eingabe/Ausgabeerlaubnisbitstrukturen für in Bereiche aufgeteilte Sicherheit und Verfahren zum selektiven Ausführen einer Eingabe/Ausgabe-Instruktion
DE102007063528A1 (de) System und Verfahren zum Schützen eines Sicherheitsbereichs eines Systems
DE112020003881T5 (de) System und verfahren zur durchführung von trusted computing mit fernbescheinigung und informationsisolierung auf heterogenen prozessoren über eine offene verbindung
EP1262856B1 (de) Programmgesteuerte Einheit
DE102008050631A1 (de) Datenverarbeitungssystem
EP3036676B1 (de) Verfahren zur absicherung einer integrierten schaltung gegen unberechtigte zugriffe
DE112017003659T5 (de) Kontextbasiertes schutzsystem
DE602004002241T2 (de) Schutz eines auf ausführungwartenden Programms in einem Speicher für einen Mikroprozessor
DE102014208848A1 (de) Verfahren zum Überwachen eines elektronischen Sicherheitsmoduls
EP3072080B1 (de) Verfahren und vorrichtung zum manipulationsschutz einer recheneinrichtung
DE102019216226A1 (de) Verfahren zum Betreiben eines Rechensystems und Rechensystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication