如何区分嵌入式系统和嵌入式操作系统

一 什么是嵌入式系统 

嵌入式系统一般指非pc系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中 心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一 体,类似于pc中bios的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理 器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。 

嵌入式系统几乎包括了生活中的所有电器设备,如掌上pda、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。 

嵌入式系统的硬件部分,包括处理器/微处理器、存储器及外设器件和i/o端口、图形控制器 等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用eprom、eeprom或闪存 (flash memory)作为存储介质。软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程。应用程序控制着系统的运作和行为;而操作 系统控制着应用程序编程与硬件的交互作用。 

二 嵌入式处理器 

嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般具备4个特点:(1)对实时和多任务 有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时操作系统的执行时间减少到最低限度;(2)具有功能很强的存储区保护功 能,这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断;(3) 可扩展的处理器结构,以能迅速地扩展出满足应用的高性能的嵌入式微处理器;(4)嵌入式微处理器的功耗必须很低,尤其是用于便携式的无线及移动的计算和通 信设备中靠电池供电的嵌入式系统更是如此,功耗只能为mw甚至μw级。 

据不完全统计,目前全世界嵌入式处理器的品种总量已经超过1000种,流行的体系结构有30 多个系列。其中8051体系占多半,生产这种单片机的半导体厂家有20多个,共350多种衍生产品,仅philips就有近100种。现在几乎每个半导体 制造商都生产嵌入式处理器,越来越多的公司有自己的处理器设计部门。嵌入式处理器的寻址空间一般从64kb到16mb,处理速度为 0.1~2000mips,常用封装8~144个引脚。 

根据现状,嵌入式计算机可分成下面几类: 

(1)嵌入式微处理器(embedded microprocessor unit, empu) 

嵌入式微处理器采用“增强型”通用微处理器。由于嵌入式系统通常应用于环境比较恶劣的环境 中,因而嵌入式微处理器在工作温度、电磁兼容性以及可靠性方面的要求较通用的标准微处理器高。但是,嵌入式微处理器在功能方面与标准的微处理器基本上是一 样的。根据实际嵌入式应用要求,将嵌入式微处理器装配在专门设计的主板上,只保留和嵌入式应用有关的主板功能,这样可以大幅度减小系统的体积和功耗。和工 业控制计算机相比,嵌入式微处理器组成的系统具有体积小、重量轻、成本低、可靠性高的优点,但在其电路板上必须包括rom、ram、总线接口、各种外设等 器件,从而降低了系统的可靠性,技术保密性也较差。由嵌入式微处理器及其存储器、总线、外设等安装在一块电路主板上构成一个通常所说的单板机系统。嵌入式 处理器目前主要有am186/88、386ex、sc-400、power pc、68000、mips、arm系列等。 

(2)嵌入式微控制器(microcontroller unit, mcu) 

嵌入式微控制器又称单片机,它将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某种 微处理器内核为核心,根据某些典型的应用,在芯片内部集成了rom/eprom、ram、总线、总线逻辑、定时/计数器、看门狗、i/o、串行口、脉宽调 制输出、a/d、d/a、flash ram、eeprom等各种必要功能部件和外设。为适应不同的应用需求,对功能的设置和外设的配置进行必要的修改和 裁减定制,使得一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都相同,不同的是存储器和外设的配置及功能的设置。这样可以使单片机最大限度 地和应用需求相匹配,从而减少整个系统的功耗和成本。和嵌入式微处理器相比,微控制器的单片化使应用系统的体积大大减小,从而使功耗和成本大幅度下降、可 靠性提高。由于嵌入式微控制器目前在产品的品种和数量上是所有种类嵌入式处理器中最多的,而且上述诸多优点决定了微控制器是嵌入式系统应用的主流。微控制 器的片上外设资源一般比较丰富,适合于控制,因此称为微控制器。通常,嵌入式微处理器可分为通用和半通用两类,比较有代表性的通用系列包括8051、 p51xa、mcs-251、mcs-96/196/296、c166/167、68300等。而比较有代表性的半通用系列,如支持usb接口的 mcu 8xc930/931、c540、c541;支持i2c、can总线、lcd等的众多专用mcu和兼容系列。目前mcu约占嵌入式系统市场份额的 70%。 

