嵌入式有感由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“嵌入式心得”。
学嵌入式有感
电子技术、计算机技术和网络技术的飞速发展,极大的影响了人们的日常生活,甚至改变了人们的生活模式。人们到处可以见到电子设备的存在,而几乎所有的电子设备中都包含着嵌入式系统。那么嵌入式系统即一般指非 PC 系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
它的应用几乎涉及到了生活中的所有电器设备,如掌上 PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。而大部分的嵌入式系统并不需要操作系统,首先是因为没有必要,例如洗衣机和微波炉等等,它们的功能有限。这样的系统只需要一道控制程序管好几个按键、指示灯和数码管就可以了。其次是因为条件不允许。它们采用4位或8位的微处理器,有的内存少得不到1KB,根本没有操作系统生存的空间。即使要完成一些比较复杂的任务,也只能依靠程序员的技巧去精雕细琢,以弥补硬件条件的不足。随着微电子技术的不断创新和发展,大规模集成电路的集成度和工艺水平不断提高,集成电路工业已经生产了大量低成本、高可靠性和高精度的微电子结构模块,推动了一个全新的技术领域和产业的发展。
嵌入式硬件设计采用了“CPU+PLD+模拟器件”的模式,是指嵌入式系统以中央处理单元(CPU)为基础和中心,外加可编程逻辑器件(PLD)和模拟器件构成(特别小型的嵌入式设计 除外)。CPU主要包括嵌
入式微处理器(MPU)和嵌入式微控制器(MCU),PLD主要包括PAL、EPLD、CPLD、FPGA等。这种设计模式可以大大简化嵌入式系统的软硬件,嵌入式系统总体设计的难度得以降低,而系统总体设计的水平却得到提高。
这种结构是由目前集成电路的发展水平和技术现状决定的。集成电路技术的发展促成 了这种设计模式的出现,微处理器技术和器件可编程技术给嵌入式系统设计人员带来了巨大的方便,它提供了用软件来改变和实现硬件的功能,适合硬件解决的问题由硬件解决,适合软件解决的问题由软件完成。集成电路技术的发展为这种设计模式的出现提供了全方位支持,计算机硬件平台性能的大幅度提高,高性能的EDA综合开发工具(平台)得到长足发展,为复杂的嵌入式系统设计者提供了不同用途和不同级别集编辑、布局、布线、编译、综合、模拟、测试、验证和器件编程等一体化的集成开发环境。集成电路技术的技术现状决定设计模式不能抛开模拟器件,现阶段模数混合的集成电路很难设计生产,模数和数模转换器等模拟电路还只能采用传统的设计方法。
而嵌入式的核心是嵌入式微处理器。嵌入式微处理器一般具备 四个特点:(1)对实时和多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时操作系统的执行时间减少到最低限度;(2)具有功能很强的存储区保护功能,这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断;(3)可扩展的处理器结构,以能迅速地扩展出满足应用的高性能的嵌入式微处理器;(4)嵌
入式微处理器的功耗必须很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,功耗只能为 m W 甚至μ W 级。
我们知道嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等 Browser。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
一般情况下,嵌入式操作系统可以分为两类,一类是面向控制、通信等领域的实时操作系统,如 WindRiver 公司的 VxWorks、ISI 的 pSOS、QNX 系统软件公司的 QNX、ATI 的 Nucleus 等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、WebPhone等。
对于非实时操作系统我们了解到早期的嵌入式系统中都没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备。在这种情况下,通常把嵌入式程序分成两部分,即前台程序和后台程序。前台程序通过中段来处理事件,其结构一般为无限循环;后台程序则掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。这就是通常所说的前后台系统。一般情况下,后台程序也叫任务级程序,前台程序也叫事件处理级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。对于实时性要求特别严格的操作通常由中断来完成,仅在中断服务程序中标记事件的发生,不再做任何工作就退出中断,经过后台程序的调度,转由前台程序完成事件的处理,这样就不会造成在中断服务程序中处理费时的事件而影响后续和其他中断。
实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的任务具有相同的优先级别,即是平等的,而且任务的执行又是通过 FIFO 队列排队,因而对那些实时性要求高的任务不可能立刻得到处理。另外,由于前台程序是一个无限循环的结构,一旦在这个循环体中正在处理的任务崩溃,使得整个任务队列中的其他任务得不到机会被处理,从而造成整个系统的崩溃。由于这类系统结构简单,几乎不需要 RAM/ROM 的额外开销,因而在简单的嵌入式应用被广泛使用。
而对于实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。“在确定的时间内”是该定义的核心。也就是说,实时系统是对响应时间有严格要求的。
实时系统对逻辑和时序的要求非常严格,如果逻辑和时序出现偏差将会引起严重后果。实时系统有两种类型:软实时系统和硬实时系统。软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成;而在硬实时系统中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理。通常大多数实时系统是两者的结合。实时应用软件的设计一般比非实时应用软件的设计困难。实时系统的技术关键是如何保证系统的实时性。
实时多任务操作系统是指具有实时性、能支持实时控制系统工作的操作系统。其首要任务是调度
一切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制和要求。实时操作系统具有如下功能:任务管理(多任务和基于优先级的任务调度)、任务间同步和通信(信号量和邮箱等)、存储器优化管理(含 ROM 的管理)、实时时钟服务、中断管理服务。实时操作系统具有如下特点:规模小,中断被屏蔽的时间很短,中断处理时间短,任务切换很快。
实时操作系统可分为可抢占型和不可抢占型两类。对于基于优先级的系统而言,可抢占型实时操作系统是指内核可以抢占正在运行任务的 CPU 使用权并将使用权交给进入就绪态的优先级更高的任务,是内核抢了 CPU 让别的任务运行。不可抢占型实时操作系统使用某种算法并决定让某个任务运行后,就把 CPU 的控制权完全交给了该任务,直到它主动将 CPU 控制权还回来。中断由中断服务程序来处理,可以激活一个休眠态的任务,使之进入就绪态;而这个进入就绪态的任务还不能运行,一直要等到当前运行的任务主动交出 CPU 的控制权。使用这种实时操作系统的实时性比不使用实时操作系统的系统性能好,其实时性取决于最长任务的执行时间。不可抢占型实时操作系统的缺点也恰恰是这一点,如果最长任务的执行时间不能确定,系统的实时性就不能确定。
可抢占型实时操作系统的实时性好,优先级高的任务只要具备了运行的条件,或者说进入了就绪态,就可以立即运行。也就是说,除了优先级最高的任务,其他任务在运行过程中都可能随时被比它优先级高的任务中断,让后者运行。通过这种方式的任务调度保证了系统的实时性,但是,如果任务之间抢占 CPU 控制权处理不好,会产生系统崩溃、死机等严重后果。
嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。
首先,嵌入式实时操作系统提高了系统的可靠性。在控制系统中,出于安全方面的考虑,要求系统起码不能崩溃,而且还要有自愈能力。不仅要求在硬件设计方面提高系统的可靠性和抗干扰性,而且也应在软件设计方面提高系统的抗干扰性,尽可能地减少安全漏洞和不可靠的隐患。长期以来的前后台系统软件设计在遇到强干扰时,使得运行的程序产生异常、出错、跑飞,甚至死循环,造成了系统的崩溃。而实时操作系统管理的系统,这种干扰可能只是引起若干进程中的一个被破坏,可以通过系统运行的系统监控进程对其进行修复。通常情况下,这个系统监视进程用来监视各进程运行状况,遇到异常情况时采取一些利于系统稳定可靠的措施,如把有问题的任务清除掉。
其次,提高了开发效率,缩短了开发周期。在嵌入式实时操作系统环境下,开发一个复杂的应用程序,通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试环境。再次,嵌入式实时操作系统充分发挥了 32 位 CPU 的多任务潜力。32 位 CPU 比 8、16 位 CPU 快,另外它本来是为运行多用户、多任务操作系统而设计的,特别适于运行多任务实时系统。32 位 CPU 采用利于提高系统可靠性和稳定性的设计,使其更容易做到不崩溃。例如,CPU 运行状态分为系统态和用户态。将系统堆栈和用户堆栈分开,以及实时地给出 CPU 的运行状态等,允许用户在系统设计中从硬件和软件两方面对实时内核的运行实施保护。如果还是采用以前的前后台方式,则无法发挥 32 位 CPU 的优势。
从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把 CPU 嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。
当然嵌入式实时性操作系统也有其缺点,在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。但是,使用嵌入式实时操作系统还需要其额外的 ROM/RAM 开销。
通过对嵌入式系统的认识,我们也了解到了很多其有关的知识,有机构估计,全世界嵌入式系统产品潜在的市场将超过1万亿美元。随着技术的发展,业内对嵌入式系统的定义也越来越清晰。它是微处理器、大规模集成电路、软件技术和各种具体的行业应用技术相结合的结果,其中各种软件技术占了嵌入式系统80%的工作量。嵌入式系统不同于一般PC 机上的应用系统,即使是针对不同的具体应用而设计的嵌入式系统之间的差别也很大。嵌入式系统一般功能单
一、简单,且在兼容性方面要求不高,但是在大小、成本方面限制较多。可以说,嵌入式系统是不可垄断、需要不断创新的技术。