面向汽车电子的嵌入式软件研究与开发(19)

发布时间:2021-06-06

重庆邮电大学硕士论文第三章基于OSEKTurbo的ABS控制软件开发的任务占用的资源时,该高优先级的任务必须等待,直到低优先级的任务释放该资源。这时如果有大量的介于这两个任务优先级之间的任务被激活,而且它们根本不使用该资源,那么,占据资源的低优先级任务就会被占先,等待资源的高优先级任务也不能执行,而中间优先级的任务要先于高优先级的任务运行,这就是优先级反转。为了避免这种情况发生,OSEKTurbo采用了优先级最高限度协议(PriorityceilingProtoc01),即当一个任务占用了一个资源后,该任务的优先级会临时升高为该资源优先级。其优先级为可使用需要该资源的所有任务的优先级的最高值,这样,该任务只会被不使用该资源并且比该资源的优先级高的任务占先,直到它释放该资源为止。因此,当一个任务试图占用一个资源的时候,不可能有任何其他任务正占用着该资源,也就不会有因试图占用资源而进入等待态的任务。使用该协议同时解决了死锁的问题,当两个任务都己占用了一个资源,而且又试图访问对方所占有的资源时,它们无限期地相互等待下去就会发生死锁。该协议中不存在等待任务,自然也就避免了死锁。

此外,OSEKTl曲。还提供了另一种同步机制,即事件机制。该机制的含义是,一个处于等待状态的扩展任务,只有当它所等待的事件至少有一个发生。才能进入就绪态,并且事件的发生会以信号的方式传给该任务。事件机制既可用于多个任务的同步,同时也是任务内部通信的方法之一。虽然只有扩展任务才可以等待事件,但设置这些事件的却可以是任何任务或中断服务程序。有一点必须注意,为了遵循占用了资源就不被阻断的原则,必须避免一个占用了资源的任务因等待事件而进入等待状态。

3.2.3警报

前面提到汽车电子控制最典型的特性就是实时性,因此系统必须有基于时间或其他计数器的处理机制,来处理定时和循环任务。为此,0SEKT叫bo提供了警报机制,警报要么基于系统时钟,要么基于其他的某种计数器。当计数器到达警报设定值时被触发。警报触发后可以激活任务也可以为某一任务设置事件,或者干脆执行一个警报回调程序,具体怎样由用户在系统生成时静态定义,但警报值是动态设置的,可以是相对值或者是绝对值,也可以设为循环警报来激活周期性任务。

3.2.4中断

汽车控制系统要求对实时输入做出快速反应。在OSEKTurbo操作系统中,

由应用程序开发者编写的中断服务程序(IsR)与系统封装在~起,这样有利于保护任务和系统状态。OSEKTurbo操作系统把中断处理程序分为两类:(1)中断服务程序不会调用系统服务;(2)t9断服务程序可以调用部分系统功能,如激活任

面向汽车电子的嵌入式软件研究与开发(19).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219