嵌式系统基础部分-实时系统_第1页
嵌式系统基础部分-实时系统_第2页
嵌式系统基础部分-实时系统_第3页
嵌式系统基础部分-实时系统_第4页
嵌式系统基础部分-实时系统_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统原理与应用实时系统?嵌入式系统都是实时系统吗?不一定吧!实时系统与嵌入式系统嵌入式系统不一定是实时系统实时系统一般都是嵌入式系统什么是实时?龟兔赛跑有熊出没!不幸被熊发现!逃跑吧!谁能跑的掉?足够快!什么是实时系统? 实时指对随机发生的外部时间做出及时的相应并对其进行处理。(所谓事件时指来自与计算机系统相连接的设备所提出的服务要求和采集数据) 实时系统指系统能及时(或即时)相应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。 什么是实时系统? 开始截止时间实时系统在某时间以前必须开始执行指定任务; 完成截止时间实时系统在某时间以前必须完成指定任务。

2、什么是实时系统? ieee(美国电气电子工程师协会)实时系统为“那些正确性不仅取决于计算的逻辑结果,也取决于产生结果所花费的时间的系统”。实时嵌入式系统必须在一个可预测可保证的时间段内做出对外部事件的反应。如果没有达到上述要求,那么系统就会做出错误的操作。什么是实时系统? posix standard 1003.1操作系统中实时的定义:操作系统有能力在限定响应时间范围内,提供满足需求的服务。-实时系统指标 响应时间(response time): 是计算机识别一个外部事件到作出响应的时间, 生存时间(survival time): 是数据有效等待时间, 在这段时间里数据是有效的。 吞吐量(th

3、roughput): 是在一给定时间内, 系统可以处理的事件总数。实时系统到底有多快? 实时系统的响应“足够快”满足要求即可 实时软件时限十微秒的时间内对外部事件做出可靠的响应 实时系统是最快的吗?不一定是运行速度最快的代码可预测性比速度更重要怎么达到实时的要求呢? 充分发挥硬件的功能 微处理器的中断机制 简单的单线程循环程序 基于实时操作系统的复杂多线程程序 以硬件的方式实现软件嵌入式系统分类 按确定性来分嵌入式系统硬实时系统(hard real time)系统对系统响应时间有严格的要求,如果系统响应时间不能满足,就要引起系统崩溃或致命的错误。软实时系统(soft real time)系统对

4、系统响应时间有要求,但是如果系统响应时间不能满足,不会导致系统出现致命的错误或崩溃。嵌入式系统分类 按确定性来分嵌入式系统严格实时系统( firm real-time )系统对系统响应时间有严格的要求,如果系统响应时间不能满足,就要导致无法接受的低质量服务。 非实时系统( non real-time )系统对系统响应时间没有实时要求。硬实时系统应用 汽车 (沃尔沃s80有19台计算机) 飞机 (jas) 医疗设备 空间设备 (火星探测器) 军方系统 工业自动化举例硬实时嵌入式系统 交换机交换机速度很快,你感觉不到交换机的交换时间消耗。当你在互联网上冲浪时,你访问一个网站,需要经过无数次交换过程

5、,如果其中一个交换机的交换服务速度下降,将导致访问速度的下降,甚至导致网络的终端。软实时系统应用 软实时系统应用 游戏 dvd (mpeg 编码) 英特网视频和广播 通讯web server举例软实时嵌入式系统 pda,手机pda支持很多应用软件,这些手机的应用软件的响应时间只要用户可以接受即可举例严格实时嵌入式系统 打印机一分钟可以打印3页至100页想像一下,如果打印机二分钟只打印一页,不错打印机还在工作,但你能忍受吗? 视频点播宽带视频点播一般可以达到512k,视频效果基本可以观看。如果宽带视频速度只能达到128k,你能忍受吗?软实时 vs 硬实时1s100ms10ms1ms100ms10

