林景行沉吟几秒,缓缓开口,语气沉稳笃定:“其实这点我们可以直接写进合作协议,卡死红线——刚才卢总其实也提到过,有些边界绝对不能碰,这就是防碎片化的核心。”
“我们官方统一HAL接口标准,就像国家统一规定所有家用插座都是五孔220V国标。厂商可以改内核实现,可以自己写驱动代码,但我们划定的接口标准半分不能动,必须严格遵守官方规范。
“同时,所有对内核、驱动的修改,必须按GPL协议公开源码,提交官方技术委员会审核,通过后合并进官方主干,全行业共享。”
“接口统一了,驱动开源了,内核主干就永远只有一条。厂商再怎么改底层实现,都绕不开这套标准接口。就像你家电器插头都是国标,随便插哪个插座都能用。”
他顿了顿,换了个更直白的软件层面的例子:“拿相机APP举例。它要的无非就几件事:打开摄像头、实时预览、拍照、录像。”
“最理想的状态,是只调用几个标准API:openCamera()、startPreview()、takePicture()。底下用的是索尼、三星还是哪家的传感器,APP根本不该关心,也不用知道。”
“没有HAL的时候做不到。APP得直接对接某家摄像头的私有驱动。适配A厂商的摄像头,就调用open_a()、take_picture_a(),这套调用只认A的驱动。”
“换成B厂商的摄像头,底层换成B的驱动,接口变成open_b()、take_picture_b(),连参数顺序都不一样。APP还按A那套去调用,找不到接口,轻则报错闪退,重则直接崩溃。硬件一换,上层代码就得跟着全改一遍。”
“有了统一HAL就不一样了。HAL定死一套标准接口:openCamera()、startPreview()、takePicture()、stopPreview()。APP只认这套接口,不管底下接的是谁家的硬件。”
“摄像头厂商和手机厂商要做的,是让自己的驱动去适配HAL接口。里面寄存器怎么配、芯片怎么初始化,厂商自己决定;但对外的接口
本章未完,请点击下一页继续阅读!