(3)嵌入式dsp处理器(embedded digital signal processor, edsp) 

在数字信号处理应用中,各种数字信号处理算法相当复杂,这些算法的复杂度可能是o(nm) 的,甚至是np的,一般结构的处理器无法实时的完成这些运算。由于dsp处理器对系统结构和指令进行了特殊设计,使其适合于实时地进行数字信号处理。在数 字滤波、fft、谱分析等方面,dsp算法正大量进入嵌入式领域,dsp应用正从在通用单片机中以普通指令实现dsp功能,过渡到采用嵌入式dsp处理 器。嵌入式dsp处理器有两类:(1)dsp处理器经过单片化、emc改造、增加片上外设成为嵌入式dsp处理器,ti的 tms320c2000/c5000等属于此范畴;(2)在通用单片机或soc中增加dsp协处理器,例如intel的mcs-296和infineon (siemens)的tricore。另外,在有关智能方面的应用中,也需要嵌入式dps处理器,例如各种带有智能逻辑的消费类产品,生物信息识别终端, 带有加解密算法的键盘,adsl接入、实时语音压解系统,虚拟现实显示等。这类智能化算法一般都是运算量较大,特别是向量运算、指针线性寻址等较多,而这 些正是dsp处理器的优势所在。嵌入式dsp处理器比较有代表性的产品是ti的tms320系列和motorola的dsp56000系列。tms320 系列处理器包括用于控制的c2000系列、移动通信的c5000系列,以及性能更高的c6000和c8000系列。dsp56000目前已经发展成为 dsp56000、dsp56100、dsp56200和dsp56300等几个不同系列的处理器。另外,philips公司最近也推出了基于可重置嵌入 式dsp结构,采用低成本、低功耗技术制造的r. e. a. l dsp处理器,其特点是具备双harvard结构和双乘/累加单元,应用目标是大批量 消费类产品。 

(4)嵌入式片上系统(system on chip, soc) 

随着edi的推广和vlsi设计的普及化,以及半导体工艺的迅速发展,可以在一块硅片上实现 一个更为复杂的系统,这就产生了soc技术。各种通用处理器内核将作为soc设计公司的标准库,和其他许多嵌入式系统外设一样,成为vlsi设计中一种标 准的器件,用标准的vhdl、verlog等硬件语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作 样品。这样除某些无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简单,对于减小整个应用系统体积和功 耗、提高可靠性非常有利。soc可分为通用和专用两类,通用soc如infineon(siemens)的tricore、motorola的m- core,以及某些arm系列器件,如echelon和motorola联合研制的neuron芯片等;专用soc一般专用于某个或某类系统中,如 philips的smart xa,它将xa单片机内核和支持超过2048位复杂rsa算法的ccu单元制作在一块硅片上,形成一个可加载java或c语 言的专用soc,可用于互联网安全方面。 

三 嵌入式操作系统 

嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系 统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等browser。嵌入式操作系 统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库 函数、驱动程序、工具集以及应用程序 。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具 有较为突出的特点。

1. 嵌入式操作系统的种类 

一般情况下,嵌入式操作系统可以分为两类,一类是面向控制、通信等领域的实时操作系统,如 windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时 操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等。 

a. 非实时操作系统 

早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备。在 这种情况下,通常把嵌入式程序分成两部分,即前台程序和后台程序。前台程序通过中段来处理事件,其结构一般为无限循环;后台程序则掌管整个嵌入式系统软、 硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。这就是通常所说的前后台系统。一般情况下,后台程序也叫任务级程序,前台程序也叫事件处理 级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。对于实时性要求特别严格的操作通常由中断来完成,仅 在中断服务程序中标记事件的发生,不再做任何工作就退出中断,经过后台程序的调度,转由前台程序完成事件的处理,这样就不会造成在中断服务程序中处理费时 的事件而影响后续和其他中断。 

