0

我想知道为什么需要 HAL?我是android内部的新手。

以下是我的理解。

步骤1:

Android 服务通过 JNI 与 .cpp 文件进行交互。服务为应用层公开了 Binder 接口。

第2步:

cpp 文件使用 libhardware [ hw_get_module() ] 加载 HAL 模块。[即:dlopen]。

第 3 步:[HAL 模块]

HAL Module 直接与硬件驱动交互。

注意:如果我错了,请纠正我?

我可以理解流程。但为什么两者之间需要 HAL 模块?

除了动态加载 HAL 之外,还有什么其他优势?

4

3 回答 3

2

HAL 的主要优点是它抽象了不同供应商的不同实现,并为上层提供了一致的 API。

于 2014-05-13T08:30:30.563 回答
0

不同的供应商可能有不同的硬件配置。它们可能以不同的方式支持相同的功能。HAL 由硬件供应商实现,Android 不知道他们的内部结构。因此,HAL 是特定于硬件的实现(针对底层硬件进行了优化和定制),并提供了一个通用接口来使用。

于 2014-08-12T10:03:51.993 回答
0
  • Android HAL [硬件抽象层](抽象地)弥合了硬件和软件之间的差距。
  • Android 应用程序/框架通过 Java API 而不是系统调用与底层硬件通信。
  • 但是 Linux 只能处理来自应用程序的系统调用。
  • 因此,我们需要在 android 框架和 linux 系统之间建立一个粘合层。
  • Android HAL 允许 Android 应用程序/框架与特定于硬件的设备驱动程序进行通信。
  • 对于 Android 应用程序,HAL 提供 API,服务可以通过这些 API 向设备发出请求。
  • 而 HAL 使用下层 Linux 系统提供的功能来服务于来自 android 框架的请求。
  • HAL 是 ac/c++ 层,是供应商特定的实现。

资源

于 2019-04-09T13:10:10.067 回答