CN111782368B - 中断嵌套处理方法、装置、终端及存储介质 - Google Patents

中断嵌套处理方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN111782368B
CN111782368B CN202010618075.1A CN202010618075A CN111782368B CN 111782368 B CN111782368 B CN 111782368B CN 202010618075 A CN202010618075 A CN 202010618075A CN 111782368 B CN111782368 B CN 111782368B
Authority
CN
China
Prior art keywords
interrupt
field information
signals
register
gpio
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
CN202010618075.1A
Other languages
English (en)
Other versions
CN111782368A (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.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner Technology 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 Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN202010618075.1A priority Critical patent/CN111782368B/zh
Publication of CN111782368A publication Critical patent/CN111782368A/zh
Application granted granted Critical
Publication of CN111782368B publication Critical patent/CN111782368B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本申请公开了一种中断嵌套处理方法、装置、终端及介质。其中方法包括:获取多个中断信号;在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号;通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第二中断信号的现场信息进行存储;确定多个第二中断信号分别对应的中断号,对多个第二中断信号进行处理。本申请通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第一中断信号的现场信息进行保存,利用两种模式的寄存器的分组功能,减小了单个中断存入IRQ栈的数据量,达到扩大硬件最大支持中断嵌套的级数的目的;同时,将中断号作为对中断信号进行响应的控制标准,进而实现对中断信号的快速响应。

Description

中断嵌套处理方法、装置、终端及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种中断嵌套处理方法、装置、终端及存储介质。
背景技术
中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,并在待处理完毕后,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。
相关的中断嵌套方法,主要是利用处理器的IRQ中断模式保存现场,因此存在保存临时变量的中断栈溢出的问题;同时,还存在中断信号数量多时,无法快速响应,或者不支持硬件处理多级中断嵌套的问题。
发明内容
为了解决上述至少一个技术问题,本申请提供一种中断嵌套处理方法、装置、终端及存储介质。
根据本申请的第一方面,提供了一种中断嵌套处理方法,该方法包括:
获取多个中断信号;
在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号;
通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第一中断信号的现场信息进行存储;
确定多个第二中断信号分别对应的中断号;
依据多个第二中断信号分别对应的中断号,对多个第二中断信号进行处理,以在多个第二中断信号被处理完成后,将现场信息进行恢复,对第一中断信号继续处理。
根据本申请的第二方面,提供了一种中断嵌套处理装置,该装置包括:
中断获取模块,用于获取多个中断信号;
中断确定模块,用于在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号;
现场保存模块,用于通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对所述第一中断信号的现场信息进行存储;
中断号确定模块,用于确定多个第二中断信号分别对应的中断号;
中断信号处理模块,用于依据多个第二中断信号分别对应的中断号,对多个第二中断信号进行处理,以在多个第二中断信号被处理完成后,将现场信息进行恢复,对第一中断信号继续处理。
根据本申请的第三方面,提供了一种终端,该终端包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时以实现上述中断嵌套处理方法。
根据本申请的第四方面,提供了一种计算机可读存储介质,该介质存储有计算机可执行指令,该计算机可执行指令用于以执行上述中断嵌套处理方法。
本申请实施例通过获取多个中断信号,以便在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号,并通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第一中断信号的现场信息进行保存,利用两种模式的寄存器的分组功能,减小了单个中断存入IRQ栈的数据量,达到扩大硬件最大支持中断嵌套的级数,进而实现支持硬件处理多级中断嵌套的目的;同时,通过确定多个第二中断信号分别对应的中断号,来对多个第二中断信号进行处理,将中断号作为对中断信号进行响应的控制标准,进而实现对中断信号的快速响应。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种中断嵌套处理方法的流程示意图;
图2为本申请实施例提供的一种中断嵌套处理方法中保存第一中断信号的现场的流程示意图;
图3为本申请实施例提供的另一种中断嵌套处理方法的流程示意图;以及
图4为本申请实施例提供的一种中断嵌套处理装置的框图结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。
首先对本申请涉及的几个名词进行介绍和解释:
在本申请实施例中,中断控制器是一种接收多个外部中断源的中断请求,并进行优先级判断,选中当前优先级最高的中断请求,并将此请求送到CPU的INTR端进行处理的控制器。例如,当CPU响应中断并进入中断服务程序的处理过程后,中断控制器仍负责对外部中断请求的管理。
在本申请实施例中,特权模式SVC是指对中断类型为软件中断SGI进行处理的模式。
在本申请实施例中,外部中断模式IRQ是指对中断类型为IRQ中断进行处理的模式。
在本申请实施例中,子程序链接寄存器LR用于保存子程序的返回地址,通过该返回地址能够在被中断信号的现场被恢复后回到正确的位置。
在本申请实施例中,备份程序状态寄存器SPSR用于在保存正在被处理的中断信号被暂停时的CPSR的值。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
根据本申请的一个实施例,提供了一种中断嵌套处理方法,如图1所示,该方法包括步骤S101至步骤S105。
步骤S101:获取多个中断信号。
具体地,中断信号是由与处理器连接的外接设备发送至处理器的。其中,外接设备可以为键盘、磁盘驱动器、鼠标、声卡等设备。
步骤S102:在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号。
具体地,处理器获取到的多个中断信号的优先级可以大于正在被处理的第一中断信号的优先级,也可以小于正在被处理的第一中断信号的优先级,还可以等于正在被处理的第一中断信号的优先级。
例如,处理器正在对第一中断信号进行处理的过程中,键盘、磁盘驱动器、鼠标同时向处理器发送中断信号,处理器通过查询这3个中断信号各自的中断标志位,来确定出优先级高于第一中断信号的多个第二中断信号。
步骤S103:通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第一中断信号的现场信息进行存储。
由于用户程序(即对中断信号进行处理的程序)在处理软件中断SGI的中断嵌套处理模式SVC中运行,且用户的临时变量都需要从IRQ栈分配,这种仅依赖一种堆栈存储现场的方式将可能导致中断栈溢出的问题。因此,本申请实施例中用户的临时变量从两类堆栈分配,即从IRQ栈和SVC栈分配,将第一中断信号的现场信息通过两类中断模式的寄存器进行存储,这样就降低了IRQ栈的存储消耗,从而能够满足多级嵌套处理的要求。
具体地,处理器在不同模式下对应不同的寄存器组。本申请通过利用外部中断模式IRQ和特权模式SVC,这两个模式的寄存器组对第一中断信号的现场信息进行存储。
具体地,可以通过设置SVC指针以及SVC栈的大小、IRQ指针以及IRQ栈的大小,以在分别依据SVC栈和IRQ栈来存储第一中断信号的现场。其中,SVC栈用于存储IRQ栈保存之外的第一中断信号的其它现场。
步骤S104:确定多个第二中断信号分别对应的中断号。
具体地,处理器通过对中断控制寄存器的读取操作,来确定产生中断的中断号。
步骤S105:依据多个第二中断信号分别对应的中断号,对多个第二中断信号进行处理,以在多个第二中断信号被处理完成后,将现场信息进行恢复,对第一中断信号继续处理。
具体地,不同的中断号对应不同的中断类型。例如,若中断号为0至15,则说明发生了软件中断SGI;若中断号为16至31,则说明该中断为某个CPU的私有中断,如本地时钟;若中断号在大于31到硬件支持的最大中断号MAX_IRQ之间,则说明发生了所有CPU之间共享的共享中断SPI。更具体地,不同中断类型对应不同的处理机制。例如,软件中断SGI,利用预注册的软件中断处理函数进行处理。
本申请实施例通过获取多个中断信号,以便在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号,并通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第一中断信号的现场信息进行保存,利用两种模式的寄存器的分组功能,减小了单个中断存入IRQ栈的数据量,达到扩大硬件最大支持中断嵌套的级数,进而实现支持硬件处理多级中断嵌套的目的;同时,通过确定多个第二中断信号分别对应的中断号,来对多个第二中断信号进行处理,将中断号作为对中断信号进行响应的控制标准,进而实现对中断信号的快速响应。
本申请实施例中,现场信息至少包括:
子程序链接寄存器LR现场信息、备份程序状态寄存器SPSR现场信息、寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息。
在一些实施例中,如图2所示,步骤S103进一步包括:
步骤S1031:切换至外部中断模式IRQ,对子程序链接寄存器LR现场信息和备份程序状态寄存器SPSR现场信息进行存储;
步骤S1032:切换至特权模式SVC,对寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息进行存储,以在存储完成后对多个第二中断信号进行存储。
具体地,可以参照如下定义对预定义在处理器中的寄存器进行使用:
当参数少于4个时,子程序间通过寄存器R0~R3来传递参数;
当参数个数多于4个时,将多余的参数通过数据栈进行传递,入栈顺序与参数顺序正好相反,子程序返回前无需恢复R0~R3的值;
在子程序中,使用R4~R11保存局部变量,若使用需要入栈保存,子程序返回前需要恢复这些寄存器;
R12是临时寄存器,使用不需要保存;
R13用作数据帧指针,记作SP;
R14用作链接寄存器,记作LR,用于保存子程序返回时的地址;
R15是程序计数器,记作PC。
由于第一中断信号被中断时,第一中断信号的临时变量(子程序链接寄存器LR和备份程序状态寄存器SPSR)已利用外部中断模式IRQ的IRQ栈进行存储,因此,特权模式SVC仅需要对寄存器RO至R4、寄存器R12和寄存器R14进行存储。通过这两个模式的切换,实现了利用这两种模式各自的寄存器,来对多个第二中断信号进行处理,完成中断嵌套的处理流程。
具体地,外部中断模式IRQ构建的IRQ栈仅对子程序链接寄存器LR现场信息和备份程序状态寄存器SPSR现场信息进行存储,因此,每次进入中断只需8个字节的中断栈空间,在预先分配有1024字节的IRQ中断栈空间时,就可以有128级中断嵌套。因此,通过本申请实施例提供的两种模式的寄存器对临时变量分配存储空间的方式,扩大了对中断嵌套处理效率。
在一些实施例中,步骤S105之后,该方法包括:
基于特权模式SVC,对寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息进行恢复;
切换至外部中断模式IRQ,对子程序链接寄存器LR现场信息和备份程序状态寄存器SPSR现场信息进行恢复;
对第一中断信号继续处理。
本申请实施例中,对中断信号进行处理的程序运行在特权模式SVC中,因此,在特权模式SVC中对中断信号的处理。在完成对多个第二中断信号的处理之后,需要在该特权模式SVC下,对寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息进行恢复处理,再切换至外部中断模式IRQ,对外部中断模式IRQ保存的现场(即子程序链接寄存器LR现场信息和备份程序状态寄存器SPSR现场)进行恢复。同样地,在对第一中断信号进行处理时,获取到优先级更高的第二中断信号时,需要切换至外部中断模式IRQ对第一中断信号的现场进行保存。
在一些实施例中,步骤S1031进一步包括:
依据中断向量表基地址和预设的中断偏移量,确定子程序链接寄存器LR现场信息;
对子程序链接寄存器LR现场信息和备份程序状态寄存器SPSR现场信息进行存储。
具体地,中断向量表基地址一般存储在寄存器中。例如,若为ARM处理器,则通过CP15寄存器设置中断向量表基地址,可以在CP15寄存器中设置中断向量标基地址为DDR开始地址0x40000000处。
本申请实施例中,将中断偏移量设置为4,即保持外部中断模式IRQ下的子程序链接寄存器LR的值减4,将外部中断模式IRQ下的子程序链接寄存器LR的值减4作为被中断的第一中断信号的临时变量进行存储,通过将被中断的第一中断信号的临时变量向前偏移,起到在对第一中断信号恢复处理时的连续性,防止因在第一中断信号被中断的当时保存临时变量,导致的保存的临时编码缺失问题,进而避免了第一中断信号的处理发生异常。
在一些实施例中,步骤S105进一步包括:
依据多个第二中断信号分别对应的中断号,确定多个中断号范围分别对应的第二中断信号分组;
若任一第二中断信号分组对应的中断号范围为大于31,则将该任一第二中断信号分组对应的多个第二中断信号确定为多个共享中断信号GPIO,并依据预配置的总中断存储器GPIO,确定多个共享中断信号GPIO分别指向的目标中断状态寄存器GPIO;
基于预定义的多种软件中断SGI分别对应的中断状态寄存器GPIO,并依据多个共享中断信号GPIO分别指向的目标中断状态寄存器GPIO,确定多个共享中断信号GPIO分别对应的优先级;
依据多个共享中断信号GPIO分别对应的优先级,对多个共享中断信号GPIO进行处理。
由于不同软件中断被设置为不同的优先级,即SGI0~SGI15分别对应不同的中断优先级,其中,高优先级可以抢占低优先级,SGI0优先级最高,SGI15优先级最低。因此,本申请实施例将可中断的共享中断信号GPIO按照软件中断SGI的优先级,分为GPIO0~GPIO15总共16个优先级,并将其与软件中断SGI进行绑定,即GPIOx绑定SGIx(x表示0~15之间正整数)。
具体地,设置SGI0和SGI15优先级分别为0x80~0xA0,即SGI0和SGI15分别在不同优先级组,处理器芯片中GIC控制器按优先级组确定每个中断的抢占优先级,优先级组数值越小,其优先级越高,高优先级可以抢占正在运行的低优先级;按照实际需求,将SGI0~SGI15分发到不同CPU核。应用前,为不同软件中断安装SGI0~SGI15各自的中断处理函数:sgi0_handler,sgi1_handler,sgi2_handler,sgi3_handler,sgi4_handler,...,sgi15_handler;同时,配置并打开GPIO总中断(即总中断存储器GPIO,下面以GPIO总中断进行描述),并设置其为最高优先级。其优先级值为0x60,分配GPIO总中断处理函数为:gpio_handler_isr;配置某个GPIO为中断模式,并按照软件设计需求,为该GPIO分配优先级GPIOx,并激活该中断。并设置GPIO总中断为IRQ中断中优先级最高的中断,即,其优先级大于SGI0。
因此,当存在共享中断信号GPIO时,首先进入GPIO总中断,并获取该GPIO对应的GPIOx,并立即触发SGIx中断,然后GPIO总中断立即退出;如果有多个不同的GPIO触发了中断,在GPIO总中断中会触发不同的SGI中断,当GPIO总中断退出后,中断控制器会根据SGI中断优先级将最高优先级的中断上报给CPU,只有所有高优先级中断处理完毕,才处理最低优先级中断;如果低优先级的GPIO对应的SGI中断正在运行,高优先级中断触发的SGI中断会立即抢占该低优先级的中断。因此,通过上述绑定处理,将软件中断SGI的优先级应用至共享硬件中断,建立起具有16级优先级的GPIO中断处理机制,起到为共享硬件中断GPIO分配优先级的效果,进而达到对中断信号的多级嵌套处理目的。
在一些实施例中,步骤S105进一步包括:
若任一第二中断信号分组对应的中断号范围为[0,15],则确定该任一第二中断信号分组对应的多个第二中断信号各自的中断号所属的软件中断SGI函数,并进行处理;
若任一第二中断信号分组对应的中断号范围为[16,31],则依据预注册的CPU私有函数进行处理。
具体地,中断号范围为[0,15]的中断信号为软件中断SGI,中断号范围为[16,31]的中断信号为私有中断PPI。其中,不同软件中断SGI注册有不同的处理函数,因此,需要根据其中断号来查询对应的处理函数。而私有中断则需要依据处理器的内核进行处理,在处理器为多核处理器时能够同时对多个私有中断PPI进行处理。
在一些实施例中,步骤S102进一步包括:
确定多个中断信号各自的优先级;
将多个中断信号各自的优先级分别与当前正在被处理的第一中断信号的优先级进行比较;
依据比较结果,在多个中断信号中确定出多个第二中断信号。
具体地,处理器可以通过查询预先设置的中断优先级寄存器IP,来确定中断标志位,从而得到优先级大于第一中断信号的第二中断信号,即当处理器检测到更高优先级的中断到来的时候会发生中断嵌套。
具体地,处理器通过读取多个中断信号各自的中断标签。
下面为了进一步说明本申请实施例提供的方法,下面结合图3对Cortex-A7系列处理器的中断流程进行详细说明。
当中断产生后,如果相应的中断使能,根据配置将该中断发送到某个CPU核,该CPU核接收到该中断,进入到IRQ模式,根据寄存器CP15保存的基地址加上IRQ中断偏移量,加载_irq处地址irq到PC,并跳转到irq处执行;由于CPU在IRQ模式下有自己的LR及SPSR及CPSR寄存器组,因此在irq程序的开始,只需要保存此模式下的LR的值减4及SPSR,使得中断能正确返回到被中断前的地方继续执行;然后切换到SVC模式,使用SVC模式栈来保存被中断的现场的R0~R4及R12和R14;通过中断控制器寄存器,获取产生中断的中断号,如果中断号是0到15,则说明发生了SGI中断,按照SGI中断号进入到sgix_handler处理函数;具体地,需要最优先处理的函数一般放置在放在sgi0_handler里;如果读取到的中断号是16到31,则表示该中断是某个CPU的私有中断,例如CPU的本地时钟等;对于中断号大于31到硬件支持的最大中断号MAX_IRQ(如1019)之间,是所有CPU之间共享的中断,其中,包含了GPIO总中断。sgi0_handler对应CPU的IRQ总中断,以保证从触发最高优先级GPIO中断到进入sgi0_handler函数的最大时间可控制在10μs以内。当进入GPIO总中断处理函数gpio_handler_isr,查询GPIO中断状态寄存器,确认是哪个GPIO产生了中断,并根据GPIO与SGI的对应关系表,找到该GPIO对应的SGIx优先级,触发该SGIx对应的中断,并立即从GPIO总中断返回。当某个中断返回时,清除此中断的pinding位。当某个中断处理完成后,恢复R0~R4及R12和R14,切换到IRQ模式,恢复IRQ模式的LR和SPSR,并使用带有状态切换的返回指令返回到被中断的部分继续执行;如果中断优先级处理不依赖于GIC控制器,则只需要在某个中断发生时,屏蔽掉同级及更低优先级的中断即可。
本申请的又一实施例提供了一种中断嵌套处理装置,如图4所示,该装置40包括:中断获取模块401、中断确定模块402、现场保存模块403、中断号确定模块404以及中断信号处理模块405。
中断获取模块401,用于获取多个中断信号;
中断确定模块402,用于在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号;
现场保存模块403,用于通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第一中断信号的现场信息进行存储;
中断号确定模块404,用于确定多个第二中断信号分别对应的中断号;
中断信号处理模块405,用于依据多个第二中断信号分别对应的中断号,对多个第二中断信号进行处理,以在多个第二中断信号被处理完成后,对现场信息进行恢复,对第一中断信号继续处理。
本申请实施例通过获取多个中断信号,以便在多个中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号,并通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对第一中断信号的现场信息进行保存,利用两种模式的寄存器的分组功能,减小了单个中断存入IRQ栈的数据量,达到扩大硬件最大支持中断嵌套的级数,进而实现支持硬件处理多级中断嵌套的目的;同时,通过确定多个第二中断信号分别对应的中断号,来对多个第二中断信号进行处理,将中断号作为对中断信号进行响应的控制标准,进而实现对中断信号的快速响应。
进一步地,现场信息至少包括:
子程序链接寄存器LR现场信息、备份程序状态寄存器SPSR现场信息、寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息。
进一步地,现场保存模块包括:第一切换保存子模块和第二切换保存子模块,
第一切换保存子模块,用于切换至外部中断模式IRQ,对子程序链接寄存器LR现场信息和备份程序状态寄存器SPSR现场信息进行存储;
第二切换保存子模块,用于切换至特权模式SVC,对寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息进行存储。
进一步地,第一切换保存子模块包括:LR现场保存单元和SPSR现场保存单元,
LR现场保存单元,用于依据中断向量基地址和预设的中断偏移量,确定子程序链接寄存器LR现场信息;
SPSR现场保存单元,用于对子程序链接寄存器LR现场信息和备份程序状态寄存器SPSR现场信息进行存储。
进一步地,中断信号处理模块包括:信号分组确定子模块、GPIO信号确定子模块、GPIO优先级确定子模块和GPIO信号处理子模块(图中未示出);其中,
信号分组确定子模块,用于依据多个第二中断信号分别对应的中断号,确定多个中断号范围分别对应的第二中断信号分组;
GPIO信号确定子模块,用于若任一第二中断信号分组对应的中断号范围为大于31,则将该任一第二中断信号分组对应的多个第二中断信号确定为多个共享中断信号GPIO,并依据预配置的总中断存储器GPIO,确定多个共享中断信号GPIO分别指向的目标中断状态寄存器GPIO依据预配置的总中断存储器GPIO,确定多个共享中断信号GPIO分别指向的目标中断状态寄存器GPIO;
GPIO优先级确定子模块,用于基于预定义的多种软件中断SGI分别对应的中断状态寄存器GPIO,并依据多个共享中断信号GPIO分别指向的目标中断状态寄存器GPIO,确定多个共享中断信号GPIO分别对应的优先级;
GPIO信号处理子模块,用于依据多个共享中断信号GPIO分别对应的优先级,对多个共享中断信号GPIO进行处理。
进一步地,中断信号处理模块还包括:软件中断处理子模块和私有中断处理子模块(图中未示出)。
软件中断处理子模块,用于若任一第二中断信号分组对应的中断号范围为[0,15],则确定该任一第二中断信号分组对应的多个第二中断信号各自的中断号所属的软件中断SGI函数,并进行处理;
私有中断处理子模块,用于若任一第二中断信号分组对应的中断号范围为[16,31],则依据预注册的CPU私有函数进行处理。
进一步地,中断确定模块包括:优先级确定子模块、优先级比较子模块和中断信号确定子模块(图中未示出)。
优先级确定子模块,用于确定多个中断信号各自的优先级;
优先级比较子模块,用于将多个中断信号各自的优先级分别与当前正在被处理的第一中断信号的优先级进行比较;
中断信号确定子模块,用于依据比较结果,在多个中断信号中确定出多个第二中断信号。
本实施例的中断嵌套处理装置可执行本申请实施例提供的中断嵌套处理方法,其实现原理相类似,此处不再赘述。
本申请又一实施例提供了一种终端,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时以实现上述中断嵌套处理方法。
具体地,处理器可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
具体地,处理器通过总线与存储器连接,总线可包括一通路,以用于传送信息。总线可以是PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。
存储器可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选的,存储器用于存储执行本申请方案的计算机程序的代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,以实现图4所示实施例提供的中断嵌套处理装置的动作。
本申请又一实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,该计算机可执行指令用于执行上述图1或图2所示的中断嵌套处理方法。
以上所描述的装置实施例仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上是对本申请的较佳实施进行了具体说明,但本申请并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

Claims (5)

1.一种中断嵌套处理方法,其特征在于,包括:
获取多个中断信号;
在多个所述中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号;
通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对所述第一中断信号的现场信息进行存储,其中,所述现场信息至少包括子程序链接寄存器LR现场信息、备份程序状态寄存器SPSR现场信息、寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息;
确定多个所述第二中断信号分别对应的中断号;
依据多个所述第二中断信号分别对应的中断号,对多个所述第二中断信号进行处理,以在多个所述第二中断信号被处理完成后,将所述现场信息进行恢复,对所述第一中断信号继续处理;
其中,所述通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对所述第一中断信号的现场信息进行存储的步骤,包括:
切换至所述外部中断模式IRQ,对所述子程序链接寄存器LR现场信息和所述备份程序状态寄存器SPSR现场信息进行存储;
切换至所述特权模式SVC,对所述寄存器RO至R4现场信息、所述寄存器R12现场信息和所述寄存器R14现场信息进行存储;
其中,所述切换至所述外部中断模式IRQ,对所述子程序链接寄存器LR现场信息和所述备份程序状态寄存器SPSR现场信息进行存储的步骤,包括:
依据中断向量基地址和预设的中断偏移量,确定所述子程序链接寄存器LR现场信息;
对所述子程序链接寄存器LR现场信息和所述备份程序状态寄存器SPSR现场信息进行存储;
其中,所述依据多个所述第二中断信号分别对应的中断号,对多个所述第二中断信号进行处理的步骤,包括:
依据多个所述第二中断信号分别对应的中断号,确定多个中断号范围分别对应的第二中断信号分组;
若任一所述第二中断信号分组对应的中断号范围为大于31,则将该任一所述第二中断信号分组对应的多个所述第二中断信号确定为多个共享中断信号GPIO,并依据预配置的总中断存储器GPIO,确定多个所述共享中断信号GPIO分别指向的目标中断状态寄存器GPIO;
基于预定义的多种软件中断SGI分别对应的中断状态寄存器GPIO,并依据多个所述共享中断信号GPIO分别指向的目标中断状态寄存器GPIO,确定多个所述共享中断信号GPIO分别对应的优先级;
依据多个所述共享中断信号GPIO分别对应的优先级,对多个所述共享中断信号GPIO进行处理;
其中,所述依据多个所述第二中断信号分别对应的中断号,对多个所述第二中断信号进行处理的步骤,还包括以下至少一个步骤:
若任一所述第二中断信号分组对应的中断号范围为[0,15],则确定该任一所述第二中断信号分组对应的多个所述第二中断信号各自的中断号所属的软件中断SGI函数,并进行处理;
若任一所述第二中断信号分组对应的中断号范围为[16,31],则依据预注册的CPU私有函数进行处理。
2.根据权利要求1所述的方法,其特征在于,所述在多个所述中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号的步骤,包括:
确定多个所述中断信号各自的优先级;
将多个所述中断信号各自的优先级分别与当前正在被处理的所述第一中断信号的优先级进行比较;
依据比较结果,在多个中断信号中确定出多个第二中断信号。
3.一种中断嵌套处理装置,其特征在于,包括:
中断获取模块,用于获取多个中断信号;
中断确定模块,用于在多个所述中断信号中,确定优先级大于当前正在被处理的第一中断信号的多个第二中断信号;
现场保存模块,用于通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对所述第一中断信号的现场信息进行存储,其中,所述现场信息至少包括子程序链接寄存器LR现场信息、备份程序状态寄存器SPSR现场信息、寄存器RO至R4现场信息、寄存器R12现场信息和寄存器R14现场信息;
中断号确定模块,用于确定多个所述第二中断信号分别对应的中断号;
中断信号处理模块,用于依据多个所述第二中断信号分别对应的中断号,对多个所述第二中断信号进行处理,以在多个所述第二中断信号被处理完成后,将所述现场信息进行恢复,对所述第一中断信号继续处理;
其中,所述通过对预设的外部中断模式IRQ和特权模式SVC的切换处理,对所述第一中断信号的现场信息进行存储的步骤,包括:
切换至所述外部中断模式IRQ,对所述子程序链接寄存器LR现场信息和所述备份程序状态寄存器SPSR现场信息进行存储;
切换至所述特权模式SVC,对所述寄存器RO至R4现场信息、所述寄存器R12现场信息和所述寄存器R14现场信息进行存储;
其中,所述切换至所述外部中断模式IRQ,对所述子程序链接寄存器LR现场信息和所述备份程序状态寄存器SPSR现场信息进行存储的步骤,包括:
依据中断向量基地址和预设的中断偏移量,确定所述子程序链接寄存器LR现场信息;
对所述子程序链接寄存器LR现场信息和所述备份程序状态寄存器SPSR现场信息进行存储;
其中,所述依据多个所述第二中断信号分别对应的中断号,对多个所述第二中断信号进行处理的步骤,包括:
依据多个所述第二中断信号分别对应的中断号,确定多个中断号范围分别对应的第二中断信号分组;
若任一所述第二中断信号分组对应的中断号范围为大于31,则将该任一所述第二中断信号分组对应的多个所述第二中断信号确定为多个共享中断信号GPIO,并依据预配置的总中断存储器GPIO,确定多个所述共享中断信号GPIO分别指向的目标中断状态寄存器GPIO;
基于预定义的多种软件中断SGI分别对应的中断状态寄存器GPIO,并依据多个所述共享中断信号GPIO分别指向的目标中断状态寄存器GPIO,确定多个所述共享中断信号GPIO分别对应的优先级;
依据多个所述共享中断信号GPIO分别对应的优先级,对多个所述共享中断信号GPIO进行处理;
其中,所述依据多个所述第二中断信号分别对应的中断号,对多个所述第二中断信号进行处理的步骤,还包括以下至少一个步骤:
若任一所述第二中断信号分组对应的中断号范围为[0,15],则确定该任一所述第二中断信号分组对应的多个所述第二中断信号各自的中断号所属的软件中断SGI函数,并进行处理;
若任一所述第二中断信号分组对应的中断号范围为[16,31],则依据预注册的CPU私有函数进行处理。
4.一种终端,包括:存储器、处理器及存储在该存储器上并可在该处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1至2中任一项所述的方法。
5.一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1至2中任一项所述的方法。
CN202010618075.1A 2020-06-30 2020-06-30 中断嵌套处理方法、装置、终端及存储介质 Active CN111782368B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010618075.1A CN111782368B (zh) 2020-06-30 2020-06-30 中断嵌套处理方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010618075.1A CN111782368B (zh) 2020-06-30 2020-06-30 中断嵌套处理方法、装置、终端及存储介质

Publications (2)

Publication Number Publication Date
CN111782368A CN111782368A (zh) 2020-10-16
CN111782368B true CN111782368B (zh) 2024-02-09

Family

ID=72761445

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010618075.1A Active CN111782368B (zh) 2020-06-30 2020-06-30 中断嵌套处理方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN111782368B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112286847B (zh) * 2020-11-05 2023-03-10 成都菁蓉联创科技有限公司 一种提升系统外部中断响应速度的方法、装置和控制器
CN114691481A (zh) * 2020-12-30 2022-07-01 龙芯中科(成都)技术有限公司 异常定位方法、装置及可读存储介质
CN113568349B (zh) * 2021-07-27 2023-05-02 深圳市轱辘车联数据技术有限公司 数据处理方法、装置、终端设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101051282A (zh) * 2007-05-09 2007-10-10 浙江大学 多操作系统协同工作实现方法
CN103778009A (zh) * 2012-10-18 2014-05-07 深圳市中兴微电子技术有限公司 中断处理方法及装置
CN106406991A (zh) * 2016-08-30 2017-02-15 西安航天华迅科技有限公司 一种ThreadX操作系统在ARM处理器上的运行方法
CN108037951A (zh) * 2017-12-27 2018-05-15 山东师范大学 一种dtp处理器的中断快速切换方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489188B2 (en) * 2017-01-19 2019-11-26 Samsung Electronics Co., Ltd. Method for reducing interrupt latency in embedded systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101051282A (zh) * 2007-05-09 2007-10-10 浙江大学 多操作系统协同工作实现方法
CN103778009A (zh) * 2012-10-18 2014-05-07 深圳市中兴微电子技术有限公司 中断处理方法及装置
CN106406991A (zh) * 2016-08-30 2017-02-15 西安航天华迅科技有限公司 一种ThreadX操作系统在ARM处理器上的运行方法
CN108037951A (zh) * 2017-12-27 2018-05-15 山东师范大学 一种dtp处理器的中断快速切换方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘晋 ; 谭强 ; .μcos-Ⅱ ARM移植中断处理研究.辽宁教育行政学院学报.2007,(第08期),全文. *
蒋俊 ; 钱光明 ; .ARM中断处理的安全性与高效性研究.单片机与嵌入式系统应用.2009,(第05期),全文. *

Also Published As

Publication number Publication date
CN111782368A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
CN111782368B (zh) 中断嵌套处理方法、装置、终端及存储介质
US6360243B1 (en) Method, device and article of manufacture for implementing a real-time task scheduling accelerator
US20160378570A1 (en) Techniques for Offloading Computational Tasks between Nodes
US8321615B2 (en) Source core interrupt steering
US8255603B2 (en) User-level interrupt mechanism for multi-core architectures
US8544012B2 (en) Changing a scheduler in a virtual machine monitor
EP3402172B1 (en) A data processing system
CN109391512B (zh) 一种服务发布方法、装置及电子设备
EP2620838B1 (en) Automatic partial array self-refresh
RU2568306C1 (ru) Система обработки с управлением обращением к внешней памяти
US10614542B2 (en) High granularity level GPU resource allocation method and system
CN114490085B (zh) 一种网卡配置方法、装置、设备及存储介质
WO2023246042A1 (zh) 调度方法及装置、芯片、电子设备及存储介质
WO2013156823A1 (en) Information processing device and method for protecting data in a call stack
EP3770759A1 (en) Wake-up and scheduling of functions with context hints
WO2022042127A1 (zh) 一种协程切换的方法、装置及设备
CN110795234A (zh) 一种资源调度方法及装置
US8909873B2 (en) Traffic control method and apparatus of multiprocessor system
CN111782378A (zh) 自适应性的处理性能调整方法、服务器及可读存储介质
US20090083754A1 (en) Implementation of multi-tasking on a digital signal processor
CN115344350A (zh) 云服务系统的节点设备及资源处理方法
US7707344B2 (en) Interrupt mitigation on multiple network adapters
CN114911538A (zh) 一种运行系统的启动方法及计算设备
US7584328B2 (en) Method, apparatus, and a system for efficient context switch
CN115599287A (zh) 一种数据处理方法、装置及电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant