第八章AutoOSEK操作系统

上传人:壹****1 文档编号:569811970 上传时间:2024-07-31 格式:PPT 页数:157 大小:2.25MB
返回 下载 相关 举报
第八章AutoOSEK操作系统_第1页
第1页 / 共157页
第八章AutoOSEK操作系统_第2页
第2页 / 共157页
第八章AutoOSEK操作系统_第3页
第3页 / 共157页
第八章AutoOSEK操作系统_第4页
第4页 / 共157页
第八章AutoOSEK操作系统_第5页
第5页 / 共157页
点击查看更多>>
资源描述

《第八章AutoOSEK操作系统》由会员分享,可在线阅读,更多相关《第八章AutoOSEK操作系统(157页珍藏版)》请在金锄头文库上搜索。

1、1嵌入式系统及应用嵌入式系统及应用第八讲第八讲 嵌入式实时操作系统设计嵌入式实时操作系统设计 2本节提要本节提要1 13 32 25 54 4OSEK标准介绍标准介绍OSEK OS标准标准AutoOSEK 内核设计内核设计OSEK COM标准标准OSEK OIL标准标准31. OSEK标准介绍标准介绍 OSEK OS OSEK COM OSEK NM OSEK OIL4lOSEK/VDXOSEK/VDX是应用在模块和静态实时操作系统上的标准,由主是应用在模块和静态实时操作系统上的标准,由主要的汽车制造商和供应商,研究机构以及软件开发商发起。要的汽车制造商和供应商,研究机构以及软件开发商发起。l

2、OSEKOSEK,是指德国的汽车电子类开放系统和对应接口标准,是指德国的汽车电子类开放系统和对应接口标准(open systems and the corresponding interfaces for open systems and the corresponding interfaces for automotive electronicsautomotive electronics),而),而VDXVDX则是汽车分布式执行标则是汽车分布式执行标准(准(vehicle distributed executivevehicle distributed executive),后者最初是由法

3、),后者最初是由法国独自发起的,后来加入了国独自发起的,后来加入了OSEKOSEK团体。两者的名字都反映出团体。两者的名字都反映出OSEK/VDXOSEK/VDX的目的是为汽车电子制定标准化接口。该标准完全的目的是为汽车电子制定标准化接口。该标准完全独立,对目标系统只限制了少量的条件。独立,对目标系统只限制了少量的条件。 5其中其中OSEK OSOSEK OS是针对汽车应用特点而专门制定的一个小型是针对汽车应用特点而专门制定的一个小型RTOSRTOS规范,着重以下几个方面:规范,着重以下几个方面:可移植性可移植性,所有,所有APIAPI都是标准化的并且在功能上都有明确都是标准化的并且在功能上都

4、有明确的定义;的定义;可扩展性可扩展性,OSEKOSOSEKOS旨在通用于任何类型的旨在通用于任何类型的 ECUECU,因此一方,因此一方面系统要高度的模块化,另一方面又要能进行灵活的配置;面系统要高度的模块化,另一方面又要能进行灵活的配置;汽车应用的特定需求汽车应用的特定需求,诸如可靠性、实用性和代价敏感性,诸如可靠性、实用性和代价敏感性等。等。 相应的,相应的,OSEK OSOSEK OS静态配置可以通过静态配置可以通过OSEK OILOSEK OIL语言实现,语言实现,用户在系统生成时静态制定任务的个数、需要的资源和系统用户在系统生成时静态制定任务的个数、需要的资源和系统服务。服务。OS

5、EK COMOSEK COM为通信网络中的数据交换提供了标准的接口为通信网络中的数据交换提供了标准的接口和协议。和协议。OSEK NMOSEK NM为监视网络的流量提供了一组标准的功能为监视网络的流量提供了一组标准的功能函数,以保证网络的安全性和可靠性。函数,以保证网络的安全性和可靠性。 67本节提要本节提要1 13 32 25 54 4OSEK标准介绍标准介绍OSEK OS标准标准AutoOSEK 内核设计内核设计OSEK COM标准标准OSEK OIL标准标准8OSEK OS标准主要包括:标准主要包括:l操作系统构架操作系统构架l任务管理任务管理l应用模式应用模式l中断处理中断处理l事件机

6、制事件机制l资源管理资源管理l警报警报l消息机制消息机制l错误处理错误处理OSEK OS标准标准91OSEK/VDX操作系统的构架操作系统的构架l处理级处理级Processing levelsl一致类一致类Conformance classes10处理级处理级lOSEKOSEK操作系统是基于静态优先级的一种构架。操作系统是基于静态优先级的一种构架。l每个任务可以是基本任务或扩展任务,基本任务每个任务可以是基本任务或扩展任务,基本任务和扩展任务的区别在于扩展任务支持外部异步事和扩展任务的区别在于扩展任务支持外部异步事件。件。l每个任务被分配一个静态优先级,调度器总是从每个任务被分配一个静态优先级

7、,调度器总是从就绪队列中选择最高优先级任务。就绪队列中选择最高优先级任务。ISRISR可以抢占运可以抢占运行任务(除了运行任务正在使用资源)。行任务(除了运行任务正在使用资源)。11OSEKOSEK操作系统提供了用户接口,这些接口主要通操作系统提供了用户接口,这些接口主要通过实体来使用。操作系统提供了两类实体:过实体来使用。操作系统提供了两类实体:l中断服务例程中断服务例程l任务任务 ( (基本任务和扩展任务)基本任务和扩展任务)OSEKOSEK定义了三类处理级别:定义了三类处理级别: l中断级中断级l调度逻辑级调度逻辑级l任务级任务级12OSEK操作系统处理级操作系统处理级13l优先级规则:

8、优先级规则:l中断优先级高于任务优先级中断优先级高于任务优先级l中断处理级由一个或多个中断优先级组成中断处理级由一个或多个中断优先级组成l中断服务例程具有指定的中断优先级中断服务例程具有指定的中断优先级lISRISR的优先级与具体的硬件相关的优先级与具体的硬件相关l资源天花板优先级与较高优先级任务相关。资源天花板优先级与较高优先级任务相关。l任务优先级被用户静态分配任务优先级被用户静态分配14l为了提供的不同应用需求,操作系统提供了为了提供的不同应用需求,操作系统提供了4 4种一致种一致类选择。一致类为在不改变应用任务情况下,按照类选择。一致类为在不改变应用任务情况下,按照预先规定对功能较少的

9、类到功能较多的一致类提供预先规定对功能较少的类到功能较多的一致类提供了升级途径。了升级途径。l一致类主要包括下列属性规定:一致类主要包括下列属性规定:l多请求任务激活(一个任务激活或多个任务激活)多请求任务激活(一个任务激活或多个任务激活)l任务类型(基本任务或基本任务任务类型(基本任务或基本任务+ +扩展任务)扩展任务) l每个优先级对应的任务数(一个优先级对应一个任务或多每个优先级对应的任务数(一个优先级对应一个任务或多个任务)个任务) 一致类一致类15l下面是一致类的定义:下面是一致类的定义: lBCC1 BCC1 :每个任务只有一个激活请求,一个任务只有一:每个任务只有一个激活请求,一

10、个任务只有一个优先级,所有任务优先级必须保持不同个优先级,所有任务优先级必须保持不同lBCC2 BCC2 :在:在BCC1BCC1的基础上,每个任务可以有多个激活请的基础上,每个任务可以有多个激活请求和一个优先级可以对应多个任务。求和一个优先级可以对应多个任务。lECC1 ECC1 :在:在BCC1BCC1基础上,增加了扩展任务,即支持事件基础上,增加了扩展任务,即支持事件机制。机制。lECC2 ECC2 :在:在ECC1ECC1基础上,每个任务可以有多个激活请求基础上,每个任务可以有多个激活请求和一个优先级可以对应多个任务。和一个优先级可以对应多个任务。16一致类一致类Conformance

11、 classes1718l栈分开与分类栈分开与分类lBCC1:在无中断情况下发生上下文切:在无中断情况下发生上下文切换仅有两种情况换仅有两种情况l被高优先级任务抢占被高优先级任务抢占l自己结束自己结束当前任务当前任务高优先级任务高优先级任务1高优先级任务高优先级任务2被高优先级被高优先级任务抢占任务抢占被高优先级被高优先级任务抢占任务抢占自己结束自己结束自己结束自己结束结论:结论:BCC1下,任下,任务、中断的栈的使务、中断的栈的使用可以为同一个,用可以为同一个,不会相互干扰,即不会相互干扰,即不需要每个任务使不需要每个任务使用独立的栈空间用独立的栈空间lECC1:多了等待状态,每个就必须使用

12、独立的:多了等待状态,每个就必须使用独立的栈空间,而且为了提高任务栈大小的可估算性和栈空间,而且为了提高任务栈大小的可估算性和使用率,将中断统一使用系统栈。使用率,将中断统一使用系统栈。栈栈192任务管理任务管理 l在在OSEK OSOSEK OS中,任务提供了并发中,任务提供了并发/ /异步执行功能。调异步执行功能。调度器负责根据定义的调度算法调度任务。度器负责根据定义的调度算法调度任务。 lOSEK OS OSEK OS 提供两种任务:基本任务和扩展任务。它提供两种任务:基本任务和扩展任务。它们不同之处在于,扩展任务允许调用们不同之处在于,扩展任务允许调用WaitEventWaitEven

13、t()(),即允许扩展任务在等待异步事件时,不终止当前,即允许扩展任务在等待异步事件时,不终止当前例程释放例程释放CPUCPU。 20l每个任务分配了一个固定的优先级(每个任务分配了一个固定的优先级(0 0被分配给最低被分配给最低优先级任务),可以是抢占式或非抢占式。如果是抢优先级任务),可以是抢占式或非抢占式。如果是抢占式,该任务可以在任何时候被抢占,否则必须等到占式,该任务可以在任何时候被抢占,否则必须等到任务结束时才产生调度。一个抢占式任务可以变为非任务结束时才产生调度。一个抢占式任务可以变为非抢占任务通过使用加锁资源抢占任务通过使用加锁资源RES_SCHEDULERRES_SCHEDU

14、LER。21lOSEK标准定义了标准定义了4个任务状态:个任务状态:l就绪就绪l等待等待l挂起挂起l运行运行 l基本任务没有等待状态:基本任务只有在任务的基本任务没有等待状态:基本任务只有在任务的开始和结束才是同步点。开始和结束才是同步点。 22基本任务基本任务l基本任务在下列三种情况下释放基本任务在下列三种情况下释放CPUCPUl自己结束自己结束l被高优先级任务抢占被高优先级任务抢占l中断产生中断产生基本任务常基本任务常基本任务常基本任务常常用来完成常用来完成常用来完成常用来完成那些激活后那些激活后那些激活后那些激活后就必须完整就必须完整就必须完整就必须完整执行的工作执行的工作执行的工作执行

15、的工作 23基本任务状态转换基本任务状态转换24扩展任务扩展任务 扩展任务和基本任务的主要区别在于:允许调用系扩展任务和基本任务的主要区别在于:允许调用系统服务统服务WaitEventWaitEvent(),该系统调用使任务进入等待状(),该系统调用使任务进入等待状态。等待状态允许任务在不结束任务的情况下释放态。等待状态允许任务在不结束任务的情况下释放CPUCPU调用优先级更低的任务运行调用优先级更低的任务运行。25扩展任务的状态转换扩展任务的状态转换26任务比较任务比较l基本任务没有等待状态,因而同步点在任务开始基本任务没有等待状态,因而同步点在任务开始和结束的地方,所以其需要的资源少。基本

16、任务和结束的地方,所以其需要的资源少。基本任务需求的资源必须独享直至整个任务结束。任务实需求的资源必须独享直至整个任务结束。任务实时性较差。时性较差。l扩展任务的优点是可以在单个任务中处理连贯的扩展任务的优点是可以在单个任务中处理连贯的工作而不管同步请求是否有效。当需求事件未产工作而不管同步请求是否有效。当需求事件未产生时就进入等待状态,直到事件产生。可以在任生时就进入等待状态,直到事件产生。可以在任何点进行同步。何点进行同步。27激活一个任务激活一个任务l操作系统通过系统调用操作系统通过系统调用ActivateTaskActivateTask或或 ChainTaskChainTask 激活一

17、个任务。任务被激活后从最开激活一个任务。任务被激活后从最开始状态开始运行。始状态开始运行。l任务的多请求激活任务的多请求激活l根据一致类的定义,一个基本任务能被激活一次或多次。根据一致类的定义,一个基本任务能被激活一次或多次。任务激活的多请求意味着操作系统必须接收和记录已经任务激活的多请求意味着操作系统必须接收和记录已经激活的任务激活次数。激活的任务激活次数。l任务激活请求次数在基本任务的属性配置时进行设置。任务激活请求次数在基本任务的属性配置时进行设置。如果最大的请求次数没达到,请求被排队。每个优先级如果最大的请求次数没达到,请求被排队。每个优先级的基本任务的请求按激活顺序排队。的基本任务的

18、请求按激活顺序排队。28任务切换机制任务切换机制操作系统中用于决定哪个任务应该被启动的实操作系统中用于决定哪个任务应该被启动的实体称为调度器。无论任务什么时候按照调度策略进体称为调度器。无论任务什么时候按照调度策略进行切换时都会调用调度器。调度器可以作为一个任行切换时都会调用调度器。调度器可以作为一个任务资源被任务独享和释放。因此一个任务可以独占务资源被任务独享和释放。因此一个任务可以独占调度器直到任务完成来避免被切换。调度器直到任务完成来避免被切换。29任务优先级任务优先级l调度器按照任务优先级来决定下一个将要运行的任务。调度器按照任务优先级来决定下一个将要运行的任务。l0 0被设计为最低优

19、先级,一般留给空闲任务。优先级高低和优被设计为最低优先级,一般留给空闲任务。优先级高低和优先级的数字相对应,数字越大,优先级越高。先级的数字相对应,数字越大,优先级越高。l动态优先级在动态优先级在OSEKOSEK中不支持,除了在使用资源时,根据天花板中不支持,除了在使用资源时,根据天花板协议,任务优先级可动态变为资源优先级。协议,任务优先级可动态变为资源优先级。l一个被抢占的任务优先级被认为是最先进入就绪队列的任务,一个被抢占的任务优先级被认为是最先进入就绪队列的任务,一个等待任务进入就绪态被认为是最后进入就绪队列的任务。一个等待任务进入就绪态被认为是最后进入就绪队列的任务。30调度器调度器:

20、 就绪任务的执行顺序就绪任务的执行顺序31依据以下的准则决定下一个被执行的任务:依据以下的准则决定下一个被执行的任务:调度器在调度器在“就绪态就绪态”队列中搜索所有的任务。队列中搜索所有的任务。调度器在处于调度器在处于“就绪态就绪态” 的任务集中,选出优先级的任务集中,选出优先级最高的任务集。最高的任务集。调度器在上一个步骤中选出同一个优先级的任务中调度器在上一个步骤中选出同一个优先级的任务中找出最先进入就绪态的任务。找出最先进入就绪态的任务。32l调度器按照任务优先级决定下一个就绪任务进入调度器按照任务优先级决定下一个就绪任务进入运行状态。具有相同优先级的任务按照它们的激运行状态。具有相同优

21、先级的任务按照它们的激活顺序启动。活顺序启动。 lOSEKOSEK标准提供标准提供4 4种静态优先级调度,如下所述:种静态优先级调度,如下所述: l全抢占调度:全抢占调度: l运行任务可以被高优先级任务抢占。运行任务可以被高优先级任务抢占。 l非抢占调度:非抢占调度: l任务的切换只有通过明确的系统调度来实现。如任务结束任务的切换只有通过明确的系统调度来实现。如任务结束Termination Termination ,事件触发,事件触发POSTEventPOSTEvent等。等。 调度策略调度策略33调度方式调度方式34全抢占式调度全抢占式调度35 在全抢占式调度下,用户应该总是期望在全抢占式

