Hassas PCB İmalatı, Yüksek Frekanslı PCB, Yüksek Hızlı PCB, Standart PCB, Çok Katmanlı PCB ve PCB Montajı.
PCB Blogu

PCB Blogu - HDI'nin IPC'nin özel uygulama metodları

PCB Blogu

PCB Blogu - HDI'nin IPC'nin özel uygulama metodları

HDI'nin IPC'nin özel uygulama metodları

2022-11-25
View:134
Author:iPCB

Önemli bir fonksiyon HDI sürücü çerçevesi sistem için stabil ve birleştirilmiş bir donanım arayüzünü sağlamaktır., sistem hizmetlerinin daha fazla uygulaması olmadan farklı donanımda çalışmasını sağlamak için. HDI (Hardware Device Interfaces) is designed for this purpose.


HDI donanım fonksiyonları için yüksek seviye abstrakt arayüzü. Definisyondan sonra HDI arayüz, çeşitli periferal sadece altında değiştirilecek HDI Arayüzünün stabilliğini sağlamak için uyumlu kurallar. Özellikle sürücü uygulaması HDI arayüzü tekrardan, sistem fonksiyonlarına ulaşmak için sadece talep için uygulanmak gerekiyor..


OpenHarmony sistemlerinde farklı büyüklükler, HDI iki yerleştirme modu var:IPC mod ve moddan geç.


Hafif OpenHarmony sisteminde, sistem performans yükünü azaltmak için, HDI kullanıcı modu paylaşılan kütüphane olarak uygulandırılır, sistem hizmeti tarafından kendi arama sürecine doğrudan yükleniyor.. HDI uygulama özel kullanıcı nükleer etkileşim sürecini kapsulluyor. Sürücü erişilmesi gerektiğinde, Sistem araması üzerinden mesajı kernel sürücüye çağırmak için IO Hizmeti İstemi kullanın.

553e610efc891badcf13935d90635085.jpg

OpenHarmony sisteminde, HDI bağımsız bir hizmet süreci olarak. Sistem hizmeti sadece yüklüyor HDI müşteri kendi süreçte. Gerçek iş bağımsız bir süreç içinde çalışıyor.. Müşteri sunucusunla etkileşirIPC, Yapısal ayrılma ve izni yönetimi kolaylaştırma.


HDI interface uygulama

The pass through mod is a function implementation mode, diğer komponentlerin desteği olmadan, arama veya uygulama dışında. İşte burada çalışmalarına odaklanacağız IPC mode.


HDI serbest bırakma

HDIIPC modu OpenHarmony sistemi iletişim çerçevesinin genel modeli üzerinde tabanlı. Ancak sürücü sık sık düşük seviye operasyonları ve çoklu sistem göç senaryosunu içeren için C dilinde yazılır. Bu yüzden sürücü çerçevesi de C dilinde uygulanan HDI hizmetinin temel komponentlerini sağlar ve C++uygulaması genellikle sistem iletişim çerçevesi komponentlerini kullanır.


HDI hizmet yayınlaması UHDF (kullanıcı modi HDF sürücü çerçevesi) üzerinde uygulandı. Genel hizmet yayınlama uygulaması böyle.

1. Sürücü giriş

Çeviri: deviceObject-〘service = &testService; HDF_SUCCESS;} ; SampleDriverInit ï, sıra sıra sıra sıradan HdfDeviceObject *deviceObject* 137de; sıra sıra sıra sıra sıra sıra 137de; dönüştürücü sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra SampleDriverDriverRelease tür sürücü HdfDeviceObject* 137de; sıra; dönüştür; ve sıra; dönüştür; ve sıra; dönüştür; ve sıra; dönüştürücü; ve sıra; ve sıra; dönüştürücü; ve sıra; ve sıra; ve sıra; dönüştür.Struct HdfDriverEntry g_ sampleDriverEntry = Bind = SampleDriverBind ï¼¼¼¼.Init = SampleDriverInit ï¼¼¼¼.Release = SampleDriverRelease ï¼¼¼¼¼};


HDF_ INIT ï¼¥g_sampleDriverEntry ï¼±137;;

Önce, IoService servisini yayınlamak için UHDF sürücüsü eklemelisin. IoService aygıt hizmeti HDI hizmeti. İşletim modusu KHDF sürücüyle uyumlu.

2. Hızmet cevap arayüzünü uygulayın

Örnek ServisOnRemoteRequest Bu durumda sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra verildi. sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıra sıpleServiceDispatchï¼ struct HdfDeviceIoClient *client ïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïï Örnek ServiceOnRemoteRequest


HDI çağrısı alındığında, servis cevap arayüzü "SampleServiceDispatch" çağırılacak.


Müşteri çağırıcı nesnesi kullanıcı modu sürücüsünde desteklenmiyor

CmdId, API adını ayırmak için kullanılan komut kelimesini arar.The data call parameter serialization object is encapsulated in the C language of the parcel object in theIPC arama senaryosu. İçeri parametri kullanmadan önce serializasyon arayüzünü kullanarak veri nesnesinden alınmalıdır. Cevap parametre nesnesini çağırır, ve arama geri döndüğü bilgi serialize nesne yazılması gerekiyor. Eğer C++uygulama müşterisi, sbuf nesnesini parça nesne dönüştürmek için bu arayüzü kullanabilir, operasyon gerçekleştirilebilir:


3. UHDF sürücü yapılandırması

platforma :: hostName { hostName = “sample_host ”; priority = 50; sample_device :: device { device0 :: deviceNode { policy = 2; priority = 100; modulName = “libsample_driver.z.so ”; serviceName = “sample_driver_service ”; } }}

Parametre tanımlaması:

hosta düğümü bağımsız bir süreç. Eğer bağımsız bir süreç ihtiyacınız olursa, kendi qonaqbay düğümünüzü.Politik hizmeti yayımlama politikanızı ekleyin, HDI hizmeti 2.ModülName.ServiceName hizmeti adına ayarlandı. Lütfen dünyaya eşsiz tutun. Çünkü HDI hizmeti C ve C++uygulamaları farklıIPC komponentleri ve nesne yönlendirilen uygula Özel uygulamalarda bazı farklılıklar var. HDI uygulamasını desteklemek için, UHDF çerçevesi aşağıdaki temel komponentler sağlar (sadece C dili HDI uygulaması için):


SBuf is a tool object that supports both KHDF and UHDF to drive the serialization of IoService messages. UHDF'deIPCiletişim senaryosu, SBuf sistemle dönüştürebilirIPC framework serialization object MessageParcel object (only C++is supported) to achieveIPC C ve C++ arasında++.


Ortak APIler böyle:

struct HdfSBuf; struct HdfSbufImpl; struct HdfRemoteService;

Bütün...IPC Arayüzlerin üstünde uyumlu yazma arayüzleri var, birbirinden. Lütfen resmi web sitesine verin HDI referans belgesi.