Android引来HAL的真正目的究竟是什么,HAL究竟有什么用

Android引入HAL的真正目的究竟是什么,HAL究竟有什么用
外面满天飞的文档一无例外的都在灌输这样的思想:

Google通过HAL,把驱动放到了User Space中,从而使得设备厂商避免暴露驱动的源码


但是, 真正的设备驱动,肯定最终是需要和设备打交道的,必须处于Linux Kernel上, 根本不可能整个驱动完全运行在User Space上(当然,微内核中是可以的,不过Android上不可以)。 以Camera打比方:

HAL层中有Camera相关的实现, 但是,Linux Kernel中还是存在Camera的Driver。 这样的例子很多,比如Audio,Video, GPS, Sensor等等, 几乎清一色的在HAL层中有实现, 在Linux Kernel中也有Driver的实现, 然后HAL层调用Kernel中的真正Driver。

这样的话, Driver仍然是存在的,那干嘛还搞个HAL呀, HAL真正的目的是什么那?

哪些大虾给小弟释疑一下

谢谢啦~~~~

------解决方案--------------------
看看android给的回复:
Why do we need a user-space HAL?
• Not all components have standardized kernel driver interfaces
• Kernel drivers are GPL which exposes any proprietary IP
• Android has specific requirements for hardware drivers

android这样搞,是想要上层有一个统一的调用方式,这个android自己定死了,雷打不动。
问题是底层linux driver各家肯定也是不一样的,也不好让各个硬件厂商自己再为android专门写一个吧。
这样要让雷打不动(因为已经release了)的android怎么适应下面善变的linux driver呢? 要知道android是开发来适应不同平台不同硬件厂商的,不像iphone。

唯一的解决方法就是加一个适应层, 即hal,这层有vendor来实现,将自己的driver按照android的要求封装一下即可。 问题都解决了。
------解决方案--------------------
个人的理解主要就是统一调度方式 。我觉得LS讲的比较清楚了。