22、调度下,用户应该总是期望“运行态运行态”任务的抢任务的抢占。但是,如果希望一个任务片段不会被抢占,那么可以通过占。但是,如果希望一个任务片段不会被抢占,那么可以通过系统服务系统服务GetResourceGetResource临时阻塞调度器。临时阻塞调度器。 在以下情况会出现重新调度:在以下情况会出现重新调度:l任务的成功终结任务的成功终结TerminateTaskTerminateTask 。l任务的成功终结,并且成功地激活接下来要执行的任务任务的成功终结,并且成功地激活接下来要执行的任务(ChainTaskChainTask)。)。l在任务层次激活一个任务(例如:系统服务在任务层次激活一个任

23、务(例如:系统服务ActivateTaskActivateTask)。)。l如果出现了任务转换为如果出现了任务转换为“等待态等待态”的情况,的情况, WaitEventWaitEvent会被调用。会被调用。l在任务层次为一个在任务层次为一个“等待态等待态”的任务设置一个事件(例如:系统的任务设置一个事件(例如:系统服务服务SetEventSetEvent)。)。l在任务层次释放资源(系统服务在任务层次释放资源(系统服务ReleaseResourceReleaseResource)l从中断返回到任务层次。从中断返回到任务层次。36非抢占式调度非抢占式调度l非抢占式策略,就是就有通过精确定义的系统

24、服务的非抢占式策略,就是就有通过精确定义的系统服务的选择才会导致任务切换。选择才会导致任务切换。l非抢占式调度对任务可能的时序请求有着特别要求。非抢占式调度对任务可能的时序请求有着特别要求。特别地,正在运行的低优先级任务的不特别地,正在运行的低优先级任务的不l非抢占(比如,任务有一些不可分割的代码段,或者非抢占(比如,任务有一些不可分割的代码段,或者有些不可分割的操作)会延迟一个高优先级任务的调有些不可分割的操作)会延迟一个高优先级任务的调度,只能等到下一个调度时刻。度,只能等到下一个调度时刻。37非抢占调度非抢占调度38在非抢占式任务的情况下,在以下的情况定会导致在非抢占式任务的情况下,在以

25、下的情况定会导致重新调度的出现:重新调度的出现:l任务顺利的终止(系统服务任务顺利的终止(系统服务TerminateTaskTerminateTask)l任务的成功终止,并且准确激活接下来要执行的任任务的成功终止,并且准确激活接下来要执行的任务(务(ChainTaskChainTask)l调度器的外部调用(系统服务调度器的外部调用(系统服务ScheduleSchedule)。)。l到到“等待态等待态”转变的发生(系统服务转变的发生(系统服务WaitEventWaitEvent)。)。39l混合调度:混合调度:l由于抢占权是任务的属性,抢占式任务和非抢占式任务由于抢占权是任务的属性,抢占式任务和

26、非抢占式任务在系统中混合使用时,运行任务的调度受到实际使用的在系统中混合使用时,运行任务的调度受到实际使用的调度策略影响。调度策略影响。 l任务使用内部资源:任务使用内部资源: l这种调度策略非常类似于抢占阈值技术这种调度策略非常类似于抢占阈值技术, , 采用天花板和采用天花板和内部资源的在任务启动加锁与和结束解锁来实现阈值。内部资源的在任务启动加锁与和结束解锁来实现阈值。 40l如果在同一个系统上混合使用抢占式和非抢占式如果在同一个系统上混合使用抢占式和非抢占式任务,那么这个策略就叫做任务,那么这个策略就叫做“混合抢占式混合抢占式”l调度。在这种情况下,调度策略取决于运行的任调度。在这种情况

27、下,调度策略取决于运行的任务的务的“抢占式属性抢占式属性”。如果,正在运行的任务是。如果,正在运行的任务是非抢占式的,那么就采取非抢占式调度;如果正非抢占式的,那么就采取非抢占式调度;如果正在运行的任务是抢占式的,那么就采取抢占式调在运行的任务是抢占式的,那么就采取抢占式调度。度。41选择调度策略选择调度策略l软件开发者或者系统集成人员通过设置任务的优先级和安软件开发者或者系统集成人员通过设置任务的优先级和安排任务的抢占属性,决定任务的执行序列。排任务的抢占属性,决定任务的执行序列。l一个任务的类型(基础类型或者扩展类型)和任务的调度一个任务的类型(基础类型或者扩展类型)和任务的调度类型(抢占

28、式或者是非抢占式)是独立的。类型(抢占式或者是非抢占式)是独立的。l一个纯抢占式系统可能包含有基本任务,而一个非抢占式一个纯抢占式系统可能包含有基本任务,而一个非抢占式系统可以包含扩展任务。如果一个操作系统服务正在运行,系统可以包含扩展任务。如果一个操作系统服务正在运行,任务的抢占和任务切换都有可能延迟。任务的抢占和任务切换都有可能延迟。42l很多应用程序是由极少的执行时间较长的任务和很多应用程序是由极少的执行时间较长的任务和许多定义了执行时间的短任务组成许多定义了执行时间的短任务组成对于长时对于长时间的任务而言,纯抢占式操作系统较为合适;对间的任务而言,纯抢占式操作系统较为合适;对时间较短的

29、任务而言,采用非抢占式调度则更有时间较短的任务而言,采用非抢占式调度则更有效率。因此,混合式抢占式调度策略可以看作是效率。因此,混合式抢占式调度策略可以看作是一个折衷。一个折衷。43 在以下情况,在一个抢占式操作系统中定义非抢在以下情况,在一个抢占式操作系统中定义非抢占式任务是有意义的:占式任务是有意义的:l如果一个任务的执行时间和该任务的切换时间是在同一如果一个任务的执行时间和该任务的切换时间是在同一个数量级上的时候;个数量级上的时候;l或者,或者,RAMRAM的使用十分经济,为了保存任务的上下文环的使用十分经济,为了保存任务的上下文环境;境;l或者,该任务不应该被抢占。或者,该任务不应该被

30、抢占。44结束任务结束任务l在在OSEKOSEK中,任务只能自己结束自己。中,任务只能自己结束自己。l操作系统提供操作系统提供ChainTaskChainTask函数来实现指定的任务在函数来实现指定的任务在结束自己后激活运行。结束自己后激活运行。 ChainTaskChainTask使得最新被激使得最新被激活的任务加入优先级队列的最后。活的任务加入优先级队列的最后。l每个任务必须在代码结尾通过调用每个任务必须在代码结尾通过调用TerminateTaskTerminateTask 或或 ChainTaskChainTask结束自己。结束自己。453操作系统应用模式操作系统应用模式lOSEKOSE

31、K操作系统提供应用模式的支持。在实际的应操作系统提供应用模式的支持。在实际的应用中,一个操作系统可能执行几种互斥的应用用中,一个操作系统可能执行几种互斥的应用(比如,正常模式,厂家测试模式等)。这些应(比如,正常模式,厂家测试模式等)。这些应用模式为不同运行条件而构建不同的软件运行构用模式为不同运行条件而构建不同的软件运行构架提供了的一种手段。一旦操作系统启动就不允架提供了的一种手段。一旦操作系统启动就不允许改变系统的应用模式。每种应用模式使用自己许改变系统的应用模式。每种应用模式使用自己定义的任务、中断、报警和定时条件和一些不同定义的任务、中断、报警和定时条件和一些不同模式共享的模式共享的部

32、分部分。 46系统启动系统启动l正常操作时有可能产生复位的情况,因此启动性正常操作时有可能产生复位的情况,因此启动性能是在嵌入式系统在汽车应用中是另一个安全指能是在嵌入式系统在汽车应用中是另一个安全指标。例如,一个传动系应用应该能在几微秒内重标。例如,一个传动系应用应该能在几微秒内重启整个系统,因为系统必须安全控制发动机气缸启整个系统,因为系统必须安全控制发动机气缸中电火花。在正常情况下,应避免长时间复杂的中电火花。在正常情况下,应避免长时间复杂的启动过程。启动过程。 474中断处理中断处理l标准规定操作系统应该适用于不同的处理器,因此,操作标准规定操作系统应该适用于不同的处理器,因此,操作系

33、统的中断处理提供一种通用处理方法,而与硬件无关。系统的中断处理提供一种通用处理方法,而与硬件无关。 l因此,在因此,在OSEKOSEK中,标准提供了两种中断处理:中,标准提供了两种中断处理: l1 1类中断处理类中断处理 l此类此类ISRISR不调用操作系统的系统服务。在中断服务例程完成后,不调用操作系统的系统服务。在中断服务例程完成后,将继续处理中断发生的地方的指令,例如:中断不会影响任务将继续处理中断发生的地方的指令,例如:中断不会影响任务的管理。此类的的管理。此类的ISRISR所需要的花费最少。所需要的花费最少。l中断服务程序不用操作系统服务。中断服务程序不用操作系统服务。 实际上,操作

34、系统不处理这实际上,操作系统不处理这类中断,设计者可以自由编写这类中断处理代码,只是不能调类中断,设计者可以自由编写这类中断处理代码,只是不能调用系统服务代码。通常这类中断是最高优先级中断。用系统服务代码。通常这类中断是最高优先级中断。l2 2类中断处理类中断处理 l中断被操作系统处理,因此操作系统服务能被中断处理程序调中断被操作系统处理,因此操作系统服务能被中断处理程序调用。用。 48l中断管理中断管理l一类中断服务程序一类中断服务程序l二类中断服务程序二类中断服务程序49l快速开启快速开启/ /禁止禁止APIAPI(应用程序接口)功能(应用程序接口)功能lOSEKOSEK提供了快速禁止所有

35、中断(提供了快速禁止所有中断(EnableAllInterruptsEnableAllInterrupts,DisableAllInterruptsDisableAllInterrupts,ResumeAllInterruptsResumeAllInterrupts,SuspendAllInterruptsSuspendAllInterrupts)和禁止所有第二类中断)和禁止所有第二类中断(ResumeOSInterruptsResumeOSInterrupts,SuspendOSInterruptsSuspendOSInterrupts)的功能。典)的功能。典型的用法是保护短暂的临界区域。在

36、受保护的临界区域内不型的用法是保护短暂的临界区域。在受保护的临界区域内不允许中断返回,例如:允许中断返回,例如:“suspend/disable”suspend/disable”与与“resume/enable”resume/enable”必须配对使用。必须配对使用。50中断服务程序中断服务程序(ISR)可以通过以下方式和任务进行通信:可以通过以下方式和任务进行通信:lISR ISR 激活一个任务;激活一个任务;lISR ISR 发送发送/ /接收一个非队列消息;接收一个非队列消息;lISR ISR 触发一个计数器;触发一个计数器;lISR ISR 获取获取 Task IDTask ID;lI

37、SR ISR 获取任务状态;获取任务状态;lISR ISR 设置一个事件;设置一个事件;lISR ISR 获取任务事件的屏蔽码;获取任务事件的屏蔽码;lISR ISR 使用报警。使用报警。51在在2类中断中可以使用的系统函数类中断中可以使用的系统函数52注意:非屏蔽中断(注意:非屏蔽中断(NMI)NMI)不能被分配到不能被分配到2 2类中断。这类中断操作类中断。这类中断操作系统不能保护其临界区。系统不能保护其临界区。53ISR StacklISRISR堆栈的目的是为了节省空间。当中断产生时,堆栈的目的是为了节省空间。当中断产生时,每个任务必须设置一个足够大的堆栈来保护任务每个任务必须设置一个足

38、够大的堆栈来保护任务和中断的变量。为了避免堆栈空间的重复,和中断的变量。为了避免堆栈空间的重复, OSEKTurboOSEKTurbo将将ISRISR中的堆栈独立出来。这类堆栈在中的堆栈独立出来。这类堆栈在2 2类中断中使用。在类中断中使用。在BCC1BCC1中,中,ISRISR使用共用一个堆栈。使用共用一个堆栈。在一些编译器中通过关键字来产生堆栈构架,如在一些编译器中通过关键字来产生堆栈构架,如“interrupt”interrupt”。545事件机制事件机制l事件机制事件机制l实现同步的方法实现同步的方法l只支持扩展任务只支持扩展任务l可以初始化任务的转换状态,以便转换至等待态,或者可以初

39、始化任务的转换状态,以便转换至等待态,或者以便从等待态转换以便从等待态转换55l事件机制仅在扩展一致类中才支持。用来实现任事件机制仅在扩展一致类中才支持。用来实现任务的同步和通信,可以通过务的同步和通信,可以通过2 2类中断或任务来触发。类中断或任务来触发。l扩展任务的典型行为是等待异步事件调用扩展任务的典型行为是等待异步事件调用WaitEventWaitEvent。在事件产生后,认为可以重新调用。在事件产生后,认为可以重新调用WaitEventWaitEvent来等待其它事件。来等待其它事件。l事件只有当任务处于非挂起状态时设置。即扩展事件只有当任务处于非挂起状态时设置。即扩展任务不能处于挂

40、起状态。任务不能处于挂起状态。56l有多个可选项用于操控事件,这取决于该任务是否是该事件有多个可选项用于操控事件,这取决于该任务是否是该事件的拥有者,或者另外的任务是否是一个扩展任务。所有的任的拥有者,或者另外的任务是否是一个扩展任务。所有的任务都可以为非挂起的任务设置事件。只有事件的拥有者才可务都可以为非挂起的任务设置事件。只有事件的拥有者才可以清除它自己的事件,并且等待自己的事件的设置。以清除它自己的事件,并且等待自己的事件的设置。l在任何情况之下,事件的接受者都是扩展任务。因此,中断在任何情况之下,事件的接受者都是扩展任务。因此,中断服务例程和基本任务是不可能等待一个事件的。服务例程和基

41、本任务是不可能等待一个事件的。l如果扩展任务等待的事件发生了,那么该扩展任务将会从等如果扩展任务等待的事件发生了,那么该扩展任务将会从等待态切换为就绪态。如果一个运行态的任务在等待某事件的待态切换为就绪态。如果一个运行态的任务在等待某事件的发生,并且该事件已经发生了,那么该任务仍会在运行态。发生,并且该事件已经发生了,那么该任务仍会在运行态。57抢占式扩展任务的同步抢占式扩展任务的同步58非抢占式扩展任务的同步非抢占式扩展任务的同步59事件相关的函数事件相关的函数606.资源管理资源管理 资源管理用于调整不同优先级的任务对共享的资源的访问,资源管理用于调整不同优先级的任务对共享的资源的访问,例

42、如:管理实体(调度器)、程序片段、内存或者硬件区域。例如:管理实体(调度器)、程序片段、内存或者硬件区域。 对于所有的一致性类而言,资源管理是强制要求的。资对于所有的一致性类而言,资源管理是强制要求的。资源管理可以选择性地扩展,用于协调任务和中断服务例程的源管理可以选择性地扩展,用于协调任务和中断服务例程的并发访问。并发访问。资源管理需要确保:资源管理需要确保:l两个任务不能同时占用同一资源两个任务不能同时占用同一资源l不能够发生优先权倒置不能够发生优先权倒置l在使用这些资源时,不允许死锁的发生在使用这些资源时,不允许死锁的发生l访问资源不允许导致等待态访问资源不允许导致等待态61如果在中断的

43、层次扩展资源管理,还必须确保两个任务如果在中断的层次扩展资源管理,还必须确保两个任务或者中断例程不能同时占用同一资源或者中断例程不能同时占用同一资源在以下的情况中,资源管理的功能是非常有用的:在以下的情况中,资源管理的功能是非常有用的:l抢占式任务抢占式任务l在非抢占式任务的环境中,如果用户计划在其它的在非抢占式任务的环境中,如果用户计划在其它的调度策略下,执行应用程序代码调度策略下,执行应用程序代码l在任务或者中断服务例程之间实现资源共享在任务或者中断服务例程之间实现资源共享l在中断服务例程中实现资源共享在中断服务例程中实现资源共享62l该标准提供能用于临界区的二进制资源。优先级该标准提供能

44、用于临界区的二进制资源。优先级反转和死锁通过称之为反转和死锁通过称之为OSEKOSEK优先级天花板协议来优先级天花板协议来避免。避免。 l该协议在实际上采用的静态优先级:该协议在实际上采用的静态优先级: l每个资源被分配一个天花板,它是使用该资源的所有任每个资源被分配一个天花板,它是使用该资源的所有任务(包括务(包括ISRISR)中最高优先级任务的优先级。)中最高优先级任务的优先级。 l当一个任务请求一个资源时,他的当前优先级升为资源当一个任务请求一个资源时,他的当前优先级升为资源的天花板。的天花板。l当任务释放一个资源,该任务的优先级被重新设置为资当任务释放一个资源,该任务的优先级被重新设置

45、为资源请求以前的优先级。源请求以前的优先级。 63l采用该协议,优先级反转、链路阻塞、死锁被避采用该协议,优先级反转、链路阻塞、死锁被避免。而且,由于一个任务只有所有的资源被释放免。而且,由于一个任务只有所有的资源被释放时才能被调度,因此不需要等待队列。时才能被调度,因此不需要等待队列。 l资源仅被任务使用。在资源仅被任务使用。在OSEKOSEK标准中,资源可以被标准中,资源可以被任务或任务或2 2类中断服务例程使用。当一个中断使用资类中断服务例程使用。当一个中断使用资源时被视为是最高优先级任务:它的执行能被延源时被视为是最高优先级任务:它的执行能被延迟当更低优先级中断服务例程或任务采用天花板

46、迟当更低优先级中断服务例程或任务采用天花板的高于或等于该中断例程优先级访问该资源时。的高于或等于该中断例程优先级访问该资源时。 64资源使用时的限制资源使用时的限制l当资源被占用时,当资源被占用时, TerminateTaskTerminateTask, , ChainTaskChainTask, , ScheduleSchedule, , WaitEventWaitEvent 不能调用。使用被占用的不能调用。使用被占用的资源的中断服务程序将不能完成。资源的中断服务程序将不能完成。l当一个任务占用多个资源时,应按后进先出当一个任务占用多个资源时,应按后进先出(LIFOLIFO)的原则释放资源。

47、)的原则释放资源。65调度器作为资源调度器作为资源l标准还提供特殊的资源,调度器成为标准还提供特殊的资源,调度器成为RES_SCHEDULER RES_SCHEDULER ,它能使抢占不能产生。当抢占,它能使抢占不能产生。当抢占式任务在处理某段程序时要求连续运行,可以通式任务在处理某段程序时要求连续运行,可以通过获取资源过获取资源RES_SCHEDULERRES_SCHEDULER锁住调度器。实际上,锁住调度器。实际上,该资源的天花板等于系统最高优先级。一个非抢该资源的天花板等于系统最高优先级。一个非抢占任务可以认为是使用了占任务可以认为是使用了RES_SCHEDULER RES_SCHEDU

48、LER 资源的资源的任务。任务。 l此时,中断同样会被响应和处理,但不会产生调此时,中断同样会被响应和处理,但不会产生调度。度。66同步机制产生的问题同步机制产生的问题l优先级反转优先级反转67l死锁死锁68l外部资源:需要通过显示调用外部资源:需要通过显示调用API进行占有进行占有69优先级置顶优先级置顶70抢占式任务和中断服务程序之间的资源分配抢占式任务和中断服务程序之间的资源分配71在中断服务程序之间的资源分配在中断服务程序之间的资源分配72内部资源内部资源l一个内部资源是一个简单的资源,当一个任务启动时,一个内部资源是一个简单的资源,当一个任务启动时,它被加锁,当这个任务结束时才被解锁

49、。内部资源的它被加锁,当这个任务结束时才被解锁。内部资源的天花板可被视为任务的优先权。天花板可被视为任务的优先权。73l内部资源:任务一运行就占有内部资源:任务一运行就占有74l报警(报警(Alarm)l两级报警两级报警l报警动作报警动作l激活任务激活任务l设置事件设置事件l调用回调函数调用回调函数 根据配置,当该报警有根据配置,当该报警有效时,回调例程被调用或效时,回调例程被调用或任务被激活,或者一个事任务被激活,或者一个事件被设置。在报警回调函件被设置。在报警回调函数运行时,数运行时,2 2类中断被禁类中断被禁止。止。7报警报警75计数器计数器l一个计数器通过硬件提供的节拍来实现计数。一个

50、计数器通过硬件提供的节拍来实现计数。 OSEKOSEK不支持标准不支持标准APIAPI直接操作计数器。直接操作计数器。l操作系统关心的是怎样管理报警。操作系统关心的是怎样管理报警。lOSEKOSEK操作系统提供至少一个计数器(硬件或者软操作系统提供至少一个计数器(硬件或者软件定时器)。件定时器)。76报警管理报警管理l操作系统在报警产生时提供任务激活、设置事件操作系统在报警产生时提供任务激活、设置事件或调用一个报警回调例程。报警回调例程是由应或调用一个报警回调例程。报警回调例程是由应用程序提供一个简短的函数。用程序提供一个简短的函数。l当与报警关联的计数器计数达到设定值时,产生当与报警关联的计

51、数器计数达到设定值时,产生报警。可以通过相对值或绝对值来设置报警关联报警。可以通过相对值或绝对值来设置报警关联的计数器。的计数器。l报警可以定义为单次报警或周期报警。报警可以定义为单次报警或周期报警。l操作系统还提供取消报警和获取报警值函数。操作系统还提供取消报警和获取报警值函数。77报警管理的分层模型报警管理的分层模型78报警回调例程报警回调例程l一个报警回调例程可以无参数或返回值。一个报警回调例程可以无参数或返回值。l回调例程应按下面格式定义回调例程应按下面格式定义:ALARMCALLBACK(AlarmCallbackRoutineNameALARMCALLBACK(AlarmCallb

52、ackRoutineName););l例如:ALARMCALLBACK(BrakePedalStrokeALARMCALLBACK(BrakePedalStroke) ) /* do application processing */* do application processing */ 798消息消息l消息主要用于处理器内部和处理器之间进行通信。消息主要用于处理器内部和处理器之间进行通信。lOSEK COMOSEK COM对消息进行了详细说明。对消息进行了详细说明。80本节提要本节提要1 13 32 25 54 4OSEK标准介绍标准介绍OSEK OS标准标准AutoOSEK 内核设计

53、内核设计OSEK COM标准标准OSEK OIL标准标准81OSEK COMlOSEKOSEK标准也包含了车辆内部通信的接口和协议的规定,称标准也包含了车辆内部通信的接口和协议的规定,称为为OSEK COMOSEK COM。通信条款规定了整个车辆中两个结点之间的。通信条款规定了整个车辆中两个结点之间的通信和一个结点的内部的通信。基本思想是为应用层提供通信和一个结点的内部的通信。基本思想是为应用层提供一个易于实现不同硬件之间通信的独立于具体通信介质的一个易于实现不同硬件之间通信的独立于具体通信介质的标准的通信接口。标准的通信接口。lCOMCOM规范给内部通信和外部通信定义了公共的软件通信接口规范

54、给内部通信和外部通信定义了公共的软件通信接口和服务,这些接口和服务独立于所采用的通信协议。通过和服务,这些接口和服务独立于所采用的通信协议。通过这些,就增加了应用程序软件模块的可移植性。这些,就增加了应用程序软件模块的可移植性。 82l OSEK COM OSEK COM 提供了在任务间、提供了在任务间、ISRISR间以及任务和间以及任务和ISRISR之间传之间传输数据的服务。这些任务可以在一个输数据的服务。这些任务可以在一个ECUECU里面也可以在不同里面也可以在不同的的ECUECU里面。只能通过指定的里面。只能通过指定的APIAPI函数访问函数访问OSEK COMOSEK COM服务。服务

55、。这些这些APIAPI函数隐藏了内部通信和外部通信的不同之处,同时函数隐藏了内部通信和外部通信的不同之处,同时也隐藏了不同的通信协议、总线系统和网络类型。也隐藏了不同的通信协议、总线系统和网络类型。 83lCOM的概念模型的概念模型84lOSEK COMOSEK COM包括包括: : l一个交互层:为消息的传输提供通信服务一个交互层:为消息的传输提供通信服务 l一个网络层:为不同的消息和分段传输提供服务。一个网络层:为不同的消息和分段传输提供服务。l一个数据链路层接口:为上层不同数据包的网络传输提一个数据链路层接口:为上层不同数据包的网络传输提供服务。供服务。 lOSEK COM OSEK C

56、OM 提供丰富的通信工具集,但许多应用只提供丰富的通信工具集,但许多应用只会用到其中的一个子集。正因为此,该标准定义会用到其中的一个子集。正因为此,该标准定义了一个一致类集合,使了一个一致类集合,使OSEK COMOSEK COM能够按照不同的能够按照不同的要求进行集成,为不同的汽车供应商提供不同集要求进行集成,为不同的汽车供应商提供不同集成软件需求。成软件需求。 85lOSEK COM OSEK COM 按照通信一致类(按照通信一致类(CCCsCCCsCommunication Conformance Classes)Communication Conformance Classes)定义这

57、些定义这些分层。一致类的主要目的是根据不同应用需要和分层。一致类的主要目的是根据不同应用需要和CPUCPU特征定义不同功能的通信组成。特征定义不同功能的通信组成。OSEK COM OSEK COM 定定义了义了4 4个通信一致类来为个通信一致类来为ECUECU的内部通信到外部通的内部通信到外部通信提供支持。信提供支持。通信一致类通信一致类86lCCCA:CCCA:lCCCA CCCA 定义最少的特征用于支持内部通信。非队列消息被支定义最少的特征用于支持内部通信。非队列消息被支持。持。lCCCB:CCCB:lCCCBCCCB定义的特征用于支持内部通信。定义的特征用于支持内部通信。 除了除了CCC

58、ACCCA支持以外,支持以外,还包括消息状态信息和队列消息。还包括消息状态信息和队列消息。lCCC0:CCC0:lCCC0 CCC0 定义最少的特征支持内部通信和外部通信,所有的定义最少的特征支持内部通信和外部通信,所有的CCCACCCA和和2 2类通知,字节顺序转换,直接传输模式。类通知,字节顺序转换,直接传输模式。lCCC1:CCC1:l支持所用支持所用OSEK COMOSEK COM定义的特征。定义的特征。8788消息传送和接收模型消息传送和接收模型89外部接收模型外部接收模型90外部传送模型外部传送模型91外部消息的传送模式外部消息的传送模式l直接传送直接传送l消息根据应用层调用直接发

59、送。消息根据应用层调用直接发送。l周期传送周期传送lIPDU中的消息按照设置的周期进行传送。中的消息按照设置的周期进行传送。l混合传送混合传送l消息采用直接和周期混合模式进行发送。消息采用直接和周期混合模式进行发送。92lOSEK COMOSEK COM只支持静态长度消息,一个消息被定义成只支持静态长度消息,一个消息被定义成固定长度,或者定义一个消息可以变化的最大长度。固定长度,或者定义一个消息可以变化的最大长度。lOSEK COMOSEK COM提供超时监测(死限)机制。提供超时监测(死限)机制。lOSEK COMOSEK COM提供过滤机制。提供过滤机制。l在发送方,采用过滤算法,如果不满

60、足要求,在发送方,采用过滤算法,如果不满足要求,IPDUIPDU数据不数据不会被更新。会被更新。l在发送方,内部消息不需要过滤。在发送方,内部消息不需要过滤。l在接收方,内部消息和外部消息都可以采用过滤。在接收方,内部消息和外部消息都可以采用过滤。93直接传输直接传输94周期传输周期传输95混合传输混合传输96网络字节顺序转换网络字节顺序转换小端模式小端模式大端模式大端模式97消息配置消息配置l配置主要包括配置主要包括: :l消息传送属性的配置,消息传送属性的配置,IPDUIPDU传输模式的配置。传输模式的配置。l消息的打包。消息的打包。 Packing of the messages to

61、I- Packing of the messages to I-PDUsPDUs (see section 2.4 for details).(see section 2.4 for details).l接收是否采用队列及队列的大小接收是否采用队列及队列的大小98l内部通信基于消息内部通信基于消息对象的进程通信对象的进程通信l符合符合OSEK COM标准的标准的CCCA、CCCB一致类一致类l发送消息对象发送消息对象l接受消息对象接受消息对象l队列接受队列接受l非队列接受非队列接受99l消息通知机制消息通知机制l消息通知机制提供四种通知消息通知机制提供四种通知l接收通知接收通知l发送通知发送通

62、知l接收错误通知接收错误通知l发送错误通知发送错误通知l接受到消息,触发通知机制接受到消息,触发通知机制l激活任务激活任务l设置事件设置事件l设置标志设置标志l调用回调函数调用回调函数通知机制通知机制100消息过滤消息过滤l过滤主要用于判断消息是否符合设定的发送或过滤主要用于判断消息是否符合设定的发送或接收条件,如果不满足就不发送或接收。接收条件,如果不满足就不发送或接收。l提供非负整数的提供非负整数的1313种过滤算法,例如种过滤算法,例如l根据接收到的消息数据值进行过滤根据接收到的消息数据值进行过滤l根据消息数据变化趋势进行过滤根据消息数据变化趋势进行过滤l根据消息传输次数进行过滤根据消息

63、传输次数进行过滤l零长度和动态长度消息,没有过滤发生零长度和动态长度消息,没有过滤发生101死限监测死限监测l接收死限监测接收死限监测l必须在规定的时间间隔内接收数据,否则丢弃数据。必须在规定的时间间隔内接收数据,否则丢弃数据。l接收死限监测仅限于外部通信。接收死限监测仅限于外部通信。l发送死限监测发送死限监测l是否采用发送死限,每个消息可以根据自己要求进行配是否采用发送死限,每个消息可以根据自己要求进行配置。置。102本节提要本节提要1 13 32 25 54 4OSEK标准介绍标准介绍OSEK OS标准标准AutoOSEK内核设计内核设计OSEK COM标准标准OSEK OIL标准标准10

64、3OSEK OIL标准标准lOS DefinitionlTask DefinitionlISR DefinitionlResource DefinitionlEvent DefinitionlCounter DefinitionlAlarm DefinitionlMessage DefinitionlApplication Modes DefinitionlCOM DefinitionlNM DefinitionlOSEKturbo Performance Dependency104配置步骤配置步骤1.设计应用程序配置情况设计应用程序配置情况 设计好用户程序中需要的任务数量,任务属性,堆栈大小

65、,事件设计好用户程序中需要的任务数量,任务属性,堆栈大小,事件数量,告警数量,告警相关任务,消息数量,消息相关任务和事数量,告警数量,告警相关任务,消息数量,消息相关任务和事件情况件情况l2.利用利用OSEKBuilder生成生成oil文件和文件和gen文件夹文件夹中的中的c语言配置文件语言配置文件 用用OSEKBulider根据自己应用程序情况配置相关的根据自己应用程序情况配置相关的OIL文件。文件。OIL文件里任务等定义顺序是配置时的创建顺序。文件里任务等定义顺序是配置时的创建顺序。105配置步骤配置步骤l1.设计应用程序配置情况设计应用程序配置情况设计好用户程序中需要的任务数量,任务属性

66、,堆栈大设计好用户程序中需要的任务数量,任务属性,堆栈大小,事件数量,告警数量,告警相关任务,消息数量,小,事件数量,告警数量,告警相关任务,消息数量,消息相关任务和事件情况等配置需求。消息相关任务和事件情况等配置需求。l2.利用利用OSEKBuilder生成生成oil文件和文件和gen文件文件夹中的夹中的c语言配置文件语言配置文件用用OSEKBulider根据自己应用程序情况配置相关的根据自己应用程序情况配置相关的OIL文件。文件。OIL文件里任务等定义顺序是配置时的创建顺序。文件里任务等定义顺序是配置时的创建顺序。106设计应用程序配置情况设计应用程序配置情况设计好用户程序中需要的任务数量

67、,任务属性,堆栈大小,事设计好用户程序中需要的任务数量,任务属性,堆栈大小,事件数量,告警数量,告警相关任务,消息数量,消息相关任务件数量,告警数量,告警相关任务,消息数量,消息相关任务和事件情况,和事件情况,举例:举例:8个任务个任务,名字是,名字是TASK1TASK8,1个事件个事件,名字是,名字是event13个消息个消息,名字是,名字是mess1mess32个告警个告警,名字是,名字是alarm1和和alarm2 ,1个资源个资源,名字是,名字是res1任务任务8用到告警用到告警1、事件、事件1和任务和任务6实现一个自我延时,利用消息实现一个自我延时,利用消息3实现对任务实现对任务4的

68、激活,任务的激活,任务4和任务和任务5都要用到互斥访问的资源都要用到互斥访问的资源1。107希望达到的效果是系统启动后任务希望达到的效果是系统启动后任务8自动就绪,在设置了一个告警,自动就绪,在设置了一个告警,自我延时一段时间后激活任务自我延时一段时间后激活任务4,并发送消息,并发送消息3给任务给任务4。任务。任务4运运行时能使用互斥资源行时能使用互斥资源res1,之后任务,之后任务5被激活并也使用资源被激活并也使用资源res1,两者之间能互斥访问资源不会发生优先级翻转现象。最后回到任务两者之间能互斥访问资源不会发生优先级翻转现象。最后回到任务8,重复上述流程循环。,重复上述流程循环。设计应用

69、程序配置情况设计应用程序配置情况TASK8TASK6TASK4TASK5event1mess3alarm1res1108OIL文件结构文件结构单单CPU配置的配置的oil文件基本模式必须遵循以下结构。文件基本模式必须遵循以下结构。OIL_VERSION = ;oil版本版本IMPLEMENTATION / Implementation definition.list of implementation specific object attributes.;.;执行模式标准,即配置对象的模式定义执行模式标准,即配置对象的模式定义CPU / Definition of the applicati

70、on on CPU / System object definition = ; = ;. list of object attributes and references .;. list of objects .;具体配置对象的配置描述列表具体配置对象的配置描述列表109配置对象的语法结构配置对象的语法结构l所有的对象都用同样的语法结构. 如下所示: ;110OS DefinitionlOS对象描述一个操作系统的配置。对象描述一个操作系统的配置。l该类对象类型用关键字该类对象类型用关键字OS来定义,一个配置应用中来定义,一个配置应用中只能有一个只能有一个OS对象。对象。lOS对象的语法结构

71、如下所示对象的语法结构如下所示:OS ;111OS定义全局属性全局属性lSTATUS = ;OS的调式状态的调式状态lCC = ;OSEK的一致类定义的一致类定义lDEBUG_LEVEL = ;OS中对中对ORTI的支持情况的支持情况lBuildNumber = ; 编译编译ASCII型型Number是否编进是否编进OS的二进制镜像文件(的二进制镜像文件(ROM代代码)码)lMessageCopyAllocation = ; 由由SG默认指定或由用户指定的消息拷贝默认指定或由用户指定的消息拷贝lResourceScheduler = ;是否将调度器作为资源是否将调度器作为资源112Global

72、 System AttributesSTATUS (ENUM),CC(ENUM or AUTO),OS调试状态的标准属性,一致类型等调试状态的标准属性,一致类型等EXTENDED,ECC1,CPU Related AttributesTargetMCU,HCBasePage,相关于硬件的属性相关于硬件的属性S12DP256,Stack Related AttributesIsrStackSize,系统中栈支持情况系统中栈支持情况integerTask Related AttributeTimeScale,ScalePeriod,操作系统中的任务属性操作系统中的任务属性TRUE/FALSEInt

73、errupt Related PropertiesUnorderedException,ISR执行的参数定义执行的参数定义TRUE/FALSEHook Routines Related AttributeSTARUPHOOK系统启动回调函数系统启动回调函数TRUE/FALSESHUTDOWNHOOK系统关闭回调函数系统关闭回调函数TRUE/FALSEPRETASKHOOK进入任务上下文前回调函数进入任务上下文前回调函数TRUE/FALSEPOSTTASKHOOK退出任务上下文后回调函数退出任务上下文后回调函数TRUE/FALSEERRORHOOK当返回状态不为当返回状态不为E_OK时的回调函数

74、时的回调函数TRUE/FALSEUSEGETSERVICEID获得错误回调函数中服务号的函数获得错误回调函数中服务号的函数TRUE/FALSEUSEPARAMETERACCESS获得错误回调函数中上下文信息的函数获得错误回调函数中上下文信息的函数TRUE/FALSEIdleLoopHOOK空闲任务回调函数空闲任务回调函数TRUE/FALSEOS对象属性对象属性113OS ENUM STANDARD, EXTENDED STATUS;BOOLEAN STARTUPHOOK;BOOLEAN ERRORHOOK;BOOLEAN SHUTDOWNHOOK;BOOLEAN PRETASKHOOK;BOO

75、LEAN POSTTASKHOOK;BOOLEAN USEGETSERVICEID;BOOLEAN USEPARAMETERACCESS;BOOLEAN USERESSCHEDULER = TRUE; ;114lOSEKBuilder中名字为中名字为OS的的OS对象标志为对象标志为 l点击点击 或在或在OIL Object窗口右键添加窗口右键添加OS对象对象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderOS115Task DefinitionlOIL中一个任务对象描述一个任务的配置定义

76、中一个任务对象描述一个任务的配置定义l通过属性参数的配置实现任务对象和系统的其他对象之间的间通过属性参数的配置实现任务对象和系统的其他对象之间的间接连接。接连接。l该类对象类型用关键字该类对象类型用关键字TASK 来定义来定义lTASK对象的语法结构如下所示对象的语法结构如下所示:TASK PRIORITY = ;SCHEDULE = ;AUTOSTART = APPMODE = ; ;ACTIVATION = ;STACKSIZE = ;RESOURCE = ;EVENT = ;ACCESSOR = MESSAGE = ; WITHOUTCOPY = ; ACCESSNAME = ; ; ;

77、116PRIORITY063优先级大小优先级大小SCHEDULEFULL/NON任务调度方式任务调度方式AUTOSTARTRUE/FALSE自动调用模式自动调用模式APPMODEName应用模式应用模式ACTIVATION1激活状态激活状态RESOURCEName 任务中使用的资源任务中使用的资源ACCESSORSENT/RECEIVE消息使用模式消息使用模式EVENTname任务中运行的事件任务中运行的事件STACKSIZEinteger任务堆栈大小任务堆栈大小MESSAGEname任务发送或接受的消息任务发送或接受的消息WITHOUTCOPYTRUE/FALSE是否允许消息复制是否允许消息

78、复制ACCESSNAMEstring消息数据参数定义包括消息数据参数定义包括message ,event,withoutcopy三项三项Task对象属性对象属性117TASK BOOLEAN TRUE APPMODE_TYPE APPMODE; , FALSE AUTOSTART;UINT32 PRIORITY;UINT32 ACTIVATION;ENUM NON, FULL SCHEDULE;EVENT_TYPE EVENT;RESOURCE_TYPE RESOURCE;MESSAGE_TYPE MESSAGE; ;Task对象属性对象属性TASK namePriorityScheduleA

79、utostartAppmodeActivationStacksizeResourceEventAccessorAccessnameWithoutcopyMessage指针指针118lOSEKBuilder中名字为中名字为TASK8的的TASK对象标志为对象标志为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加TASK对象对象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderTASK119ISR Definitionl该类对象类型用关键字该类对象类型用关键字ISR来定义,对应

80、来定义,对应同名的中断程序配置。同名的中断程序配置。lISR 对象的语法结构如下所示对象的语法结构如下所示:ISR CATEGORY = ;PRIORITY = 0;RESOURCE = ;ACCESSOR = MESSAGE = ;ACCESSNAME = ; ; ;120ISR对象属性对象属性CATEGORY1,2中断类型中断类型RESOURCEnameACCESSORSENT/RECEIVED访问器访问器MESSAGEnameACCESSNAMEstringPRIORITY0121ISR UINT32 1, 2 CATEGORY;RESOURCE_TYPE RESOURCE ;MESSA

81、GE_TYPE MESSAGE ; ;ISR对象默认属性标准对象默认属性标准ISR nameCATEGORYRESOURCEACCESSORMESSAGEPRIORITYACCESSNAME122lOSEKBuilder中名字为中名字为isr1的的ISR对象标志为对象标志为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加ISR对象对象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderISR123Resource Definitionl该类对象类型用关键字该类对象类型用关键字

82、RESOURCE来定义。天来定义。天花板协议根据相关资源的任务优先级信息配置时花板协议根据相关资源的任务优先级信息配置时自动被执行。自动被执行。lRESOURCE对象的语法结构如下所示对象的语法结构如下所示: RESOURCE RESOURCEPROPERTY = LINKEDRESOURCE = ; ;124Resource对象默认属性标准对象默认属性标准RESEOURCE nameRESOURCEPROPERTYLINKEDRESOURCE RESOURCE sci_res RESOURCEPROPERTY = STANDARD; ;125lOSEKBuilder中名字为中名字为res1的

83、的RESOURCE对象标志对象标志为为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加RESOURCE对象对象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderResource126Event Definitionl该类对象类型用关键字该类对象类型用关键字EVENT来定义。事来定义。事件对象没有参数。件对象没有参数。l事件对象的语法结构如下所示事件对象的语法结构如下所示:EVENT MASK = ;127Event对象默认属性标准对象默认属性标准EVENT nameMASK

84、EVENT delay_expire MASK = AUTO; ;128lOSEKBuilder中名字为中名字为event1的的EVENT对象标志对象标志为为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加Event对象对象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderEvent129Counter DefinitionlCOUNTER对象描述对象描述OSEK系统的时钟配置。系统的时钟配置。没有参数的该类对象被其他的对象引用。没有参数的该类对象被其他的对象引用。l该类对

85、象类型用关键字该类对象类型用关键字COUNTER来定义。来定义。时钟对象的语法结构如下所示时钟对象的语法结构如下所示: COUNTER MINCYCLE = ;MAXALLOWEDVALUE = ;TICKSPERBASE = ;130MINCYCLEinteger一个报警周期所允许的最小计数范一个报警周期所允许的最小计数范围围MAXALLOWEDVALUEinteger定义计数的最大数目定义计数的最大数目TICKSPERBASEinteger时钟计数需要达到的一个基准值时钟计数需要达到的一个基准值Counter对象属性对象属性131COUNTER nameMINCYCLEMAXALLOWED

86、VALUETICKSPERBASECOUNTER UINT32 MINCYCLE;UINT32 MAXALLOWEDVALUE;UINT32 TICKSPERBASE;Counter对象属性对象属性132lOSEKBuilder中名字为中名字为counter1的的COUNTER对象对象标志为标志为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加COUNTER对对象象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderCounter133Alarm Definitionl该对象

87、描述告警的配置,通过属性参数的配置实现告警对象和该对象描述告警的配置,通过属性参数的配置实现告警对象和系统的其他对象之间的间接连接。系统的其他对象之间的间接连接。l告警对象引用的任务和时钟必须已经定义过。告警对象引用的任务和时钟必须已经定义过。l该类对象类型用关键字该类对象类型用关键字ALARM 来定义来定义l告警对象的语法结构如下所示告警对象的语法结构如下所示:ALARM COUNTER = ;ACTION = TASK = ;EVENT = ;ALARMCALLBACKNAME = ; ;AUTOSTART = ALARMTIME = ; CYCLETIME = ; APPMODE = ;

88、134ALARM对象属性对象属性COUNTERname设置计数器的名字设置计数器的名字ACTIONACTIVATETASK,SETEVENT,ALARMCALLBACK定义报警超时时通知的方式定义报警超时时通知的方式.即警报动作即警报动作TASKname当报警超时时通过激活或设置当报警超时时通过激活或设置事件通知任务事件通知任务EVENTname只有当只有当ACTION为为SETEVENT,报警超时时才能设置事件报警超时时才能设置事件ALARMCALLBACKNAMEstring当报警超时时回调常规的名字。当报警超时时回调常规的名字。AUTOSTARTTRUE/FALSE报警在系统启动时的是否

89、自动报警在系统启动时的是否自动开启开启ALARMTIMEinteger定义报警定义报警shall的超时时间的超时时间CYCLETIMEinteger定义报警周期时间定义报警周期时间APPMODEname定义报警在系统自动启动的应定义报警在系统自动启动的应用模式用模式135ALARM COUNTER_TYPE COUNTER;ENUM ACTIVATETASK TASK_TYPE TASK; , SETEVENT TASK_TYPE TASK;EVENT_TYPE EVENT; ALARMCALLBACK STRING ALARMCALLBACKNAME; ACTION; BOOLEAN TRU

90、E UINT32 ALARMTIME;UINT32 CYCLETIME;APPMODE_TYPE APPMODE;, FALSE AUTOSTART; ;ALARM nameCOUNTERACTIONALARMCALLBACKNAMEEVENTTASKAUTOSTARTAPPMODECYCLETIMEALARMTIMEALARM对象属性对象属性136lOSEKBuilder中名字为中名字为alarm1的的ALARM对象标志为对象标志为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加ALARM对象对象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入

91、该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderAlarm137Message Definitionl该对象描述消息的配置,通过属性参数的配置实现告警对该对象描述消息的配置,通过属性参数的配置实现告警对象和系统的其他对象之间的间接连接。象和系统的其他对象之间的间接连接。l消息对象的队列和非队列属性互斥,不能同时具备队列和消息对象的队列和非队列属性互斥,不能同时具备队列和非队列两种属性。非队列两种属性。l该类对象类型用关键字该类对象类型用关键字MESSAGE来定义来定义l资源对象的语法结构如下所示资源对象的语法结构如下所示:MESSAGE TYPE = ;QUEUED

92、EPTH = ;CDATATYPE = ;ACTION = TASK = ;EVENT = ;CALLBACKNAME = ;FLAGNAME = ;138TYPEQUEUED,UNQUEUED消息类型消息类型QUEUEDEPTHinteger消息队列消息队列CDATATYPEstring消息项的数据类型消息项的数据类型 ACTIONACTIVATETASK,SETEVENT,CALLBACK,FLAG,NONE消息到达时,任务通知的方式消息到达时,任务通知的方式TASKname只能定义为激活、只能定义为激活、/设置事件设置事件EVENTname消息到达时,事件格式当消息到达时,事件格式当AC

93、TION是是SETEVENT,这项必须定义这项必须定义CALLBACKNAMEstring当消息发送时,激活的函数名字,当消息发送时,激活的函数名字,当当ACTION是是CALLBACK时必须时必须定义定义FLAGNAMEstring当消息发送时的标志名字,当当消息发送时的标志名字,当ACTION是是FLAG时必须定义时必须定义Message对象属性对象属性139Message对象属性对象属性MESSAGE nameTYPEQUEUEDEPTHCDATATYPEACTIONCALLBACKNAMEEVENTTASKFLAGNAMEMESSAGE mess_w TYPE = UNQUEUED;

94、CDATATYPE = Wheel_w; ACTION = SETEVENT TASK = Lg; EVENT = tras_w; ; ;140lOSEKBuilder中名字为中名字为mess1的的MESSAGE对象标对象标志为志为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加MESSAGE对对象象l双击属性关键字,在弹出的双击属性关键字,在弹出的Edit Value窗口中输入该窗口中输入该属性的参数值或属性值属性的参数值或属性值OSEKBuilderMessage141Application Modes Definitionl一个一个CPU可包含几种不同的应用模式并用不同的

95、模式的名称来定义。可包含几种不同的应用模式并用不同的模式的名称来定义。l一个模式对象描述一种系统应用模式中自动就绪任务和告警的设置。一个模式对象描述一种系统应用模式中自动就绪任务和告警的设置。l规范中模式对象没有定义标准属性,只要一个规范中模式对象没有定义标准属性,只要一个CPU中至少包含一个模式对象即中至少包含一个模式对象即可。可。l该类对象类型用关键字该类对象类型用关键字APPMODE来定义来定义l时钟对象的语法结构如下所示时钟对象的语法结构如下所示:APPMODE ;lOSEKturbo OS支持支持8种不同的应用模式种不同的应用模式.142lOSEKBuilder中名字为中名字为app

96、mode的的APPMODE对象对象标志为标志为l点击点击 或在或在OIL Object窗口右键添加窗口右键添加APPMODE对对象象OSEKBuilderAPPMODE143COM DefinitionlCOM对象描述对象描述CPU交互子系统的配置。当前交互子系统的配置。当前CPU只能只能有一个有一个COM对象定义。对象定义。lCOM对象的语法结构如下所示对象的语法结构如下所示:COM USEMESSAGERESOURCE = ;USEMESSAGESTATUS = ;144NM DefinitionlNM对象描述了对象描述了CPU网络管理子系统的配置定义。但网络管理子系统的配置定义。但是规范

97、中没有对网络管理对象的属性进行定义。是规范中没有对网络管理对象的属性进行定义。145l根据设计在根据设计在OSEKBuilder中进行配置。中进行配置。lOSEK_builder的基本界面中左边的的基本界面中左边的OIL_Object是用户根据应用程序设计配置是用户根据应用程序设计配置OIL对象的条目,用户可以通过右键或者点击对象的条目,用户可以通过右键或者点击New object 快捷按钮添加对象。快捷按钮添加对象。l例如添加了例如添加了task对象后,在右边的属性栏对对象后,在右边的属性栏对task的个数及的个数及task的各种相关属性(如:的各种相关属性(如:task的优先级别,调度类型

98、,的优先级别,调度类型,APPMODE及及task的任务堆栈大小设置)。的任务堆栈大小设置)。l其它的其它的object还有:还有:ISR,EVENT,COUNTER,MESSAGE等生成配置等生成配置c文件文件l配置完成后,点配置完成后,点OSEK Builder 检查语法。通过后用检查语法。通过后用Project-generate或点击配或点击配置文件生成按钮置文件生成按钮 生成生成C文件。如果该按钮为灰色文件。如果该按钮为灰色 ,则点击,则点击Cpu图标图标 ,在弹出,在弹出的菜单中将的菜单中将Builder栏选择为栏选择为OSEKturbo_OS12_2_2_1_59模板即可。模板即可

99、。lOIL文件里任务等定义顺序是配置时的创建顺序。文件里任务等定义顺序是配置时的创建顺序。OIL文件中的顺序不影响文件中的顺序不影响C文件的文件的生成顺序生成顺序利用利用OSEKBuilder生成生成oil文件和文件和gen文件夹中的文件夹中的c语言配置文件语言配置文件146本节提要本节提要1 13 32 25 54 4OSEK标准介绍标准介绍OSEK OS标准标准AutoOSEK 内核设计内核设计OSEK COM标准标准OSEK OIL标准标准1471操作系统研发操作系统研发l车用操作系统有高可靠性、强实时性、网络化、平台车用操作系统有高可靠性、强实时性、网络化、平台化以及符合国际标准等要求

100、,因此在研发过程中参考化以及符合国际标准等要求,因此在研发过程中参考汽车软件国际标准汽车软件国际标准OSEK来进行实时操作系统的研发来进行实时操作系统的研发操作系统结构图 148操作系统内核研发操作系统内核研发l操作系统内核按功能分为:任务管理和调度、事件机操作系统内核按功能分为:任务管理和调度、事件机制、资源管理、消息机制、警报和计数管理、以及中制、资源管理、消息机制、警报和计数管理、以及中断服务程序和中断管理、错误处理、调试与跟踪等功断服务程序和中断管理、错误处理、调试与跟踪等功能。能。 1491501)任务管理与调度)任务管理与调度l研发兼容研发兼容OSEK OS的符合类级别为的符合类级

