第511章 布局全行业!天枢OS的生态阳谋 (第1/2页)
林景行沉吟几秒,缓缓开口,语气沉稳笃定: “其实这点我们可以直接写进合作协议,卡死红线——刚才卢总其实也提到过,有些边界绝对不能碰,这就是防碎片化的核心。”
“我们官方统一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接口。里面寄存器怎么配、芯片怎么初始化,厂商自己决定; 但对外的接口必须符合HAL标准。这套标准由我们定死,不准改,要迭代也只能由我们官方迭代。”
“打个比方:我们的HAL层是墙上的国标插座,厂商的硬件驱动是插头。我不管你插头用什么材料、怎么做的,但是你必须做成能插进去插座的形状。”
“以后换摄像头、换传感器,只改HAL层下面的适配代码就行,上面的系统和APP完全不用动。”
“而且厂商自研的内核和驱动代码必须开源,提交技术委员会审核通过后,并入官方主干,全行业共享。以后再遇到同款硬件,直接复用开源代码,不用每家都重复造轮子。”
林景行顿了顿,看大家都恍然大悟的样子后,继续说道:一句话总结就是,HAL是上层系统和底层硬件之间的标准隔离层,APP只认接口,不认硬件;厂商只改底层,不影响上层。”
“这就是接口与实现分离,也叫解耦。碎片化的问题,这不从根上就解决了。”
赵远靠在椅背上微微点头。 他太清楚安卓的历史痛点了——早期安卓之所以碎片化严重、手机越用越卡,根子就在上层系统与底层硬件之间没有一道标准隔离墙。
系统想用摄像头,得直接找厂商的驱动,按人家私有的规矩来。A厂商一套接口,B厂商一套接口,系统框架里写的代码又只认其中一家的接口,只能对接这一家。
换个摄像头,接口对不上,系统自己先崩,APP就更别说了换了硬件就得大改,这就导致厂家连系统升级都难。
因为谷歌出了新版本,得芯片厂商先改驱动,再交给手机厂商改适配,最后才能推给用户。哪一环不配合,这手机就永远停在老版本。
所以那时候很多手机买来是什么系统
(本章未完,请点击下一页继续阅读)