DE102009042666A1 - Hardware-Abstraktion in eingebetteten Systemen - Google Patents

Hardware-Abstraktion in eingebetteten Systemen Download PDF

Info

Publication number
DE102009042666A1
DE102009042666A1 DE102009042666A DE102009042666A DE102009042666A1 DE 102009042666 A1 DE102009042666 A1 DE 102009042666A1 DE 102009042666 A DE102009042666 A DE 102009042666A DE 102009042666 A DE102009042666 A DE 102009042666A DE 102009042666 A1 DE102009042666 A1 DE 102009042666A1
Authority
DE
Germany
Prior art keywords
application
hardware
machine
code
scope
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
DE102009042666A
Other languages
English (en)
Inventor
Friedrich van Redmond Megen
Holger Dr. Redmond Kenn
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of DE102009042666A1 publication Critical patent/DE102009042666A1/de
Pending 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Es werden ein System und ein maschinenimplementiertes Verfahren geschaffen. Das System kann eine Plattform enthalten, auf der ein oder mehrere Anwendungsbereiche spezifiziert werden können. Wenigstens einige der Anwendungsbereiche können eine Hardware-Vorrichtung abstrahieren. Das Partitionieren des Systems in eine Anzahl unabhängiger Anwendungen mit festen öffentlichen Schnittstellen kann jeden Anwendungsbereich mit Isolation von oder Schutz vor anderen Anwendungsbereichen versehen. Die Anwendungsbereiche können über Programmiersprachen-Konstrukte spezifiziert werden. Eine Anwendung in einem Anwendungsbereich kann über ähnliche generische Schnittstellen, die in einer durch die Plattform durchgesetzten Umgebung für gemanagten Code bereitgestellt werden, auf eine Hardware-Vorrichtung oder Software in einem weiteren Anwendungsbereich zugreifen.

