(1)嵌入式系统与嵌入式处理器:
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机 (personal computer,PC)。
我们将基于嵌入式处理器的非个人计算机应用系统称之为嵌入式系统(Embedded system)。基于嵌入式处理器进行嵌入式系统开发的技术成为嵌入式技术。
在个人领域中,嵌入式产品将主要是个人商用,作为个人移动的数据处理和通讯软件。由于嵌入式设备具有自然的人机交互界面,GUI屏幕为中心的多媒体界面给人很大的亲和力。手写文字输入、语音拨号上网、收发电子邮件以及彩色图形、图像已取得初步成效。如下图:
对于何为嵌入式系统,什么样的技术又可以称之为嵌入式技术,仍在讨论之中,一般认为凡是带有微处理器,且为控制核心的专用软硬件系统都可以称为嵌入式系统。
嵌入式系统一般由嵌入式处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
因此,比较认同的定义是:嵌入式系统就是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
嵌入式系统作为最广泛的计算机应用系统,与传统的通用计算机,数字产品相比,利用嵌入式技术开发的产品有其自己的特点:
(1)嵌入式系统通常是面向特定应用的。
(2)嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,是一门综合技术学科。
(3)嵌入式系统是一个软硬件高度结合的产物。
(4)为适应嵌入式分布处理结构和上网(Internet)需求,嵌入设备必需配有通信接口,如IEEE1394、USB、CAN、Bluetooth、Zigbee或IrDA等通信接口,同时也需要提供相应的通信组网协议软件和物理层驱动软件。
嵌入式系统工程是一门面向嵌入式系统应用的综合性系统工程,它涉及到嵌入式系统的通用技术和基本原理、嵌入式产品开发方法等内容。
包括嵌入式系统的基本概念、开发原理及原则、软件和硬件结构的设计、嵌入式操作系统及网络协议栈的总体架构。
嵌入式系统的组成软硬兼施,有机配合,融为一体,成为产品。
即,嵌入式系统由嵌入式处理器、嵌入式软件和嵌入式操作系统(Embedded Operating System, EOS)及辅助外围电路组成,但要开发工具辅助进行开发。嵌入式系统的核心是嵌入式处理器。
作为系统核心的微处理器又包括单片机(Microcontroller Unit, MCU)、数字信号处理器(Digital Signal Processor, DSP)和微处理器(Microprocessor Unit, MPU)等。
嵌入式处理器是把中央处理器(Central Processing Unit, CPU)、随机存储器(RAM)、程序存储器(PROM或Flash等)、输入/输出端口(I/O)等主要计算机功能部件都集成在一块集成电路芯片上的单片微型计算机。概括的讲:嵌入式微处理是大规模集成电路技术发展的产物,一块芯片就成了一台计算机。 如下图:
当今嵌入式微处理产品琳琅满目,性能各异,但是8位内核嵌入式微处理仍占主要市场,比较流行的8位内核单片机有基于MCS51及改进系列单片机,Atmel(美国爱特梅尔公司)的AVR单片机、Microchip公司的PIC单片机和Motorola公司的68HC系列等。
MOTOROLA是世界上最大的单片机厂商(现在其半导体部已经分离出来,就是Freescale公司),
该公司的嵌入式处理器品种全、选择余地大、新产品多是其特点,在8位机方面有68HC系列, 32位单片机的683XX系列也有几十个品种。近年来,以PowerPC、Coldfire、M.CORE等为CPU,将DSP作为辅助模块集成的嵌入式处理器也纷纷推出,占据嵌入式处理器的很多市场份额。
目前,许多单片机类课程教材都是以MCS51系列为基础来讲授单片机原理及其应用的。这是因为MCS51系列单片机奠定了8位嵌入式处理器的基础,形成了嵌入式处理器的经典体系结构。如下图:
Microchip公司的嵌入式处理器的市场份额增长最块。它的主要产品是16C系列8位单片机,CPU采用RISC结构,仅33条指令,运行速度快,且以低价位著称。 PIC是RISC(Reduced Instruction Set CPU) 嵌入式处理器,具有强抗干扰能力,其引脚具有防瞬态能力,通过限流电阻可以接至220V交流电源,可直接与继电器控制电路相连,无须光电耦合器隔离,给应用带来极大方便。甚至内部有上电复位电路,内建RC振荡器,看门狗定时器,A/D变换电路,功耗低等。
16位嵌入式处理器dsPIC30和dsPIC33系列极具DSP特色。
AVR是ATMEL公司于1997年由A及V生共同研发的RISC单片机,AVR单片机吸取PIC及MCS51系列单片机的优点,采用Harward结构,工作于1MHz时性能高达1MIPS。
TI公司的MSP430 系列嵌入式处理器是一个 16 位的、具有精简指令集的、超低功耗的混合型单片机,在 1996 年问世,由于它具有极低的功耗、丰富的片内外设和方便灵活的开发手段,已成为众多单片机系列中一颗耀眼的新星。
(一)单片机
单片机作为最典型的嵌入式处理器,它的成功应用推动了嵌入式系统的发展。
单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。
单片机的设计目标主要是增强“控制”能力,满足实时控制(就是快速反应)方面的需要。因此,它在硬件结构、指令系统、I/O端口、功率消耗及可靠性等方面均有其独特之处,其最显著的特点之一就是具有非常有效的控制功能。
单片机又常常被人称为微控制器(MCU或μC)。单片机体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
(二)ARM
ARM公司的ARM(Advanced RISC Machines)架构RISC微处理器,基本是32位单片机的行业标准,它提供一系列内核、体系扩展、微处理器和系统芯片方案。如下图:
ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
目前,总共有几十家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG、TI、SONY和NXP这样的大公司。至于软件系统的合伙人,则包括微软、SUN和MRI等一系列知名公司。
尤其是进入21世纪之后,由于手机制造行业的快速发展,出货量呈现爆炸式增长,ARM处理器占领了全球手机市场。
(三)DSP
DSP(digital signal processor)是一种独特的嵌入式处理器,有自己的完整指令系统,尤其是具有专门针对数字信号处理算法优化的指令体系,信号处理能力卓越。
信号与信息处理是电子信息工程专业的核心内容,理所当然,DSP也是电子信息工程专业的重要工具和技能。
1978年,AMI公司发布了世界上第一个单片DSP芯片S2811,但其缺少现代DSP芯片必须有的硬件乘法器;
1980年,日本NEC(日本电气股份有限公司)推出了第一个具有硬件乘法器的商用DSP芯片μPD7720;
1982年,TI公司推出了第一代DSP芯片TMS32010,这是DSP应用历史上的一个里程碑,从此DSP芯片开始得到广泛应用。
TI公司的DSP芯片主要有C2000系列、C5000系列及C6000系列三大主流产品,如下图:
(四)FPGA
FPGA是英文Field Programmable Gate Array(现场可编程门阵列)的缩写,它是在PAL、GAL、PLD等可编程器件的基础上进一步发展的产物,并非是一种处理器。
用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑。它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。
作为专用集成电路(ASIC)领域中的一种半定制电路,FPGA既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。可以毫不夸张的讲,FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的基本逻辑,都可以用FPGA来实现。
FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。
使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此工作时需要对片内的RAM进行编程。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,主要为XILINX (赛灵思)和ALTERA (阿尔特拉) 公司的产品。
随着嵌入式处理器的发展,人们对事物的要求越来越高,嵌入式处理器的应用软件技术也发生了巨大的变化,
从最初的汇编语言,开始演变到C语言开发,不但增加了语言的可读性,结构性,而且对于跨平台的移植也提供了方便,
另外一些复杂的系统开始在嵌入式处理器上采用操作系统,一方面加速了开发人员的开发速度,节约开发成本,另外也为更复杂的实现提供了可能。
现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的嵌入式处理器产品,从8位、16位到32位,数不胜数,应有尽有,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。纵观嵌入式处理器的发展过程,可以预示嵌入式处理器的发展趋势。
嵌入式处理器的发展趋势:
(一)低电压与低功耗——CMOS化
作为嵌入式微处理器的生产工艺,CMOS工艺具有低功耗特点。尤其是,几乎所有的嵌入式处理器都有Wait、Stop等省电运行方式。允许使用的电源电压范围也越来越宽。一般单片机都能在3—6V范围内工作。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS(高性能互补金属氧化物半导体)则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗如电池供电的场合应用。这种工艺将是今后一段时期嵌入式处理器发展的主要途径。
(二)高度集成——单片化
现在常规的嵌入式处理器普遍都是将CPU、随机数据存储(RAM)、程序存储器、并行和串行通信接口,中断系统、定时计数器、A/D转换器、PMW、WDT(看门狗)、时钟电路等集成在一块单一的芯片上。
现在的许多嵌入式处理器都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由嵌入式处理器构成的系统正朝微型化方向发展。
(三)主流与多品种共存
现在虽然嵌入式处理器的品种繁多,各具特色,但仍以MCS51为核心的嵌入式处理器占主流,
而以32位ARM为核的嵌入式处理器正在吞噬嵌入式应用市场。
另一方面,例如Microchip公司的PIC精简指令集嵌入式处理器,中国台湾的嵌入式产品,与其低价质优的优势,占据一定的市场分额。
(四)8位、16位、32位单片机共同发展
这是单片机技术发展的另一个动向。长期以来,单片机技术的发展是以8位机为主的。随着移动通信、网络技术、多媒体技术等高科技产品进入家庭,32位单片机应用得到了长足的发展。尤其是以32位ARM为核的嵌入式处理器发展势头强劲。
(五)单片机的速度越来越快
为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺牲运算速度是单片机技术发展之追求。 一些8051单片机兼容厂商改善了单片机的内部时序,在不提高时钟频率的条件下,使运算速度提高了许多。
有些嵌入式处理器则使用了锁相环技术或内部倍频技术使内部总线速度大大高于时钟频率。
(六)低噪声与高可靠性技术
为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取了一些新的技术措施。如美国国家半导体的COP8单片机内部增加了抗EMI电路,增强了“看门狗”的性能。MOTOROLA也推出了低噪声的LN系列单片机。
(七)OTP与掩膜
OTP是一次性写入的单片机。
过去认为一个单片机产品的成熟是以投产“掩膜型单片机”为标志的。
由于掩膜需要一定的生产周期,而OTP型单片机价格不断下降,使得近年来直接使用OTP完成最终产品制造更为流行。它较之掩膜具有生产周期短、风险小的特点。
(八)MTP向OTP挑战
MTP是可多次编程的意思。一些单片机厂商以MTP的性能、OTP的价位推出他们的单片机,如ATMEL (爱特梅尔)AVR单片机,片内采用FLASH,可多次编程。 华帮公司生产的8051兼容的单片机也采用了MTP性能,OTP的价位。这些单片机都使用了ISP技术,等安装到印刷板线路板上以后再下载程序。
目前低端定位的单片机仍然走俏,但高端的单片机(微处理器)却是风起云涌,单片机应用技术高速发展,已经步人人类社会的各个领域。
嵌入式系统是这个后PC时代的擎天之柱。我们有理由相信,未来的电子技术发展一定与嵌入式系统技术相随相伴。
嵌入式技术是实践性很强的一门技术,有人说“嵌入式是玩出来的”,只有多“玩”,也就是多练习、多实际操作,才能真正掌握它。
(2)嵌入式操作系统与电子设计应用:
计算机是由硬件和软件组成的,缺了任何一样都无法运行。
最初的计算机人们通过各种操作按钮来控制计算机,后来出现了汇编语言,并将它的编译器内置到电脑中,操作人员通过有孔的纸带将程序输入电脑进行编译。
这些将语言内置的电脑只能由操作人员自己编写程序来运行,不利于设备、程序的共用。
为了解决这种问题,就出现了操作系统,这样就很好实现了程序的共用,以及对计算机硬件资源的管理,使人们可以从更高层次对电脑进行操作,而不用关心其底层的运作。
现代的计算机高级应用都是通过操作系统(Operating System)来解释人们的命令,从而达到控制电脑的目的。
操作系统的理论是计算机科学中一个古老而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与核心。
随着嵌入式系统应用范围的不断扩大和嵌入式实时操作系统RTOS(Real Time Operating System)的广泛使用,高级语言编程已是嵌入式系统设计的必然趋势。
因为汇编语言和具体的微处理器的硬件结构密切相关,移植性较差,既不宜在复杂系统中使用,又不便于实现软件重用;
而高级语言具有良好的通用性和丰富的软件支持,便于推广,易于维护。
目前,在嵌入式系统开发过程中使用的语言种类很多,但仅有少数几种语言得到了比较广泛的应用如C/C++和Java等。
首先指出,考察一门语言是否适用,需要从多个方面进行考虑。
不同语言,都有自己的特色。很难将其全面进行比较。另外,任何一门语言的运行特性都与运行环境密切相关,因此,选择语言时,应综合考虑。
C语言是由Dennis Richie(丹尼斯·里奇)于1972年在AT&Bell实验室研究成功并投入使用的系统编程语言。
其设计目标是使C既具有汇编语言的效率,又具有高级语言的易编程性。其最具代表性的应用是UNIX操作系统。
C++是由Bjarne Stroustrup (本贾尼·斯特劳斯特卢普)于1995年在Bell实验室研制成功并投入使用的。C++在支持现代软件工程、OOP(指面向对象程序设计)、结构化等方面对C进行了卓有成效的改进,但在程序代码容量、执行速度、程序复杂程度等方面比C语言程序性能差一些。 如下图是其著作:
Java语言是Sun Microsystems(太阳微系统公司)公司于1995年在Internet上发布的面向对象的程序设计语言。其主要研制人是Gosling(高斯林)。他的目标是设计一个能够运行于规模巨大、地域分布、体系异构的网络环境中的语言系统,完成多个电子设备之间的通讯与协同工作。
Java是网络语言,而嵌入式系统则在功能、价格、体积、功耗、上市时间等方面有特殊要求。因此Java语言受速度和代码容量的限制,本身并不适合于嵌入式系统的应用。
Java是网络语言,而嵌入式系统则在功能、价格、体积、功耗、上市时间等方面有特殊要求。因此Java语言受速度和代码容量的限制,本身并不适合于嵌入式系统的应用。
但Sun公司并不愿意放弃这个发展潜力巨大的应用市场,对Java进行改进后发表了J2ME(Java2 Micro Edition)。它是Java API的一个子集,只包含了Java的关键特性,是专门针对对内存具有苛刻要求的嵌入式系统而设计的。
在控制系统中,Java可以使所有操作在标准Web浏览器提供的面板上完成。
Java不仅是一门语言,更是一种思想。它将使软件开发在设计风格、设计方法、设计目标、设计过程等方面发生根本性变化。
它将成为软件再实现的基础,未来OS的核心,各种应用软件的开发平台和实现环境。
但Java并不是万能的,它有自己的应用范围,在网络管理、网络应用、面向对象的应用、可视化操作、交互式应用领域,Java是优秀的;但在实时控制领域,如火箭控制、传感器控制、宇宙飞行器的方位控制等方面,C语言或汇编语言依然是最佳选择。
操作系统是用户和计算机之间的界面。一方面操作系统管理着所有计算机系统资源,另一方面操作系统为用户提供了一个抽象概念上的计算机。
嵌入式操作系统并不是简单嵌入的操作系统,它与通常意义上的操作系统有一定的区别。
嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、调度工作,控制并协调并发活动,具有一般操作的基本功能,如任务调度、同步机制、中断处理,
同时它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
嵌入式操作系统基本功能
(1) 任务调度——就是决定该轮到哪个任务运行了。多数实时内核是基于优先级调度的,每个任务根据其重要程度的不同被赋予一定的优先级;
(2) 任务管理——建立任务、删除任务、改变任务的优先级、挂起和恢复任务,以及获得有关任务的信息;
(3) 时间管理——用户提供定时中断,也叫时钟节拍来实现延时与超时控制等功能,它是特定的周期性中断。
(4) 任务间的通信与同步——在实际系统的应用中有时需要中断服务与任务间的信息传递,这种信息传递被称为任务间的通信。
(5) 内存管理——在嵌入式系统中,内存配置一般都不大,为了有效利用有限的内存资源,应尽量避免内存碎片的产生。
嵌入式操作系统把连续的大块内存按分区来管理,每个分区中包含有整数个大小相同的内存块,
在一个系统中可以有多个内存分区,用户的应用程序可以从不同的内存分区中得到不同大小的内存块。
嵌入式操作系统特点:
嵌入式操作系统是在嵌入式系统启动后首先执行的一段背景程序,
一般而言,它不同于一般意义的计算机操作系统,嵌入式操作系统具有占用空间小、执行效率高、方便进行个性化定制和软件要求固化存储等特点。
(1)可裁减性——嵌入式系统是针对宿主系统特定功能而设计的,一般不需要操作系统的所有功能,且其硬件资源非常有限,这就要求操作系统可定制、可裁减,以有效减少操作系统所需的存储空间,它一般固化在存储器或者嵌入式处理器中;
(2)高可靠性——可靠性主要有两个方面含义。一是硬件本身要连续稳定运行;二是系统检查出故障后要有保持安全状态的能力。
(3)实时性——实时性指系统对响应时间的严格要求,指能在确定的时间内执行其功能,能对外部的异步事件做出快速正确的响应。
(4)多任务操作系统——一个任务,也称为一个线程,是一个简单的程序。嵌入式应用程序的设计过程包括如何把问题分割成多个任务,多任务的操作系统是嵌入式系统发展的必然要求;
(5)可移植性——所谓移植,就是使一个操作系统内核能在其它的微处理器或微控制器上运行,嵌入式操作系统是针对嵌入式系统特点而设计开发的。
嵌入式Linux:
这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议。
由于其源代码公开,可以任意修改,以满足自己的应用,并且查错也很容易;
遵从GPL,无须为每例应用交纳许可证费,有大量的应用软件可用;
有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的;
软件的开发和维护成本很低;优秀的网络功能,这在Internet时代尤其重要;
稳定是Linux本身具备的一个很大优点;内核精悍,运行所需资源少,十分适合嵌入式应用。
支持的硬件数量庞大,嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件,嵌入式Linux几乎都支持,而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方便。 在嵌入式系统上运行Linux的一个缺点是需要添加实时软件模块,而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。
Android(安卓):
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。
Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持。
目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。
μC/OS-II:
μC/OS-II是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位、16位和32位单片机或DSP。
它是在原版本μC/OS的基础上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。
它的主要特点如下:
(1)公开源代码,很容易就能把操作系统移植到各个不同的硬件平台上;
(2)可移植性,绝大部分源代码是用C语言写的,便于移植到其他微处理器上;
(3)可裁剪性,有选择的使用需要的系统服务,以减少所需的存储空间;
(4)占先式的实时内核,即总是运行就绪条件下优先级最高的任务;
(5)多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法;
(6)可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少;
(7)实用性和可靠性,成功应用该实时内核的实例,是其实用性和可靠性的最好证据。
由于μC/OS-II仅是一个实时内核,这就意味着它不像其他实时系统那样,提供给用户的只是一些API函数接口,还有很多工作需要用户自己去完成。