HAL 分界点是Android o , 其实本质的区别就是Framework process 是否与HAL process 运行在同一进程。
为了升级需求,framework 与vendor 各自独立,因此framework 与HAL通信本质采用binder. 如果不采用隔离,framework 与vendor 耦合在一起,这样导致release 时间过长。
Project Treble:
图片.png
从上面两个图可以看中 , framework 与vendor 独立了
Trebl 如果实现,需要做哪些事情:
- New HAL types
- Hardware Interface Definition Language (HIDL)
- New Partitions
- ConfigStore HAL
- Device Tree Overlays
- Vendor NDK
- Vendor Interface Object
- Vendor Test Suite (VTS)
其实现在开发都基本在android o 上面了,因此只需要关心修改的哪些就可以,熟悉基本原理
图片.png
① 是 Treble Project 之前使用的实现架构,使用的是传统 HAL 和旧版 HAL
② 直通模式,passthrough mode。如图所示,Framework 和 HAL 层工作在同一个进程当中,下面的 HAL 是使用 HIDL 封装后的库,是直通式 HAL。这些库文件也可用于 ③ 绑定模式
③ 绑定模式,binderized mode。是直通式 HAL binder 化,变为绑定式 HAL。Framework 和 HAL 层工作在不同的进程,之间通过 Binder 进行 IPC
④ 纯绑定式。相对于 ③ 来说,绑定式 HAL 中并不包含直通式 HAL,因此称为纯绑定式
最后总结:
网友评论