6、ms1mssofthard激光打印机tcpip协议栈自动检票机大型游戏比较非实时系统软实时系统实时系统硬实时系统嵌入式实时系统分类 按软件结构来分嵌入式实时系统单线程程序(single-threaded program)(1)循环轮询系统(polling loop)(2)有限状态机(finit state machine)事件驱动系统 (event-driven system)(1)前后台系统(foreground/background)又叫中断驱动系统(2)实时多任务系统(multitasking或multi-thread program model)(3)多处理机系统循环轮询系统 优点:对

7、于简单的系统而言,便于编程和理解没有中断的机制,程序运行良好,不会出现随机的问题 缺点:有限的应用领域(由于不可确定性)对于大量的i/o服务的应用,不容易实现大的程序不便于调试 适合于慢速和非常快速的简单系统循环轮询系统 最简单的软件结构是循环轮询,程序依次检查系统的每一个输入条件,一旦条件成立就进行相应的处理。initialize()while(true) if(condition_1) action_1(); if(condition_2) action_2(); if(condition_n) acition_n();举例-简单循环轮询系统举例-复杂循环轮询系统有限状态机 优点:对于小的

8、系统而言,便于编程和理解可以快速的执行只是通过改变输出功能来改变机器的响应 缺点:有限的应用领域不能保证确定性对于大的应用系统,难于调试举例-简单有限状态机举例-复杂有限状态机事件驱动系统 事件驱动系统是能对外部事件直接响应的系统。是嵌入式实时系统的主要形式。前后台实时多任务多处理器等 例如,很多基于微处理器的产品采用前后台系统设计,如微波炉、电话机、玩具等。从省电的角度出发,平时微处理器处在停机状态,所有的事都靠中断服务来完成。前后台系统 前后台系统(foreground/background)中断服务程序处理异步事件,这部分可称为前台(foreground),或叫中断级应用程序是一个无限的

9、循环,循环中调用相应的函数完成相应的操作,这部分可称为后台(background),或叫任务级 系统的性能:中断延迟时间(interrupt latency time)响应时间(response time)恢复时间(recovery time)前后台系统 中断驱动系统的一种后台是一个循环轮询系统一直在运行。前台是由一些中断处理过程组成的。当有一前台事件(外部事件)发生时,引起中断, 进行前台处理, 处理完成后又回到后台(通常又称主程序)。中断中断1 1中断中断2 2主程序主程序中断中断1 1中断中断1 1中断中断2 2前后台系统isrisrisrisr时间后后台台前台前台前后台系统 需要考虑的

10、是中断的现场保护和恢复,中断嵌套,中断处理过程与主程序的协调(共享资源)问题。 系统的性能:中断延迟时间(interrupt latency time)响应时间(response time)恢复时间(recovery time) 中断请求中断请求 数据传送数据传送 响应时间响应时间 主程序主程序 现场保护现场保护 和恢复和恢复中断服务中断服务 | | 中断延迟时间中断延迟时间 恢复时间恢复时间前后台系统实时多任务系统 优点:将复杂的系统分解为相对独立的多个线程, 达到“分而制之”的目的,从而降低系统的复杂性。保证系统的实时性系统的模块化好,提高系统的可维护性。 缺点:需要采用一些新的软件软件设

11、计方法需要增加功能:线程间的协调,同步和通信功能需要对每一个共享资源互斥导致线程间的竞争需要使用rtos,rtos要增加系统的开销实时多任务系统 实时多任务系统单处理器多任务系统多处理多任务系统单处理器多任务系统 对于一个复杂的嵌入式实时系统来说,当采用中断处理程序加一个后台主程序这种软件结构难以实时的、准确的、可靠的完成时存在一些互不相关的过程需要在一个计算机中同时处理时需要采用实时多任务系统!需要采用实时多任务系统!单处理器多任务系统 结构由多个任务,多个中断处理过程,实时操作系统组成的有机的整体。 每个任务是顺序执行的,并行性通过操作系统来完成,任务间的相互通信和同步也需要操作系统的支持

