谷歌Brillo
谷歌提出了Project IoT物联网计划,并且发布了Brillo操作系统。Brillo操作系统是一个物联网底层操作系统。

Brillo源于Android系统,是Android底层的一个细化项目,并且得到了Android的全部支持,例如蓝牙与Wi-Fi等技术在功耗很低的前提下,安全性也很高,优势在于任何设备制造商都可以直接使用。
面向基于Android的嵌入式操作系统的开发平台,很适合在编写Android应用程序方面有扎实的技术背景的开发者。
Brillo使用一种名为Weave的通信协议,这意味着智能设备没必要非得将嵌入式安卓作为其操作系统,它们只要能够使用Weave进行通信就可以。这为一大批厂商将Weave集成到物联网产品当中敞开了大门,最终让这些产品能够与Brillo兼容。
在谷歌发布Brillo后的一年里,这款基于Android的轻量级发行版日益受到嵌入式板卡厂商的追捧,比如英特尔Edison和Dragonboard 410c,甚至得到一些计算机模块制造商的追捧。Brillo的未来与谷歌的Weave通信协议密切相关,它需要这种协议。Weave为Brillo带来了发现、配置和验证等功能,Brillo可以在只有32MB内存和128MB闪存的设备上运行。

Brillo物联网操作系统的功能架构图
Brillo与Android一样,仍然使用Linux内核作为其操作系统内核。这样Linux在物联网领域应用的一些弊端,就被完整地继承到了Brillo中。比如,Linux内核对运行内存的要求较高,同时Linux还需要CPU硬件支持MMU(内存管理单元)功能等。这样就间接导致Brillo的运行内存要求较高,按照官方说法,要至少32MB内存,同时要求CPU支持MMU功能。这就导致大量的低端CPU或MCU,比如STM32系列,就无法运行Brillo,因为这些CPU的片上内存一般不超过1MB,同时一般不提供MMU功能。由于这些原因,大大限制了Brillo的应用范围。(本人设想,华为的Lite OS是否也有同样的弊端,因为据本人通过公开资料了解,Lite OS也是基于Linux内核)
在Linux内核之上,Brillo保留了Android操作系统里面的一个硬件访问层(Hardware Access Layer, HAL)。这个层次的主要功能就是对底层的硬件进行统一的抽象,以更加友好一致的方式提供给应用程序访问。
从功能上说,这一层软件并无明显的价值,但是其简化了对硬件的操作,给程序开发带来了较大的便利。按照一般的软件分层规则,这一层软件属于操作系统内核的一部分,因为它并没有提供额外的附加功能,在代码量上,与内核相比,也非常少,在某些情况下甚至可以忽略掉。因此,HAL应该与操作系统内核放在一起。但是谷歌为了区分HAL这一层软件是来源于Android系统,而不是Linux,因此把它单独列出来了。
再往上一层,就是支撑操作系统运行的一些辅助功能组件了。主要有在线更新(OTA Updates),安全相关的一些组件和机制,以及在线数据分析和性能测量等。在线更新机制,可以使运行Brillo操作系统的物联网设备在运行过程中就可以更新软件,而不用中断运行。这个特性是非常有价值的,Brillo是一个复杂的系统,其版本更迭和补丁发布非常频繁。如果不提供在线更新功能,每发布一个新的版本和补丁,都需要现场更新物联网设备,显然是不可操作的。
因此谷歌设计了这个特性来支撑在线实时软件更新功能。只要与Brillo的后台服务器连接上,Brillo会自动检查更新并安排更新,而不会影响设备的正常运行。安全机制则提供了设备认证和数据加密等功能,这是任何网络信息流解决方案必须要提供的机制。在线性能统计和分析功能,可以帮助用户实时查看和分析设备状态、性能、消息数量等数据,为设备维护人员提供一个基础的管理平台。开发者可以根据需要,选择启用或关闭这些外围辅助功能。
最上的层就是Weave框架了。Brillo操作系统内嵌了对Weave的支持,把Weave作为支撑物联网应用的主要功能模块。但是Weave并没有把Brillo作为唯一的底层操作系统,反而一直强调“跨平台,可移植”等特性。可见,在谷歌内部,Weave要更强势一些,Brillo的定位或者价值仍然存疑。
从架构上看,Brillo是完全符合物联网操作系统参考架构的。比如Linux内核和Android HAL组合到一起,对应物联网操作系统内核这一层。在线升级、安全机制、性能测量和数据分析等这些辅助功能组件,对应于外围功能组件这一层;Weave则对应于物联网协同框架这一层。
需要说明的是,在谷歌提供的官方架构图中,Weave模块是与OTAUpdates等外围辅助模块位于同一个层次,这样无法反映出Weave和Brillo之间的关系。Weave是依赖于Brillo操作系统而运行的,Weave又不属于Brillo操作系统的范畴。因此应该把Weave放在Brillo上面,既体现了依赖逻辑,又体现了这两者相互独立的关系。
谷歌Android Things
Android Things是谷歌推出的物联网操作系统,是Brillo操作系统的更新版本,作为Android系统的一个分支版本,类似于可穿戴和智能手表用的Android Wear(Android Wear也是一种物联网操作系统)。
Android Things使用Weave的通信协议,实现设备与云端相连,并且与谷歌助手等服务交互。
Android Things面向所有Java开发者,不管开发者有没有移动开发经验。该操作系统能够支持一系列物联网设备的计算平台,其中包括英特尔Edison平台,NXP公司的Pico平台,以及树莓派3。
Android Things的特点如下:
● 系统不开放:封闭系统。手机Android能改框架层和操作系统,AndroidThings不能改。不存在“定制ROM”这一说法。不能改驱动层(Kernel),不能改框架层(Framework),要改什么,只能在用户区里面用Java修改OEM Application。
● 硬件不兼容:高通、Intel、MTK、瑞芯微、树莓派等主流硬件厂家,都开发出了各自的CPU模块和开发板,各厂家接口互不兼容。
● App不开放:不允许用户自己私自安装App了。厂商开发者把App发给谷歌,谷歌审核打包后放到自己的服务器上,设备自动去谷歌那里下载和更新,无须用户自己动手。专门为物联网IoT增加了以下功能:
● 增加了Cloud IoT Core, Weave物联网通信协议。
● 增加了Tensor Flow人工智能和机器学习引擎。
● 增加了谷歌自己的远场语音降噪算法。
总之,Android Things系统精简了,使设备更安全了,其操作系统驱动不能更改,相应的硬件设计简单了,增加了很多物联网的软件模块,用户不能随便装第三方App了。
(本人现在傻傻分不清到底是安卓越来越像苹果IOS了?还是苹果IOS越来越像安卓了?)


