第511章 布局全行业!天枢OS的生态阳谋(1/3)
林景行沉吟几秒,缓缓开口,语气沉稳笃定: “其实这点我们可以直接写进合作协议,卡死红线——刚才卢总其实也提到过,有些边界绝对不能碰,这就是防碎片化的核心。”
“我们官方统一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只认接口,不认硬件;厂商只改底层,不影响上层。”
“这就是接口与实现分离,也叫解耦。
本章未完,请翻下一页继续阅读.........