【问题标题】:Where can I find source code of actual implementation of Android HALs in AOSP project?我在哪里可以找到 AOSP 项目中实际实现 Android HAL 的源代码?
【发布时间】:2019-09-05 13:49:33
【问题描述】:

我开始从 aosp 项目中学习一些 android os 内部结构。在阅读了有关 android HAL 的信息后,我有兴趣研究与内核驱动程序对话的 HAL 模块的一些实际实现。我在 android/hardware/interfaces 下找到的是某种胶水代码。此胶水代码必须加载实际的 HAL 模块,该模块可能会打开某些设备并与真实硬件进行通信。

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

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

我从另一个论坛了解到,它由 OEM 提供。但考虑到 android 模拟器,我希望能在 aosp 的某个地方找到它们。至少对于一些通用组件而言。

考虑到 SOC 供应商提供了一些 HAL,并且还有相同 HAL 的开源版本(比如说供应商 hwcomposer 和 drm_hwcomposer),这是在哪里配置的,使用哪一个?

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

【问题讨论】:

    标签: android android-source hal


    【解决方案1】:

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

    HAL 实施必须由供应商/OEM 提供。您可以在此处找到源代码。

    对于大多数 HAL,Android 都附带了一个虚拟实现,该实现通常只提供最低限度的功能以避免系统崩溃,这非常少。不过,我还没有检查所有的 HAL。您可以在hardware/interfaces/<hal>/<version>/default 中找到这些虚拟实现。有时他们将实现包装在hardware/libhardware 下的遗留 HAL 接口中。找到真正的硬件/内核访问的最佳机会就在那里。但是,这些实现可能已经过时并且不再使用了。

    考虑到 SOC 供应商提供了一些 HAL,并且还有相同 HAL 的开源版本(比如说供应商 hwcomposer 和 drm_hwcomposer),这是在哪里配置的,使用哪一个?

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

    PRODUCT_PACKAGES += hwcomposer.<vendor>
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多