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