一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断的处理方法技术方案

技术编号:15690665 阅读:74 留言:0更新日期:2017-06-24 03:14
本发明专利技术设计了一种基于PowerPC处理器的操作系统分区虚拟中断实现方法。PowerPC处理器中断处理的机制导致在操作系统的中断处理中,不同分区的中断处理均依赖于处理器唯一的中断入口,进而致使不同分区的中断处理在设计实现上出现了耦合。本发明专利技术提出了一种虚拟中断的实现方法,能够使基于PowerPC处理器的嵌入式操作系统中不同分区的中断处理解藕,从而使每个分区对的中断处理不会影响到其他分区,同时各分区拥有完整的中断控制能力以及在用户态下对中断的处理能力。此方法为嵌入式操作系统实现各分区之间相互独立,互不干扰提供了必要的技术支撑,降低了分区内的软件设计与验证复杂性。

Method for processing partition virtual interrupt of embedded operating system based on PowerPC processor

The invention designs an operating system partition virtual interrupt realization method based on an PowerPC processor. The mechanism of PowerPC interrupt processing resulted in the interruption processing operating system, interrupt processing in different zones are dependent on the processor only interrupt entrance, thus resulting in different areas in the design and implementation of interrupt handling on coupling. The present invention provides a method to realize virtual interrupt, interrupt processing can make the decoupling of different partitions of the embedded operating system PowerPC processor based on the partition so that each of the interrupt processing will not affect other partitions, each partition has a complete interrupt control ability and in user mode of interrupt processing ability. This method provides the necessary technical support for the implementation of the embedded operating system, independent of each other, without interference, and reduces the complexity of software design and verification in the partition.

