Android O 学习(一)之HAL类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/armwind/article/details/78434905

备注:这里已Camera模块为例,如问题,欢迎讨论。
  以往的hal和framwork的代码紧密联系起来的,为此google为了framework
升级的方便在Android 8.0 上对 Android 操作系统底层进行了重新架构。新的架构已经了解一部分,但仍需要不断学习,加上最近需要将一些项目升级到Android O,所以决定该好好看看了,阅读代码过程中发现存在一种后缀为.hal的文件,该文件改变了我的一些久的思想。该文件具体的作用和语法后续博文再介绍。

目前HAL分为下面4类,具体可以参考下面链接提供,那里写的最详细,这里只记录下我自己的理解。

  • 1.绑定式 HAL:这个完全由hidl语言描述,由hidl-gen工具自动生成的hal。此模式下framwework和hal通过进程间binder通信。(camera相关的是/dev/hwbinder节点)。
    Android 8.0 或后续版本的设备都必须只支持绑定式 HAL。
  • 2.直通式HAL:这个是由hidl 封装的hal,具体是在hidl封装处dlopen传统的hal(目前8.0上Camera是这种形式)大概形如如下面这个。下面右侧三个子部分都是在同一个进程中。封装层dlopen传统的hal,这样就不用更改太多代码。

  • 3.Same-Process HAL:如它名字所示,是在使用它们的进程中打开的HAL,同一进程这里就不需要binder通信了。

  • 4.传统 HAL 和旧版 HAL:目前我的理解是实现HAL_MODULE_INFO_SYM的hal,google给出下面的解释.

    传统 HAL(在 Android 8.0 中已弃用)是指与具有特定名称及版本号的应用二进制接口 (ABI) 标准相符的接口。大部分 Android 系统接口(相机、音频和传感器等)都采用传统 HAL 形式(已在 hardware/libhardware/include/hardware 下进行定义)。

同一进程

参考文章:https://source.android.com/devices/architecture/hal-types

猜你喜欢

转载自blog.csdn.net/armwind/article/details/78434905