HAL和HIDL的区别

问题描述 投票:0回答:1

我最近开始使用 android 原生框架进行一些开发工作,在浏览了 Android 文档之后,我仍然无法清楚地理解 HIDL 的概念。 如果问题听起来很愚蠢,我很抱歉,但我才刚刚开始学习这个。

在 source.android 上的 Hidl-c++ 文档中,this 图像存在。

  1. HIDL到底是什么?由于它的名字是 HAL Interface Definition Language,我很困惑它只是一种定义 HAL 的方法还是框架和 HAL 之间的新层?
  2. 如果说HIDL只是一种定义HAL的方式,是从android 8.0引入的,那么在8.0之前的android版本中HAL是如何定义的?
  3. 根据文档,在绑定式 HAL 中,两个独立的进程通过类似客户端-服务器模型的绑定器进行通信。这是否意味着,框架端的进程是客户端,硬件端的进程是服务器,服务器进程实际上与硬件通信并通过 /dev/hwbinder 向客户端提供必要的结果?这个理解对吗?
  4. 在绑定化 HAL 的情况下,服务器进程是始终在后台运行还是仅在客户端进程请求时才生成?
  5. 供应商是否定义了特定于其硬件的 HAL 接口来访问它?分离供应商分区有何不同?

我在某处找到了这张图片。这是正确的表示吗?

android android-source hal hidl
1个回答
0
投票

HAL用C头文件定义接口,厂商需要用C/C++实现,编译成库,框架才能加载。

HIDL定义了与HAL文件的接口,可以编译成C/C++/Java。然后它可以用 C/C++ 实现并作为服务器运行。它也可以从具有不同进程的 Java 客户端调用。

HIDL 是一种定义接口的现代方法,可以轻松测试和控制版本。

© www.soinside.com 2019 - 2024. All rights reserved.