정밀 PCB 제조, 고주파 PCB, 고속 PCB, 표준 PCB, 다중 계층 PCB 및 PCB 조립.
가장 신뢰할 수 있는 PCB 및 PCBA 맞춤형 서비스 팩토리
PCB 블로그

PCB 블로그 - HDI IPC의 구체적인 구현 방법

PCB 블로그

PCB 블로그 - HDI IPC의 구체적인 구현 방법

HDI IPC의 구체적인 구현 방법

2022-11-25
View:337
Author:iPCB

HDI 드라이버 프레임워크의 중요한 기능 중 하나는 시스템에 안정적이고 통일된 하드웨어 인터페이스를 제공하여 시스템 서비스가 별도의 적응 없이 다른 하드웨어에서 실행될 수 있도록 하는 것이다.HDI(하드웨어 장치 인터페이스)는 이러한 목적으로 설계되었습니다.


HDI는 하드웨어 기능을 위한 고급 추상 인터페이스입니다.HDI 인터페이스가 정의되면 다양한 주변 장치는 HDI 호환성 규칙에 따라 인터페이스의 안정성을 보장하기 위해 변경됩니다.구체적인 드라이버 구현은 HDI 인터페이스를 다시 정의할 필요 없이 필요에 따라 시스템 기능에 액세스할 수 있습니다.


다양한 규모의 OpenHarmony 시스템에서 HDI는 IPC 모드와 패스스루 모드의 두 가지 배포 모드를 가지고 있습니다.


경량급 OpenHarmony 시스템에서는 시스템 성능 부하를 줄이기 위해 HDI가 사용자 모드 공유 라이브러리로 구현되어 시스템 서비스가 직접 자신의 프로세스에 로드하여 함수 호출을 진행한다.HDI는 특정 사용자 커널 상호 작용 프로세스를 패키지화합니다.드라이버에 액세스해야 할 경우 IO Service Request를 사용하여 시스템 호출을 통해 메시지를 커널 드라이버로 호출합니다.

553e610 efc891 배지 13935d90635085.jpg

OpenHarmony 시스템에서 HDI는 별도의 서비스 프로세스로 배포됩니다.시스템 서비스는 HDI 클라이언트만 자체 프로세스에 로드합니다.실제 업무는 하나의 독립된 과정 속에서 운행된다.클라이언트는 IPC를 통해 서버와 상호 작용하여 아키텍처 디커플링 및 권한 관리를 용이하게 합니다.


HDI 인터페이스 구현

패스스루 모드는 호출이나 구현에 관계없이 다른 구성 요소의 지원 없이 구현할 수 있는 함수 구현 모드입니다.여기서 IPC 모델의 구현에 대해 살펴보겠습니다.


HDI 출시

HDI IPC 모델은 OpenHarmony 시스템 통신 프레임워크의 일반 모델을 기반으로 합니다.그러나 드라이버는 종종 저급 운영 및 다중 시스템 마이그레이션 시나리오를 다루기 때문에 C 언어로 작성됩니다.따라서 드라이버 프레임워크는 시스템 통신 프레임워크 구성 요소를 주로 사용하는 C 언어로 구현된 HDI 서비스의 기본 구성 요소도 제공합니다.


HDI 서비스 출시는 UHDF(사용자 모드 HDF 드라이버 프레임워크)를 기반으로 한다.일반 서비스 출시는 다음과 같습니다.

1. 차로 입구


HDF_초기화 g_sampleDriverEntry¼;

먼저 UHDF 드라이버를 추가하여 IoService 서비스를 게시해야 합니다.IoService 장치 서비스는 HDI 서비스 회사입니다.모드를 KHDF 드라이브와 일치시킵니다.

2. 서비스 응답 인터페이스 구현

int32_t SampleServiceOnRemoteRequestï¼struct HdfDeviceIoClient*clientG case SAMPLE_SERVICE_PINGï¼ return SampleServiceStubPingï¼ 클라이언트 ï¼ 데이터*replyï«return SampleServiceOnRemoteRequestï클라이언트 ï1/4cmdIdï1/4 dataï1/4 replyí1/4;


HDI 호출이 수신되면 서비스 응답 인터페이스'SampleServiceDispatch'가 호출됩니다.


클라이언트 호출기 객체는 사용자 모드 드라이버에서 지원되지 않습니다.

CmdId 호출 명령어는 호출된 API를 구분하는 데 사용되며, 데이터 호출 입력 매개변수 시리얼화 객체는 IPC 호출 장면의 패키지 객체의 C 언어로 캡슐화됩니다.사용하기 전에 시리얼화된 인터페이스를 사용하여 데이터 객체에서 입력 매개변수를 가져와야 합니다.호출 매개 변수 객체에 응답하고 호출에 반환된 정보를 시리얼화된 객체에 써야 합니다.C++ 구현 클라이언트가 다음 인터페이스를 사용하여 sbuf 객체를 패키지 객체로 변환할 수 있는 경우 이 작업을 수행할 수 있습니다.


3. UHDF 드라이브 구성

platformï1/4ï1/4 host{hostName=–sample_host–; 우선순위 = 50; sample_deviceï1/4 device{device0ï1/4 deviceNode policy=2; 우선순위 = 50; moduleNamevice=★ service} service_somperivervice=10;

매개변수 설명:

호스트 호스트 노드는 별도의 프로세스입니다.독립적인 프로세스가 필요한 경우 자체 호스트 노드를 추가합니다.정책 서비스는 정책을 게시합니다. HDI 서비스는 2.ModuleName 드라이버로 설정되어 라이브러리 이름.ServiceName 서비스 이름을 구현합니다. 전역적으로 고유하게 유지하십시오.HDI 서비스 C와 C++는 서로 다른 IPC 구성 요소와 객체를 사용하는 구현을 구현하기 때문에 특정 구현에서 약간의 차이가 있습니다.UHDF 프레임워크는 HDI 구현을 지원하기 위해 다음과 같은 기본 구성 요소를 제공합니다(C 언어 HDI 구현에만 해당).


SBuf는 KHDF와 UHDF를 모두 지원하는 도구 객체로, IoService 메시지의 직렬화를 제어합니다.UHDF IPC 통신 시나리오에서 SBuf는 시스템 IPC 프레임워크 시리얼화 객체인 MessageParcel 객체(C++만 지원)와 변환하여 C와 C++ 간의 IPC 상호 연결을 실현할 수 있습니다.


일반적인 API는 다음과 같습니다.

구조 HdfSBuf;구조 HdfSbufImpl;구조체 HdfRemoteService;

위에 나열된 모든 IPC 인터페이스에는 해당 쓰기 인터페이스가 있습니다.인류발전창의 공식사이트 참고문건을 참조하십시오.