实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的任务具有相同的优先 级别,即是平等的,而且任务的执行又是通过fifo队列排队,因而对那些实时性要求高的任务不可能立刻得到处理。另外,由于前台程序是一个无限循环的结 构,一旦在这个循环体中正在处理的任务崩溃,使得整个任务队列中的其他任务得不到机会被处理,从而造成整个系统的崩溃。由于这类系统结构简单,几乎不需要 ram/rom的额外开销,因而在简单的嵌入式应用被广泛使用。 

b. 实时操作系统 

实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。“在确定的时间内”是该定义的核心。也就是说,实时系统是对响应时间有严格要求的。 

实时系统对逻辑和时序的要求非常严格,如果逻辑和时序出现偏差将会引起严重后果。实时系统有 两种类型:软实时系统和硬实时系统。软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成;而在硬实时系统中,不仅要求任务响应 要实时,而且要求在规定的时间内完成事件的处理。通常,大多数实时系统是两者的结合。实时应用软件的设计一般比非实时应用软件的设计困难。实时系统的技术 关键是如何保证系统的实时性。 

实时多任务操作系统是指具有实时性、能支持实时控制系统工作的操作系统。其首要任务是调度一 切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制和要求。实时操作系统具有如下功能:任务管理(多 任务和基于优先级的任务调度)、任务间同步和通信(信号量和邮箱等)、存储器优化管理(含rom的管理)、实时时钟服务、中断管理服务。实时操作系统具有 如下特点:规模小,中断被屏蔽的时间很短,中断处理时间短,任务切换很快。 

实时操作系统可分为可抢占型和不可抢占型两类。对于基于优先级的系统而言,可抢占型实时操作 系统是指内核可以抢占正在运行任务的cpu使用权并将使用权交给进入就绪态的优先级更高的任务,是内核抢了cpu让别的任务运行。不可抢占型实时操作系统 使用某种算法并决定让某个任务运行后,就把cpu的控制权完全交给了该任务,直到它主动将cpu控制权还回来。中断由中断服务程序来处理,可以激活一个休 眠态的任务,使之进入就绪态;而这个进入就绪态的任务还不能运行,一直要等到当前运行的任务主动交出cpu的控制权。使用这种实时操作系统的实时性比不使 用实时操作系统的系统性能好,其实时性取决于最长任务的执行时间。不可抢占型实时操作系统的缺点也恰恰是这一点,如果最长任务的执行时间不能确定,系统的 实时性就不能确定。 

可抢占型实时操作系统的实时性好,优先级高的任务只要具备了运行的条件,或者说进入了就绪 态,就可以立即运行。也就是说,除了优先级最高的任务,其他任务在运行过程中都可能随时被比它优先级高的任务中断,让后者运行。通过这种方式的任务调度保 证了系统的实时性,但是,如果任务之间抢占cpu控制权处理不好,会产生系统崩溃、死机等严重后果。 

2. 嵌入式操作系统的发展 

嵌入式操作系统伴随着嵌入式系统的发展经历了4个比较明显的阶段。 

第一阶段是无操作系统的嵌入算法阶段,是以单芯片为核心的可编程控制器形式的系统,同时具有 与监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控 制,运行结束后清除内存。这一阶段系统的主要特点是:系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用 简便、价格很低,以前在国内工业领域应用较为普遍,但是已经远远不能适应高效的、需要大容量存储介质的现代化工业控制和新兴的信息家电等领域的需求。 

