我最近开始在Android原生框架上进行一些开发工作,在浏览Android文档后,我仍然无法清楚地理解HIDL的概念。如果问题听起来很愚蠢,我很抱歉,但我刚刚开始学习这个。
在www.example.com上的Hidl-c++文档中source.android,存在this图像。
- HIDL到底是什么?因为它的名字是HAL接口定义语言,所以我很困惑它是定义HAL的一种方法还是框架和HAL之间的一个新层?
1.如果HIDL只是一种定义HAL的方式,并且是从Android 8.0引入的,那么HAL在8.0之前的Android版本中是如何定义的?
1.根据文档,在binderized HAL中,两个独立的进程通过类似客户端-服务器模型的binder进行通信。这是否意味着,框架端的进程是客户端,硬件端的进程是服务器,服务器进程实际上与硬件进行通信,并通过/dev/hwbinder向客户端提供必要的结果?这种理解是否正确?
1.在绑定化HAL的情况下,服务器进程是否总是在后台运行,或者它是否只在客户端进程请求时才产生?
1.供应商是否为他们的硬件定义了特定的HAL接口来访问它?分离供应商分区如何产生差异?
我在某个地方找到了这个图像。这是正确的表示吗?x1c 0d1x
1条答案
按热度按时间ux6nzvsh1#
HAL用C头定义接口,供应商需要用C/C实现它,并将其编译为库,然后框架可以加载它。
HIDL使用HAL文件定义接口,可以编译为C/C/Java。然后可以使用C/C++实现并作为服务器运行。也可以从Java客户端使用不同的进程调用。
HIDL是一种定义接口的现代方法,可以轻松测试和版本化。