Description

  • Die Erfindung betrifft das Gebiet der eingebetteten Systeme und insbesondere das Gebiet der Hardware-Abstraktion in eingebetteten Systemen.
  • Wenn eine Desktop- oder Server-Anwendung entwickelt und programmiert wird, schafft ein hohes Niveau der Abstraktion in Bezug auf die darunterliegenden Computer-Betriebsmittel die Skalierbarkeit für die Desktop- oder Server-Anwendung. Eine Plattform, wie z. B. eine Plattform, die den durch die Microsoft Corporation of Redmont, Washington, entwickelten .NET-Rahmen verwendet, kann verwendet werden, um Programme auszuführen. Ein Programmierer, der eine dienstgestützte Konstruktion und Multithreading-Techniken verwendet, kann sich nicht damit befassen, welcher Teil eines Systems ein Programm ausführt, weil die Plattform ein hohes Niveau der Abstraktion schafft.
  • Eingebettete Systeme sind in den heutigen Computer-Systemen vorherrschend. Eingebettete Systeme können entwickelt werden, um mit kundenspezifischer Hardware implementiert zu werden, wobei sie oft in Echtzeitumgebungen ausgeführt werden. Beispiele eingebetteter Systeme enthalten Mobiltelephone, Set-Top-Boxen, persönliche digitale Assistenten (PDAs), Telekommunikations-Vermittlungssysteme, Luftfahrzeug-Systeme und Raumfahrzeug-Systeme, sind aber nicht darauf eingeschränkt.
  • Bei der Entwicklung eingebetteter Systeme kann ein hohes Niveau der Abstraktion, wie es oben beschrieben worden ist, die eingebetteten Systeme ungünstig beeinflussen, was die Leistung unvorhersehbar macht. Ferner können spezifische Aspekte der Hardware-Vorrichtungen in dem hohen Niveau der Abstraktion verloren werden. Die physikali schen Verbindungen zu physikalischen Schnittstellen können z. B. abstrahiert werden, sie können aber später unter Verwendung zusätzlicher Parameter in den Thread-Steuerfunktionen und E/A-Treibern erneut eingeführt werden. Außerdem macht es das hohe Niveau der Abstraktion unmöglich, dass ein Programmierer auf eine spezifische Zentraleinheit (CPU) oder CPU-ähnliche Vorrichtung Bezug nimmt, ohne die Abstraktion zu durchbrechen.
  • In Systemen einschließlich des .NET-Rahmens, aber nicht darauf eingeschränkt, kann eine Anwendung, um mit einer Hardware-Komponente zu kommunizieren, mit einem Treiber kommunizieren, der einen proprietären Code ausführt, der dann auf die Hardware-Komponente zugreifen kann. Jede verschiedene Hardware-Komponente kann einen anderen Treiber verwenden. Im Ergebnis lernt der Programmierer, wie die Anwendung eine Schnittstelle mit jedem der verschiedenen Treiber bildet, bevor er die Anwendung programmiert, um die Treiber aufzurufen.
  • Der Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren und ein System zu schaffen, die die obenerwähnten Nachteile nicht besitzen.
  • Diese Aufgabe wird erfindungsgemäß gelöst durch ein maschinenimplementiertes Verfahren nach Anspruch 1, ein greifbares maschinenlesbares Medium nach Anspruch 9 und ein System nach Anspruch 10. Vorteilhafte Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
  • Diese Zusammenfassung ist vorgesehen, um eine Auswahl von Konzepten in einer vereinfachten Form einzuführen, die im Folgenden in der ausführlichen Beschreibung weiter beschrieben ist. Diese Zusammenfassung ist weder vorgesehen, um die Schlüsselmerkmale oder die wesentlichen Merk male des beanspruchten Gegenstandes zu identifizieren, noch ist sie vorgesehen, um für die Einschränkung des Umfangs des beanspruchten Gegenstandes verwendet zu werden.
  • Es können ein System und ein maschinenimplantiertes Verfahren geschaffen werden, um die Hardware-Abstraktion bereitzustellen. Das System kann eine Plattform enthalten, die es einem Anwender erlaubt, einen oder mehrere Anwendungsbereiche zu spezifizieren, von denen einige eine Hardware-Vorrichtung abstrahieren können. Die Anwendungsbereiche sind Computereinheiten, die Programmcodes in einer Umgebung für gemanagten Code ausführen können. Die Anwendungsbereiche können von anderen Anwendungsbereichen isoliert werden, indem ein Software-System in eine Anzahl unabhängiger Anwendungen mit festen öffentlichen Schnittstellen partitioniert wird.
  • In einigen Ausführungsformen, die mit dem Gegenstand dieser Offenbarung konsistent sind, schafft die Plattform die Fähigkeit, Anwendungsbereiche über Programmiersprachen-Konstrukte zu erzeugen. Eine Anwendung in einem Anwendungsbereich kann über generische Schnittstellen, die in der Umgebung für gemanagten Code bereitgestellt werden, auf eine Hardware-Vorrichtung oder Software in einem weiteren Anwendungsbereich zugreifen. Die Plattform kann die Merkmale des gemanagten Codes durchsetzen, einschließlich der Codezugriffsicherheit, der Codeverifizierung, der Validierung nichtfunktionaler Beschränkungen und der Anwendungsbereichs-Isolation, ist aber nicht darauf eingeschränkt. Die Validierung nichtfunktionaler Beschränkungen kann Informationen über eine maximale Laufzeit für eine Funktion enthalten, ist aber nicht darauf eingeschränkt.
  • In einigen Ausführungsformen kann eine Anwendung, die in einem ersten Anwendungsbereich ausgeführt wird, Code zu einer Hardware-Vorrichtung in einem zweiten Anwendungsbereich herunterladen. Wenn die Hardware-Vorrichtung den heruntergeladenen Code ausführt, kann die Hardware-Vorrichtung die durch den heruntergeladenen Code definierten Funktionen ausführen. Es kann eine generische Schnittstelle definiert werden, so dass eine Anwendung, die in einem Anwendungsbereich in einer Umgebung für gemanagten Code ausgeführt wird, eine oder mehrere Funktionen des heruntergeladenen Codes aufrufen kann, der in der Hardware-Vorrichtung ausgeführt wird. Es kann eine generische Schnittstelle definiert werden, so dass eine Anwendung, die in einem Anwendungsbereich in einer Umgebung für gemanagten Code ausgeführt wird, außerdem Software, die in einem weiteren Anwendungsbereich ausgeführt wird, über eine generische Schnittstelle aufrufen kann, die zu einer generischen Schnittstelle für das Herunterladen von Informationen durch eine Anwendung zu einer Hardware-Vorrichtung ähnlich ist oder die zu einer generischen Schnittstelle für das Aufrufen von Funktionen der Hardware-Vorrichtung von einer Anwendung ähnlich ist.
  • Weitere Merkmale und Vorteile der Erfindung werden deutlich beim Lesen der folgenden Beschreibung bevorzugter Ausführungsformen, die auf die Zeichnung Bezug nimmt; es zeigen:
  • 1 einen funktionalen Blockschaltplan einer beispielhaften Verarbeitungsvorrichtung, die in Ausführungsformen verwendet werden kann, die mit dem Gegenstand dieser Offenbarung konsistent sind;
  • 2 ein beispielhaftes System, das mit dem Gegenstand dieser Offenbarung konsistent ist und das mehrere Anwendungsbereiche enthält;
  • 3 einen auf einem feldprogrammierbaren Gate-Array basierenden Anwendungsbereich, der mit dem Gegenstand dieser Offenbarung konsistent ist;
  • 4 einen funktionalen Blockschaltplan eines beispielhaften Anwendungsbereichs, der eine Anwendung und eine Hardware-Komponente in einem Anwendungsbereich enthält;
  • 5 einen funktionalen Blockschaltplan, der einen Anwendungsbereich mit einer Anwendung und einen weiteren Anwendungsbereich mit einer Hardware-Komponente, auf die durch die Anwendung zugegriffen wird, veranschaulicht;
  • 6 und 7 beispielhafte Prozesse, die mit Ausführungsformen ausgeführt werden können, die mit dem Gegenstand dieser Offenbarung konsistent sind.
  • Im Folgenden werden Ausführungsformen erörtert. Während spezifische Implementierungen erörtert werden, ist es selbstverständlich, dass dies nur für Veranschaulichungszwecke ausgeführt wird. Ein Fachmann auf dem relevanten Gebiet wird erkennen, dass andere Komponenten und Konfigurationen verwendet werden können, ohne vom Erfindungsgedanken und Umfang des Gegenstands dieser Offenbarung abzuweichen.
  • Überblick
  • Es werden ein Verfahren und ein System geschaffen, bei denen eine Plattform eine Anwendung in einer Umgebung für gemanagten Code in einem Anwendungsbereich ausführen kann. Die Umgebung für gemanagten Code kann durch die Plattform durchgesetzt werden und kann der Anwendung eine Anzahl von Merkmalen bereitstellen, einschließlich des Speichermanagements, der Thread-Ausführung, der Verifikation des Codes, der Ausführung des Codes, der Codezugriffsicherheit, der Validierung nichtfunktionaler Beschränkungen, der Anwendungsbereichs-Isolation und des Freigebens der Betriebsmittel, ist aber nicht darauf eingeschränkt. Ein Beispiel der Validierung nichtfunktionaler Beschränkungen kann eine maximale Laufzeit für eine Funktion enthalten, ist aber nicht darauf eingeschränkt.
  • Ein Anwendungsbereich ist eine Computereinheit, die Programmcode ausführen kann. Der Anwendungsbereich kann ferner ein Ziel von Kommunikationen und externen Ereignissen sein. Die Erzeugung eines Anwendungsbereichs führt zur Initialisierung einer Computereinheit und dem Verriegeln zugeordneter Betriebsmittel, nach dem der Anwendungsbereich bereit sein kann, um Kommunikationen und Ereignisse zu verarbeiten. Ein Anwendungsbereich kann zerstört werden, was zum Freigeben der zugeordneten Betriebsmittel führt, nach dem der Anwendungsbereich nicht länger für die Verarbeitung von Kommunikationen und Ereignissen verfügbar sein kann.
  • In einigen Ausführungsformen, die mit dem Gegenstand dieser Offenbarung konsistent sind, kann ein Anwendungsbereichs-Konzept in einer .NET-Programmiersprache im .NET-Rahmen (oder in der .NET-Plattform), der (die) von der Microsoft Corporation of Redmont, Washington, verfügbar ist, implementiert werden. In anderen Ausführungsformen kann eine andere Plattform verwendet werden. Die Betriebsmittel, die den Speicher und die CPU-Zeit enthalten, aber nicht darauf eingeschränkt sind, können durch die Anwendungsbereiche verwendet werden. Andere Betriebsmittel, wie z. B. Hardware-Schnittstellen, können Hardware-Unterbrechungen, gemeinsam benutzte Speicherbereiche, Kanäle für den Direktspeicherzugriff (DMA-Kanäle), speicherabgebildete E/A-Bereiche, E/A-Busse, E/A-An schlussstifte und gemeinsam benutzte oder exklusive Verriegelungen sein, sind aber nicht darauf eingeschränkt, wobei sie als die Eigenschaften eines Anwendungsbereichs definiert werden können.
  • Die Anwendungsbereiche können durch das Partitionieren eines Software-Systems in eine Anzahl unabhängiger Anwendungen mit durch einen Anwendungsprogrammierer definierten festen öffentlichen Schnittstellen von anderen Anwendungsbereichen isoliert werden. Andere Zugriffe unter den Anwendungsbereichen können blockiert werden.
  • Die Plattform kann die Fähigkeit bereitstellen, Anwendungsbereiche als ein Programmiersprachen-Konstrukt zu erzeugen, das Hardware-Komponenten abstrahiert. Derartige Anwendungsbereiche können Hardware-Funktionen und software-implementierte Funktionen über eine generische Schnittstelle bereitstellen, die für Managementfunktionen, einschließlich sowohl der Initialisierung als auch der tatsächlichen Hardware- oder Software-Funktionen, aber nicht eingeschränkt darauf, verwendet werden können.
  • Eine beispielhafte Verarbeitungsvorrichtung
  • 1 ist ein funktionaler Blockschaltplan einer beispielhaften Verarbeitungsvorrichtung 100, die verwendet werden kann, um Ausführungsformen zu implementieren, die mit dem Gegenstand dieser Offenbarung konsistent sind. Die Verarbeitungsvorrichtung 100 kann ein Desktop-Personal-Computer (Desktop-PC), ein Notebook- oder Laptop-PC, ein Server, eine Handheld-Verarbeitungsvorrichtung oder eine andere Verarbeitungsvorrichtung sein. Die Verarbeitungsvorrichtung 100 kann einen Bus 110, einen Speicher 130, einen Festwertspeicher (ROM) 140, einen Prozessor 120 und eine Speichervorrichtung 150 umfassen. Der Bus 110 kann die Kommunikation zwischen den Komponenten der Verarbeitungsvorrichtung 100 erlauben.
  • Der Prozessor 120 kann wenigstens sowohl einen herkömmlichen Prozessor oder Mikroprozessor, der Befehle interpretiert und ausführt, als auch ein oder mehrere eingebettete Systeme enthalten. Der Speicher 130 kann ein Schreib-Lese-Speicher (RAM) oder ein anderer Typ einer dynamischen Speichervorrichtung sein, die Informationen und Befehle für die Ausführung durch den Prozessor 120 speichert. Der Speicher 130 kann temporäre Variable oder andere Zwischeninformationen speichern, die während der Ausführung der Befehle durch den Prozessor 120 verwendet werden. Der ROM 140 kann eine herkömmliche ROM-Vorrichtung oder einen anderen Typ einer statischen Speichervorrichtung enthalten, die statische Informationen und Befehle für den Prozessor 120 speichert. Die Speichervorrichtung 150 kann eine Festplatte und ein entsprechendes Laufwerk, eine flash-basierte Speichervorrichtung oder einen anderen Typ der Speichervorrichtung oder einen anderen Typ des Speichermediums zum Speichern von Daten und/oder Befehlen für den Prozessor 120 enthalten.
  • Die Verarbeitungsvorrichtung 100 kann Funktionen in Reaktion auf den Prozessor 120 ausführen, der Folgen von Befehlen ausführt, die in einem greifbaren maschinenlesbaren Medium, wie z. B. dem Speicher 130, dem ROM 140, der Speichervorrichtung 150 oder einem anderen Medium, enthalten sind. Derartige Befehle können von einem weiteren maschinenlesbaren Medium oder von einer separaten Vorrichtung über eine (nicht gezeigte) Kommunikationsschnittstelle in den Speicher 130 gelesen werden.
  • Beispielhafte Anwendungsbereiche
  • 2 veranschaulicht ein beispielhaftes System 200, das in Ausführungsformen implementiert werden kann, die mit dem Gegenstand dieser Offenbarung konsistent sind. Das beispielhafte System 200 kann einen Anwendungsbereich 202, einen Anwendungsbereich 204 und einen Anwendungsbereich 206 enthalten, die auf einer Plattform 208 ausgeführt werden. Der Anwendungsbereich 202 kann einen CPU-Kern 210, eine Software-Bibliothek 212 und eine Hardware-Komponente 214 enthalten. Der Anwendungsbereich 204 kann die Doppel-CPU-Kerne 215, eine Software-Bibliothek 216 und eine Hardware-Komponente 218 enthalten. Der Anwendungsbereich 206 kann einen CPU-Kern 220, eine Software-Bibliothek 222 und eine Hardware-Komponente 224 enthalten.
  • Der Anwendungsbereich 202 kann über eine Unterbrechung 230 und eine Software-Anwendungsprogrammierschnittstelle (Software-API) 232 mit anderen Komponenten und umgekehrt eine Schnittstelle bilden. Der Anwendungsbereich 202 kann über einen E/A-Bus 234 und einen gemeinsam benutzten Speicherbereich 236 mit dem Anwendungsbereich 204 und umgekehrt eine Schnittstelle bilden. Der Anwendungsbereich 202 kann über einen E/A-Bus 238 mit dem Anwendungsbereich 206 und umgekehrt eine Schnittstelle bilden. Der Anwendungsbereich 204 kann über eine Software-API 240 und eine speicherabgebildete E/A 242 mit anderen Komponenten und umgekehrt eine Schnittstelle bilden. Der Anwendungsbereich 204 kann über eine Software-API 244, eine Unterbrechung 246 und einen gemeinsam benutzten Speicherbereich 248 mit dem Anwendungsbereich 206 und umgekehrt eine Schnittstelle bilden.
  • In einigen Ausführungsformen, die mit dem Gegenstand dieser Anmeldung konsistent sind, kann die Plattform 208 in einer Common Language Runtime (CLR) implementiert werden, die eine virtuelle Maschinen-Komponente des durch die Microsoft Corporation of Redmont, Washington, geschaffenen .NET-Rahmens ist. In anderen Ausführungsformen kann die Plattform 208 über andere Mittel implementiert werden.
  • Das System 200 ist nur beispielhaft. Andere Systeme können mehr oder weniger Anwendungsbereiche mit anderen Komponenten als den in 2 gezeigten Komponenten besitzen.
  • Die obenerwähnten Hardware-Komponenten können jede eine programmierbare Vorrichtung sein. Die programmierbare Vorrichtung kann ein Prozessor für spezielle Anwendungen einschließlich eines digitalen Signalprozessors oder eines Graphikprozessor sein, ist aber nicht darauf eingeschränkt. In anderen Systemen können die Hardware-Komponenten, die so spezifiziert sind, dass sie sich in den Anwendungsbereichen befinden, ein feldprogrammierbares Gate-Array (FPGA) oder eine anwendungsspezifische integrierte Schaltung (ASIC) sein, sind aber nicht darauf eingeschränkt.
  • 3 ist eine graphische Darstellung, die einen beispielhaften FPGA-basierten Anwendungsbereich 300 veranschaulicht, der auf einer Plattform ausgeführt wird. Der FPGA-basierte Anwendungsbereich 300 kann eine Hardware-Komponente 304 enthalten, die eine FPGA sein kann. Weil eine FPGA keine Software-Bibliothek besitzen kann, ist im FPGA-basierten Anwendungsbereich 300 keine Software-Bibliothek gezeigt. Der FPGA-basierte Anwendungsbereich 300 kann über eine Software-API 306, eine Unterbrechung 308, einen E/A-Bus 310 und einen speicherabgebildeten Bereich 312 mit anderen Komponenten außerhalb des Anwendungsbereichs kommunizieren.
  • Der FPGA-basierte Anwendungsbereich 300 ist nur beispielhaft. In anderen Ausführungsformen kann ein FPGA-basierter Anwendungsbereich über andere Typen von Schnittstellen als jene, die in 3 gezeigt sind, mit anderen Komponenten kommunizieren.
  • 4 veranschaulicht einen funktionalen Blockschaltplan eines beispielhaften Anwendungsbereichs 400, der auf einer Plattform ausgeführt wird. Die Plattform kann ein Programmiersprachen-Konstrukt zum Spezifizieren einer abstrahierten Hardware-Komponente 406 bereitstellen. Eine Klasse zum Zugreifen auf die Hardware-Komponente 406 kann in einer Software-Bibliothek 403 definiert werden. Eine Anwendung 402 kann eine Instanz der Klasse zum Zugreifen auf die Hardware-Komponente 406 bilden. Die Instanz der Klasse kann eine generische Schnittstelle schaffen und kann ein oder mehrere Verfahren zum Übertragen von Informationen zu der oder von der Hardware-Komponente 406 enthalten. In anderen Anwendungsbereichen kann für eine Klasse zum Bilden einer Schnittstelle mit einer Software-Komponente eine Instanz gebildet werden und kann diese Klasse zum Bilden einer Schnittstelle mit einer Software-Komponente eine generische Schnittstelle, die ein oder mehrere Verfahren enthält, zum Kommunizieren mit einer Software-Komponente schaffen.
  • Das eine oder die mehreren Verfahren zum Zugreifen auf die Hardware-Komponente 406 kann durch den Hersteller der Hardware-Komponente 406 oder einen Entwickler bereitgestellten proprietären Code enthalten. Das eine oder die mehreren Verfahren können ferner Informationen, einschließlich der Konfigurationsinformationen für die Hardware-Komponente 406, aber nicht darauf eingeschränkt, enthalten.
  • Der Code kann unter Verwendung der generischen Schnittstelle 404 zur Hardware-Komponente 406 heruntergeladen werden. Der Code kann Code zum Implementieren von Funktionen in der Hardware-Komponente 406 enthalten. Ein Entwickler des Codes kann eine Klasse schaffen, die Verfahren zum Aufrufen der Funktionen in der Hardware-Komponente 406 enthält. Für die Klasse, die die Verfahren zum Aufrufen der Funktionen enthält, kann durch die Anwendung 402 eine Instanz gebildet werden, wobei dadurch eine generische Schnittstelle zum Aufrufen der Funktionen geschaffen wird. Als ein Beispiel kann die Hardware-Komponente 406 ein digitaler Signalprozessor (DSP) sein, wobei der heruntergeladene Code Befehle für den DSP enthalten kann, damit er als ein Video-Decodierer arbeitet. In diesem Beispiel kann die Anwendung 402 eine Funktion aufrufen, um codiertes Video zur Hardware-Komponente 406 weiterzuleiten, wobei sie eine zweite Funktion aufrufen kann, um ein decodiertes Video-Bild von der Hardware-Komponente 406 zu empfangen.
  • 5 veranschaulicht einen funktionalen Blockschaltplan, der den Anwendungsbereich 502 und den Anwendungsbereich 504 enthält, die auf einer Plattform 510 ausgeführt werden. Der Anwendungsbereich 502 kann eine Software-Bibliothek 506 enthalten, die eine oder mehrere definierte Klassen enthalten kann, die Verfahren zum Zugreifen auf eine oder mehrere Hardware-Komponenten enthalten. Die Anwendung 408 kann eine Instanz einer Klasse aus der Software-Bibliothek 506 zum Kommunizieren mit der Hardware-Komponente 512 bilden, die so spezifiziert ist, dass sie sich im Anwendungsbereich 504 befindet. Im Ergebnis des Bildens einer Instanz der Klasse aus der Software-Bibliothek 506 zum Kommunizieren mit der Hardware-Komponente 512 kann eine Instanz einer generischen Schnittstelle, die in diesem Beispiel ein Proxy-Objekt 514 enthalten kann, zum Kommunizieren mit der Hardware-Kompo nente 512 im Anwendungsbereich 504 gebildet werden. Das Proxy-Objekt 514 kann Verfahren enthalten, die Stub-Funktionen sein können, um einen Mechanismus zum Aufrufen von Funktionen der Hardware-Komponente 512 im Anwendungsbereich 504 bereitzustellen. Die Stub-Funktionen können Verfahren eines Objekts oder einer Instanz einer Klasse im Anwendungsbereich 504 zum Kommunizieren mit der Hardware-Komponente 512 und zum Veranlassen der Ausführung einer Funktion aufrufen. In dieser Weise kann eine Anwendung, die in einem Anwendungsbereich ausgeführt wird, veranlassen, dass eine Funktion in Bezug auf eine Hardware-Komponente, die so definiert ist, dass sie sich in einem weiteren Anwendungsbereich befindet, ausgeführt wird.
  • Beispielhafte Prozesse
  • 6 veranschaulicht einen beispielhaften Prozess zum Spezifizieren eines Anwendungsbereichs, der eine abstrahierte Hardware-Komponente besitzt, und zum Zugreifen auf die Hardware-Komponente. Zuerst kann ein Anwendungsbereich für eine Anwendung auf einer Plattform unter Verwendung eines Programmiersprachen-Konstrukts spezifiziert werden (Schritt 602). Die Hardware-Schnittstellen zu anderen Anwendungsbereichen können als die Eigenschaften des Anwendungsbereichs definiert werden, wie vorher erörtert worden ist, (Schritt 604). Eine Klasse zum Zugreifen auf eine Hardware-Komponente kann spezifiziert werden (Schritt 606). Die Klasse kann in einigen Ausführungsformen in einer Software-Bibliothek enthalten sein. Die Anwendung kann eine Instanz der Klasse bilden (Schritt 608). Die Instanz der Klasse kann Verfahren zum Zugreifen auf die Hardware-Komponente enthalten. Die Anwendung kann die Verfahren der Klasse, für die eine Instanz gebildet worden ist, verwenden, um mit der Hardware-Komponente zu kommunizieren oder auf die Hardware-Komponente zuzugrei fen (Schritt 610). Wenn sich die Hardware-Komponente im gleichen Anwendungsbereich wie die Anwendung befindet, dann kann die Anwendung die Verfahren verwenden, wie vorher unter Bezugnahme auf 4 beschrieben worden ist. Wenn sich die Hardware-Komponente in einem anderen Anwendungsbereich als die Anwendung befindet, dann kann die Anwendung die Verfahren über ein Proxy-Objekt verwenden, wie vorher unter Bezugnahme auf 5 beschrieben worden ist.
  • 7 veranschaulicht einen weiteren beispielhaften Prozess zum Spezifizieren eines Anwendungsbereichs, der eine abstrahierte Hardware-Komponente besitzt, zum Initialisieren der Hardware-Komponente von der Anwendung, zum Aufrufen von Funktionen der Hardware-Komponente von der Anwendung und zum Deinitialisieren der Hardware-Komponente von der Anwendung.
  • Zuerst kann ein Anwendungsbereich für eine Anwendung auf einer Plattform unter Verwendung eines Programmiersprachen-Konstrukts spezifiziert werden (Schritt 702). Die Hardware-Schnittstellen zu anderen Anwendungsbereichen können als die Eigenschaften des Anwendungsbereichs definiert werden, wie vorher erörtert worden ist, (Schritt 704). Eine Klasse zum Zugreifen auf eine Hardware-Komponente kann spezifiziert werden (Schritt 706). Die Klasse kann in einigen Ausführungsformen in einer Software-Bibliothek spezifiziert werden. Eine Klasse zum Aufrufen von Funktionen der Hardware-Komponente kann spezifiziert werden (Schritt 708). Die Anwendung kann eine Instanz der Klasse zum Zugreifen auf die Hardware-Komponente bilden (Schritt 710). Die Instanz der Klasse kann Verfahren zum Zugreifen auf die Hardware-Komponente, wenn die Hardware-Komponente im gleichen Anwendungsbereich wie die Anwendung enthalten ist, oder Stümpfe für das Zugreifen auf ein Objekt in einem anderen Anwendungsbereich, das Ver fahren zum Zugreifen auf die Hardware-Komponente besitzt, wenn die Hardware-Komponente in dem anderen Anwendungsbereich enthalten ist, enthalten. Als Nächstes kann eine Instanz der Klasse zum Aufrufen der Funktionen der Hardware-Komponente gebildet werden (Schritt 712). Die Verfahren der Instanz der Klasse können Stümpfe in einem Proxy-Objekt zum Übertragen eines Funktionsaufrufs zu einer Instanz einer Klasse in dem anderen Anwendungsbereich, der die Hardware-Komponente enthält, enthalten, oder die Instanz der Klasse kann Verfahren zum Aufrufen von Funktionen der Hardware-Komponente enthalten, wenn sich die Anwendung und die Hardware-Komponente im gleichen Anwendungsbereich befinden. Die Anwendung kann die Hardware-Komponente unter Verwendung von Verfahren der Instanz der Klasse zum Zugreifen auf die Hardware-Komponente initialisieren, um Informationen zur Hardware-Komponente herunterzuladen. Die Informationen können Code oder Konfigurationsinformationen in einer binären Datei oder Code für die Hardware-Komponente, um Funktionen auszuführen, enthalten (Schritt 714). Selbstverständlich können die Informationen zu einem späteren Zeitpunkt, wie z. B. während der Laufzeit, zu der Hardware-Komponente heruntergeladen werden. Die Anwendung kann die Verfahren der Instanz der Klasse zum Veranlassen der Hardware-Komponente, die Funktionen auszuführen, verwenden (Schritt 716). Die Anwendung kann dann ein Verfahren verwenden, um die Hardware-Komponente zu informieren, zu deinitialisieren und alle durch die Hardware-Komponente verwendeten Betriebsmittel freizugeben (Schritt 718).
  • Die mit dem Gegenstand dieser Offenbarung konsistenten Ausführungsformen schaffen ein konsistentes Verfahren für die Anwender, wie z. B. Programmierer, um Anwendungsbereiche, Hardware-Komponenten und Software-Komponenten zu spezifizieren, so dass Anwendungen in einer konsistenten und wohldefinierte Weise in einer Umgebung für gemanagten Code auf Hardware-Komponenten zugreifen können, Funktionen aufrufen können und auf Software-Komponenten zugreifen können.
  • Schlussfolgerung
  • Obwohl der Gegenstand in einer Sprache beschrieben worden ist, die für die strukturellen Merkmale und/oder die methodologischen Schritte spezifisch ist, ist es selbstverständlich, dass der Gegenstand in den beigefügten Ansprüchen nicht notwendigerweise auf die obenbeschriebenen spezifischen Merkmale oder Schritte eingeschränkt ist. Stattdessen werden die obenbeschriebenen spezifischen Merkmale und Schritte als Beispielformen zum Implementieren der Ansprüche offenbart.
  • Obwohl die obigen Beschreibungen spezifische Einzelheiten enthalten können, sind sie nicht als die Ansprüche in irgendeiner Weise einschränkend auszulegen. Andere Konfigurationen der beschriebenen Ausführungsformen sind Teil des Umfangs dieser Offenbarung. Ferner können mit dem Gegenstand dieser Offenbarung konsistente Implementierungen mehr oder weniger Schritte aufweisen als in Bezug auf die 6 und 7 beschrieben worden sind, oder sie können die Schritte in einer anderen Reihenfolge als der gezeigten implementieren. Demgemäß definieren anstatt irgendwelcher angegebener spezifischer Beispiele die beigefügten Ansprüche und ihre rechtlichen Äquivalente die Erfindung.