101、别为ECC2(a)基本任务 (b)扩展任务1512)资源管理)资源管理l在抢占任务调度方式中,为防止优先级的反转和死锁,采用了在抢占任务调度方式中,为防止优先级的反转和死锁,采用了优先级天花板协议(优先级天花板协议(PCP)。)。l资源的优先级下限大于或等于访问这个资源的所有任务中最大资源的优先级下限大于或等于访问这个资源的所有任务中最大的优先级。的优先级。l资源优先级下限应低于不访问该资源的所有任务的最低优先级。资源优先级下限应低于不访问该资源的所有任务的最低优先级。1523)事件机制)事件机制l事件机制为事件机制为OSEK规范中的一种重要同步机制,只应规范中的一种重要同步机制,只应用于扩展

102、任务。事件是实现扩展任务在等待状态和就用于扩展任务。事件是实现扩展任务在等待状态和就绪状态间转换的标志。绪状态间转换的标志。l事件管理实体采用事件管理实体采用TCB中的双掩码结构,掩码的每一中的双掩码结构,掩码的每一位对应一个事件,事件的具体含义由用户定义。事件位对应一个事件,事件的具体含义由用户定义。事件的触发可以是非挂起任务、消息、二类中断、报警,的触发可以是非挂起任务、消息、二类中断、报警,事件接收由任务来执行。事件接收由任务来执行。1534)消息机制)消息机制 操作系统内核只支持内部消息,任务之间是通过操作系统内核只支持内部消息,任务之间是通过内部消息实现数据通信的,一条消息只能由一个

