基于OSEK/VDX的嵌入式车用操作系统研究 02
- UID
- 872238
|
基于OSEK/VDX的嵌入式车用操作系统研究 02
设计的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规范要求类似的钩子程序,用于实现用户自己定义的函数。
OSEKOS基本结构的组成
由于OSEKOS中的标准应用程序接口(API)定义在操作系统的核心空间,根据以上设计理念可以将操作系统按功能分为进程管理和调度、资源管理、警报与计数器管理、事件管理和中断管理,其结构组成如图1所示。其中进程管理与调度是整个操作系统的核心,其他的管理机制为它提供不同的服务支持。
图1 OSEKOS结构组成图 每个进程都通过一个进程控制块(TCB)来管理,在进程管理模块中,实现OSEK标准API:激活进程、终止进程、连接进程、调度、捕获当前运行进程ID 和获得进程状态。资源管理模块实现OSEK标准API:获得资源、释放资源。计数器管理没有标准API,警报管理结构由警报和警报行为组成。其标准 API:获得警报信息、获得警报到期所需时间、设置相对警报、设置绝对警报和消除警报。事件管理模块实现的OSEK标准API:等待事件、设置事件、消除事件和获得进程的时间状态。实现中断管理的标准API:开/关所有中断和开/关第二类中断。
结束语
根据OSEKOS规范和μC/OS-Ⅱ内核实现的不同技术特点,提出OSEKOS的一些设计思想,并且设计出OSEKOS的基本结构组成。 OSEK/VDX体系的建立给国际汽车工业带来深远的影响,采用基于OSEK/VDX规范的RTOS进行开发能节省开发时间,降低成本,提高软件质量和模块的可移植性,而且需要的资源少。因此,研究基于OSEK/VDX规范的操作系统具有重要的意义. |
|
|
|
|
|