嵌入式系统及操作系统介绍
嵌入式系统及操作系统介绍嵌入式系统简介
"嵌入式系统"一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可缩扩的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统;主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成。
与通用型计算机系统相比,嵌入式系统功耗低、可靠性高;功能强大、性能价格比高;实时性强,支持多任务;占用空间小,效率高;面向特定应用,可根据需要灵活定制。
嵌入式系统应用广泛: 几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等
嵌入式系统中操作系统介绍
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等Browser。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序
。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
一般情况下,嵌入式操作系统可以分为两类,一类是面向控制、通信等领域的实时操作系统,如WindRiver公司的VxWorks、ISI的pSOS、QNX系统软件公司的QNX、ATI的Nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、WebPhone等。目前RTLinux以免费软件的特点越来越被大家重视。
就市场占有率总体说来,目前国内以在嵌入式领域主要使用的操作系统有PSOS、VxWorks、LynxOS、WinCE、Linux、PalmOS。目前VxWorks、WinCE、PalmOS在嵌入式领域中市场占有率比较高。但是大多数人认为未来的主流将是Linux,毕竟它式免费的,这里有一份CCID的调查,在这份关于未来三年嵌入式领域首选操作系统的调查中,Linux以54.8%排在各操作系统的首位。
嵌入式系统及操作系统重要概念
上下文切换(Context Switching)
多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件,当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境。上下文的内容依赖于具体的CPU。
确定性(Deterministic)
实时操作系统中,在一定的条件下,系统调用的运行时间可以预测。这并不是指所有系统调用都总是执行一个固定长度的时间,而是指不论系统负载如何,系统调用的最大执行时间可以确定。
硬实时(Hard Real-Time)系统
硬实时系统对系统响应时间有严格要求,一旦系统响应时间不能满足,就会引起系统崩溃或致命的错误。
中断延迟(Interrupt Latency)
中断延迟是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。
互斥(Mutual Exclusion)
互斥是用来控制多任务对共享数据进行串行访问的同步机制。在多任务应用中,当两个或多个任务同时访问共享数据时,可能会造成数据破坏。互斥使它们串行地访问数据,从而达到保护数据的目的。
抢占(Preemptive)
抢占是指当系统处于核心态运行时,
允许任务的重新调度。换句话说就是指正在执行的任务可以被打断,让另一个任务运行。抢占提高了应用对异步事件的响应性能力。操作系统内核可抢占,并不是说任务调度在任何时候都可以发生。例如当一个任务正在通过一个系统调用访问共享数据时,重新调度和中断都被禁止。
优先级驱动(Priority-Driven)
优先级驱动是指多任务系统中,当前运行任务总是具有最高优先级的就绪任务。
优先级反转(Priority Inversion)
优先级反转是指一个任务等待比它优先级低的任务释放资源而被阻塞,如果这时有中等优先级的就绪任务,阻塞会进一步恶化。优先级继承技术可用来解决优先级反转问题。
优先级继承(Priority Inheritance)
优先级继承可用来解决优先级反转问题。当优先级反转发生时,优先级较低的任务被暂时地提高它的优先级,使得该任务能尽快执行,释放出优先级较高的任务所需要的资源。
实时执行体(Real-Time Executive)
实时执行程序包括一套支持实时系统所必需的机制。如多任务支持,CPU调度,通信和存储分配。在嵌入式应用中,这一套机制被称为实时执行体或实时操作系统内核。OS就是一个实时执行体。编程者以实时执行体为基础来构造自己应用。
重调度过程(Rescheduling Procedure)
重调度过程是判定任务优先级和执行状态的过程。OS的系统调用引起任务状态变化时,就会执行这个过程。如果当前运行任务不是最高优先级的就绪任务,重调度过程就会发生。
调度延迟(Scheduling Latency)
调度延迟是指当一个事件引起更高优先级的任务就绪到这个任务开始运行之间的时间。即一个任务被触发后,由就绪到运行的时间。
可剪裁的体系结构(Scalable Architecture)
可剪裁的体系结构是指一个软件系统能够支持多种应用而无需在接口上做很大的变动。因此, 开发出成本低、品种多的产品。
任务(Tasks)
任务是OS中独立运行的单元。
任务上下文(Task Context)
任务上下文是指任务运行的环境。例如,针对x86的CPU,任务上下文可包括程序计数器、堆栈指针、通用寄存器的内容。 一、指针表和数字表的选用:
1、指针表读取精度较差,但指针摆动的过程比较直观,其摆动速度幅度有时也能比较客观地反映了被测量的大小(比如测电视机数据总线(SDL)在传送数据时的轻微抖动);数字表读数直观,但数字变化的过程看起来很杂乱,不太容易观看。
2、指针表内一般有两块电池,一块低电压的1.5V,一块是高电压的9V或15V,其黑表笔相对红表笔来说是正端。数字表则常用一块6V或9V的电池。在电阻档,指针表的表笔输出电流相对数字表来说要大很多,用R×1Ω档可以使扬声器发出响亮的“哒”声,用R×10kΩ档甚至可以点亮发光二极管(LED)。
3、在电压档,指针表内阻相对数字表来说比较小,测量精度相比较差。某些高电压微电流的场合甚至无法测准,因为其内阻会对被测电路造成影响(比如在测电视机显像管的加速级电压时测量值会比实际值低很多)。数字表电压档的内阻很大,至少在兆欧级,对被测电路影响很小。但极高的输出阻抗使其易受感应电压的影响,在一些电磁干扰比较强的场合测出的数据可能是虚的。
4、总之,在相对来说大电流高电压的模拟电路测量中适用指针表,比如电视机、音响功放。在低电压小电流的数字电路测量中适用数字表,比如BP机、手机等。不是绝对的,可根据情况选用指针表和数字表。
二、测量技巧(如不作说明,则指用的是指针表):
1、测喇叭、耳机、动圈式话筒:用R×1Ω档,任一表笔接一端,另一表笔点触另一端,正常时会发出清脆响量的“哒”声。如果不响,则是线圈断了,如果响声小而尖,则是有擦圈问题,也不能用。
2、测电容:用电阻档,根据电容容量选择适当的量程,并注意测量时对于电解电容黑表笔要接电容正极。①、估测微波法级电容容量的大小:可凭经验或参照相同容量的标准电容,根据指针摆动的最大幅度来判定。所参照的电容不必耐压值也一样,只要容量相同即可,例如估测一个100μF/250V的电容可用一个100μF/25V的电容来参照,只要它们指针摆动最大幅度一样,即可断定容量一样。②、估测皮法级电容容量大小:要用R×10kΩ档,但只能测到1000pF以上的电容。对1000pF或稍大一点的电容,只要表针稍有摆动,即可认为容量够了。③、测电容是否漏电:对一千微法以上的电容,可先用R×10Ω档将其快速充电,并初步估测电容容量,然后改到R×1kΩ档继续测一会儿,这时指针不应回返,而应停在或十分接近∞处,否则就是有漏电现象。对一些几十微法以下的定时或振荡电容(比如彩电开关电源的振荡电容),对其漏电特性要求非常高,只要稍有漏电就不能用,这时可在R×1kΩ档充完电后再改用R×10kΩ档继续测量,同样表针应停在∞处而不应回返。
3、在路测二极管、三极管、稳压管好坏:因为在实际电路中,三极管的偏置电阻或二极管、稳压管的周边电阻一般都比较大,大都在几百几千欧姆以上,这样,我们就可以用万用表的R×10Ω或R×1Ω档来在路测量PN结的好坏。在路测量时,用R×10Ω档测PN结应有较明显的正反向特性(如果正反向电阻相差不太明显,可改用R×1Ω档来测),一般正向电阻在R×10Ω档测时表针应指示在200Ω左右,在R×1Ω档测时表针应指示在30Ω左右(根据不同表型可能略有出入)。如果测量结果正向阻值太大或反向阻值太小,都说明这个PN结有问题,这个管子也就有问题了。这种方法对于维修时特别有效,可以非常快速地找出坏管,甚至可以测出尚未完全坏掉但特性变坏的管子。比如当你用小阻值档测量某个PN结正向电阻过大,如果你把它焊下来用常用的R×1kΩ档再测,可能还是正常的,其实这个管子的特性已经变坏了,不能正常工作或不稳定了。
4、测电阻:重要的是要选好量程,当指针指示于1/3~2/3满量程时测量精度最高,读数最准确。要注意的是,在用R×10k电阻档测兆欧级的大阻值电阻时,不可将手指捏在电阻两端,这样人体电阻会使测量结果偏小。
5
、测稳压二极管:我们通常所用到的稳压管的稳压值一般都大于1.5V,而指针表的R×1k以下的电阻档是用表内的1.5V电池供电的,这样,用R×1k以下的电阻档测量稳压管就如同测二极管一样,具有完全的单向导电性。但指针表的R×10k档是用9V或15V电池供电的,在用R×10k测稳压值小于9V或15V的稳压管时,反向阻值就不会是∞,而是有一定阻值,但这个阻值还是要大大高于稳压管的正向阻值的。如此,我们就可以初步估测出稳压管的好坏。但是,好的稳压管还要有个准确的稳压值,业余条件下怎么估测出这个稳压值呢?不难,再去找一块指针表来就可以了。方法是:先将一块表置于R×10k档,其黑、红表笔分别接在稳压管的阴极和阳极,这时就模拟出稳压管的实际工作状态,再取另一块表置于电压档V×10V或V×50V(根据稳压值)上,将红、黑表笔分别搭接到刚才那块表的的黑、红表笔上,这时测出的电压值就基本上是这个稳压管的稳压值。说“基本上”,是因为第一块表对稳压管的偏置电流相对正常使用时的偏置电流稍小些,所以测出的稳压值会稍偏大一点,但基本相差不大。这个方法只可估测稳压值小于指针表高压电池电压的稳压管。如果稳压管的稳压值太高,就只能用外加电源的方法来测量了(这样看来,我们在选用指针表时,选用高压电池电压为15V的要比9V的更适用些)。
6
、测三极管:通常我们要用R×1kΩ档,不管是NPN管还是PNP管,不管是小功率、中功率、大功率管,测其be结cb结都应呈现与二极管完全相同的单向导电性,反向电阻无穷大,其正向电阻大约在10K左右。为进一步估测管子特性的好坏,必要时还应变换电阻档位进行多次测量,方法是:置R×10Ω档测PN结正向导通电阻都在大约200Ω左右;置R×1Ω档测PN结正向导通电阻都在大约30Ω左右,(以上为47型表测得数据,其它型号表大概略有不同,可多试测几个好管总结一下,做到心中有数)如果读数偏大太多,可以断定管子的特性不好。还可将表置于R×10kΩ再测,耐压再低的管子(基本上三极管的耐压都在30V以上),其cb结反向电阻也应在∞,但其be结的反向电阻可能会有些,表针会稍有偏转(一般不会超过满量程的1/3,根据管子的耐压不同而不同)。同样,在用R×10kΩ档测ec间(对NPN管)或ce间(对PNP管)的电阻时,表针可能略有偏转,但这不表示管子是坏的。但在用R×1kΩ以下档测ce或ec间电阻时,表头指示应为无穷大,否则管子就是有问题。应该说明一点的是,以上测量是针对硅管而言的,对锗管不适用。不过现在锗管也很少见了。另外,所说的“反向”是针对PN结而言,对NPN管和PNP管方向实际上是不同的。
现在常见的三极管大部分是塑封的,如何准确判断三极管的三只引脚哪个是b、c、e?三极管的b极很容易测出来,但怎么断定哪个是c哪个是e?这里推荐三种方法:第一种方法:对于有测三极管hFE插孔的指针表,先测出b极后,将三极管随意插到插孔中去(当然b极是可以插准确的),测一下hFE值,然后再将管子倒过来再测一遍,测得hFE值比较大的一次,各管脚插入的位置是正确的。第二种方法:对无hFE测量插孔的表,或管子太大不方便插入插孔的,可以用这种方法:对NPN管,先测出b极(管子是NPN还是PNP以及其b脚都很容易测出,是吧?),将表置于R×1kΩ档,将红表笔接假设的e极(注意拿红表笔的手不要碰到表笔尖或管脚),黑表笔接假设的c极,同时用手指捏住表笔尖及这个管脚,将管子拿起来,用你的舌尖舔一下b极,看表头指针应有一定的偏转,如果你各表笔接得正确,指针偏转会大些,如果接得不对,指针偏转会小些,差别是很明显的。由此就可判定管子的c、e极。对PNP管,要将黑表笔接假设的e极(手不要碰到笔尖或管脚),红表笔接假设的c极,同时用手指捏住表笔尖及这个管脚,然后用舌尖舔一下b极,如果各表笔接得正确,表头指针会偏转得比较大。当然测量时表笔要交换一下测两次,比较读数后才能最后判定。这个方法适用于所有外形的三极管,方便实用。根据表针的偏转幅度,还可以估计出管子的放大能力,当然这是凭经验的。第三种方法:先判定管子的NPN或PNP类型及其b极后,将表置于R×10kΩ档,对NPN管,黑表笔接e极,红表笔接c极时,表针可能会有一定偏转,对PNP管,黑表笔接c极,红表笔接e极时,表针可能会有一定的偏转,反过来都不会有偏转。由此也可以判定三极管的c、e极。不过对于高耐压的管子,这个方法就不适用了。
对于常见的进口型号的大功率塑封管,其c极基本都是在中间(我还没见过b在中间的)。中、小功率管有的b极可能在中间。比如常用的9014三极管及其系列的其它型号三极管、2SC1815、2N5401、2N5551等三极管,其b极有的在就中间。当然它们也有c极在中间的。所以在维修更换三极管时,尤其是这些小功率三极管,不可拿来就按原样直接安上,一定要先测一下。
页:
[1]