Claims (15)

  1. Maschinenimplementiertes Verfahren zum Schaffen einer Hardware-Abstraktion für eine Anwendung, die in einer Umgebung eines eingebetteten Systems ausgeführt wird, wobei das maschinenimplementierte Verfahren umfasst: Schaffen einer Plattform zum Ausführen einer Anwendung in einer Umgebung für gemanagten Code in einem ersten Anwendungsbereich (208, 510); und Schaffen eines Verfahrens zum Spezifizieren eines zweiten Anwendungsbereichs, der eine Hardware-Vorrichtung abstrahiert, durch die Plattform, so dass durch die Anwendung über eine generische Schnittstelle auf die Hardware-Vorrichtung zugegriffen werden kann, wobei die Anwendung in der Umgebung für gemanagten Code im ersten Anwendungsbereich ausgeführt wird (502, 504, 508, 512, 514, 602610, 702718).
  2. Maschinenimplementiertes Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Hardware-Vorrichtung einen Prozessor für spezielle Anwendungen umfasst.
  3. Maschinenimplementiertes Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass die Hardware-Vorrichtung einen digitalen Signalprozessor, eine Graphikverarbeitungseinheit, ein feldprogrammierbares Gate-Array oder eine anwendungsspezifische integrierte Schaltung umfasst.
  4. Maschinenimplementiertes Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass es umfasst: Isolieren des ersten Anwendungsbereichs und des zweiten Anwendungsbereichs von anderen Anwendungsbereichen.
  5. Maschinenimplementiertes Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass es umfasst: Durchsetzen der Merkmale des gemanagten Codes für die Anwendung, die in der Umgebung für gemanagten Code ausgeführt wird, durch die Plattform.
  6. Maschinenimplementiertes Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass die Merkmale des gemanagten Codes die Codezugriffsicherheit, die Codeverifizierung, die Validierung nichtfunktionaler Beschränkungen und die Anwendungsbereichs-Isolation umfassen.
  7. Maschinenimplementiertes Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass es umfasst: Herunterladen einer binären Datei zu der Hardware durch die Anwendung, die in der Umgebung für gemanagten Code ausgeführt wird.
  8. Maschinenimplementiertes Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass es umfasst: Zugreifen auf die Hardware-Vorrichtung von der Anwendung, die in der Umgebung für gemanagten Code ausgeführt wird.
  9. Greifbares maschinenlesbares Medium, dadurch gekennzeichnet, dass es die Befehle für wenigstens einen Prozessor umfasst, um das maschinenimplementierte Verfahren nach einem der Ansprüche 1–8 auszuführen.
  10. System, das umfasst: eine Plattform zum Ausführen einer Anwendung in einer Umgebung für gemanagten Code in einem ersten Anwendungsbereich (208, 510); und einen zweiten Anwendungsbereich, der eine Hardware-Vorrichtung abstrahiert, so dass durch die Anwendung, die in der Umgebung für gemanagten Code im ersten Anwendungs bereich ausgeführt wird, über eine generische Schnittstelle auf die Hardware-Vorrichtung zugegriffen werden kann (202, 206, 224, 502, 504, 508, 512)
  11. System nach Anspruch 10, dadurch gekennzeichnet, dass: der erste Anwendungsbereich oder der zweite Anwendungsbereich wenigstens eine Hardware-Schnittstelle enthält, die als eine Anwendungsbereichseigenschaft spezifiziert ist.
  12. System nach Anspruch 11, dadurch gekennzeichnet, dass die wenigstens eine Hardware-Schnittstelle wenigstens einen Speicherbereich, eine Hardware-Unterbrechung oder einen Eingabe-/Ausgabebus umfasst.
  13. System nach Anspruch 10, dadurch gekennzeichnet, dass die Hardware-Vorrichtung eine programmierbare Vorrichtung enthält.
  14. System nach Anspruch 13, dadurch gekennzeichnet, dass die programmierbare Vorrichtung einen digitalen Signalprozessor oder eine Graphikverarbeitungseinheit enthält.
  15. System nach Anspruch 10, dadurch gekennzeichnet, dass: die Plattform die Merkmale des gemanagten Codes für die Anwendung durchsetzt und die Merkmale des gemanagten Codes die Codezugriffsicherheit, die Codeverifizierung, die Validierung nichtfunktionaler Beschränkungen und die Anwendungsbereichs-Isolation umfassen.
