赞
踩
HIDL, 全称为Hardware Interface Definition Language,是用于指定 HAL 与其用户之间接口的一个接口描述语言,它允许将指定的类型与函数调用收集到接口(Interface)和包(Package)中。
HIDL 在 Android Project Treble 中被起草,在 Android 8.0 (O版本) 中被全面使用,其诞生目的是使 Android 可以在不重新编译 HAL 的情况下对 Framework 进行 OTA 升级。
HIDL 用于进程间通信(Inter-process Communication,IPC). 将传统的 HAL 封装到 HIDL 接口中,这个接口为 HAL 提供了 binderized 以及 Passthrough 两种通信模式实现。
在Android O版本升级中,使用 HIDL 描述的 HAL 描述文件替换旧的用头文件描述的 HAL 文件的过程称为HAL 的 binder 化(binderization)。已发布的 HIDL package包位于 Android 代码库的hardware/interfaces/或vendor/目录下。使用 HDIL 描述的 HAL 接口存放在这些目录下的.hal文件中。
HIDL的设计目标是,Framework (对应Android System镜像) 可以在无需重新构建 HAL 的情况下进行替换。HAL 将由供应商或 SOC 制造商构建,放置在设备的 /vendor 分区中。由于HAL与Framework 之间的接口已经按照HIDL统一的规范整理,并按照版本发布,这样一来,framework就可以在其自己的分区中通过 OTA 进行替换,而无需重新编译 HAL。
HIDL 设计在以下方面之间保持了平衡:
(Binderizing passthrough HALs)
You can binderize HAL implementations that support passthrough mode. Given a HAL interface a.b.c.d@M.N::IFoo, two packages are created:
a.b.c.d@M.N::IFoo-impl
Contains the implementation of the HAL and exposes function IFoo* HIDL_FETCH_IFoo(const char* name)
. On legacy devices, this package is dlopened and the implementation is instantiated using HIDL_FETCH_IFoo
. You can generate the base code using hidl-gen and -Lc+±impl and -Landroidbp-impl.
a.b.c.d@M.N::IFoo-service
.
Opens the passthrough HAL and registers itself as a binderized service, enabling the same HAL implementation to be used as both passthrough and binderized.
见链接:
https://blog.csdn.net/qidi_huang/article/details/76572404
https://www.jianshu.com/p/ca6823b897b5
https://blog.csdn.net/qq_16775897/article/details/78307276
HIDL 与 Android Vendor Test Suite (VTS) 测试有紧密的联系。
https://blog.csdn.net/qidi_huang/article/details/76653677
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。