103、任务内部消息实现数据通信的,一条消息只能由一个任务发送,但可以由一个或多个任务接受。发送,但可以由一个或多个任务接受。1545)报警机制)报警机制通过定义计数器对象来辅助实现该功能。计数器节拍源可以是通过定义计数器对象来辅助实现该功能。计数器节拍源可以是定时器、其他硬件产生的节拍或软件产生的计数。定时器、其他硬件产生的节拍或软件产生的计数。 1556)中断处理机制)中断处理机制提供统一的中断服务程序接口,采用规范中定义的中断向量提供统一的中断服务程序接口,采用规范中定义的中断向量表来定义中断入口,操作系统支持最多表来定义中断入口,操作系统支持最多255个中断嵌套。个中断嵌套。1567)出错处理

104、机制)出错处理机制操作系统提供错误类型,并提供对应错误处理建议给应用程操作系统提供错误类型,并提供对应错误处理建议给应用程序设计者。定义了两种错误类型:应用错误和致命错误。对于序设计者。定义了两种错误类型:应用错误和致命错误。对于应用错误,采用一些容错技术可以使系统正常地执行其他操作。应用错误,采用一些容错技术可以使系统正常地执行其他操作。对于致命错误,系统无法容忍这种错误的产生,对于这种错误对于致命错误,系统无法容忍这种错误的产生,对于这种错误的处理采用关闭系统或重新启动系统。用户是在的处理采用关闭系统或重新启动系统。用户是在ErrorHook中中对错误进行管理对错误进行管理 1578)任务的跟踪和调试)任务的跟踪和调试采用采用OSEK定义的跟踪和调试方法,采用两个定义的跟踪和调试方法,采用两个HOOK例程例程(PreTaskHook和和PostTaskHook)。)。 就绪就绪运行运行运行运行挂起挂起PostTaskHook OS内部行为内部行为 PreTaskHook任务任务 T1任务任务 T2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号