【技术实现步骤摘要】
一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断的处理方法
本专利技术属于嵌入式操作系统领域涉及一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断处理方法。
技术介绍
嵌入式实时操作系统的分区是指运行在同一个处理器上,但是在执行时间和存储空间上相互隔离的代码段。操作系统内核对各个分区按照一定的调度规则循环调度,每个分区在自己的执行时间内独占处理器资源。同时,通过内存配置,各分区拥有自己的内存空间,分区相互之间无法直接访问,分区间的通信必须通过内核来进行。嵌入式操作系统的分区为不同功能组、不同安全级别、不同执行周期、不同触发方式的任务集成在同一个处理器中运行提供了便捷,由于各分区之间相互隔离,运行于不同分区上的程序互不影响,因此各分区内运行的软件的变动不会直接影响其他分区,某个分区内的软件错误不会向其他分区扩散,从而可以极大的减少软件升级或变动造成的验证时间和成本。为了实现分区间在空间上相互隔离,同时也为了保证分区内运行的软件的错误不会对其他分区和整个操作系统造成影响,各分区需要运行于处理器的用户态,这时分区的内的软件只能访问特定的一些寄存器,相对应的,操作系统的内核运行与内核态,可以访问全部的寄存器。当一个分区的运行时间用完时,操作系统内核会切换其他分区进入处理器,这时处理器会经历从用户态切换到内核态,最后再回到用户态的过程。一般情况下,上述过程可以保证嵌入式操作系统各分区的独立性,但是,由于PowerPC处理器响应外部中断时需要进入内核态,这时运行的程序可以访问全部寄存器和内存地址空间,因此,操作系统各分区互不干扰的特性被破坏,这表现在两个方面:首先是一个分区内的软件错误可能会扩散至其他分区,例如某个分区的外部中断处理函数中出现堆栈溢出时,就有可能修改了其他分区的数据或代码,造成不可预计的错误;其次,由于多个分区可能对同一个外部中断源有不同的处理逻辑,但按照PowerPC处理器提供的中断方式,所有的外部中断都在同一个入口点进行处理,这时就需要在该入口进行分区的判断,根据不同分区号进入不同处理流程,因此各分区的外部中断处理程序在这里出现了耦合,这与分区相互独立的思想是违背的,同时也增加了各分区中断处理程序的测试与验证复杂度。在此条件下,需要提出一种方法,使嵌入式操作系统的各分区能够在处理器的用户态下,在各自分区的上下文环境中,独立的控制和响应外部中断信号,实现对中断的开关、锁存、循环嵌套、优先级抢占、中断函数调用等功能。
技术实现思路
本专利技术的目的是,能够使基于PowerPC处理器的嵌入式操作系统中不同分区的中断处理解藕,从而使每个分区对的中断处理不会影响到其他分区,同时各分区拥有完整的中断控制能力以及在用户态下对中断的处理能力。此方法为嵌入式操作系统实现各分区之间相互独立,互不干扰提供了必要的技术支撑,降低了分区内的软件设计与验证复杂性。本专利技术提供了一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断机制,其特征在于:发生硬件中断时,当前正在运行的分区可以按照本分区的中断配置策略依次完成以下步骤,以实现对中断的控制和在用户态下的中断处理:步骤1):处理器进入内核态,跳转到硬件中断入口,保存当前硬件中断的上下文,然后判断当前分区的虚拟中断控制器是否打开,如果没有打开则直接转到外部中断出口,重新恢复上下文并退出中断,继续在用户态下运行当前分区的程序,否则进入步骤2);步骤2):判断当前分区的虚拟中断控制器是否屏蔽了当前中断位,若屏蔽了该中断位,则锁存当前中断并转到外部中断出口,否则进入步骤3);步骤3):判断当前中断的优先级,如果比正在执行的虚拟中断优先级低,则将当前中断锁存起来,并进入外部中断出口;否则复制上下文到当前分区的堆栈内,并进入步骤4);步骤4):将SRR0寄存器的值改为当前中断在本分区内的虚拟中断处理函数的入口地址,然后退出中断,跳转到相应的虚拟中断处理函数,在用户态下对当前中断进行处理,然后进入步骤5);步骤5):通过系统调用进入内核态,判断是否有仍然锁存且未处理的中断。如果有锁存未处理的中断,则将优先级最高的锁存中断作为当前待处理中断,然后跳转到步骤4);如果没有锁存未处理的中断则将保存在当前分区堆栈内的上下文恢复到寄存器中。退出系统调用,重新回到用户态,并在中断前的上下文中继续运行程序。处理器的硬件中断发生后,会自动进入内核态,并且在中断堆栈中保存中断现场的上下文,如步骤1)所述。在判断当前分区的虚拟中断开关打开后,仅需要将之前保存在中断堆栈的上下文复制到分区的堆栈内,并释放中断堆栈相应空间,如步骤3)所述。各分区的虚拟中断控制器需要在分区初始化的时候进行配置,在每次切换分区的同时也切换相应的虚拟中断控制器。每个分区可以指定自己的虚拟中断控制器的开关状态,各中断的屏蔽状态,是否支持中断嵌套。每个虚拟中断控制器提供16个中断优先级,在分区初始化阶段可以按照硬件的优先级配置虚拟中断的优先级,高优先级的中断可以抢占当前正在运行的低优先级中断。此方法中,处理器的外部中断入口,外部中断出口,虚拟中断入口和出口程序都是相同的,并且对操作系统的用户透明,用户只需要在操作系统的分区初始化时按照自己的需求对虚拟中断控制器进行相应配置。本专利技术具有的优点和有益效果:本专利技术是一种基于PowerPC处理器的虚拟中断处理方法,通过这种方法,可以使嵌入式操作系统各分区的中断处理过程相互解藕,互不影响,提高了分区的独立性。附图说明图1是原始的外部中断处理流程示意图;图2是使用本专利技术的分区虚拟中断流程示意图;具体实施方式下面结合说明书附图对本专利技术做详细说明,图1显示的是原始的中断处理流程,外部中断发生时,程序自动跳转到外部中断入口地址,当前处理器状态也随之进入内核态。在外部中断入口程序中,对中断上下文进行保存,然后按照中断向量号查找并跳转到相应中断处理程序。使用本方法后,当发生硬件中断时,操作系统进入内核态,SRR0寄存器自动保存中断发生时要执行的下一条指令地址,SRR1寄存器自动保存中断发生时的处理器状态,指令指针跳转到外部中断处理入口地址。在该入口程序中,对当前上下文进行保存,并判断是否进入虚拟中断处理流程,如步骤S1所示。如果当前分区的虚拟中断控制器的开关是打开的,则进一步判断当前类型的中断是否被屏蔽,如果被屏蔽则将当前中断锁存起来,如步骤S2所示。中断锁存可以有多种实现方法,例如用一个整型变量记录一种类型中断的发生次数,每次锁存该中断时相应变量做自加操作,每次处理该中断时该变量做自减操作。若当前中断没有屏蔽,则进一步判断当前中断的优先级是否比分区内正在处理的中断的优先级高,如果分区内没有正在处理的中断或当前中断比正在处理的中断优先级高,则将中断栈中保存的中断上下文转存到当前分区的堆栈中,如步骤3所示。将SRR0寄存器的值修改为分区内配置当前中断所对应的虚拟中断处理函数的入口地址,然后退出中断,则处理器进入用户态,并且开始运行虚拟中断处理函数处理当前中断,如步骤4所示。在虚拟中断处理结束后,判断是否还有锁存未处理的中断,如果有则找出当前锁存的所有中断中优先级最高的一个进行处理,否则恢复中断上下文并退出中断,如步骤5所示。通过以上步骤,各分区可以实现用户态下的虚拟中本文档来自技高网
...
一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断的处理方法

