Android_Architecture_HAL--HAL Types

说明:转载自Android官网https://source.android.com/devices/architecture/hal,方便国内查看。


HAL Types

In Android 8.0 and higher, the lower-level layers are re-written to adopt a new, more modular architecture. Devices running Android 8.0 and higher must support HALs written in HIDL, with a few exceptions listed below. These HALs can be binderized or passthrough. In Android R, HALs written in AIDL are also supported. All AIDL HALs are binderized.

  • Binderized HALs. HALs expressed in HAL interface definition language (HIDL) or Android interface definition language (AIDL). These HALs replace both conventional and legacy HALs used in earlier versions of Android. In a Binderized HAL, the Android framework and HALs communicate with each other using binder inter-process communication (IPC) calls. All devices launching with Android 8.0 or later must support binderized HALs only.
  • Passthrough HALs. A HIDL-wrapped conventional or legacy HAL. These HALs wrap existing HALs and can serve the HAL in binderized and same-process (passthrough) modes. Devices upgrading to Android 8.0 can use passthrough HALs.

HAL mode requirements


Device Passthrough Binderized
Launch with Android 8.0 HALs listed in Passthrough HALs must be passthrough. All other HALs are binderized (including HALs that are vendor extensions).
Upgrade to Android 8.0 HALs listed in Passthrough HALs must be passthrough. HALs listed in Binderized HALs must be binderized.
All other HALs provided by the vendor image can be in passthrough OR binderized mode. In a fully Treble-compliant device, all of these must be binderized. All other HALs provided by the vendor image can be in passthrough OR binderized mode. In a fully Treble-compliant device, all of these must be binderized.

Binderized HALs


Android requires the following HALS to to be binderized on all Android devices regardless of whether they are launch devices or upgrade devices:

  • [email protected]. Replaces fingerprintd which is no longer in Android 8.0.
  • [email protected]. New in Android 8.0.
  • [email protected]. The original interface provided by this HAL could not be shimmed and was changed. Because of this, dumpstate_board must be re-implemented on a given device (this is an optional HAL).
  • [email protected]. Required to be binderized in Android 8.0 so file descriptors don’t have to be shared between trusted and untrusted processes.
  • [email protected]. Replaces the interface provided by rild which lives in its own process.
  • [email protected]. New in Android 8.0.
  • [email protected]. New in Android 8.0, replaces the legacy Wi-Fi HAL library that was loaded into system_server.
  • [email protected]. A HIDL interface over the existing wpa_supplicant process.

NOTE: Android provides the following HIDL interfaces which will always be in binderized mode: android.frameworks.*, android.system.* , and android.hidl.* (except for [email protected] as described below).

Passthrough HALs


Android requires the following HALs to be in passthrough mode on all Android devices regardless of whether they are launch devices or upgrade devices:

All HALs not listed above must be binderized for launch devices.

Same-Process HALs


Same-Process HALs (SP-HALs) always open in the same process in which they are used. They include all HALs not expressed in HIDL as well as some that are not binderized. Membership in the SP-HAL set is controlled only by Google, with no exceptions.

SP-HALs include the following:

Conventional & legacy HALs


Conventional HALs (deprecated in Android 8.0) are interfaces that conform to a specific named and versioned application binary interface (ABI). The bulk of Android system interfaces (camera, audio, sensors, etc.) are in the form of conventional HALs, which are defined under hardware/libhardware/include/hardware.

Legacy HALs (also deprecated in Android 8.0) are interfaces that predate conventional HALs. A few important subsystems (Wi-Fi, Radio Interface Layer, and Bluetooth) are legacy HALs. While there’s no uniform or standardized way to describe a legacy HAL, anything predating Android 8.0 that is not a conventional HAL is a legacy HAL. Parts of some legacy HALs are contained in libhardware_legacy, while other parts are interspersed throughout the codebase.

发布了60 篇原创文章 · 获赞 27 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xiaosaerjt/article/details/104533696
HAL