基于OSEK/VDX的嵌入式车用操作系统研究
以下为文章全文:(本站微信公共账号:cartech8)

汽车零部件采购、销售通信录 填写你的培训需求,我们帮你找 招募汽车专业培训老师
中断处理 OSEK规范定义了2种中断服务程序:①ISR1。此类中断程序不使用操作系统的资源,中断结束后,处理程序从产生中断的地方继续执行。其对任务的管理没有影响,不要求调用操作系统的API。②ISR2。此类中断程序是系统生成时,通过用户子程序配置而成,它可以调用操作系统的API。中断的优先级高于任务,因此可以抢占任何任务。 事件机制 事件机制用于保证不同扩展任务之间的同步。该机制含义是,一个处于等待状态的扩展进程,只有当它所等待的事件至少有一个发生,才能进入就绪态,并且事件的发生会以信号的方式传给该进程。只有扩展任务,才具有事件。 资源管理 具有不同优先级的多任务访问共享资源需要使用资源管理机制进行协调。这些资源可以是一段临界区代码、调度程序、共享内存或是数据结构,也可以是共享硬件设备。系统在处理多个进程对共享资源的互斥访问时,采用信号量对临界区数据或资源加锁,但是这样可能会导致优先级反转。为了避免这种情况出现,OSEK采用了优先级最高限度协议(PCP),即 当一个进程占用了一个资源后,该进程的优先级会临时升高为该资源优先级。当该任务释放了资源后,其优先级回到要求访问资源前的优先级。使用该协议同时也解决了死锁的问题。 报警器 报警器是OSEK为处理循环事件提供的服务机制,警报或者基于系统时钟,或者基于其他的某种计数器。当计数器到达警报设置值时被触发,此时可以激活进程也可以为某进程设置事件,或者执行一个警报回调程序。 消息处理 任务之间是通过消息实现通信的,消息是应用数据的容器,只有一个发送者,但是可以有多个接受者。OSEK规范将消息分为可排队和不可排队的。前者是静态长度消息,内部数据被组织成FIFO队列,能被接受服务例程移走;不可排队消息是不断被刷新的消息,不能被服务例程移走。 错误处理 OSEKOS提供了系统专用的钩子程序,以便在操作系统内部操作时执行用户定义的函数。钩子程序可用于:系统启动,相应钩子程序在操作系统启动后,进入调度程序之前执行;系统关闭,相应钩子程序在应用或操作系统(此时发生严重错误)请求系统停止运行时执行;跟踪、调试应用以及现场切换时调用用户定义的扩展程序;错误处理。 基于μC/OS-Ⅱ的OSEKOS设计 OSEKOS设计理念 根据OSEK规范和μC/OS-Ⅱ的内核要求,CC1和ECC1这2个符合级别都只允许一个优先级有一个进程,因此可以将优先级从0到N-1分配给N个进程,使每个进程分配到的优先级不同,N是系统中的进程数量,这样可以使修改后的μC/OS-Ⅱ内核满足ECC1类模式。由于BCC2和ECC2这2个符合级别可以允许每个优先级有多个进程,因此要使用复杂的调度策略来追踪各个进程。 设计的OSEKOS可以采用μC/OS-Ⅱ的调度结构——就绪表,使用简单的占先式的调度策略,将每个进程的就绪态标志都放入就绪表中,然后从其中找到优先级最高的就绪态进程执行,实现一个基于优先级的可剥夺型的实时内核。这样不仅可以提高系统的实时性,而且可以降低操作系统的CPU负荷。对于BCC2和 ECC2这2个符合级别而言,可以在基于优先级的占先式调度策略基础上添加时间片轮换调度算法来处理优先级相同的2个任务之间的调度;也可以为每个优先级增加一个FIFO队列,先以任务优先级为检索,然后选择该进程队列中位于对首的进程运行。但是这样会牺牲一定的实时性,并且加大CPU的负荷,占用更多的 RAM。 为了提高OSEKOS的可移植性和利于OSEKOS的配置,按照μC/OS-Ⅱ的内核结构将其分为3部分:硬件无关部分、硬件相关部分和应用相关部分。这样可以使其在不同的硬件之间移植时更加的方便,将与应用相关部分放入配置文件内,便于用户使用。 μC/OS-Ⅱ在处理多个进程对共享资源的互斥访问时,主要是采用开关中断与信号量来对临界区数据或资源加锁,使用互斥型信号量管理来避免优先级反转,通过允许用户在申请信号量时定义等待超时化解死锁问题。OSEKOS是通过采用优先级最高限度协议(PCP)来避免优先级反转和死锁问题。可以通过在系统生成期间,静态分配每一资源的最高限度优先级,使设计的OS2EKOS执行PCP协议,达到兼容OSEK规范的目的。 根据OSEK规定的2类中断,针对具体的处理器平台,实现中断管理的标准API,并且根据μC/OS-Ⅱ提供非OSEK标准的API:开/关中断。由于是基于ECC1类模式来实现OSEKOS,所以支持OSEK规范定义的事件机制,可用于实现任务之间的同步协调。根据μC/OS-Ⅱ,可以支持的事件种类有信号量、互斥型信号量、邮箱和消息队列。由μC/OS-Ⅱ提供的时间管理和定时中断功能,实现OSEKOS中要求的警报器管理,以进一步提高操作系统的实时性和安全性。在μC/OS-Ⅱ中,定义了一系列与OSEKOS规范要求类似的钩子程序,用于实现用户自己定义的函数。 |
文章网友提供,仅供学习参考,版权为原作者所有,如侵犯到
你的权益请联系542334618@126.com,我们会及时处理。






会员评价:
共0条 发表评论