12、。 流程并发多任务:后台后台前台前台 isrstasks单处理器多任务系统多任务系统多个顺序执行的程序并行运行。宏观上看,所有的程序同时运行,每个程序运行在自己独立的cpu上。实际上,不同的程序是共享同一个cpu和其它硬件。因此,需要rtos来对这些共享的设备和数据进行管理。每个程序都被编制成无限循环的程序,等待特定的输入,执行相应的任务等。这种程序模型将系统分成相对简单的,相互合作的模块。单处理器多任务系统 优点将复杂的系统分解为相对独立的多个线程, 达到“分而制之”的目的,从而降低系统的复杂性。保证系统的实时性。系统的模块化好,提高系统的可维护性。 缺点需要采用一些新的软件设计方法。需要增

13、加功能:线程间的协调,同步和通信功能。需要对每一个共享资源互斥。导致线程间的竞争。需要使用rtos,rtos要增加系统的开销。多处理器多任务系统 多任务可运行在多个处理器上,由操作系统统一调度,处理。 宏观上看是并发的,微观上看也是并发的。 多处理机系统分为紧耦合系统(tightly-coupled system)和松耦合系统(loosely-coupled system)两种。 多处理多任务系统目前还不成熟。多处理机系统 紧耦合系统(tightly-coupled system) 多个处理器通过共享内存空间来交换信息(如:smp), 松耦合系统(loosely-coupled system)

14、 多个处理器通过通讯线路来连接和交换信息。举例-多处理机系统举例-多处理机系统实时系统杀毒软件inetmon enginevirus parservirus matchingoutput alertvirus signaturesms, email, xml, html12345杀毒引擎架构杀毒引擎架构实时多任务系统 优点:将复杂的系统分解为相对独立的多个线程, 达到“分而制之”的目的,从而降低系统的复杂性。保证系统的实时性系统的模块化好,提高系统的可维护性。实时多任务系统 缺点:需要采用一些新的软件软件设计方法需要增加功能:线程间的协调,同步和通信功能需要对每一个共享资源互斥导致线程间的竞争

15、需要使用rtos,rtos要增加系统的开销实时系统基本概念任务 一个任务,也称作一个线程,是一个简单的程序,该程序可以认为cpu完全只属该程序自己。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套cpu寄存器和自己的栈空间。stackstackstackstatusspprioritystatusspprioritystatussppriorityspmemory cpu task 1task 2task ncpu registers多任务实时任务 如实时系统支持n个周期实时任务t1, ,tn。ti 可以用 (pi

16、, ci, di)三元组描述 p,周期 c,最坏情况下的执行时间 d,任务结束期限 实时任务 ti 在周期开始执行,消耗ci时间单元,但必须在di时间单元后执行完毕。如果pi=di, 则三元组中di可以被忽略任务的分类 按照到达情况的可预测性,任务可以划分为:周期任务周期任务(periodic task)非周期任务非周期任务 按照重要程度,可分为:关键任务关键任务(critical task)非关键任务非关键任务(noncritical task)周期任务与非周期任务 周期任务与非周期任务周期任务每隔一个固定的时间间隔就会执行一次。举例:飞行器可能需要每隔100ms获得一次关于飞行器的速度、高

17、度和姿态数据,控制传感器获取这些数据就需要通过周期任务来进行。非周期任务执行的间隔时间则为不确定的。举例:移动通信设备中的通信任务,该任务只有在需要进行通信的情况下才会得到执行。非周期任务分为:sporadic task:有最小到达间隔时间限制有最小到达间隔时间限制aperiodic task:没有到达时间限制没有到达时间限制关键任务与非关键任务 关键任务与非关键任务关键任务:关键任务:为需要得到及时执行及时执行的任务,否则将出现灾难性的后果举例:飞行器中用于处理生命支持系统和稳定性控制系统的任务非关键任务:非关键任务:如果没有得到及时执行,则不会产生严重后果 任务执行方式 同步:按照预定的控

