本节书摘来异步社区《嵌入式Linux应用开发完全手册》一书中的第1章,第1.1节,作者:韦东山,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.1 嵌入式系统介绍
嵌入式Linux应用开发完全手册
1.1.1 嵌入式系统的定义和特点
1.嵌入式系统的定义
嵌入式系统的定义为:以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它的主要特点是嵌入、专用。
从20世纪70年代起,微型机以小型、价廉、高速数值计算等特点迅速走向市场,它所具备的智能化水平在工业控制领域发挥了作用,常被组装成各种形状,“嵌入”到一个对象体系中,进行某类智能化的控制。这样一来,计算机便失去了原来的形态与“通用”的功能,为区别于通用计算机系统,将这类为了某个“专用”的目的,而“嵌入”到对象体系中的计算机系统,称为嵌入式计算机系统,简称嵌入式系统。
含有嵌入式系统的设备称为嵌入式设备,这在生活中随处可见:电子表、手机、MP3播放器、摇控器等,涵盖了生产、工业控制、通信、网络、消费电子、汽车电子、军工等领域。从通俗、广义的角度来说,除电脑、超级计算机等具备比较强大计算能力及系统资源(比如内存、存储器等)的电子系统之外,凡具备计算能力的设备都可称为嵌入式设备。随着技术的进步,嵌入式设备的性能越来越高,一个相对高级的PDA的性能并不弱于一般的电脑。
2.嵌入式系统的特点
嵌入式设备常应用于“特定”场合,与“通用的”个人电脑相比,具备以下特点。
(1)软件、硬件可裁剪。
将市面上的手机拆开,会发现虽然它们的功能是相似的,但是所用芯片多种多样,所用的操作系统也有多种,操作界面更是千变万化,操作的便利性各有千秋。这不同于个人电脑,CPU除了INTEL就是AMD公司的,操作系统多用Windows。功能、成本、开发效率等条件决定了嵌入式设备的选材多样化,软件、硬件可裁剪,即当不需要某项功能时,可以去除相关的软硬件。
(2)对功能、可靠性、成本、体积、功耗严格要求。
功能、可靠性、功耗这3点是软件开发人员最关注的地方。仍以手机为例,当选定硬件平台之后,处理器的性能已经被限定了,怎样使得手机的操作更人性化、菜单响应更快捷、具备更多更好的功能,这完全取决于软件。需要驱动程序和应用程序配合,最大程度地发挥硬件的性能。
也许读者见过这类手机,它的屏幕总是经过很长时间才熄灭,这使得它的电池很快耗光,只要在编写软件时进行改进,就可能成倍地延长电池的使用时间。一个优秀的嵌入式系统,对硬件性能的“压榨”、对软件的细致调节,已经到了精益求益的地步。有时候甚至为了节省几秒的启时间而大动脑筋,调整程序的启动顺序让耗时的程序稍后运行、改变程序的存储方式以便更快地加载等,甚至通过显示一个进度条让用户觉得时间没那么长。
1.1.2 嵌入式技术的发展历史
嵌入式技术在20世纪70年代起源于微型机,从此之后,通用计算机与嵌入式计算机就走上了两条不同的道路。通用计算机系统的技术要求是高速、海量的数值计算;技术发展方向是总线速度的无限提升,存储容量的无限扩大。 而嵌入式计算机系统的技术要求则是对象的智能化控制能力;技术发展方向是与对象系统密切相关的嵌入性能、控制能力与控制的可靠性。
嵌入式技术的发展日新月异,经历了单片机(SCM)、微控制器(MCU)、系统级芯片(SoC)3个阶段。
1.SCM(Single Chip Microcomputer)
又称单片微型计算机,简称单片机,随着大规模集成电路的出现及其发展,计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上,形成芯片级的计算机。
这个阶段主要是“寻求”单片形态嵌入式系统的最佳体系结构,也是从这个阶段起,嵌入式计算机技术与通用计算机技术走上两条不同的道路。
2.MCU(Micro Controller Unit)
MCU即微控制器阶段的特征是:“满足”各类嵌入式应用,根据对象系统要求扩展各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家的身上。
实际上,MCU、SCM之间的概念在日常工作中并不严格区分,很多时候一概以“单片机”称呼。随着能够运行更复杂软件(比如操作系统)的SoC的出现,“单片机”通常是指不运行操作系统、功能相对单一的嵌入式系统,但这不是绝对的,比如8051上就可以运行RTX51实时操作系统,它的大小只有6kB,相比于嵌入式Linux、Windows CE等操作系统而言比较简单。
3.SoC(System on a Chip)
随着设计与制造技术的发展,集成电路设计从晶体管的集成发展到逻辑门的集成,现在又发展到IP的集成,即SoC(System on a Chip)设计技术。SoC可以有效地降低电子/信息系统产品的开发成本,缩短开发周期,提高产品的竞争力,是未来工业界将采用的最主要的产品开发方式。
虽然SoC一词多年前就已出现,但到底什么是SoC则有各种不同的说法。在经过了多年的争论后,专家们就SoC的定义达成了一致意见。这个定义虽然不是非常严格,但明确地表明了SoC的特征。
① 实现复杂系统功能的VLSI;
② 采用超深亚微米工艺技术;
③ 使用一个以上嵌入式CPU/数字信号处理器(DSP);
④ 外部可以对芯片进行编程;
⑤ 主要采用第三方IP进行设计。
从上述SoC的特征来看,SoC中包含了微处理器/微控制器、存储器以及其他专用功能逻辑,但并不是包含了微处理器、存储器以及其他专用功能逻辑的芯片就是SoC,8051就集成了微处理器、存储器时部件,它不属于SoC。SoC技术被广泛认同的根本原因,并不在于SoC可以集成多少个晶体管,而在于SoC可以用较短时间设计出来,这是SoC的主要价值所在——缩短产品的上市周期。
因此,SoC更合理的定义为:SoC是在一个芯片上由于广泛使用预定制模块IP(Intellectual Property)而得以快速开发的集成电路。
本书介绍的S3C2410/S3C2440就属于SoC,它们集成了处理器、内存管理单元(MMU)、NAND Flash控制器等部件,而处理器是基于ARM公司的IP设计的。
嵌入式软件随着硬件的发展,也发生了很大的变化。在SCM、MCU阶段,嵌入式软件的编写通常由相关行业的电气、电子技术专家编写,计算机专业队伍并没有真正进入单片机应用领域。因此,电子技术应用工程师以自己习惯性的电子技术应用模式从事单片机的应用开发。这种应用模式最重要的特点是:软、硬件的底层性和随意性;对象系统专业技术的密切相关性;缺少计算机工程设计方法。
随着嵌入式处理器性能的快速提高,网络、通信、多媒体技术得以发展,很多嵌入式设备都具备收发邮件、编写文档、视听等功能,计算机专业人士开始进入嵌入式领域。这形成了明显的技术特点:基于操作系统、以网络、通信为主的“非嵌入式底层”应用——除要完成的功能比较特殊、性能比较苛刻外,嵌入式应用软件的开发已经与普通软件开发没有差别。实际上,很多基于操作系统的嵌入式应用程序就是先在PC上模拟验证,最后才移入嵌入式设备的。
以一个简单的例子加以说明:以前基于单片机编写的软件,通常是在main函数中定义一个无限循环,然后在里面查询各类输入事件,并作出相应处理,它直接操作硬件;而基于SoC的软件多是在操作系统上面运行,通过驱动程序操作硬件,这使得软件开发以分工的形式进行。