Android底层开发实战
上QQ阅读APP看书,第一时间看更新

1.1.2 基于Android的嵌入式系统构成

1.嵌入式系统架构概述

嵌入式系统由软件和硬件构成。硬件部分包括微处理器、内存、闪存/硬盘、外部设备等;软件部分则包括引导器、操作系统、文件系统、用户程序等。对于简单嵌入式系统来说,硬件部分通常只是一块单片机芯片,集成了所需的全部硬件资源,而软件部分则只是一个单一的二进制文件,包含全部的代码、常数、存储分配结构等。本书的研究对象是基于ARM处理器和Android操作系统的复杂嵌入式系统。

2.Android系统的发展与版本演变

Android一词的本义指“机器人”,该平台由操作系统、中间件、用户界面和应用软件组成。Android操作系统最初由Andy Rubin开发完成,是一种基于Linux内核的自由及开放源代码的操作系统,主要应用于移动设备,如智能手机和平板电脑。2005年8月由Google收购并注资。2007年11月,Google与34家硬件制造商、软件开发商及电信运营商组建开放手机联盟,共同研发改进Android系统,并且以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机HTC G1发布于2008年10月。随后Android操作系统逐渐扩展到平板电脑及其他领域,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居第一。

2008年,在Google I/O大会上,Google提出了Android HAL架构图,在同年8月18日,Android获得了美国联邦通信委员会的批准。在2008年9月,Google正式发布了Android 1.0系统,这也是Android系统最早的版本。

2009年4月,Google发布了Android 1.5版本,并开始以甜品的名字对各个版本进行命名,Android 1.5命名为Cupcake。该版本与1.0版相比有了很大的改进。

2009年9月,Google发布了Android 1.6的正式版,并且推出了搭载Android 1.6正式版的HTC G3手机。凭借着出色的外观设计以及全新的Android 1.6操作系统,HTC G3成为当时全球最受欢迎的手机。Android 1.6也有一个有趣的甜品名称,即Donut。

2010年2月,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核staging tree上除去。从此,Android与Linux开发主流分道扬镳。同年5月,Google正式发布了Android 2.2操作系统,并将其命名为Froyo。

2010年10月,Google宣布Android系统达到了第一个里程碑,即在电子市场上获得官方数字认证的Android应用数量已经达到了10万个,Android系统的应用增长非常迅速。在2010年12月,Google正式发布了Android 2.3操作系统Gingerbread。

2011年1月,Google宣布每日新增的Android设备用户数达到30万部,到2011年7月,这个数字增长到55万部,Android系统设备的用户总数更是达到了1.35亿。Android系统已经成为智能手机市场占有量最高的系统。

2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了塞班系统的霸主地位,跃居全球第一。

2011年9月份,Android系统的应用数目已经达到了48万,而在智能手机市场,Android系统的占有率已经达到了43%,继续排在移动操作系统首位。全新的Android 4.0操作系统于2011年9月23日发布,这款系统被Google命名为Ice Cream Sandwich。

2012年1月6日,Google Android Market已有10万开发者推出超过40万活跃的应用,大多数的应用程序为免费的。Android Market应用程序商店目录在新年首个周末突破40万基准,距离突破30万仅用了一个月。在2011年早些时候,Android Market应用从20万增加到30万花了4个月。

2013年9月,Google证实,已有超过10亿Android设备被激活,应用下载次数超过480亿次。Android系统不仅支持手机和平板电脑,还成功进军相机、电视、手表甚至是冰箱等消费品领域。同年10月发布了Android 4.4,代号为KitKat(奇巧巧克力)。新的Android 4.4操作系统为开发者提供了两种编译模式,一种仍是默认的Dalvik模式,另外一种则是ART模式。ART模式发行的应用在用户安装时就进行预编译操作,将原本在程序运行中的编译动作提前到应用安装时,在省去解释代码这一过程之后,应用的运行效率更高。Android被人所诟病的虚拟机解释编译时代一去不复返。

2014年,随着更多的手机生产商的加入,Android智能手机总出货量为13亿台,这意味着Android智能手机占全年手机销售量的81.2%。

2014年10月16日,Google正式发布Android 5.0,并将系统镜像发布到Nexus 4、5、7和10的设备上。主要更新包括:支持64位处理器,支持蓝牙4.1,采用全新的Material Design界面,全面由Dalvik虚拟机转用Android RunTime(ART)编译虚拟机等。

