[发明专利]基于PowerPC处理器的车用操作系统中断管理方法无效
申请号: | 200510011379.7 | 申请日: | 2005-03-04 |
公开(公告)号: | CN1655124A | 公开(公告)日: | 2005-08-17 |
发明(设计)人: | 孙晓民;周书平 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100084北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 基于PowerPC处理器的车用操作系统中断管理方法属于嵌入式实时操作系统技术领域,其特征在于:针对基于PowerPC处理器实现的采用双内核结构的嵌入式实时操作系统,根据中断发生时系统的运行状态,采用不同的处理器现场保存,在实时内核运行态下,采用一次保存、一次恢复,从而减少了不必要的堆栈操作。作为清华大学汽车电子开放式系统的一部分,在MPC555平台上实施。测试表明,该方法提高了双内核系统中实时内核的中断响应速度和系统运行效率。 | ||
搜索关键词: | 基于 powerpc 处理器 操作系统 中断 管理 方法 | ||
【主权项】:
1.基于PowerPC处理器结构的车用操作系统中断管理方法,其特征在于:它是采用双内核机制的实时操作系统,所述的双内核机制是把标准非实时Linux进行硬实时化的方法,即通过在标准非实时Linux内核与底层硬件之间插入一个小的实时内核,由实时内核提供实时任务的管理,所述Linux内核作为实时内核的优先级最低的实时任务,只有当没有实时任务处于就绪态时才能得到运行;针对中断发生在实时任务运行过程中的情况,中断处理流程对实时任务运行现场采用一次保存一次恢复的策略;相应地所述方法依次含有以下步骤:步骤1.设定:所述实时操作系统在逻辑上分成下述四个级别:非实时进程级别:运行用户编写的非实时程序,运行进程采用动态优先级策略,由Linux调度程序调度运行,它的处理级别最低;实时进程级别:用户编写的实时应用程序和Linux内核运行于实时进程级别,所述Linux内核作为一个由实时内核管理的特殊进程其优先级最低,为“0”;它支持动态对象创建,动态内存分配;它实行模拟中断管理;实时核心级别:实时内核受非实时进程和Linux内核驱动,运行于实时核心级别;实时中断级别:它运行实时中断服务程序,以及驱动中断模拟器管理Linux中断处理程序;所述的操作系统设有以下三种堆栈类型:用户堆栈,它为用户态程序运行做准备;为实时进程分配的实时进程堆栈,其中的Linux实时进程堆栈对应于Linux内核中当前进程的核心堆栈;实时中断堆栈:运行实时中断处理程序;步骤2.在PowerPC处理器上构建以下模块:进程创建与堆栈分配模块,它包含:非实时任务的创建与堆栈分配子模块:它在所述Linux内核上为每个非实时任务分配以下各空间:进程控制块,表示进程的状态和拥有的资源;一定空间的内核堆栈,它是为运行系统服务和中断服务分配的内存空间;任务运行空间,设有用户堆栈用于运行任务代码;实时任务创建和堆栈分配子模块:它运行于实时内核之上,所述系统为每个实时任务分配一个实时任务堆栈并固定在系统内核生成时预留的内存空间内;系统双内核操作模块,包括供系统启动代码、用户任务代码、中断处理程序调用的激活任务和按照规定策略从就绪任务列表中选取一个用户任务再跳转到该任务执行的这样一种调度器操作;系统双内核操作代码支持抢占式调度,即当用户任务代码或者中断处理程序调用系统实时内核操作激活一个高优先级的用户任务时,激活任务操作就调用调度器选择新激活的任务,强制打断正在运行的优先级较低的用户任务,而转到激活的任务去执行。中断处理程序操作模块,它含有:中断处理程序入口:其中,外部中断处理程序放在MPC555微控制器的入口地址0x500处,计数器中断处理程序放在入口地址0x900处;实时中断服务程序:设定实时中断处理程序的优先级高于实时任务优先级;非实时中断处理程序:设定非实时内核中的任务作为实时内核的优先级最低的实时任务,在非实时内核中,非实时中断处理程序和内核系统服务运行于内核态,其优先级高于用户态的任务;中断处理程序结束:由用户中断服务程序激活了的新任务,只能等中断处理程序结束后再通过调度器来执行。步骤3.所述的中断处理程序依次含有以下各个步骤:步骤3.1保存现场:在产生中断后,只要所述系统处于实时或非实时用户态,便把堆栈指针从用户堆栈切换到中断堆栈,进入内核态,再保存现场;否则,系统已经处于内核态,可以直接保留现场;步骤3.2判断发生中断时的状态:若为用户态,依次执行保存进程地址、保存进程栈指针和获取中断通道号的操作;若为内核态:首先判断中断发生时内核是否忙,若内核不忙,则保存进程地址,再保存进程栈指针和获取中断通道号;若内核忙,则先判断实时内核中断是否嵌套,若已嵌套,则保存进程栈指针,再获取中断通道号;若未嵌套,则先从实时进程堆栈切换到实时中断堆栈,清除实时内核需要调度的变量,再接着去获取中断通道号;步骤3.3判断是否为实时中断:若是实时中断则执行实时中断处理程序、设置中断模拟器;否则,便直接设置中断模拟器;步骤3.4判断所述系统是否同时满足以下条件:实时内核不忙、中断模拟器处于开通中断状态、中断响应通道畅通,若同时满足以上三个条件,则直接进入中断模拟器调用中断服务程序,然后作中断结束处理;若实时内核不忙,而其他条件不满足,则直接作中断结束处理;若以上三个条件都不满足,则判断实时内核堆栈是否嵌套;步骤3.5若实时内核堆栈已经嵌套,则直接作中断结束处理;若实时内核中断未嵌套,便从实时中断堆栈切换到实时进程堆栈,接着判断是否需要实时调度,若需要实时调度,便执行实时调度操作,否则,作中断结束处理。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200510011379.7/,转载请声明来源钻瓜专利网。