Fabricant et Assemblage des cartes électroniques ultra-précis, PCB haute-fréquence, PCB haute-vitesse, et PCB standard ou PCB multi-couches.
On fournit un service PCB&PCBA personnalisé et très fiable pour tout vos projets.
Blogue PCB

Blogue PCB - Méthodes de mise en œuvre spécifiques capacités HDI IPC

Blogue PCB

Blogue PCB - Méthodes de mise en œuvre spécifiques capacités HDI IPC

Méthodes de mise en œuvre spécifiques capacités HDI IPC

2022-11-25
View:157
Author:iPCB

Indice de haute densité Driver Framework est conçu pour fournir une Interface matérielle stable et unifiée au système, Pour s'assurer que les services système peuvent fonctionner sur différents matériels sans ajustement supplémentaire. Indice de haute densité (Hardware Device Interfaces) is designed for this purpose.


Indice de haute densité Est une interface abstraite avancée pour les fonctions matérielles. Après la définition Indice de haute densité interface, Divers périphériques ne peuvent être utilisés que dans Indice de haute densité Règles de compatibilité pour assurer la stabilité de l'interface. Implémentations de pilotes spécifiques ne nécessitent pas de définition Indice de haute densité Interface répétée, Mais il suffit de le mettre en œuvre lorsque nécessaire pour accéder aux fonctions du système.


Systèmes openharmony de différentes tailles, Indice de haute densité Il existe deux Modes de déploiement:Comité de contrôle industriel Mode et mode Pass - through.


Sur un système openharmony léger, Pour réduire la charge de performance du système, Indice de haute densité Implémentation en tant que bibliothèque partagée en mode utilisateur, Il est chargé directement par le service système dans son propre processus pour les appels de fonction. Indice de haute densité L'implémentation encapsule un processus d'interaction du noyau utilisateur spécifique. Lorsque l'accès aux drivers est nécessaire, Appel d'un message au pilote du noyau via un appel système à l'aide d'une demande de service io.

553e610efc891badcf13935d90635085.jpg

À propos du système openharmony, Indice de haute densité Déploiement en tant que processus de service indépendant. Services système chargement uniquement Indice de haute densité Client à son propre processus. L'entreprise réelle fonctionne dans un processus indépendant. Le client interagit avec le serveur par:Comité de contrôle industriel, Faciliter le découplage architectural et la gestion des droits.


Indice de haute densité interface Mise en œuvre

The pass through mode is a function implementation mode, Ceci peut être réalisé sans le support d'autres composants, Indépendamment de l'appel ou de la mise en œuvre. Ici, nous nous concentrerons sur Comité de contrôle industriel mode.


Indice de haute densité publié

Le modeComité de contrôle industriel Indice de haute densité est basé sur le modèle commun du Framework de communication système openharmony. Cependant, comme le pilote implique souvent des opérations de bas niveau et des scénarios de migration Multi - systèmes, il est écrit en langage C. Ainsi, le driver Framework fournit également les composants de base des services Indice de haute densité implémentés en langage C, tandis que les implémentations C + + utilisent principalement les composants du Framework de communication système.


La version de service Indice de haute densité est basée sur uhdf (User Mode HDF Driver Framework). La publication de service universel est implémentée comme suit.

1. Entrée de conducteur

Int sampledriverbindï¼ struct hdfdeviceobject * deviceobjectï¼ {HDF = logeï¼; â sampledriverbindenterï¼; structure statique ideviceioservice testservice = {.Dispatch = sampleservicedispatch, / / service Callback interface}; Deviceobject - ã service = & testservice; Retour à HDF - Success;} Int sampledriverinitï¼ structure hdfdeviceobject * deviceobjectï¼ {HDF - logeï¼; â sampledriverinitï¼; retourne HDF - Success;} void sampledriverreleaseï¼ {. Moduleversion = 1ï¼. Modulename = âsample = driverâï¼. BIND = sampledriverbindï. Init = sampledriverinitï. Release = sampledriverreleaseï};


HDF - initï¼g - sampledriverentryï¼;

Tout d'abord, vous devez ajouter un pilote uhdf pour publier le service ioservice. Ioservice device service est une entité de service Indice de haute densité. La mise en œuvre est cohérente avec khdf Drive.

2. Implémenter une interface de réponse de service

Int32 - t sampleserviceonremoterequestï¼ structure hdfdeviceioclient * client ï¼ int cmdidï¼ structure hdfsbuf * Données ï¼ structure hdfsbuf * Réponse ï¼ {commutateur ï¼ cmdidï¼} {case Sample - service - pingï¼ return sampleservicestubpingï¼ client ¼ données ¼ réponse ¼; défaut ¼ HDF - logeï¼ - sampleservicedispatchï¼ * reply ¼ {retour sampleserviceonremoterequestï¼ client ¼ cmdidï¼ données ¼ reply ¼}


Lorsqu'un appel Indice de haute densité est reçu, l'interface de réponse de service "sampleservicedispatch" est appelée.


Le pilote en mode utilisateur ne prend pas en charge l'objet client Caller

Cmdid appelle le mot de commande qui distingue l'API appelée. L'objet de sérialisation des paramètres d'entrée de l'appel de données est encapsulé dans le langage C de l'objet package dans un scénario d'appelComité de contrôle industriel. Avant de pouvoir l'utiliser, il est nécessaire d'utiliser l'interface de sérialisation pour obtenir les paramètres d'entrée de l'objet data. Répondre appelle l'objet Parameter et les informations retournées à l'appel doivent être écrites dans l'objet sérialisé. Cette opération peut être effectuée si le client d'implémentation C + + peut convertir l'objet sbuf en objet package en utilisant l'interface suivante:


3. Configuration du lecteur uhdf

Platform ¼¼ hostname = âsample - hostâ; priority = 50; Sample - device¼ Device {device¼i¼ Device - node {Policy = 2; priority = 100; module - name = âlibsample - driver.z.soâ; service - name = ¨ Sample - driver - service}

Description des paramètres:

Hôte le nœud hôte est un processus indépendant. Si vous avez besoin d'un processus indépendant, ajoutez votre propre nœud hôte. Politique de publication du service, le service Indice de haute densité est défini sur 2. Nom de la Bibliothèque d'implémentation du pilote modulename. Nom du Service ServiceName, conservez - le globalement unique. Les implémentations Indice de haute densité service C et C + + utilisent différents composantsComité de contrôle industriel et implémentations orientées objet, Il existe quelques différences dans les implémentations spécifiques. Pour prendre en charge les implémentations Indice de haute densité, le Framework uhdf fournit les composants de base suivants (uniquement pour les implémentations Indice de haute densité en langage c):


SBuf is a tool object that supports both KHDF and UHDF to drive the serialization of IoService messages. En uhdfComité de contrôle industrielScènes de communication, Sbuf peut être converti avec le systèmeComité de contrôle industriel framework serialization object MessageParcel object (only C++is supported) to achieveComité de contrôle industriel Interfonctionnement entre C et C + +++.


Les API communes sont les suivantes:

Structure hdfsbuf; Structure hdfsbufimpl; Structure hdfremoteservice;

Tous lesComité de contrôle industriel Les interfaces ci - dessus ont toutes des interfaces d'écriture correspondantes, Non listé un par un. Veuillez consulter le site officiel Indice de haute densité Documents de référence.