2015年4月22日,Google发布最新版本Android 5.1.1,在Android 5.0基础上主要增加了新功能和完全性,例如多SIM卡和高清语音的支持、快速设置WiFi和蓝牙等

3.Android系统的优势

(1)开放性

Android平台最大的优势就是其开放性。开放的平台允许任何移动终端厂商加入Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户数量的增多和应用的日益丰富,一个崭新的平台也将很快走向成熟。

(2)运营商的鼎力支持

在国内,三大运营商卯足了力量推出Android智能机。联通的“0元购机”,电信的千元3G,移动的索爱A8i定制机等,都显示了运营商对Android智能机的期望。在美国,T-Mobile、Sprint、AT&T和Verizon全部推出了Android手机。此外,KDDI及NTT DoCoMo(日本)、Telecom Italia(意大利电信)、T-Mobile(德国)、Telefónica(西班牙)等众多运营商都是Android的支持者。有这么多的运营商支持Android,自然会使它占据巨大的市场份额。相对于Android的运营商联盟,只有AT&T一家运营商销售iPhone。

(3)丰富的硬件选择

基于Android平台的开放性,众多厂商推出了多种产品。这些产品虽然功能上各有特色,却不会影响数据同步,以及软件的兼容。例如将一款诺基亚塞班风格的手机更换为苹果iPhone,不仅可以将塞班中优秀的软件移植到iPhone上继续使用,而且联系人等资料也可以方便地转移。现在,世界绝大部分智能手机厂商都加入了Android阵营,并推出了一系列的Android智能机。摩托罗拉、三星、HTC、LG、Lumigon等厂商都与Google建立了Android平台技术联盟。加盟的厂商越多,手机终端就越多,其市场潜力就越大。Android智能机最近6个月在美国市场的占有率足以说明这一点。

(4)开发商不受任何限制

随着Android的推广与普及,应用程序的数量呈指数级增长,Android应用在可预见的未来是有能力与苹果竞争的。而来自Android应用商店最大的优势是,不对应用程序进行严格的审查,开发不受限制。

(5)无缝结合Google的应用

如今互联网的Google已经走过10年的历程,从搜索巨人发展到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,Android平台则将这些优秀的Google服务无缝结合到系统中。

4.基于Android的嵌入式系统硬件构成

为了支持Android系统的正常运行,一个典型的系统应具备ARM嵌入式处理器、内存、闪存、电源管理系统、音频子系统、显示屏和触摸屏。

图1-5以基于全智科技A10应用处理器的嵌入式系统为例介绍了一个无线IP电话硬件系统的构成。Android操作系统运行在基于ARM核心的A10处理器上,GPU部分运行图像加速算法。ARM处理器控制片上外设,片上外设控制系统中的其他设备,比如音频控制器、背光控制器等。A10SOC通过USB等接口对外实现有线和无线通信。

图1-5 Android嵌入式系统的硬件

5.Android嵌入式系统软件构成

嵌入式系统软件包含引导器、操作系统、文件系统和用户程序等,如图1-6所示。以Android系统为例,系统引导器(通常是U-Boot)在系统通电之后首先运行,该程序负责处理器、内存、闪存的初始化,对系统内核实行解压缩操作,然后将控制权交给操作系统。操作系统包含内核和用户态程序。Android系统的内核是Linux,Linux在加载完成后挂载文件系统,并从中加载用户态程序。Android的用户态程序包含启动管理、Java虚拟机、系统库函数等。在完成Android系统的加载后,Android会自动加载默认的桌面应用程序。至此,Android系统完成启动过程。

图1-6 Android系统软件构成

引导器包含设备相关的、与底层打交道的代码,这部分常用汇编语言和C语言编写。Linux内核部分包含部分设备相关代码,比如CPU的优化指令等,以及大量的外设驱动。这部分将是移植Android系统的重点。Android虚拟机和Linux用户态库文件提供应用程序与Linux内核沟通的机制,并实现大量的扩展功能。如果要开发自定义的Android系统,就少不了开发指定的用户态库文件。如果Android系统是用于特定目的,一般还要为应用程序(APK)开发对应的底层库文件及JNI库。这也是Android系统移植的重点。最高层是应用程序框架,该部分提供应用程序可以调用的Java包,它们实现了多数的Android API,是应用开发的重点。最上层是应用程序,该部分由第三方开发,与系统移植无关。