By 高焕堂 2013/06/01
Android HAL驱动框架的商业策略
1. HAL框架改变了甚么?
HAL框架的设计可吸引硬件厂商,削弱Linux对硬件厂商的约束力。换句话说,框架设计不在于框架内部类别的多少或内涵的复杂性,而在于接口的制定权。简单的HAL框架设计,改变了Google、Linux基金会和硬件厂商之间三角的商业利益关系。在没有HAL框架的情形下,传统的Linux-based驱动架构是:
图-1 传统驱动模块放置于Linux内核空间里
有了HAL框架之后,驱动模块可以从Linux的内核空间(Kernel Space)里移出来,摆入HAL框架区域内,此区域属于用户空间(User Space)。如下图所示:
图-2 HAL-based驱动模块放置于HAL框架里
驱动模块摆在HAL框架的用户空间里,采取ASL自由软件协议,而避开了GPL协议。采用ASL协议,驱动模块不必提供原始码,也不必送审,就能卖钱。
2. 没钱就去改版
强龙提供两道奶水:框架API和SDK(含NDK)来协助地头蛇开发AP或驱动模块。这些是软件开发(即生产)阶段的协助,仅是强龙的「必备」条件而已。如果想成为真正强龙的话,还需要一项「充分」条件:协助地头蛇去赚钱(即营销)。其中,大家最熟悉的就是:让地头蛇能够「没钱就改版,改版就有钱」。于此,兹拿HAL框架为例,说明「没钱就改版」的实践途径。
2.1 拿万里长城来比喻
为了说明HAL框架与「没钱就改版」的逻辑关系,于此兹拿万里长城来比喻HAL框架。万里长城攸关三方面的利益:
- 关内居民最先获利
例如,还没兴建万里长城之前,关内居民受到北方游牧民族的侵扰,生活节奏随时可能受到干扰,失去自己安排作息的自由度,无法安居乐业。有了万里长城之后,就能安居乐业,居民获得自由度,不受外力干扰了。例如,还没兴建万里长城之前,关内居民受到北方游牧民族的侵扰,生活节奏随时可能受到干扰,失去自己安排作息的自由度,无法安居乐业。有了万里长城之后,就能安居乐业,居民获得自由度,不受外力干扰了。
- 关外居民获利较小
对于关外游牧民族而言,万里长城反而框住了他们的行为,所以获利最小,但在汉元帝期间,至少获得一位美女王昭君,以及60年和平相处的好日子。
- 万里长城主导者获利最大(但获利较慢)
无论是秦始皇、汉武帝或汉元帝等都是万里长城的最大获利者。例如汉元帝期间,获得关内与关外双方居民的拥戴,加上王昭君出塞,缔造长达60年的和平日子。所以,秦汉皇朝虽然是万里长城的最后获利者,但却是获利最大者。
2.2 自由度的来源:以HAL框架为例
Google强龙开发HAL(Hardware Abstraction Layer)驱动框架(它是用来衔接硬件组件的驱动模块),然后拿它当做礼物来赠送硬件厂。这让全球硬件厂获得「没钱就改版」的自由度,因而大受欢迎和支持,于此就来说明这项自由度来源。
2.3 HAL框架的商业效益
HAL框架就像一座万里长城,将整个Android平台分隔开来,分成关内和关外两部分。如下图:
图-3 HAL框架将Android平台分成关内和关外
HAL框架将平台分隔开来。成为两部分。其中,
- 关内:如上图所示,包含HAL框架内的驱动模块(如GPS、Bluetooth、WiFi等),以及HAL框架之下的Linux内核组件。
- 关外:则包括HAL框架之上的各部份(如Libraries、Application Framework、Android Runtime等)。
根据万里长城的攸关利益,可以知道关内是优先获利者,其主要获得了「自由度」,例如自己决定睡觉到什么时刻才起床,不必因关外民族入侵而被迫起床避难。由于万里长城的分隔(Separate),让关内居民不会受到关外的干扰,而拥有自由度。同理,由于HAL框架的分隔,让HAL框架之下(即关内)的驱动模块不受框架之上(关外)的牵制或干扰,而获得变动自由度;于是,驱动开发者(硬件供货商)拥有自由度(容易改版)。如下图的说明:
图-4 带来「没钱就改版」的机会
(这是 Patrick Brady (Google) 在 2008 Google I/O 所发表的演讲「 Anatomy & Physiology of an Android 」中的说明。)
这说明了,驱动开发者(硬件供货商)拥有自由度(容易改版),所以乐意替Google抬轿。就如同,关内居民拥有高自由度(不受制于北方游牧民族),所以乐意拥戴皇上。基于这个 HAL框架,Google让驱动变动不牵动上层,没有涟漪效应,变动成本低,客户容易接受改版,带来改版机会。
2.4 HAL框架的内涵
HAL是以C语言撰写的框架,其主要结构如下图:
图-5 HAL是以C语言写成的驱动框架
由于C语言不是对象导向(Object-Oriented)语言,它没有类别(Class)机制,但可以拿C语言的结构(struct)机制来表达「型态」(Type)概念。简而言之,在C++里,我们是以类别来表达型态概念;而在C语言里则是拿结构来表达型态概念。例如,上图里的hw_module_t就是hw_module_type的缩写,意味着它是一个型态;而open()就是定义于hw_module_t型态(相当于C++或Java的类别)里的抽象函数。由于hw_module_t内含抽象函数,它是一个抽象型态,相当于C++或Java的抽象类别,也就相当于C++或Java里的基础类别(Base Class,简称基类)。所以,hw_module_t就是HAL框架里的基础型态(即基类),其内含的open()抽象函数就成为HAL框架的主动型API。此外,HAL框架也提供hw_get_module()具象函数给其它Client模块来呼叫,这具象函数就成为HAL框架的被动型API。
2.5 自由度的表现:「没钱就改版」
驱动模块开发者撰写HAL的子类(又称为HAL的Stub模块),并实作open()函数。如下图:
图-6 撰写HAL框架的子类
由于基类提供主动型API,拥有高度的制约力量,所以敢开放给子类去自由改版,产生子类的差异化,带动了驱动模块差异化,也带动了硬件组件差异化,创造高利润。随然子类受制于基类的主动型API,但是它的改变并不会牵动基类以外的模块,没有涟漪效应,变动成本低,客户愿意改版,带来改版(及差异化)机会。同理,驱动模块的改变并不会牵动上层(即Libraries和Runtime等Android核心模块),没有涟漪效应,变动成本低,客户愿意改版,带来改版机会。基于这项自由度,驱动模块就能随时改版,尤其是没钱时,就能加速改版。这就是所谓的「没钱就改版」。驱动模块的「没钱就改版」,也意味着硬件组件的「没钱就改版」,这种自由度替全球各硬件厂商带来差异化的机会,亦即创造了有利的商场竞争优势。[歡迎光臨 高煥堂 網頁: http://www.cnblogs.com/myEIT/ ]
3. 改版就会有钱
3.1 框架改变商业利益关系
简单的HAL框架设计,改变了Google、Linux基金会和硬件厂商之间三角的商业利益关系。刚才,兹以万里长城来比喻HAL框架,说明了Android HAL框架的首先获利者是全球的手机硬件厂(如HTC、Motorola等)。他们获得了驱动模块和硬设备的变动自由度和自主性;因此,获得「没钱就改版」的创意机会。
「没钱就改版」只是必备条件,并不充分。如果能够获得充分条件:改版又能卖钱;那就更完美了。不仅仅位于底层(即C/C++层)的HAL框架能带来「没钱就改版,改版就有钱」的商业效益;另外位于上层(即Java层)的应用框架(Application Framework)也能带来「没钱就改版,改版就有钱」的美好效益。
然而,Android框架是建立于开源(Open-sourced)的Linux内核上,依据GPL自由软件协议,摆在Linux内核空间里的驱动模块,也都必须开源。
就硬件厂商而言,开源的驱动软件,可能会让硬件的创新功能曝光,容易被仿制,难以产生差异化和利润,因而无法实现「没钱就改版,改版就有钱」的完美境界。Google强龙为了替硬件厂商(即地头蛇)解决上述的困境,就采取下述对策:
- 让驱动模块可以从Linux的内核空间(Kernel Space)里移出来,摆入HAL框架区域内,此区域属于用户空间(User Space)。
- 驱动模块摆在HAL框架的用户空间里,采取ASL自由软件协议,而避开了GPL协议。
- 采用ASL协议,驱动模块不必提供原始码,也不必送审,就能卖钱。因而,获得「没钱就改版,改版就有钱」的高获利商机。如下图的说明:
图-7 厂商获得「改版就有钱」的获利商机
(这是 Patrick Brady (Google) 在 2008 Google I/O 所发表的演讲「 Anatomy & Physiology of an Android 」中的说明。)
Google掌握HAL框架,藉由HAL的主动型API来包容驱动模块的改版机会。由于驱动模块不必开放原始码,保护硬设备的机密性,因此不仅容易改版,还能卖钱,所以地头蛇会日益壮大,更有力量支持Google强龙。同时,Google强龙(盟主)地位自然形成了。
3.2 HAL的启示:做框架API送人
框架设计不在于框架内部类别的多少或内涵的复杂性,而在于接口的制定权。Google开发了Android框架(基类)API来当礼物送人。此外,在Android框架里,人人皆能开发各种领域(如TV领域)的小框架(小基类)API去当礼物送人,而实现「没钱就做基类,做基类就有钱」的商业利益,成为幸运赢家。将框架(基类)当礼物大量送人之后,这些基类可以嘉惠众多AP开发者(或驱动开发者),让他们能获得「没钱就做改版,改版就有钱」商业利益。当硬件厂商(即驱动开发者)在享受Android框架礼物,也享受框架所带来的数十万支AP之际;可能有一天这些厂商会发现,假如他们从原来的礼物「享受者」转变成为礼物的「赠送者」时,可获得更大利益时,在其心中,「框架」这项礼物所代表的意义,就完全改观了,进而激发他们热情投入,开发与硬件服务有关的框架API来送人,也会是幸运赢家。
同样地,全球的AP开发者在享受Android框架礼物,也享受框架所带来的跨硬件好处之际;可能有一天这些开发者会发现,假如他们从原来的礼物「享受者」转变成为礼物的「赠送者」时,可获得更大利益时,在其心中,「框架」这项礼物所代表的意义,就完全改观了,进而激发他们热情投入,开发各种应用领域(如医疗等)的框架API来当礼物送人,也会是幸运赢家。但愿人人都持着幸运者观点,热情投入、嘉惠别人,让人人都能幸福美满。◆
[Go Back]