CN100389411C - 在嵌入式实时操作系统中实现逻辑中断优先级的方法 - Google Patents

在嵌入式实时操作系统中实现逻辑中断优先级的方法 Download PDF

Info

Publication number
CN100389411C
CN100389411C CNB2005100693970A CN200510069397A CN100389411C CN 100389411 C CN100389411 C CN 100389411C CN B2005100693970 A CNB2005100693970 A CN B2005100693970A CN 200510069397 A CN200510069397 A CN 200510069397A CN 100389411 C CN100389411 C CN 100389411C
Authority
CN
China
Prior art keywords
interrupt
interruption
cpu
priority level
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2005100693970A
Other languages
English (en)
Other versions
CN1866231A (zh
Inventor
张连栋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datang Mobile Communications Equipment Co Ltd
Original Assignee
Datang Mobile Communications Equipment Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Datang Mobile Communications Equipment Co Ltd filed Critical Datang Mobile Communications Equipment Co Ltd
Priority to CNB2005100693970A priority Critical patent/CN100389411C/zh
Publication of CN1866231A publication Critical patent/CN1866231A/zh
Application granted granted Critical
Publication of CN100389411C publication Critical patent/CN100389411C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

在ERTOS中实现逻辑中断优先级的方法,针对CPU在当前中断操作过程中屏蔽部分中断,在ERTOS中的中断对应的ISR中设置逻辑中断优先级,逻辑中断优先级级数等于中断所属中断源的数目,a.ERTOS初始化,根据ERTOS中所有ISR设置的逻辑中断优先级的相对关系和所有ISR对应中断所属中断源在IMR对应的屏蔽位,得到中断的PIC配置项;b.CPU接收到ERTOS中外设所触发的中断后,关闭PIC全局中断,将中断优先级设置为最低,根据所接收中断的PIC配置项对IMR配置,对逻辑中断优先级比接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位置位;c.打开全局中断,执行所接收中断对应的ISR。该方法实现设置的中断优先级级数不受PIC设置的硬件中断优先级级数的影响。

Description

在嵌入式实时操作系统中实现逻辑中断优先级的方法
技术领域
本发明涉及在嵌入式实时操作系统(ERTOS)中对中断优先级的处理技术,特别涉及一种在ERTOS中实现逻辑中断优先级的方法。
背景技术
目前,ERTOS中的外设可以采用中断的方式向CPU请求服务。每个中断都设置有对应的中断服务程序(ISR)。当ERTOS中的外设通过对应的中断源向CPU触发中断时,CPU执行被触发中断对应的ISR,完成本次中断操作。由于ERTOS中会具有多个外设协同工作,相应地,ERTOS中会具有多个中断,为了便于CPU对多个中断的管理,CPU会封装可编程中断控制器(PIC)来对多个ERTOS的外设通过对应的中断源触发的中断进行控制。
在PIC中或者CPU的中断处理部分中还具有中断屏蔽寄存器(IMR),每个外设都是通过中断源触发中断的,每个中断源都对应IMR中的一个屏蔽位,CPU根据IMR中的屏蔽位设置情况确定是否响应ERTOS中的外设通过中断源所触发的对应的中断,从而使CPU执行该中断操作。
当CPU执行中断操作时,会预先引入硬件中断优先级别的概念,每一个中断都会设置一个硬件中断优先级,硬件中断优先级的级数由PIC进行设置,通常硬件中断优先级的级数会少于PIC提供的中断源数目,这是为了减少CPU响应由中断源所触发中断的次数,减轻CPU处理中断的负荷。例如:PIC提供的中断源数目为64个,但是其设置的中断优先级的级数为8个。
目前,ERTOS的不同CPU对中断操作过程也不同,不同CPU对中断的不同操作过程可以分为两类,第一类:CPU在当前中断操作过程中屏蔽部分中断;第二类:CPU在当前中断操作过程中屏蔽所有中断。
对于第一类CPU对中断的操作过程如图1所示:
步骤100、ERTOS进行初始化,在PIC中设置ERTOS的各个中断对应的硬件中断优先级。
步骤101、ERTOS中的外设向CPU触发中断。
步骤102、CPU接收到中断后,根据PIC中的设置将CPU的优先级别设置为该中断对应的硬件中断优先级。
步骤103、CPU执行步骤102中所接收的中断对应的ISR。
在CPU开始响应一个中断到执行完该中断对应ISR的这段时间内,比CPU正在处理硬件中断优先级高的中断被触发时,CPU通过比较自身设置的优先级别与被触发中断对应的硬件中断优先级别,判断出被触发中断可以被响应,则停止执行当前正在执行的中断对应的ISR,根据PIC的设置将CPU的优先级别设置为被触发中断对应的硬件中断优先级别,转而执行该中断对应的ISR。比CPU正在处理硬件中断优先级低的和等于CPU正在处理中断优先级的中断被触发时,CPU通过比较自身设置的优先级别与被触发中断对应的硬件中断优先级别,判断出被触发中断不被响应,则屏蔽该中断。
对于这种情况,由于PIC设置的硬件中断优先级级数小于中断源的数目,使得一些中断源会设置为同一硬件中断优先级,当具有与CPU正在响应中断的硬件中断优先级相同的中断触发时,则PIC无法响应发起触发的中断。
对于第二类CPU对中断的操作过程如图2所示:
步骤200、ERTOS进行初始化,在PIC中设置ERTOS各个中断对应的硬件中断优先级。
步骤201、ERTOS中的外设通过PIC向CPU触发中断。
步骤202、CPU接收到中断后,设置IMR,将IMR中所有的中断屏蔽位都置位,或者关闭PIC全局中断。
步骤203、CPU执行步骤202中所接收的中断对应的ISR。
在CPU开始响应一个硬件中断到执行完该硬件中断对应的ISR完毕的这段时间内,PIC会关闭全局中断或者由于CPU检测出IMR所有中断屏蔽位都置位,从而所有的中断都不会被响应。在CPU处理完该中断对应的ISR后,CPU再打开PIC全局中断。这类CPU对中断的操作过程不涉及中断的硬件中断优先级,比CPU当前所执行中断的硬件中断优先级高的中断也无法打断CPU当前所执行的中断,进行提前执行。
从上述两类CPU对中断的操作过程来看,要么CPU的操作过程不涉及中断的硬件中断优先级,比CPU当前所执行中断的硬件中断优先级高的中断也无法打断CPU当前所执行的中断,进行提前执行;要么CPU的操作过程虽然涉及中断的硬件中断优先级,并且比CPU当前所执行中断的硬件中断优先级高的中断可以打断CPU当前所执行的中断,进行提前执行,但是由于硬件中断优先级设置的级别数目小于中断源数目,会出现多个中断必须设置为同一硬件中断优先级的情况,而无法真正区分各个中断真实的中断优先级。更进一步,由于硬件中断优先级设置的级别数目与PIC有关,所以封装不同PIC的ERTOS无法为用户提供具有统一硬件中断优先级的级别数目的中断源。
发明内容
有鉴于此,本发明的主要目的在于提供一种在ERTOS中实现逻辑中断优先级的方法,该方法能够实现设置的中断优先级级数不受PIC设置的硬件中断优先级级数的影响,保证比CPU当前所执行中断的逻辑中断优先级高的中断能够打断CPU当前所执行的中断,进行提前执行,从而使封装不同PIC的ERTOS为用户提供具有统一中断优先级级数的中断源。
根据上述目的,本发明的技术方案是这样实现的:
在嵌入式实时操作系统ERTOS中实现逻辑中断优先级的方法,针对CPU在当前中断操作过程中屏蔽部分中断,在ERTOS中的中断对应的中断服务程序ISR中设置该中断的逻辑中断优先级,所设置的逻辑中断优先级级数等于中断所属中断源的数目,该方法还包括:
a、ERTOS初始化,根据ERTOS中所有ISR设置的逻辑中断优先级之间的相对关系和所有ISR对应中断所属中断源在中断屏蔽寄存器IMR对应的屏蔽位,计算得到中断的可编程中断控制器PIC配置项;
b、CPU接收到ERTOS中外设所触发的中断后,关闭PIC全局中断;
c、CPU将中断优先级设置为最低,根据所接收中断的PIC配置项对IMR进行配置,对逻辑中断优先级比接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
d、CPU打开全局中断,CPU执行所接收中断对应的ISR。
当逻辑中断优先级高于所述步骤b所执行中断的中断被触发时,该方法还包括:
e1、CPU接收到外设通过中断源所触发的逻辑中断优先级高于步骤b所执行中断的中断,根据该中断源对应IMR中的屏蔽位设置值确定该中断源所触发的中断能够被响应,响应该中断;
f1、CPU关闭PIC全局中断;
g1、CPU将中断优先级设置为最低,根据步骤e1接收到的中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤e1接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
h1、CPU打开全局中断,CPU执行所接收中断对应的ISR。
一种在ERTOS中实现逻辑中断优先级的方法,针对CPU在当前中断操作过程中屏蔽全部中断,其特征在于,在ERTOS中的中断对应的ISR中设置该中断的逻辑中断优先级,所设置的逻辑中断优先级级数至多等于中断所属中断源的数目,该方法还包括:
a、ERTOS初始化,根据ERTOS中所有ISR设置的逻辑中断优先级之间的相对关系和所有ISR对应中断所属中断源在中断屏蔽寄存器IMR对应的屏蔽位,计算得到中断的可编程中断控制器PIC配置项;
b、CPU接收到ERTOS中外设所触发的中断后,关闭PIC全局中断;
c、CPU根据所接收中断的PIC配置项对IMR进行配置,对逻辑中断优先级比接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
d、CPU打开全局中断,CPU执行所接收中断对应的ISR。
8、如权利要求7所述的方法,其特征在于,当逻辑中断优先级高于所述步骤b所执行中断的中断被触发时,该方法还包括:
e1、CPU接收到外设通过中断源所触发的逻辑中断优先级高于步骤b所执行中断的中断,根据该中断源对应IMR中的屏蔽位设置值确定该中断源所触发的中断能够被响应,响应该中断;
f1、CPU关闭PIC全局中断;
g1、CPU将中断优先级设置为最低,根据步骤e1接收到的中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤e1接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
h1、CPU打开全局中断,CPU执行所接收中断对应的ISR。
当逻辑中断优先级低于或等于所述步骤b执行中断的中断被触发时,该方法还包括:
e2、CPU接收到外设通过中断源所触发的逻辑中断优先级低于或等于步骤b所执行中断的中断,根据该中断源对应IMR中的屏蔽位设置值确定该中断源所触发的中断不能被响应,继续执行完步骤d执行的中断后,再响应逻辑中断优先级低于或等于步骤b所执行中断的中断;
f2、CPU关闭PIC全局中断;
g2、CPU将中断优先级设置为最低,根据步骤e2接收到的中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤e2接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
h2、CPU打开全局中断,CPU执行所接收中断对应的ISR。
为ERTOS中的任务设置PIC配置项,在步骤b之前,该方法还包括:
b1、CPU执行任务,根据任务设置的PIC配置项对IMR对应的屏蔽位置位;
在步骤b所述接收到ERTOS中外设所触发的中断后,还包括:
b2、CPU根据被触发中断所属的中断源对应IMR中的屏蔽位设置值确定该中断是否能被响应,如果是,执行步骤b的后续过程;否则,继续执行完任务后再执行步骤b的后续过程。
所述的PIC配置项为对应于IMR的各个屏蔽位的配置值,该IMR的各个屏蔽位和中断一一对应。
当中断能够被响应时,所述的PIC配置项中的对应于该中断所属中断源的IMR的屏蔽位不置位;当中断不能够被响应时,所述的PIC配置项中的对应于该中断所属中断源的IMR的屏蔽位置位。
从上述方案可以看出,本发明预先给中断对应的ISR设置逻辑中断优先级,在ERTOS初始化时,根据ERTOS所有ISR设置的逻辑中断优先级之间的相对关系以及ISR对应中断所属中断源在IMR中的屏蔽位给中断设置PIC配置项,当中断通过所在中断源触发时,根据该中断的PIC配置项设置在IMR中的屏蔽位。由于本发明设置的逻辑中断优先级级数不受PIC设置的硬件中断优先级级数的影响,所以可以设置逻辑中断优先级的级数最多可以等于中断源的数目,保证比CPU当前所执行中断的逻辑中断优先级高的中断能够打断CPU当前所执行的中断,进行提前执行。从而使封装不同PIC的ERTOS为用户提供具有统一中断优先级级数的中断源。更进一步地,任务也可以预先设置PIC配置项,当任务运行时,根据任务设置的PIC配置项设置在IMR中的屏蔽位,从而屏蔽一些需要屏蔽的中断。
附图说明
图1为现有技术的第一类CPU对中断的操作过程流程图;
图2为现有技术的第二类CPU对中断的操作过程流程图;
图3为本发明的第一类CPU对中断的操作过程流程图;
图4为本发明的第二类CPU对中断的操作过程流程图;
图5为本发明在为中断设置逻辑中断优先级后第一类CPU对中断的操作实施例一的流程图;
图6为本发明在为中断设置逻辑中断优先级后第一类CPU对中断的操作实施例二的流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚明白,以下举具体实施例并参照附图,对本发明进行进一步详细的说明。
本发明为了能够实现给每个中断设置中断优先级,而不是像现有技术那样给多个中断设置同一硬件中断优先级,引入了逻辑中断优先级的概念。本发明在设置中断对应的ISR时,在中断对应的ISR中设置该中断的逻辑中断优先级。
本发明在ISR设置的逻辑中断优先级不是硬件意义上的中断源的优先级,而是逻辑上的,是通过动态屏蔽IMR的其他中断源对应的屏蔽位体现出来的。例如:当逻辑中断优先级高的ISR运行时,其他所设置的所有逻辑中断优先级低的中断源对应的屏蔽位都被置位,但是这些被屏蔽的中断源所触发的中断的硬件中断优先级有可能高于正在运行ISR所对应中断的硬件中断优先级。
对于整个ERTOS,所有中断的ISR都静态创建。在ERTOS运行之后,不允许再创建中断对应的ISR,也不允许更改已创建ISR设置的逻辑中断优先级。这是因为在ERTOS运行之后,ERTOS会根据每个ISR设置的逻辑中断优先级计算出相应中断对应的PIC配置项,这个计算依赖于每个ISR设置的逻辑中断优先级,如果对ISR设置的逻辑中断优先级进行了更改或者再创建ISR,则会影响到ERTOS计算其他中断对应的PIC配置项。
本发明在ERTOS运行之后,ERTOS会根据每个ISR设置的逻辑中断优先级计算出相应中断对应的PIC配置项,中断对应的PIC配置项的内容为对IMR的各个屏蔽位是否置位的信息。
ERTOS计算中断对应的PIC配置项的过程为:在ERTOS初始化阶段,根据ERTOS内所有ISR中设置的逻辑中断优先级之间的相对关系,计算出各个ISR对应中断的PIC配置项。例如:ERTOS中设置有ISRA、ISRB、ISRC以及ISRD,对应的逻辑中断优先级分别为1,3,2,4,所对应中断所在中断源在IMR中对应的屏蔽位分别为第1位、第2位、第3位以及第4位。这样,在ERTOS初始化阶段,就知道ISRA的逻辑中断优先级最高,将ISRA所对应中断的PIC配置项设置为0000,其他的中断都不许打断ISRA的执行;对于ISRB,ISRA和ISRC的逻辑中断优先级别高于ISRB,将ISRB所对应中断的PIC配置项设置为1010,ISRA以及ISRC对应的中断可以打断ISRB的执行;对于ISRC,ISRA的逻辑中断优先级高于ISRC,将ISRC所对应中断的PIC配置项设置为1000,ISRA对应的中断可以打断ISRC的执行;对于ISRD,ISRA、ISRB以及ISRC的逻辑中断优先级高于ISRD,将ISRD所对应中断的PIC配置项设置为1110,ISRA、ISRB以及ISRC对应的中断可以打断ISRC的执行。
图3为本发明在为中断设置逻辑中断优先级后第一类CPU对中断的操作流程图,其具体步骤为:
步骤300、ERTOS进行初始化,根据ERTOS所有ISR中预先设置的逻辑中断优先级计算出每个ISR对应中断的PIC配置项。
计算是根据所有ISR中预先设置的逻辑中断优先级之间的对应关系以及ISR对应中断所在中断源对应的IMR中的屏蔽位。
步骤301、ERTOS中的外设通过中断源向CPU触发中断。
步骤302、CPU接收到中断后,CPU关闭PIC全局中断。
步骤303、CPU将中断优先级设置为最低,这种状态下CPU可以响应任何中断。
步骤304、CPU根据步骤302所接收中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤302所接收中断低和等于的中断所在中断源对应的屏蔽位进行置位,如置“0”,使通过对应于经过置位的屏蔽位的中断源触发的中断不能被CPU响应。
步骤305、CPU打开PIC全局中断。
步骤306、执行步骤302中所接收的中断对应的ISR。
图4为本发明在为中断设置逻辑中断优先级后第二类CPU对中断的操作流程图,其具体步骤为:
步骤400、ERTOS进行初始化,根据ERTOS所有ISR中预先设置的逻辑中断优先级别计算出每个ISR对应中断的PIC配置项。
步骤401、ERTOS中的外设向CPU触发中断。
步骤402、CPU接收到中断后,关闭PIC全局中断,根据所接收中断的PIC配置项对IMR进行配置,对逻辑中断优先级比所接收中断低和等于的中断所在中断源对应的屏蔽位进行置位。
步骤403、CPU打开PIC全局中断。
步骤404、CPU执行所接收中断对应的ISR。
按照图3和图4所述的方法根据CPU当前执行的中断的PIC配置项设置IMR的屏蔽位后,当比CPU当前执行中断逻辑中断优先级高的中断被触发时,CPU查询IMR被触发中断所在中断源对应的屏蔽位,获得该屏蔽位没有被置位,则CPU响应被触发中断,停止执行当前执行的中断,按照图3或图4所述的步骤对被触发中断进行操作,执行被触发中断。当比CPU当前执行中断逻辑中断优先级低或等于的中断被触发时,CPU查询被触发中断所在中断源对应的屏蔽位,获得该屏蔽位被置位,则CPU不响应被触发中断,继续执行完当前执行的中断后,再按照图3或图4所述的步骤对被触发中断进行操作,执行被触发中断。
由于ERTOS中的CPU可以执行两类程序:任务和对应中断的ISR。所以本发明不仅可以在中断对应的ISR设置逻辑中断优先级,而且可以在任务中也设置PIC配置项。这样,当ERTOS中的CPU执行任务时,也根据任务的PIC配置项配置IMR,从而当任务执行时,可以使一些中断不被CPU响应。
但是,任务的PIC配置项与ISR的PIC配置项的使用目的完全不同。任务的PIC配置项并不体现逻辑中断优先级,而是有目的的来屏蔽某些中断。例如:任务A是发生ERTOS错误时启动的一个错误处理任务,在任务A运行过程中只允许处理一个外部中断源:时钟中断,其他所有中断都必须屏蔽,这是因为此时ERTOS已经发生错误,不能做任何处理,但是对于错误处理本身需要定时,所以CPU可以响应时钟中断。本发明可以通过在任务中预先设置PIC配置项的方法,达到上述目的。在大多数情况下,所设置的任务的逻辑中断优先级是最低的,在ERTOS初始化时,计算任务相应的PIC配置项也是可以响应所有中断的。
以下举具体实施例说明本发明是如何实现任务的PIC配置项的设置和中断的逻辑中断优先级的。
假设有任务TASK-A、中断A以及中断B,中断A对应的ISR为ISRA,中断B对应的ISR为ISRB,TASK-A设置的PIC配置项为对中断A所在的中断源和中断B所在的中断源都不屏蔽。
假设ISRA设置的逻辑中断优先级低于或等于ISRB设置的逻辑中断优先级,并且假设CPU当前正在执行TASK-A,中断A先被触发后,中断B再被触发。图5为本发明在为中断设置逻辑中断优先级后第一类CPU对中断的操作实施例一的流程图,其具体步骤为:
步骤500、CPU当前正在执行TASK-A,IMR的屏蔽位根据由TASK-A设置的PIC配置项已经进行了置位。
步骤501、中断A被触发,CPU收到中断A。
步骤502、CPU查询IMR被触发中断A所在中断源对应的屏蔽位,判断到该屏蔽位未置位。
步骤503、CPU停止执行当前正在执行的TASK-A,响应中断A,按照图3中的步骤302~步骤305,执行中断A对应的ISRA。
步骤504、中断B被触发,CPU收到中断B。
步骤505、CPU查询IMR被触发中断B所属的中断源对应的屏蔽位,判断到该屏蔽位未置位,这是由于中断B的逻辑中断优先级高于中断A的逻辑中断优先级。
步骤506、CPU停止执行当前正在执行的中断A对应的ISRA,响应中断B,按照图3中的步骤302~305,执行中断B对应的ISRB。
步骤507、CPU执行完中断B对应的ISRB后,再响应中断A,按照图3中的步骤302~步骤305,执行中断A对应的ISRA。
步骤508、CPU执行完中断A对应的ISRA后,再响应TASK-A,按照图3中的步骤302~步骤305,执行TASK-A。
当本发明在为任务设置逻辑中断优先级后使用第二类CPU对中断进行操作时,可以将图5的步骤503、步骤506、步骤507以及步骤508所述的按照图3中的步骤302~步骤305执行替换为按照图4中的步骤402~步骤403执行。
假设ISRA设置的逻辑中断优先级高于ISRB设置的逻辑中断优先级,并且假设CPU当前正在执行TASK-A,中断A先被触发后,中断B再被触发。图6为本发明在为中断设置逻辑中断优先级后第一类CPU对中断的操作实施例二的流程图,其具体步骤为:
步骤600、CPU当前正在执行TASK-A,IMR的屏蔽位根据由TASK-A设置的PIC配置项已经进行了置位。
步骤601、中断A被触发,CPU收到中断A。
步骤602、CPU查询IMR被触发中断A所在中断源对应的屏蔽位,判断到该屏蔽位未置位。
步骤603、CPU停止执行当前正在执行的TASK-A,响应中断A,按照图3中的步骤302~步骤305,执行中断A对应的ISRA。
步骤604、中断B被触发,CPU收到中断B。
步骤605、CPU查询IMR被触发中断B所属的中断源对应的屏蔽位,判断到该屏蔽位置位,这是由于中断A的逻辑中断优先级高于中断B的逻辑中断优先级。
步骤606、CPU继续执行完中断A对应的ISRA。
步骤607、CPU比较TASK-A设置的逻辑中断优先级和中断B对应的ISRB设置的逻辑中断优先级,判断中断B对应的ISRB设置的逻辑中断优先级高,则响应中断B,按照图3中的步骤302~305,执行中断B对应的ISRB。
步骤608、CPU执行完中断B对应的ISRB后,再响应TASK-A,按照图3中的步骤302~步骤305,执行TASK-A。
当本发明在为中断设置逻辑中断优先级后使用第二类CPU对中断进行操作时,可以将图6的步骤503、步骤607以及步骤608所述的按照图3中的步骤302~步骤305执行替换为按照图4中的步骤402~步骤403执行。
本发明对于第一类CPU,可以在更小的粒度上区分中断的中断优先级,设置的用于区分中断优先级的逻辑中断优先级级数最多可以等于PIC提供的中断源的数目;对于第二类CPU,本发明可以实现中断嵌套。逻辑中断优先级低的中断可以被逻辑中断优先级高的中断打断,同样地,设置的逻辑中断优先级的级数最多也可以等于中断源的数目。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.在嵌入式实时操作系统ERTOS中实现逻辑中断优先级的方法,针对CPU在当前中断操作过程中屏蔽部分中断,其特征在于,在ERTOS中的中断对应的中断服务程序ISR中设置该中断的逻辑中断优先级,所设置的逻辑中断优先级级数等于中断所属中断源的数目,该方法还包括:
a、ERTOS初始化,根据ERTOS中所有ISR设置的逻辑中断优先级之间的相对关系和所有ISR对应中断所属中断源在中断屏蔽寄存器IMR对应的屏蔽位,计算得到中断的可编程中断控制器PIC配置项;
b、CPU接收到ERTOS中外设所触发的中断后,关闭PIC全局中断;
c、CPU将中断优先级设置为最低,根据所接收中断的PIC配置项对IMR进行配置,对逻辑中断优先级比接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
d、CPU打开全局中断,CPU执行所接收中断对应的ISR。
2.如权利要求1所述的方法,其特征在于,当逻辑中断优先级高于所述步骤b所执行中断的中断被触发时,该方法还包括:
e1、CPU接收到外设通过中断源所触发的逻辑中断优先级高于步骤b所执行中断的中断,根据该中断源对应IMR中的屏蔽位设置值确定该中断源所触发的中断能够被响应,响应该中断;
f1、CPU关闭PIC全局中断;
g1、CPU将中断优先级设置为最低,根据步骤e1接收到的中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤e1接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
h1、CPU打开全局中断,CPU执行所接收中断对应的ISR。
3.如权利要求1所述的方法,其特征在于,当逻辑中断优先级低于或等于所述步骤b执行中断的中断被触发时,该方法还包括:
e2、CPU接收到外设通过中断源所触发的逻辑中断优先级低于或等于步骤b所执行中断的中断,根据该中断源对应IMR中的屏蔽位设置值确定该中断源所触发的中断不能被响应,继续执行完步骤d执行的中断后,再响应逻辑中断优先级低于或等于步骤b所执行中断的中断;
f2、CPU关闭PIC全局中断;
g2、CPU将中断优先级设置为最低,根据步骤e2接收到的中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤e2接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
h2、CPU打开全局中断,CPU执行所接收中断对应的ISR。
4.如权利要求1所述的方法,其特征在于,为ERTOS中的任务设置PIC配置项,在步骤b之前,该方法还包括:
b1、CPU执行任务,根据任务设置的PIC配置项对IMR对应的屏蔽位置位;
在步骤b所述接收到ERTOS中外设所触发的中断后,还包括:
b2、CPU根据被触发中断所属的中断源对应IMR中的屏蔽位设置值确定该中断是否能被响应,如果是,执行步骤b的后续过程;否则,继续执行完任务后再执行步骤b的后续过程。
5.如权利要求1或4所述的方法,其特征在于,所述的PIC配置项为对应于IMR的各个屏蔽位的配置值,该IMR的各个屏蔽位和中断一一对应。
6.如权利要求5所述的方法,其特征在于,当中断能够被响应时,所述的PIC配置项中的对应于该中断所属中断源的IMR的屏蔽位不置位;当中断不能够被响应时,所述的PIC配置项中的对应于该中断所属中断源的IMR的屏蔽位置位。
7.一种在ERTOS中实现逻辑中断优先级的方法,针对CPU在当前中断操作过程中屏蔽全部中断,其特征在于,在ERTOS中的中断对应的ISR中设置该中断的逻辑中断优先级,所设置的逻辑中断优先级级数至多等于中断所属中断源的数目,该方法还包括:
a、ERTOS初始化,根据ERTOS中所有ISR设置的逻辑中断优先级之间的相对关系和所有ISR对应中断所属中断源在中断屏蔽寄存器IMR对应的屏蔽位,计算得到中断的可编程中断控制器PIC配置项;
b、CPU接收到ERTOS中外设所触发的中断后,关闭PIC全局中断;
c、CPU根据所接收中断的PIC配置项对IMR进行配置,对逻辑中断优先级比接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
d、CPU打开全局中断,CPU执行所接收中断对应的ISR。
8.如权利要求7所述的方法,其特征在于,当逻辑中断优先级高于所述步骤b所执行中断的中断被触发时,该方法还包括:
e1、CPU接收到外设通过中断源所触发的逻辑中断优先级高于步骤b所执行中断的中断,根据该中断源对应IMR中的屏蔽位设置值确定该中断源所触发的中断能够被响应,响应该中断;
f1、CPU关闭PIC全局中断;
g1、CPU将中断优先级设置为最低,根据步骤e1接收到的中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤e1接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
h1、CPU打开全局中断,CPU执行所接收中断对应的ISR。
9.如权利要求7所述的方法,其特征在于,当逻辑中断优先级低于或等于所述步骤b执行中断的中断被触发时,该方法还包括:
e2、CPU接收到外设通过中断源所触发的逻辑中断优先级低于或等于步骤b所执行中断的中断,根据该中断源对应IMR中的屏蔽位设置值确定该中断源所触发的中断不能被响应,继续执行完步骤d执行的中断后,再响应逻辑中断优先级低于或等于步骤b所执行中断的中断;
f2、CPU关闭PIC全局中断;
g2、CPU将中断优先级设置为最低,根据步骤e2接收到的中断的PIC配置项对IMR进行配置,对逻辑中断优先级比步骤e2接收到的中断优先级低和等于的中断所在中断源对应的屏蔽位进行置位;
h2、CPU打开全局中断,CPU执行所接收中断对应的ISR。
10.如权利要求7所述的方法,其特征在于,为ERTOS中的任务设置PIC配置项,在步骤b之前,该方法还包括:
b1、CPU执行任务,根据任务设置的PIC配置项对IMR对应的屏蔽位置位;
在步骤b所述接收到ERTOS中外设所触发的中断后,还包括:
b2、CPU根据被触发中断所属的中断源对应IMR中的屏蔽位设置值确定该中断是否能被响应,如果是,执行步骤b的后续过程;否则,继续执行完任务后再执行步骤b的后续过程。
11.如权利要求7或10所述的方法,其特征在于,所述的PIC配置项为对应于IMR的各个屏蔽位的配置值,该IMR的各个屏蔽位和中断一一对应。
12.如权利要求11所述的方法,其特征在于,当中断能够被响应时,所述的PIC配置项中的对应于该中断所属中断源的IMR的屏蔽位不置位;当中断不能够被响应时,所述的PIC配置项中的对应于该中断所属中断源的IMR的屏蔽位置位。
CNB2005100693970A 2005-05-18 2005-05-18 在嵌入式实时操作系统中实现逻辑中断优先级的方法 Active CN100389411C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100693970A CN100389411C (zh) 2005-05-18 2005-05-18 在嵌入式实时操作系统中实现逻辑中断优先级的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100693970A CN100389411C (zh) 2005-05-18 2005-05-18 在嵌入式实时操作系统中实现逻辑中断优先级的方法

Publications (2)

Publication Number Publication Date
CN1866231A CN1866231A (zh) 2006-11-22
CN100389411C true CN100389411C (zh) 2008-05-21

Family

ID=37425256

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100693970A Active CN100389411C (zh) 2005-05-18 2005-05-18 在嵌入式实时操作系统中实现逻辑中断优先级的方法

Country Status (1)

Country Link
CN (1) CN100389411C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101964681B (zh) * 2009-07-22 2013-08-21 中兴通讯股份有限公司 一种通过中断检测告警的装置及方法
CN102932599A (zh) * 2012-11-09 2013-02-13 北京百纳威尔科技有限公司 基于gpio模拟数据总线实现照相机功能的装置及方法
CN113419450A (zh) * 2021-06-29 2021-09-21 北京猎户星空科技有限公司 一种电机foc控制及运行方法、装置、电子设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0530066A1 (fr) * 1991-08-22 1993-03-03 Aeg Schneider Automation Contrôleur d'interruption programmable, système interruptif et procédé de contrôle d'interruption
US6070221A (en) * 1998-04-21 2000-05-30 Mitsubishi Denki Kabushiki Kaisha Interrupt controller
CN1516838A (zh) * 2001-05-10 2004-07-28 �����ɷ� 带有优先中断控制器的移动通信设备
JP2004355111A (ja) * 2003-05-27 2004-12-16 Matsushita Electric Ind Co Ltd 割り込み制御装置および割り込み制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0530066A1 (fr) * 1991-08-22 1993-03-03 Aeg Schneider Automation Contrôleur d'interruption programmable, système interruptif et procédé de contrôle d'interruption
US6070221A (en) * 1998-04-21 2000-05-30 Mitsubishi Denki Kabushiki Kaisha Interrupt controller
CN1516838A (zh) * 2001-05-10 2004-07-28 �����ɷ� 带有优先中断控制器的移动通信设备
JP2004355111A (ja) * 2003-05-27 2004-12-16 Matsushita Electric Ind Co Ltd 割り込み制御装置および割り込み制御方法

Also Published As

Publication number Publication date
CN1866231A (zh) 2006-11-22

Similar Documents

Publication Publication Date Title
CN101918920B (zh) 用于多线程处理器的共享的中断控制器
KR102204501B1 (ko) 인터럽트 핸들링 방법 및 장치
CN111177733B (zh) 一种基于数据流分析的软件补丁检测方法及装置
CN109117362B (zh) 一种基于中间语言的plc程序验证系统
CN104205064A (zh) 将程序事件记录事件向运行时间检测事件的变换
CN103226486A (zh) 对浏览器运行进行优化的方法和装置
CN109143953B (zh) 一种基于中间语言的plc程序验证方法
US20150234640A1 (en) System and Method for Isolating I/O Execution via Compiler and OS Support
CN102063325B (zh) 一种嵌入51系列单片机的多任务实时操作系统的实现方法
CN101082875A (zh) 减小在指令跟踪过程中产生的数据流的大小
CN104866767B (zh) 一种安全机制的嵌入式模块
Verbeek et al. Formal API specification of the PikeOS separation kernel
CN100389411C (zh) 在嵌入式实时操作系统中实现逻辑中断优先级的方法
CN107526622B (zh) Linux的快速异常处理方法及装置
CN102096605A (zh) 一种嵌入式实时操作系统中多级资源管理的实现方法
CN111831419A (zh) 一种用于risc-v架构的中断控制方法
CN104391754A (zh) 一种任务异常的处理方法及装置
CN103676727A (zh) 基于嵌入式芯片的可抢占、可嵌套中断控制方法
CN106874072B (zh) 一种基于PowerPC处理器的嵌入式操作系统分区虚拟中断的处理方法
CN107015931A (zh) 用于中断处理的方法和加速器单元
CN106547606B (zh) 堆栈自检方法及装置
US20180285559A1 (en) Stack pivot detection systems and methods
CN102629231A (zh) 一种检测任务堆栈的方法
CN109766690A (zh) 一种基于多策略指令检测的rop及变种攻击动态检测方法
US20130159576A1 (en) Method and apparatus for controlling system interrupts

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant