在AOSP项目中,哪里可以找到Android HAL的实际实现源代码?

时间:2019-08-06 17:10:19

标签: android android-source hal

我开始从aosp项目中学习android操作系统内部知识。在阅读了有关android HAL的内容之后,我有兴趣研究了一些与内核驱动程序有关的HAL模块的实际实现。我在android / hardware / interfaces下找到的是某种粘合代码。此粘合代码必须加载实际的HAL模块,该模块可能会打开某些设备并与实际硬件通信。

那么在哪里可以找到与真实硬件通信的HAL的实际实现呢?

我基本上是在看图形堆栈,如果有人可以指出hwcomposer和gralloc的HAL实现,那就太好了。 android模拟器中使用的通用或开源代码。

我从另一个论坛得知,它是由OEM提供的。但是考虑到Android模拟器,我希望在aosp下的某个地方找到它们。至少对于某些通用组件。

考虑到SOC供应商提供了一些HAL,并且同一HAL也有开源版本(假设供应商hwcomposer和drm_hwcomposer)在何处配置,使用哪个?

任何了解HAL代码流的资源链接也将有所帮助。

1 个答案:

答案 0 :(得分:0)

  

那么在哪里可以找到与真实硬件通信的HAL的实际实现呢?

HAL实现必须由供应商/ OEM提供。在这里可以找到源。

对于大多数HAL而言,Android附带了一个虚拟实现,通常仅提供最低限度的标准以避免崩溃,这令人惊讶地很少。我还没有检查所有HAL。您可以在hardware/interfaces/<hal>/<version>/default中找到这些虚拟实现。有时,它们会将实现包装在旧的HAL接口中的hardware/libhardware下。找到真实硬件/内核访问的最佳机会就在那里。但是,这些实现可能已过时,不再使用。

  

考虑到SOC供应商提供了一些HAL,并且同一HAL也有开源版本(假设供应商hwcomposer和drm_hwcomposer)在何处配置,使用哪个?

将要包含在设备中的HAL实现必须在设备清单(例如device/<vendor>/<board>/device.mk)中进行配置,如下所示:

PRODUCT_PACKAGES += hwcomposer.<vendor>
  

任何了解HAL代码流的资源链接也将有所帮助。

https://source.android.com/devices/architecture/hidl上的官方文档是一个很好的资源。

由于Android在Android 8中几乎改变了有关HAL界面的所有内容,因此您可以通过搜索讨论Treble的文章来找到更多信息。