-
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.