【技术保护点】
一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断处理方法,其特征在于:发生硬件中断时,当前正在运行的分区可以按照本分区的中断配置策略依次完成以下步骤,以实现对中断的控制和在用户态下的中断处理:步骤1):处理器进入内核态,跳转到硬件中断入口,保存当前硬件中断的上下文,然后判断当前分区的虚拟中断控制器是否打开,如果没有打开则直接转到外部中断出口,重新恢复上下文并退出中断,继续在用户态下运行当前分区的程序,否则进入步骤2);步骤2):判断当前分区的虚拟中断控制器是否屏蔽了当前中断位,若屏蔽了该中断位,则锁存当前中断并转到外部中断出口,否则进入步骤3);步骤3):判断当前中断的优先级,如果比正在执行的虚拟中断优先级低,则将当前中断锁存起来,并进入外部中断出口;否则复制上下文到当前分区的堆栈内,并进入步骤4);步骤4):将SRR0寄存器的值改为当前中断在本分区内的虚拟中断处理函数的入口地址,然后退出中断,跳转到相应的虚拟中断处理函数,在用户态下对当前中断进行处理,然后进入步骤5);步骤5):通过系统调用进入内核态,判断是否有仍然锁存且未处理的中断。如果有锁存未处理的中断,则将优先级最高的锁存中断作为当前待处理中断,然后跳转到步骤4);如果没有锁存未处理的中断则将保存在当前分区堆栈内的上下文恢复到寄存器中。退出系统调用,重新回到用户态,并在中断前的上下文中继续运行程序。...

【技术特征摘要】
1.一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断处理方法,其特征在于:发生硬件中断时,当前正在运行的分区可以按照本分区的中断配置策略依次完成以下步骤,以实现对中断的控制和在用户态下的中断处理:步骤1):处理器进入内核态,跳转到硬件中断入口,保存当前硬件中断的上下文,然后判断当前分区的虚拟中断控制器是否打开,如果没有打开则直接转到外部中断出口,重新恢复上下文并退出中断,继续在用户态下运行当前分区的程序,否则进入步骤2);步骤2):判断当前分区的虚拟中断控制器是否屏蔽了当前中断位,若屏蔽了该中断位,则锁存当前中断并转到外部中断出口,否则进入步骤3);步骤3):判断当前中断的优先级...

【专利技术属性】
技术研发人员:淡图南宋科璞武方方颜纪迅朱立平鹿雪玲
申请(专利权)人:中国航空工业第六一八研究所
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1