DE102009042666A 2008-09-26 2009-09-23 Hardware-Abstraktion in eingebetteten Systemen Pending DE102009042666A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/239,049 2008-09-26
US12/239,049 US8307340B2 (en) 2008-09-26 2008-09-26 Hardware abstraction in embedded systems

Publications (1)

Publication Number Publication Date
DE102009042666A1 true DE102009042666A1 (de) 2010-04-01

Family

ID=41720052

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009042666A Pending DE102009042666A1 (de) 2008-09-26 2009-09-23 Hardware-Abstraktion in eingebetteten Systemen

Country Status (2)

Country Link
US (1) US8307340B2 (de)
DE (1) DE102009042666A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2317431A1 (de) * 2009-10-30 2011-05-04 IBBT vzw System und Verfahren zum Anpassen der Software-Architektur
KR101255696B1 (ko) * 2011-11-04 2013-04-16 홍익대학교 산학협력단 Mof기반 hcml을 이용한 하드웨어 정보의 구조화 방법
US9575722B2 (en) 2013-03-14 2017-02-21 International Business Machines Corporation Software interface for a specialized hardward device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658600B1 (en) * 2000-04-24 2003-12-02 Microsoft Corporation Target control abstraction for debugging embedded systems
US7073059B2 (en) * 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US20030135842A1 (en) 2002-01-16 2003-07-17 Jan-Erik Frey Software development tool for embedded computer systems
US20030229685A1 (en) 2002-06-07 2003-12-11 Jamie Twidale Hardware abstraction interfacing system and method
US7069206B2 (en) * 2003-04-24 2006-06-27 International Business Machines Corporation Method and apparatus for abstraction of physical hardware implementation to logical software drivers
US7613881B2 (en) * 2004-06-08 2009-11-03 Dartdevices Interop Corporation Method and system for configuring and using virtual pointers to access one or more independent address spaces
US20080092149A1 (en) 2006-10-05 2008-04-17 Rowbotham Graham D Modular architecture for a device interface component