18、制流顺序发生的事件 异步:一般由中断产生并处理几个实时操作系统概念 确定性(determinism) 响应性(responsiveness) 用户控制(user control) 可靠性(reliability) 软失败操作(fail-soft operation)确定性 实时软件对于外部事件的响应时间必须是实时的、确定的和可以重复实现的,不管当时系统内部状态如何,都是可预测的。一个测量操作系统确定性能力的指标是从一个高优先级设备中断到达到开始服务的最大延迟。在非实时操作系统中,这个延迟可能是几十到数百毫秒;在实时操作系统中有一个明确的上界,从几个微秒到一毫秒不等。响应性 响应性是在应答中断后

19、,操作系统服务中断时间。初始化中断处理和开始执行中断服务程序(isr)需要的时间。如果是要求一个进程切换的isr执行,那么比在当前进程上下文中的isr执行延迟更长时间。执行isr需要的时间。这通常依赖于硬件平台。中断嵌套的作用。如果一个isr可能被另一个中断的到达而中断,那么它的服务将被延迟。响应时间 确定性和响应性共同构成了对于外部事件的响应时间。 响应时间对于rtos是至关重要的,由于系统必须满足系统外部个人、设备或者数据流的定时要求。中断开始中断结束中断请求确定性响应性响应时间初始化开始执行执行非占先式内核中断的性能指标占先式内核中断的性能指标用户控制 在一个典型的非实时操作系统中,用户

20、或者不能控制操作系统的调度功能,或者只能提供粗略的指导,如将用户编组进入多于一个优先级的类别。 在rtos中,允许用户精细控制任务优先级是基本功能。用户应该能够区分硬实时任务和软实时任务,并在每个类别中指定相对的优先级。一个rtos也能够指定这类特征,如分页或者进程切换,哪些进程必须总是驻留在主存中,使用哪个磁盘传输算法,在各种优先级类别中的进程有哪些权利,等等。可靠性 在非实时系统中一个瞬时错误可以简单地通过重新引导系统来解决 在多处理机非实时系统中一个处理机的失败可能在修复或代替该处理机之前造成服务级别的降低。 但是,实时系统需要实时响应和控制事件,性能的丧失或降低可能造成灾难性的后果。软

21、失败操作 软失败操作是指这样一个特征,系统能够以这样一种方式失败,它能够尽可能地保留能力和数据。一个典型的传统unix系统,当它检测到内核数据的误用,在系统控制台上发出失败消息,将内存内容倒到磁盘用于以后的失败分析,同时终止系统的执行。与此相反,rtos将试图或者纠正这个问题或者最小化它的影响,同时继续运行。典型情况下,系统通告用户或者用户进程,它将试图进行纠正动作,然后继续操作,或许此时降低了服务级别。 js代码的临界段 代码的临界段也称为临界区,指处理时不可分割的代码。一旦这部分代码开始执行,则不允许任何中断打入。为确保临界段代码的执行,在进入临界段之前要关中断,而临界段代码执行完以后要立

22、即开中断。 资源与共享 任何为任务所占用的实体都可称为资源。资源可以是输入输出设备,例如打印机、键盘、显示器,资源也可以是一个变量,一个结构或一个数组等。 可以被一个以上任务使用的资源叫做共享资源。为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源。 利用信号量管理临界资源任务任务信号量临界资源 操作方法使用临界资源前,得到信号量使用临界资源使用完后,释放信号量任务上下文 任务上下文任务上下文是指一个未运行的任务的状态,如堆栈指针、计数器、内存字段和通用寄存器等。多任务 多任务运行的实现实际上是靠cpu(中央处理单元)在许多任务之间转换、调度。cpu只有一个,轮番服务于一系列任务