第二阶段是以嵌入式cpu为基础、以简单操作系统为核心的嵌入式系统。这一阶段系统的主要特 点是:cpu种类繁多,通用性比较差;系统开销小, 效率高;一般配备系统仿真器,操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友 好;系统主要用来控制系统负载以及监控应用程序运行。 

第三阶段是通用的嵌入式实时操作系统阶段,是以嵌入式操作系统为核心的嵌入式系统。这一阶段 系统的主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;具备文件和目 录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口(api),开发应用程序简单;嵌入式应用软件丰富。 

第四阶段是以基于internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。目前大 多数嵌入式系统还孤立于internet之外,但随着internet的发展以及internet技术与信息家电、工业控制技术等结合日益密切,嵌入式设 备与internet的结合将代表着嵌入式技术的真正未来。 

3. 使用实时操作系统的必要性 

嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。 

首先,嵌入式实时操作系统提高了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统 起码不能崩溃,而且还要有自愈能力。不仅要求在硬件设计方面提高系统的可靠性和抗干扰性,而且也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏 洞和不可靠的隐患。长期以来的前后台系统软件设计在遇到强干扰时,使得运行的程序产生异常、出错、跑飞,甚至死循环,造成了系统的崩溃。而实时操作系统管 理的系统,这种干扰可能只是引起若干进程中的一个被破坏,可以通过系统运行的系统监控进程对其进行修复。通常情况下,这个系统监视进程用来监视各进程运行 状况,遇到异常情况时采取一些利于系统稳定可靠的措施,如把有问题的任务清除掉。 

其次,提高了开发效率,缩短了开发周期。在嵌入式实时操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试环境。 

再次,嵌入式实时操作系统充分发挥了32位cpu的多任务潜力。32位cpu比8、16位 cpu快,另外它本来是为运行多用户、多任务操作系统而设计的,特别适于运行多任务实时系统。32位cpu采用利于提高系统可靠性和稳定性的设计,使其更 容易做到不崩溃。例如, cpu运行状态分为系统态和用户态。将系统堆栈和用户堆栈分开,以及实时地给出cpu的运行状态等,允许用户在系统设计中从硬件 和软件两方面对实时内核的运行实施保护。如果还是采用以前的前后台方式,则无法发挥32位cpu的优势。 

从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把cpu嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。 

4. 实时操作系统的优缺点 

在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就 可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过 有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。 

但是,使用嵌入式实时操作系统还需要额外的rom/ram开销,2~5%的cpu额外负荷,以及内核的费用。

 

