Präzisions-Leiterplattenherstellung, Hochfrequenz-Leiterplatten, mehrschichtige Leiterplatten und Leiterplattenbestückung.
Leiterplatte Blog

Leiterplatte Blog - Spezifische Implementierungsmethoden des IPC von HDI

Leiterplatte Blog

Leiterplatte Blog - Spezifische Implementierungsmethoden des IPC von HDI

Spezifische Implementierungsmethoden des IPC von HDI

2022-11-25
View:283
Author:iPCB

Eine wichtige Funktion des HDI Das Treiber-Framework soll eine stabile und einheitliche Hardware-Schnittstelle für das System bereitstellen, um sicherzustellen, dass Systemdienste ohne zusätzliche Anpassung auf unterschiedlicher Hardware laufen können. HDI (Hardware Device Interfaces) is designed for this purpose.


HDI ist eine abstrakte High-Level-Schnittstelle für Hardwarefunktionen. Nach der Definition von HDI Schnittstelle, verschiedene Peripheriegeräte werden nur unter HDI Kompatibilitätsregeln zur Gewährleistung der Stabilität der Schnittstelle. Die spezifische Treiberinmplementierung muss nicht definiert werden HDI Schnittstelle wiederholt, muss aber nur bei Bedarf implementiert werden, um auf die Systemfunktionen zuzugreifen.


Auf OpenHarmony Systemen unterschiedlicher Größe, HDI verfügt über zwei Bereitstellungsmodi:IPC Modus und Durchlauf Modus.


Auf dem leichten OpenHarmony System, zur Verringerung der Systemleistung, HDI wird als freigegebene Bibliothek im Benutzermodus implementiert, der vom Systemdienst direkt in seinen eigenen Prozess für Funktionsaufruf geladen wird. HDI Implementierung kapselt den spezifischen Benutzerkernel-Interaktionsprozess. Wann auf den Fahrer zugegriffen werden muss, IO Service Request verwenden, um die Nachricht durch Systemaufruf an den Kerneltreiber aufzurufen.

553e610efc891badcf13935d90635085.jpg

Auf dem OpenHarmony-System, HDI wird als unabhängiger Service-Prozess eingesetzt. Der Systemdienst lädt nur die HDI Kunde in seinen eigenen Prozess. Das eigentliche Geschäft läuft in einem unabhängigen Prozess. Der Client interagiert mit dem Server überIPC, Erleichterung der Architekturentkopplung und des Berechtigungsmanagements.


HDI interface Umsetzung

The pass through Modus is a function implementation mode, die ohne Unterstützung anderer Komponenten implementiert werden können, unabhängig von Aufruf oder Umsetzung. Hier konzentrieren wir uns auf die Umsetzung von IPC mode.


HDI-Freigabe

Der HDIIPC Modus basiert auf dem allgemeinen Modell des OpenHarmony System Communication Frameworks. Da der Treiber jedoch häufig Low-Level-Operationen und Multi-System-Migrationsszenarien beinhaltet, ist er in C-Sprache geschrieben. Daher stellt das Treiber-Framework auch die Basiskomponenten des HDI-Dienstes in C-Sprache zur Verfügung, während die C++Implementierung hauptsächlich die Systemkommunikation-Framework-Komponenten verwendet.


HDI Service Publishing wird basierend auf UHDF (User Mode HDF Driver Framework) implementiert. Die Implementierung des allgemeinen Dienstes Publishing ist wie folgt.

1. Einfahrt zum Antrieb

int SampleDriverBindï¼�struct HdfDeviceObject *deviceObjectï¼�HDF_LOGEï¼� deviceObject-》service &testService; HDF_ ERFOLGS;} int SampleDriverInitï¼�struct HdfDeviceObject *deviceObjectï¼�HDF_LOGEï¼� {.moduleVersion.1, .moduleName€œsample_driver€€Œ .Bind.SampleDriverBind


HDF_ INITï¼ g_sampleRiver Entryï¼­

Zuerst müssen Sie einen UHDF-Treiber hinzufügen, um den IoService-Dienst zu veröffentlichen. Der IoService-Gerätedienst ist die HDI-Diensteinheit. Der Implementierungsmodus ist konsistent mit dem KHDF-Laufwerk.

2. Implementierung der Service Response Schnittstelle

In 32_ t SampleService OnRemoteRequestï¼­struct HdfDeviceIoClient *clientï¼­140; int cmdId, struct HdfSBuf *data, struct HdfSBuf *replyï¼­{ switch ï¼­cmdIdï¼­ { case SAMPLE_SERVICE_PING: Rückgabe SampleServiceStubPing, data, replyïïŒ â€¦ Standard: HDF_LOGE＀ *antwort­t­2­Rückgabe Stichprobendienst auf RemoteRequestï¼­


Wenn HDI-Aufruf empfangen wird, wird die Service Response-Schnittstelle "SampleServiceDispatch" aufgerufen.


Das Clientaufrufsobjekt wird im Benutzermodustreiber nicht unterstützt

CmdId ruft das Befehlswort auf, das verwendet wird, um die aufgerufene API zu unterscheiden.Das Serialisierungsobjekt des Datenaufrufs-Eingabeparameters wird imIPC-Aufrufsszenario in der C-Sprache des Paketobjekts gekapselt. Der Eingabeparameter muss vor der Verwendung vom Datenobjekt unter Verwendung der Serialisierungsschnittstelle abgerufen werden.Die Antwort ruft das Parameterobjekt aus, und die an den Aufruf zurückgegebenen Informationen müssen in das serialisierte Objekt geschrieben werden.Wenn der C++Implementierungsclient die folgende Schnittstelle verwenden kann, um das sbuf-Objekt in das Paketobjekt zu konvertieren, kann der Vorgang durchgeführt werden:


3. Konfiguration des UHDF-Antriebs

Plattform ï: host { hostName und €œsample_hostâ€'priority.50; sample_device ï¼šïš device { device { device { policy=2; priority=100; modulname=libsample_driver.z

Parameterbeschreibung:

Host Ein Hostknoten ist ein unabhängiger Prozess. Wenn Sie einen unabhängigen Prozess benötigen, fügen Sie Ihren eigenen Hostknoten hinzu.Policy-Dienstveröffentlichungsrichtlinie, HDI-Dienst ist auf 2.ModulName Treiber Implementierungsbibliothek Name.ServiceName Service Name, bitte halten Sie ihn global einzigartig.Da HDI Service C- und C++-Implementierungen unterschiedlicheIPC-Komponenten und objektorientierte Implementierungen verwenden, Es gibt einige Unterschiede in spezifischen Implementierungen. Um die HDI-Implementierung zu unterstützen, bietet das UHDF-Framework die folgenden grundlegenden Komponenten (nur für die C-Sprache HDI-Implementierung):


SBuf is a tool object that supports both KHDF and UHDF to drive the serialization of IoService messages. Im UHDFIPCKommunikationsszenario, SBuf kann mit dem System konvertierenIPC framework serialization object MessageParcel object (only C++is supported) to achieveIPC Zusammenarbeit zwischen C und C++++.


Häufige APIs sind wie folgt:

struct HdfSBuf; Struktur HdfSbufImpl; struct HdfRemoteService;

AlleIPC Die obigen Schnittstellen haben entsprechende Schreibschnittstellen, die nicht einzeln aufgeführt sind. Bitte beachten Sie die offizielle Website HDI Referenzdokument.