23、中的某一个。 多任务运行很像前后台系统,但后台任务有多个。多任务运行使cpu的利用率得到最大的发挥,并使应用程序模块化。 在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。使用多任务,应用程序将更容易设计与维护。 任务的状态休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。 就绪意味着该任务已经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行。 运行态的任务是指该任务掌握了cpu的控制权,正在运行中。 挂起状态也可以叫做等待(waiting)事件态,指该任务在等待,等待某一事件的发生,(例如等待某外设的i/o操作,等待某共享资源

24、由暂不能使用变成能使用,等待定时脉冲的到来或等待超时信号的到来以结束目前的等待,等等)。发生中断时,cpu 提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了中断状态。 等待休眠就绪运行中断任务切换 任务切换(context switch or task switch)当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(context),即cpu寄存器中的全部内容。这些内容保存在任务的当前状况保存区(tasks context storage area),也就是任务自己的栈区之中。入栈工作完成以后,就是把下一个将要运行的任务的当前状况从该任务的栈中重新装入cpu的寄存器,并

25、开始下一个任务的运行。这个过程叫做任务切换。任务切换过程增加了应用程序的额外负荷。cpu的内部寄存器越多,额外负荷就越重。做任务切换所需要的时间取决于cpu有多少寄存器要入栈。实时内核的性能不应该以每秒钟能做多少次任务切换来评价。内核(kernel) 多任务系统中,内核负责管理各个任务,或者说为每个任务分配cpu时间,并且负责任务之间的通讯。 内核提供的基本服务是任务切换。之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。 内核本身也增加了应用程序的额外负荷,代码空间增加rom的用量,内核本身的数据结构增加了ram的用量。但更主要的是,

26、每个任务要有自己的栈空间,这一块吃起内存来是相当厉害的。 内核本身对cpu的占用时间一般在2到5个百分点之间。 单片机一般不能运行实时内核,因为单片机的ram很有限。通过提供必不可缺少 的系统服务,诸如信号量管理,邮箱、消息队列、延时等,实时内核使得cpu的利用更为有效。 调度(scheduler) 调度就是要决定该轮到哪个任务运行了。 多数实时内核是基于优先级调度法的。每个任务根据其重要程度的不同被赋予一定的优先级。 基于优先级的调度法,指cpu总是让处在就绪态的优先级最高的任务先运行。 究竟何时让高优先级任务掌握cpu的使用权,有两种不同的情况,这要看用的是什么类型的内核,是不可剥夺型的还

27、是可剥夺型内核。 调度延迟 调度延迟是指当一个事件从引起更高优先级的任务就绪到这个任务开始运行之间的时间。 简而言之,是一个任务被触发后,由就绪到开始运行的时间。区别应用内核插入中断应用内核isr内核isr退出isr中断任务响应中断延时时间重新安排延时时间任务抢占式内核非抢占式内核区别可重入性(reentrancy) 可重入型函数可以被一个以上的任务调用而不必担心数据的破坏。 可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。 可重入型函数只使用局部变量,即变量保存在cpu寄存器中或堆栈中。如使用全局变量,则要对全局变量予以保护。 可重入型函数 可以被一个以上的任务

28、调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数或者只使用局部变量,即变量保存在cpu寄存器中或堆栈中。不可重入型函数 一个不可重入型函数的例子int temp;void swap (int *x,int*y)temp=*x;*x=*y;*y=temp;可重入型函数 一个可重入型函数的例子void swap (int *x,int*y)int temp;temp=*x;*x=*y;*y=temp;可重入型函数 void strcpy(char *dest, char *src) while (*dest+ = *src+)

29、; *dest = nul;函数strcpy()做字符串的复制。因为参数保存在堆栈中,故函数可以被多个任务调用,不必担心各任务调用函数期间会破坏对方的指针。不可重入型函数 int temp;void swap(int *x, int *y) temp = *x; *x = *y; *y = temp;task 1task 2while (1) x = 1;y = 2;swap (&x, &y); temp = *x;*x = *y;*y = temp; while (1) z = 1;t = 2;swap (&z, &t); temp = *z;*z = *t;*t = temp; 不可重入函数被中断破坏如何使函数具有可重入性 使swap()函数具有可重入性的条件:把temp定义为局部变量调用swap()函数之前关中断,调用后再开中断用信号量禁止该函数在使用过程中被再次调用嵌入式系统典型的调度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论