1.1 Android嵌入式系统概述
1.1.1 嵌入式系统定义
Android是一款以Linux为基础的开源移动设备操作系统,一直由Google公司领导和开发。Google对于Android系统所持有的开放态度,令Android系统一经发布就风靡全球。Google于2007年11月5日正式发布Android系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放的和完整的移动设备软件。2012年11月数据显示,Android占据全球智能手机操作系统市场的76%,在中国市场的占有率为90%。据2013年数据显示,全世界采用这款系统的设备数量已经达到10亿台。
这里所说的Android系统,是基于Linux内核发展起来的嵌入式操作系统。Android系统基于Linux内核所做的改进将在后续章节进行详细介绍。
本章将详细介绍嵌入式系统,主要涉及Android系统所运行的平台、处理器芯片以及相关的技术。
1.什么是嵌入式系统
嵌入式系统(Embedded System)是一种完全嵌入受控器件内部、为特定应用而设计的专用计算机系统。嵌入式系统的本质就是计算机系统,因而它也是由软件以及硬件构成的。与普通计算机不同,嵌入式系统通常仅拥有非常有限的硬件资源,这种配置使它们的成本大幅下降,但也对软件的优化提出更高的要求。嵌入式系统一般运行固定的程序或固定的操作系统,再加上可变的应用程序。有些为工业系统,仅用于某个特定的控制目的;有些因为有应用程序的加入而更显灵活,一般用于手机、平板电脑。如图1-1所示。
图1-1 典型的嵌入式系统
第一个被大家认可的现代嵌入式系统是麻省理工学院仪器研究室的查尔斯·斯塔克·德雷珀开发的阿波罗导航计算机。在两次月球飞行中,太空驾驶舱和月球登陆舱都使用了这种惯性导航系统。在计划中刚开始的时候,阿波罗导航计算机被认为是阿波罗计划中风险最大的部分。为了减小尺寸和重量而使用的当时最新的单片集成电路,这更加大了阿波罗计划的风险。第一款大批量生产的嵌入式系统是美国军方于1961年发布的民兵I导弹上的D-17自动导航控制计算机。它是由独立的晶体管逻辑电路构成的,并带有一个作为主内存的硬盘。当民兵II导弹在1966年开始生产的时候,D-17由第一次使用大量集成电路的更新计算机所替代。仅这个项目就将与非门集成电路模块的价格从每个1000美元降低到了每个3美元,使集成电路的商用成为可能。民兵导弹的嵌入式计算机有一个重要的设计特性:它能够在项目后期对制导算法重新编程以获得更高的制导精度,并且能够使用计算机测试导弹,从而减轻测试所用的电缆和接头的重量。这些20世纪60年代的早期应用使嵌入式系统得到了长足发展,它的价格开始下降,同时处理能力和功能获得了巨大的提高。
英特尔4004是第一款微处理器,它在计算器和其他小型系统中找到了用武之地。但是,它仍然需要外部存储设备和外部支持芯片。1978年,美国国家工程制造商协会(NEMA)发布了可编程单片机的“标准”,包括几乎所有以计算机为基础的控制器,如单片机、数控设备,以及基于事件的控制器。随着单片机和微处理器价格的下降,使一些消费性产品用单片机的数字电路取代昂贵模拟组件成为可能。到了20世纪80年代中期,许多以前是外部系统的组件被集成到了处理器芯片中,这种结构的微处理器得到了更广泛的应用。到了20世纪80年代末期,微处理器已经出现在几乎所有的电子设备中。
现代的嵌入式系统一般分为简单嵌入式系统和复杂嵌入式系统。简单嵌入式系统一般被认为是由单片集成控制器作为硬件核心的嵌入式系统,其核心只有一片芯片,却集成了处理器、闪存、内存、数字和模拟外设这些设备,这样的系统开发难度低。然而,由于种种限制,其性能一般,仅适合于自动化、运动控制、电源控制等简单的控制类应用。与之相反,复杂嵌入式系统一般由独立的处理器和闪存构成,处理器本身不集成大量的外设,仅执行处理任务,类似于传统计算机的CPU。这样的系统灵活多变,性能优异,但是成本高昂,普遍用于人机接口、智能设备、手机等性能要求高的场合,如图1-2所示。
图1-2 嵌入式系统应用
以下是一些嵌入式系统的典型应用:
·ATM取款机
·航空制导系统
·交换机、路由器、ADSL终端
·可穿戴传感器
·计算机硬盘
·工业控制器
·计算器
·机顶盒
·MP3、MP4
·GPS导航仪
·手机、平板电脑
·智能测试测量仪器仪表
2.为什么选择嵌入式系统
很多人觉得没有接触过嵌入式系统,嵌入式系统离他们很遥远。其实,嵌入式系统无处不在。从白色家电到大型网络系统,嵌入式系统时时刻刻为我们服务着。与传统计算机比较,嵌入式系统尽管有开发难度大、通用性差和人机接口普遍落后等劣势,却有着传统计算机所没有的关键优势。
嵌入式系统可以做到极低的成本。一般来说,用于简单工业控制和白色家电的单片机芯片集成了复杂的模拟外设、数字外设,而且不用外界任何存储设备,如图1-3所示。这样的一片芯片往往售价不超过10元人民币,更加令人惊奇的是,这种芯片可以在很宽的电源电压范围内工作,又有良好的可靠性,从而进一步降低了对外部环境的要求,使微电脑控制技术得以广泛普及。
图1-3 嵌入式系统处理器
嵌入式系统极其可靠。一般说来,系统中串联工作的部件越多,系统的可靠性越差;系统中并联工作的部件越多,系统的可靠性越好。这里的串联指的是相互依赖的工作方式,并联指的是互为冗余的工作方式。嵌入式系统往往有更精简的结构,从而使其有更少的出错机会。从硬件上讲,各模块之间的依赖关系更加清晰,模块数量精简,从而使串联部件减少。从软件上讲,由于使用了定制的操作系统和应用程序,甚至没有操作系统,从而使得软件组件大幅减少,也减少了串联部件。而且,由于结构精简,从而可以留出更多成本预算来做冗余。这样,在减少串联部件的同时增加并联部件,使得嵌入式系统可以提供传统计算机系统所难以比拟的高可靠性。
嵌入式系统极其高效。虽然绝大多数的嵌入式系统拥有较差的计算资源,它们通常仍能完成任务。与通用计算机不同,嵌入式系统的硬件、软件都可以根据实际需求而加以定制,这使得系统得以精简。除了提高系统的可靠性,精简的系统还能减少硬件资源,尤其是CPU资源和内存资源的浪费。一台主频只有16MHz的计算机是什么样子?然而,多数用于工业控制的单片机的主频不超过16MHz,却能井井有条地控制大型机械设备。对于某些超高性能需求,因为传统计算机系统的低效、臃肿,嵌入式系统是唯一的选择。比如说大型电信路由器或网络安全设备,因为需要处理大量的数据请求,还不能有太多的网络延迟或丢包,高效的专用处理器就成为了唯一的选择。它们被制成功能单一的芯片,只能做一种简单的任务,却有着极其强大的性能。如果采用通用计算机来支撑网络社会,可能会因为成本过高而无法实现。
嵌入式系统体积小、功耗低。手机、平板电脑都是嵌入式系统,却也有着不逊于传统计算机系统的性能。一般来说,嵌入式系统的功耗不会大于20瓦。多数的单片机功耗在几十毫瓦左右,而多数复杂嵌入式系统的功耗不过几百毫瓦。即使是最先进的手机系统,其峰值功耗不过二三瓦,而其平均功耗不过二三百毫瓦或更低。反观传统计算机,即使是最省电的笔记本电脑也要消耗数十瓦的功率。在减小功耗的同时,嵌入式系统的散热问题也随之消失,更简单的电源管理和几乎不使用散热装置,使得嵌入式系统的体积更小,如图1-4所示。
图1-4 典型的嵌入式系统体积
3.如何选择
如前文所述,嵌入式系统可分成简单嵌入式系统和复杂嵌入式系统。简单嵌入式系统一般为单片机,比如MCS51系列、PIC系列、AVR系列和新兴的MSP430系列。这些单片机成本低廉,外设丰富,而且在上电后可以立即运行,适合于对性能要求不高的控制类应用,如智能仪表、电机控制、可穿戴传感器和数字电源等。
复杂嵌入式系统的构成则要复杂得多,其性能、成本也高得多。一般来说,该类系统包括基于DSP的嵌入式系统、基于ARM的嵌入式系统、基于MIPS的嵌入式系统和基于x86的嵌入式系统。基于DSP的嵌入式系统一般用于处理大量的数据,典型应用为语音处理、雷达信号处理等。基于MIPS的嵌入式系统一般应用于通用计算,因为MIPS在开发之初就被用于通用处理器。基于x86的嵌入式系统实际上就是把传统的计算机压缩、精简,一般因其强大的性能与兼容性被用于对成本、功耗要求不高的场合,比如工业计算机等。
复杂嵌入式系统中最常见的要属基于ARM的嵌入式系统(以下简称ARM系统)。ARM系统通常拥有足够的硬件资源和相对较低的功耗,这使得ARM处理器非常适用于复杂的工业环境和移动终端,这当中绝大部分就基于Android操作系统。