Also Published As

Publication number Publication date
US8307340B2 (en) 2012-11-06
US20100083210A1 (en) 2010-04-01

Similar Documents

Publication Publication Date Title
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE60006217T3 (de) Techniken zum gewähren des zugriffs durch eine kontextsperre in einem gerät mit kleinem platzbedarf unter verwendung von einem eingangspunktobjekt
DE112016003949T5 (de) Webbasierte programmierumgebung für eingebettete geräte
DE202009019148U1 (de) Dateisystemzugriff für Web-Anwendungen und native Kodemodule
DE102008021567A1 (de) Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
DE60010433T2 (de) Verfahren zur durchführung von sicherheitvorgaben in einem kleingerät unter verwendung von einer kontextsperre
DE112007001714T5 (de) Virtualisieren von Leistungszählern
DE112010003925T5 (de) Erweiterbare Zugriffssteuerungslisten-Grundstruktur
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE112012004935T5 (de) Netzwerkeinheiten-Konfigurationsverwaltung
DE112006001933B4 (de) Stillegen eines Prozessorbusagenten
DE112017004160T5 (de) Schützen eines Webservers vor einer nicht autorisierten Client-Anwendung
EP2642395A1 (de) Verfahren und Vorrichtung zum Ausführen von Workflow-Skripten
DE102012215770A1 (de) Inhalt-Schutz über Online-Server und Code-Ausführung in einem sicheren Betriebssystem
DE112018000525T5 (de) Systeme und Verfahren für die Authentifizierung von Platform Trust bzw. Plattform-Vertrauen in einerNetzwerkfunktions-Virtualisierungsumgebung
DE112011103428T5 (de) Automatisierte Analyse zusammengesetzter Anwendungen
DE102020124498A1 (de) Vorrichtung und Verfahren zur Durchsetzung von Kontrollfluss-Integrität
DE102021130396A1 (de) Datenzugriffsüberwachung und -steuerung
DE102009060299A1 (de) Das Einführen von Transaktionen, um die Virtualisierung eines physischen Geräte-Controllers zu unterstützen
DE102018207314A1 (de) Software-definierte mikrodienste
DE102009042666A1 (de) Hardware-Abstraktion in eingebetteten Systemen
DE102015208665B4 (de) Verfahren und System zum Implementieren eines sicheren Sperrbildschirms
WO2019242971A1 (de) Recheneinrichtung und betriebsverfahren hierfür
EP4154139B1 (de) Erweiterte integritätsüberwachung eines containerabbildes
EP3745287B1 (de) Schützen einer softwareapplikation

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUS, DE

R081 Change of applicant/patentee

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, REDMOND, US

Free format text: FORMER OWNER: MICROSOFT CORPORATION, REDMOND, WASH., US

Effective date: 20150123

R082 Change of representative

Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE

Effective date: 20150123

R012 Request for examination validly filed