韦东山老师为啥要录升级版嵌入式视频? 200x年左右,嵌入式Linux在全世界、在中国刚刚兴起。 我记得我2005年进入中兴时,全部门的人正在努力学习Linux。 在2008年,我写了一本书《嵌入式Linux应用开发完全手册》。 它的大概内容是:裸机、U-boot、Linux内核、Linux设备驱动。 那时还没有这样讲解整个系统的书, 芯片厂家Linux开发包也还不完善,从bootloader到内核,再到设备驱动都不完善。 有全系统开发能力的人也很少。 于是这书也就恰逢其时,变成了畅销书。 我也根据这个思路录制了视频:裸机、U-boot、Linux内核、Linux设备驱动。 收获些许名声,带领很多人进入Linux世界。11年过去了,嵌入式Linux世界发生了翻天覆地的变化 ① 基本系统能用 芯片厂家都会提供完整的U-boot、Linux内核、芯片上硬件资源的驱动。 方案厂家会做一些定制,比如加上某个WIFI模块,会添加这个WIFI模块的驱动。 你可以使用厂家的原始方案,或是使用/借鉴方案商的方案,做出一个“能用”的产品。 ② 基础驱动弱化;高级驱动专业化 基础的驱动,比如GPIO、UART、SPI、I2C、LCD、MMC等,有了太多的书籍、视频、示例代码,修修改改总是可以用的。 很多所谓的驱动工程师,实际上就是“调参工程师”。 我们群里有名的火哥,提出了一个概念:这些驱动就起一个“hardware enable”的作用。 高级的驱动,比如USB、PCIE、HDMI、MIPI、GPU、WIFI、蓝牙、摄像头、声卡。 体系非常复杂,很少有人能讲清楚,很多时候只是一笔带过。 配置一下应用层工具就了事,能用就成。 这些高级驱动,工作中需要专门的人来负责,非常专业。 他们是某一块的专家,比如摄像头专家、音频专家。 ③ 项目为王 你到一个公司,目的是把产品做出来,会涉及APP到内核到驱动全流程。 中小公司玩不起华为中兴的配置,需要的是全面手。 大公司里,只负责很小很小一块的镙丝钉,位置也不太稳固啊。 所以,如果你不是立志成为某方面的专家,那就做一个全栈工程师吧。 ④ 调试很重要 都说代码是3分写7分调,各种调试调优技术,可以为你的升职加薪加一把火。 基于上述4点,我录制的全新视频将有这些特点: 1. 快速入门, 2. 实战项目, 3. 驱动大全, 4. 专题, 5. 授人以渔, 6. 要做任务 另外,我们会使用多款芯片同时录制,先讲通用的原理,再单独讲各个板子的操作。 这些芯片涵盖主流芯片公司的主流芯片,让你学习工作无缝对接。 1.快速入门 入门讲究的是快速,入门之后再慢慢深入, 特别是对于急着找工作的学生,对于业余时间挑灯夜读的工作了的人,一定要快! 再从裸机、U-boot、内核、驱动这样的路线学习就不适合了,时间就拉得太长了。 搞不好学了后面忘了前面。 并且实际工作中并不需要你去弄懂U-boot,会用就行:U-boot比驱动还复杂。 讲哪些内容? 怎么讲呢? 混着讲 比如先讲LED APP,知道APP怎么调用驱动,再讲LED硬件原理和裸机,最后讲驱动的编写。 这样可以快速掌握嵌入式Linux的整套开发流程, 不必像以前那样光学习裸机就花上1、2个月。 而里面的裸机课程,也会让你在掌握硬件操作的同时,把单片机也学会了。 讲基础技能 中断、休眠-唤醒、异步通知、阻塞、内存映射等等机制,会配合驱动和APP来讲解。 这些技能是嵌入式Linux开发的基础。 而这些驱动,只会涉及LED、按制、LCD等几个驱动。 掌握了这些输入、输出的驱动和对应的APP后,你已经具备基本的开发能力了。 讲配置 我们从厂家、从方案公司基本上都可以拿到一套完整的开发环境,怎么去配置它? 需要懂shell和python等配置脚本。 效果效率优先 以前我都是现场写代码、现场写文档,字写得慢,降低了学习效率。 这次,效果与效率统一考虑,不再追求所有东西都现场写。 容易的地方可先写好代码文档,难的地方现场写。 2.实战项目 会讲解这样的涉及linux网关/服务器相关项目(不限于,请多提建议):                      定位为:快速掌握项目开发经验,丰满简历。 涉及的每一部分都会讲,比如如果涉及蓝牙,在这里只会讲怎么使用,让你能写出程序;如果要深入,可以看后面的蓝牙专题。 3. 驱动大全 包括基础驱动、高级驱动。 这些驱动都是独立成章,深入讲解。 虽然基础驱动弱化了,但是作为Linux系统开发人员,这是必备技能,并且从驱动去理解内核是一个好方法。 在讲解这些驱动时,会把驱动的运行环境,比如内核调度,进程线程等概念也讲出来,这样就可以搭建一个知识体系。 没有这些知识体系的话,对驱动的理解就太肤浅了,等于在Linux框架下写裸机,一叶障目,不见泰山。 定位为:工具、字典,用到再学习。 4. 专题 想深入学习的任何内容,都可独立为专题。 比如U-boot专题、内核内存管理专题、systemtap调试专题。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页