首页 / 专利库 / 电脑编程 / 高级配置与电源接口 / 一种中断处理方法及装置

一种中断处理方法及装置

阅读:10发布:2020-05-20

专利汇可以提供一种中断处理方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 实施例 公开了一种中断处理方法及装置,所述方法包括:当系统代码在非安全世界运行至目标 位置 定时产生安全中断时,获取安全世界的异常向量表;判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。采用本发明,可实现OS下的调度和共享内存操作,满足非安全世界下OS的相关 访问 。,下面是一种中断处理方法及装置专利的具体信息内容。

1.一种中断处理方法,其特征在于,包括:
当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;
若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;
控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
2.如权利要求1所述的方法,其特征在于,所述目标中断处理函数的地址为系统通过高级配置与电源接口ACPI或者同步异常指令传输至安全世界的地址。
3.如权利要求1所述的方法,其特征在于,所述判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行之前,还包括:
获取与所述异常向量表关联的目标中断处理函数的目标中断号;
所述判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行,包括:
根据预先设置的各个中断号对应的中断处理函数执行世界类别,判断所述目标中断号对应的目标中断处理函数是否由非安全世界执行;所述执行世界类别包括安全世界执行或者非安全世界执行。
4.如权利要求3所述的方法,其特征在于,所述执行所述目标中断处理函数之后,还包括:
若检测到所述目标中断处理函数执行完成,控制所述非安全世界通过安全调用汇编指令向所述安全世界指示所述目标中断处理函数执行完毕;
控制所述安全世界根据预先备份的数据,恢复所述目标位置的上下文数据,并返回至所述非安全世界的所述目标位置继续执行系统代码。
5.如权利要求3所述的方法,其特征在于,所述方法还包括:
若所述目标中断号对应的目标中断处理函数由安全世界执行,则控制所述安全世界调用并执行所述目标中断处理函数。
6.一种中断处理装置,其特征在于,包括:
第一获取模,用于当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
判断模块,用于判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;
第一控制模块,用于若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;
第二控制模块,用于控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
7.如权利要求6所述的装置,其特征在于,所述目标中断处理函数的地址为系统通过高级配置与电源接口ACPI或者同步异常指令传输至安全世界的地址。
8.如权利要求6所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取与所述异常向量表关联的目标中断处理函数的目标中断号;
所述判断模块具体用于根据预先设置的各个中断号对应的中断处理函数执行世界类别,判断所述目标中断号对应的目标中断处理函数是否由非安全世界执行;所述执行世界类别包括安全世界执行或者非安全世界执行。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
第三控制模块,用于若检测到所述目标中断处理函数执行完成,控制所述非安全世界通过安全调用汇编指令向所述安全世界指示所述目标中断处理函数执行完毕;
第四控制模块,用于控制所述安全世界根据预先备份的数据,恢复所述目标位置的上下文数据,并返回至所述非安全世界的所述目标位置继续执行系统代码。
10.如权利要求8所述的装置,其特征在于,所述装置还包括:
第五控制模块,用于若所述目标中断号对应的目标中断处理函数由安全世界执行,则控制所述安全世界调用并执行所述目标中断处理函数。

说明书全文

一种中断处理方法及装置

技术领域

[0001] 本发明涉及电子技术领域,尤其涉及一种中断处理方法及装置。

背景技术

[0002] 产品业务在进行驱动处理时,在临界区需要进行上的操作,此时需要将中断请求(interrupt request,IRQ)进行屏蔽,以防止业务中断对其操作的影响,但此时如果软件出现死锁的场景,那么CPU则无法进行任何操作,同时中断被屏蔽也无法进入任何中断处理。
[0003] 针对上述场景需要提出相应的解决方法,在先进的RISC机器(Advanced(Reduced Instruction Set Computer,RISC)Machines,ARM)V8架构中,依靠TrustZone技术将系统资源分别划分为安全世界和非安全世界,系统安全/非安全层级如图1所示,分为EL0/1/2/3共4个层级,其中EL3只有安全层级,EL2只有非安全层级,OS内核态运行在非安全的EL1下。
[0004] 进一步依靠TrustZone技术可将对应中断的中断号配置为安全中断或非安全中断,即使在产品业务OS下对IRQ/快速中断请求(fast interrupt request,FIQ)中断进行屏蔽,安全中断也可以触发,即OS下无法屏蔽该安全中断的触发,例如将看定时器中断配置为安全中断时,看门狗定时器中断无法被屏蔽。
[0005] 在ARM V8架构中,定时产生安全中断进行监测,防止软件死锁的场景出现。当安全中断在安全世界触发后,则进入安全世界的异常向量入口,并在安全世界实现和执行与异常向量关联的中断处理函数;当安全中断在非安全世界触发后,也是进入到安全世界EL3的异常向量入口,并在安全世界的EL3层级实现和执行与异常向量关联的中断处理函数。
[0006] 这种方式,中断处理函数的所有执行处于安全世界的EL3安全层级,而安全世界的EL3层级的无法实现OS下的调度和共享内存操作,并且安全世界和非安全世界使用不同的页表配置,无法满足非安全世界下OS的相关访问

发明内容

[0007] 本发明实施例提供一种中断处理方法及装置,可以将与安全世界的异常向量表关联的目标中断处理函数转由非安全世界执行,从而实现OS下的调度和共享内存操作,满足非安全世界下OS的相关访问。
[0008] 本发明实施例第一方面提供了一种中断处理方法,可包括:
[0009] 当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
[0010] 判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;
[0011] 若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;
[0012] 控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
[0013] 基于第一方面,在第一方面的第一种可行的实施方式中,所述目标中断处理函数的地址为系统通过高级配置与电源接口ACPI或者同步异常指令传输至安全世界的地址。
[0014] 基于第一方面,在第一方面的第二种可行的实施方式中,所述判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行之前,还包括:
[0015] 获取与所述异常向量表关联的目标中断处理函数的目标中断号;
[0016] 所述判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行,包括:
[0017] 根据预先设置的各个中断号对应的中断处理函数执行世界类别,判断所述目标中断号对应的目标中断处理函数是否由非安全世界执行;所述执行世界类别包括安全世界执行或者非安全世界执行。
[0018] 基于第一方面的第二种可行的实施方式,在第一方面的第三种可行的实施方式中,所述执行所述目标中断处理函数之后,还包括:
[0019] 若检测到所述目标中断处理函数执行完成,控制所述非安全世界通过安全调用汇编指令向所述安全世界指示所述目标中断处理函数执行完毕;
[0020] 控制所述安全世界根据预先备份的数据,恢复所述目标位置的上下文数据,并返回至所述非安全世界的所述目标位置继续执行系统代码。
[0021] 基于第一方面的第二种可行的实施方式,在第一方面的第四种可行的实施方式中,所述方法还包括:
[0022] 若所述目标中断号对应的目标中断处理函数由安全世界执行,则控制所述安全世界调用并执行所述目标中断处理函数。
[0023] 本发明第二方面提供一种中断处理装置,包括:
[0024] 第一获取模,用于当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
[0025] 判断模块,用于判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;
[0026] 第一控制模块,用于若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;
[0027] 第二控制模块,用于控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
[0028] 基于第二方面,在第二方面的第一种可行的实施方式中,所述目标中断处理函数的地址为系统通过高级配置与电源接口ACPI或者同步异常指令传输至安全世界的地址。
[0029] 基于第二方面,在第二方面的第二种可行的实施方式中,所述装置还包括:
[0030] 第二获取模块,用于获取与所述异常向量表关联的目标中断处理函数的目标中断号;
[0031] 所述判断模块具体用于根据预先设置的各个中断号对应的中断处理函数执行世界类别,判断所述目标中断号对应的目标中断处理函数是否由非安全世界执行;所述执行世界类别包括安全世界执行或者非安全世界执行。
[0032] 基于第二方面第二种可行的实施方式,在第二方面的第三种可行的实施方式中,所述装置还包括:
[0033] 第三控制模块,用于若检测到所述目标中断处理函数执行完成,控制所述非安全世界通过安全调用汇编指令向所述安全世界指示所述目标中断处理函数执行完毕;
[0034] 第四控制模块,用于控制所述安全世界根据预先备份的数据,恢复所述目标位置的上下文数据,并返回至所述非安全世界的所述目标位置继续执行系统代码。
[0035] 基于第二方面第二种可行的实施方式,在第二方面的第四种可行的实施方式中,所述装置还包括:
[0036] 第五控制模块,用于若所述目标中断号对应的目标中断处理函数由安全世界执行,则控制所述安全世界调用并执行所述目标中断处理函数。
[0037] 本发明实施例中,当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表,判断与该异常向量表关联的目标中断处理函数是否由非安全世界执行,若该目标中断处理函数由非安全世界执行,则控制安全世界将目标中断处理函数的地址传输至非安全世界,控制非安全世界根据该地址查找到目标中断处理函数,并执行该目标中断处理函数,这种方式可以将与安全世界的异常向量表关联的目标中断处理函数转由非安全世界执行,从而实现OS下的调度和共享内存操作,满足非安全世界下OS的相关访问。附图说明
[0038] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0039] 图1是本发明实施例提供的一种ARM V8架构示意图;
[0040] 图2是本发明实施例提供的一种中断处理方法的流程示意图;
[0041] 图3是本发明实施例提供的另一种中断处理方法的流程示意图;
[0042] 图4是本发明实施例提供的一种结合具体软件的应用场景示意图;
[0043] 图5是本发明实施例提供的一种中断处理装置的结构示意图;
[0044] 图6是本发明实施例提供的一种硬件架构示意图。

具体实施方式

[0045] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046] 请参照图1,是本发明实施例提供的一种ARM V8架构示意图,如图所示,该系统架构包括非安全世界和安全世界,其中安全/非安全层级如下图所示,分为异常层级(Exception Level,EL)0/1/2/3共4个层级,其中EL3只有安全层级,EL2只有非安全层级,OS内核态运行在非安全世界的EL1下。依靠TrustZone技术可将对应中断号配置为安全中断或非安全中断,即使在产品业务OS下对IRQ/FIQ中断进行屏蔽,安全中断也可以触发,即OS下无法屏蔽该中断的触发,例如看门狗定时器。
[0047] 安全中断触发后,该安全中断无法直接进入OS下配置的非安全世界EL1的异常向量入口处理,而是进入到安全世界EL3的异常向量入口,该异常向量由安全世界初始化,而EL3层级的安全世界无法实现OS下的调度和共享内存操作(只有非安全世界才可以实现OS下的调度和共享内存),并且安全世界和非安全世界使用不同的页表配置,无法满足非安全世界下OS的相关访问,如日志记录等操作。因此,本发明实施例针对这个问题提出一种中断处理方法,可以当与安全世界的异常向量关联的目标中断处理函数需要在非安全世界执行时,将该目标中断处理函数的地址由安全世界传输至非安全世界,并由非安全世界执行该目标中断处理函数,该目标中断处理函数的地址预先由系统传递至安全世界。这种方式可以实现OS下的调度和共享内存,同时可以满足非安全世界下OS的相关访问。
[0048] 下面将结合附图2至附图4,对本发明实施例提供的中断处理方法进行介绍和说明。
[0049] 请参照图2,是本发明实施例提供的一种中断处理方法的流程示意图;如图2所示,所述中断处理方法包括:
[0050] S200,当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
[0051] 本发明实施例中,为了防止软件死锁,系统会定时产生安全中断,获取安全世界的异常向量表,从而处理相应的问题防止软件死锁,软件死锁即是在临界区进行上锁,将IRQ中断进行屏蔽,但此时处理器内的软件却出现死锁,无法运行,处理器则不能进行任何操作,也不能处理其他中断。本实施例中,定时产生安全中断,获取安全世界的异常向量表,从而可以及时发现问题,然后进行处理,防止软件死锁。
[0052] 中断是指当出现需要,即中断触发时,CPU暂时停止当前程序的执行转而执行处理新情况的程序。例如,在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况。中断算是一种异步异常。
[0053] 中断分为IRQ和FIQ,通常在操作系统层面使用的中断均为IRQ,一般用于非安全中断。而FIQ一般用于快速响应中断,一般用于安全中断。本方案中的安全中断是进入到EL3安全世界处理的中断,因此为FIQ,将FIQ配置为安全中断,安全中断产生后路由至EL3处理,并获取安全世界的异常向量表。
[0054] S201,判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;
[0055] 本发明实施例中,判断与安全世界的异常向量表关联的目标中断处理函数是否由非安全世界执行。需要说明的是,在中断使能前,系统OS先通过高级配置与电源接口(advanced configuration and power interface,ACPI)或者安全调用监控(secure monitor call,smc)同步异常指令将该目标中断处理函数的地址传递给安全层级EL3。
[0056] smc是一条安全调用的汇编指令,是基于ARM64架构的CPU通过非安全世界进入安全世界的同步异常指令。执行smc调用的时候,可以通过当时的核内寄存器的值X0-X7进行传递参数。smc的调用符合SMC调用规范,本方案使用其规范中定义的实体编号(Owning Entity Number,OEM)项,X1传递目标中断处理函数的地址,通过smc指令进入安全世界EL3后,在EL3中进行保存。
[0057] 安全中断触发后,进入到了安全世界EL3Firmware的异常向量表,通过目标中断处理函数的目标中断号走不同的分支,若该目标中断号对应的中断为非安全世界执行类别,则走由非安全世界接管的流程;反之则走安全世界接管的流程。不同中断号所对应的执行世界类别由系统预先设定,执行世界类别包括安全世界执行和非安全世界执行。
[0058] S202,若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;所述目标中断处理函数的地址为系统通过高级配置与电源接口ACPI或者同步异常指令传输至安全世界的地址。
[0059] 本发明实施例中,若目标中断处理函数是由非安全世界执行,则EL3固件将目标位置的中断上下文进行保存,同时将目标中断处理函数地址传输至非安全世界,其中,中断上下文包括中断产生前的通用寄存器X0-X30,状态寄存器、中断产生地址和非安全世界的堆栈指针
[0060] S203,控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
[0061] 本发明实施例中,通过一条eret汇编指令即可由安全世界进入到非安全世界的目标中断处理函数,该eret汇编指令中携带目标中断处理函数的地址。根据目标中断处理函数的地址即可进入目标中断处理函数的执行,执行目标中断处理函数过程中进行黑匣子记录。
[0062] 当执行完目标中断处理函数后,返回至安全世界,然后根据之前保存的上下文进行恢复,退出处理流程从而在非安全世界下继续执行。
[0063] 本发明实施例中,当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表,判断与该异常向量表关联的目标中断处理函数是否由非安全世界执行,若该目标中断处理函数由非安全世界执行,则控制安全世界将目标中断处理函数的地址传输至非安全世界,控制非安全世界根据该地址查找到目标中断处理函数,并执行该目标中断处理函数,这种方式可以将与安全世界的异常向量表关联的目标中断处理函数转由非安全世界执行,从而实现OS下的调度和共享内存操作,满足非安全世界下OS的相关访问。
[0064] 请参照图3,是本发明实施例提供的另一种中断处理方法的流程示意图;如图3所示,所述中断处理方法包括:
[0065] S300,当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
[0066] 本发明实施例步骤S300请参照图2的实施例步骤S200,在此不再赘述。
[0067] S301,获取与所述异常向量表关联的目标中断处理函数的目标中断号;
[0068] 本发明实施例中,安全世界中对每个中断处理函数均设置了中断号,在获取与异常向量表关联的目标中断处理函数的执行世界类别,需要预先获取目标中断处理函数的目标中断号,该目标中断号用于唯一标识该目标中断函数。
[0069] S302,根据预先设置的各个中断号对应的中断处理函数执行世界类别,判断所述目标中断号对应的目标中断处理函数是否由非安全世界执行;所述执行世界类别包括安全世界执行或者非安全世界执行。
[0070] 本发明实施例中,安全世界中对各个中断号对应的中断处理函数均设置了执行世界类别,执行世界类别包括安全世界执行或者非安全世界执行。在预先设置的各个中断号中查找与目标中断号匹配的中断号,并将与目标中断号匹配的中断号对应的执行世界类别确定为目标中断处理函数的执行世界类别。
[0071] S303,若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;
[0072] S304,控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
[0073] 本发明实施例步骤S303-S304请参照图2的实施例步骤S202-S203,在此不再赘述。
[0074] S305,若检测到所述目标中断处理函数执行完成,控制所述非安全世界通过安全调用汇编指令向所述安全世界指示所述目标中断处理函数执行完毕;
[0075] 本发明实施例中,若检测到目标中断处理函数执行完成,非安全世界通过smc同步异常指令进入EL3层级,指示目标中断处理函数执行完毕,同时传入指定ID,该指定ID用于指示后续处理流程。
[0076] S306,控制所述安全世界根据预先备份的数据,恢复所述目标位置的上下文数据,并返回至所述非安全世界的所述目标位置继续执行系统代码。
[0077] 本发明实施例中,在smc进入EL3层级同步异常向量时,软件根据传入不同的ID的值,走不同的处理分支。再根据之前保存的目标位置的上下文数据进行恢复,从而退出处理流程后在非安全世界下的目标位置处继续执行。
[0078] S307,若所述目标中断号对应的目标中断处理函数由安全世界执行,则控制所述安全世界调用并执行所述目标中断处理函数。
[0079] 本发明实施例中,若目标中断号对应的目标中断处理函数预先设置的是由安全世界执行,则安全世界可以直接调用并执行目标中断处理函数。
[0080] 本发明实施例中,当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表,判断与该异常向量表关联的目标中断处理函数是否由非安全世界执行,若该目标中断处理函数由非安全世界执行,则控制安全世界将目标中断处理函数的地址传输至非安全世界,控制非安全世界根据该地址查找到目标中断处理函数,并执行该目标中断处理函数,这种方式可以将与安全世界的异常向量表关联的目标中断处理函数转由非安全世界执行,从而实现OS下的调度和共享内存操作,满足非安全世界下OS的相关访问。
[0081] 请参照图4,为本发明实施例提供的一种结合具体软件的应用场景示意图,在非安全世界的EL1层级,OS系统代码运行至A处定时产生安全中断时,进入EL3安全世界的异常向量表,同时安全世界EL3对A处的上下文进行保存,一般为通用寄存器X0-X30、中断产生地址ELR_EL3,SPSR_EL3;
[0082] 然后根据与异常向量表关联的目标中断处理函数的中断号判断是否由非安全世界执行;
[0083] 若不是由非安全世界执行(即是由安全世界执行),则由安全世界调用并执行目标中断处理函数,然后中断上下文恢复,最后返回至非安全世界的A处继续执行;
[0084] 若是由非安全世界执行,修改ELR_EL3异常返回地址为系统传递的目标中断处理函数的地址,即是将目标中断处理函数的地址传输至非安全世界。同时将保存的上下文连同SP_EL0、SP_EL1、SP_EL2保存,并进行备份;
[0085] 非安全世界执行目标中断处理函数,当目标中断处理函数执行完毕,通过smc指令进行调用,进入EL3,并传入指定ID;
[0086] Smc同步异常指令进入EL3,根据指令ID进入对应的处理分组,在处理分支程序中根据备份进行目标位置的上下文恢复;
[0087] 同步异常返回至非安全世界的A处继续执行。
[0088] 下面结合附图5至附图6,阐述本发明实施例提供的中断处理装置的具体实现。
[0089] 请参照图5,为本发明实施例提供的一种中断处理装置的结构示意图,如图5所示,本实施例所述的一种中断处理装置包括:第一获取模块100、判断模块101、第一控制模块102和第二控制模块103。
[0090] 第一获取模块100,用于当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
[0091] 本发明实施例中,为了防止软件死锁,系统会定时产生安全中断,第一获取模块100获取安全世界的异常向量表,从而处理相应的问题防止软件死锁,软件死锁即是在临界区进行上锁,将IRQ中断进行屏蔽,但此时处理器内的软件却出现死锁,无法运行,处理器则不能进行任何操作,也不能处理其他中断。本实施例中,定时产生安全中断,获取安全世界的异常向量表,从而可以及时发现问题,然后进行处理,防止软件死锁。
[0092] 中断是指当出现需要,即中断触发时,CPU暂时停止当前程序的执行转而执行处理新情况的程序。例如,在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况。中断算是一种异步异常。
[0093] 中断分为IRQ和FIQ,通常在操作系统层面使用的中断均为IRQ,一般用于非安全中断。而FIQ一般用于快速响应中断,一般用于安全中断。本方案中的安全中断是进入到EL3安全世界处理的中断,因此为FIQ,将FIQ配置为安全中断,安全中断产生后路由至EL3处理,并获取安全世界的异常向量表。
[0094] 判断模块101,用于判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;
[0095] 本发明实施例中,判断模块101判断与安全世界的异常向量表关联的目标中断处理函数是否由非安全世界执行。需要说明的是,在中断使能前,系统OS先通过高级配置与电源接口(advanced configuration and power interface,ACPI)或者安全调用监控(secure monitor call,smc)同步异常指令将该目标中断处理函数的地址传递给安全层级EL3。
[0096] smc是一条安全调用的汇编指令,是基于ARM64架构的CPU通过非安全世界进入安全世界的同步异常指令。执行smc调用的时候,可以通过当时的核内寄存器的值X0-X7进行传递参数。smc的调用符合SMC调用规范,本方案使用其规范中定义的实体编号(Owning Entity Number,OEM)项,X1传递目标中断处理函数的地址,通过smc指令进入安全世界EL3后,在EL3中进行保存。
[0097] 安全中断触发后,进入到了安全世界EL3Firmware的异常向量表,通过目标中断处理函数的目标中断号走不同的分支,若该目标中断号对应的中断为非安全世界执行类别,则走由非安全世界接管的流程;反之则走安全世界接管的流程。不同中断号所对应的执行世界类别由系统预先设定,执行世界类别包括安全世界执行和非安全世界执行。
[0098] 第一控制模块102,用于若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;
[0099] 本发明实施例中,若目标中断处理函数是由非安全世界执行,则EL3固件将目标位置的中断上下文进行保存,同时第一控制模块102将目标中断处理函数地址传输至非安全世界,其中,中断上下文包括中断产生前的通用寄存器X0-X30,状态寄存器、中断产生地址和非安全世界的堆栈指针。
[0100] 第二控制模块103,用于控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
[0101] 本发明实施例中,通过一条eret汇编指令即可由安全世界进入到非安全世界的目标中断处理函数,该eret汇编指令中携带目标中断处理函数的地址。第二控制模块103根据目标中断处理函数的地址即可进入目标中断处理函数的执行,执行目标中断处理函数过程中进行黑匣子记录。
[0102] 当执行完目标中断处理函数后,返回至安全世界,然后根据之前保存的上下文进行恢复,退出处理流程从而在非安全世界下继续执行。
[0103] 可选的,该装置还可以包括第二获取模块104;
[0104] 第二获取模块104,用于获取与所述异常向量表关联的目标中断处理函数的目标中断号;
[0105] 本发明实施例中,安全世界中对每个中断处理函数均设置了中断号,第二获取模块104在获取与异常向量表关联的目标中断处理函数的执行世界类别,需要预先获取目标中断处理函数的目标中断号,该目标中断号用于唯一标识该目标中断函数。
[0106] 所述判断模块101具体用于根据预先设置的各个中断号对应的中断处理函数执行世界类别,判断所述目标中断号对应的目标中断处理函数是否由非安全世界执行;所述执行世界类别包括安全世界执行或者非安全世界执行。
[0107] 本发明实施例中,安全世界中对各个中断号对应的中断处理函数均设置了执行世界类别,执行世界类别包括安全世界执行或者非安全世界执行。在预先设置的各个中断号中查找与目标中断号匹配的中断号,并将与目标中断号匹配的中断号对应的执行世界类别确定为目标中断处理函数的执行世界类别。
[0108] 进一步可选的,该装置还可以包括第三控制模块105和第四控制模块106;
[0109] 第三控制模块105,用于若检测到所述目标中断处理函数执行完成,控制所述非安全世界通过安全调用汇编指令向所述安全世界指示所述目标中断处理函数执行完毕;
[0110] 本发明实施例中,若检测到目标中断处理函数执行完成,第三控制模块105控制非安全世界通过smc同步异常指令进入EL3层级,指示目标中断处理函数执行完毕,同时传入指定ID,该指定ID用于指示后续处理流程。
[0111] 第四控制模块106,用于控制所述安全世界根据预先备份的数据,恢复所述目标位置的上下文数据,并返回至所述非安全世界的所述目标位置继续执行系统代码。
[0112] 本发明实施例中,在smc进入EL3层级同步异常向量时,软件根据传入不同的ID的值,走不同的处理分支。第四控制模块106再根据之前保存的目标位置的上下文数据进行恢复,从而退出处理流程后在非安全世界下的目标位置处继续执行。
[0113] 进一步可选的,该装置还包括第五控制模块107;
[0114] 第五控制模块107,用于若所述目标中断号对应的目标中断处理函数由安全世界执行,则控制所述安全世界调用并执行所述目标中断处理函数。
[0115] 本发明实施例中,若目标中断号对应的目标中断处理函数预先设置的是由安全世界执行,则第五控制模块107控制安全世界可以直接调用并执行目标中断处理函数。
[0116] 本发明实施例中,当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表,判断与该异常向量表关联的目标中断处理函数是否由非安全世界执行,若该目标中断处理函数由非安全世界执行,则控制安全世界将目标中断处理函数的地址传输至非安全世界,控制非安全世界根据该地址查找到目标中断处理函数,并执行该目标中断处理函数,这种方式可以将与安全世界的异常向量表关联的目标中断处理函数转由非安全世界执行,从而实现OS下的调度和共享内存操作,满足非安全世界下OS的相关访问。
[0117] 请参照图6,为本发明实施例提供的一种硬件架构图,如图所示,该硬件架构包括中央处理器(Central Processing Unit,CPU),例如64位ARM处理器,该硬件架构还包括内存,内存分别通过内存通道0和内存通道1与处理器连接,处理器还通过串行外设结构与基本输入输出系统连接,处理器通过物理层芯片与网口连接,处理器还包括多媒体卡接口,该接口连接多媒体卡或者闪存卡。该处理器也可以通过串行连接小型计算机系统接口硬盘。内存用于存储程序代码,处理器用于调用存储器中存储的程序代码执行中断处理方法;
[0118] 当系统代码在非安全世界运行至目标位置定时产生安全中断时,获取安全世界的异常向量表;
[0119] 判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行;
[0120] 若所述目标中断处理函数是由非安全世界执行,则控制所述安全世界将所述目标中断处理函数的地址传输至非安全世界;
[0121] 控制所述非安全世界根据所述地址查找所述目标中断处理函数,并执行所述目标中断处理函数。
[0122] 可选的,为了防止软件死锁,系统会定时产生安全中断,获取安全世界的异常向量表,从而处理相应的问题防止软件死锁,软件死锁即是在临界区进行上锁,将IRQ中断进行屏蔽,但此时处理器内的软件却出现死锁,无法运行,处理器则不能进行任何操作,也不能处理其他中断。本实施例中,定时产生安全中断,获取安全世界的异常向量表,从而可以及时发现问题,然后进行处理,防止软件死锁。
[0123] 中断是指当出现需要,即中断触发时,CPU暂时停止当前程序的执行转而执行处理新情况的程序。例如,在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况。中断算是一种异步异常。
[0124] 中断分为IRQ和FIQ,通常在操作系统层面使用的中断均为IRQ,一般用于非安全中断。而FIQ一般用于快速响应中断,一般用于安全中断。本方案中的安全中断是进入到EL3安全世界处理的中断,因此为FIQ,将FIQ配置为安全中断,安全中断产生后路由至EL3处理,并获取安全世界的异常向量表。
[0125] 可选的,判断与安全世界的异常向量表关联的目标中断处理函数是否由非安全世界执行。需要说明的是,在中断使能前,系统OS先通过高级配置与电源接口(advanced configuration and power interface,ACPI)或者安全调用监控(secure monitor call,smc)同步异常指令将该目标中断处理函数的地址传递给安全层级EL3。
[0126] smc是一条安全调用的汇编指令,是基于ARM64架构的CPU通过非安全世界进入安全世界的同步异常指令。执行smc调用的时候,可以通过当时的核内寄存器的值X0-X7进行传递参数。smc的调用符合SMC调用规范,本方案使用其规范中定义的实体编号(Owning Entity Number,OEM)项,X1传递目标中断处理函数的地址,通过smc指令进入安全世界EL3后,在EL3中进行保存。
[0127] 安全中断触发后,进入到了安全世界EL3Firmware的异常向量表,通过目标中断处理函数的目标中断号走不同的分支,若该目标中断号对应的中断为非安全世界执行类别,则走由非安全世界接管的流程;反之则走安全世界接管的流程。不同中断号所对应的执行世界类别由系统预先设定,执行世界类别包括安全世界执行和非安全世界执行。
[0128] 可选的,若目标中断处理函数是由非安全世界执行,则EL3固件将目标位置的中断上下文进行保存,同时将目标中断处理函数地址传输至非安全世界,其中,中断上下文包括中断产生前的通用寄存器X0-X30,状态寄存器、中断产生地址和非安全世界的堆栈指针。
[0129] 可选的,通过一条eret汇编指令即可由安全世界进入到非安全世界的目标中断处理函数,该eret汇编指令中携带目标中断处理函数的地址。根据目标中断处理函数的地址即可进入目标中断处理函数的执行,执行目标中断处理函数过程中进行黑匣子记录。
[0130] 当执行完目标中断处理函数后,返回至安全世界,然后根据之前保存的上下文进行恢复,退出处理流程从而在非安全世界下继续执行。
[0131] 所述判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行之前,还包括:
[0132] 获取与所述异常向量表关联的目标中断处理函数的目标中断号;
[0133] 所述判断与所述异常向量表关联的目标中断处理函数是否由非安全世界执行,包括:
[0134] 根据预先设置的各个中断号对应的中断处理函数执行世界类别,判断所述目标中断号对应的目标中断处理函数是否由非安全世界执行;所述执行世界类别包括安全世界执行或者非安全世界执行。
[0135] 可选的,安全世界中对每个中断处理函数均设置了中断号,在获取与异常向量表关联的目标中断处理函数的执行世界类别,需要预先获取目标中断处理函数的目标中断号,该目标中断号用于唯一标识该目标中断函数。
[0136] 可选的,安全世界中对各个中断号对应的中断处理函数均设置了执行世界类别,执行世界类别包括安全世界执行或者非安全世界执行。在预先设置的各个中断号中查找与目标中断号匹配的中断号,并将与目标中断号匹配的中断号对应的执行世界类别确定为目标中断处理函数的执行世界类别。
[0137] 所述执行所述目标中断处理函数之后,还包括:
[0138] 若检测到所述目标中断处理函数执行完成,控制所述非安全世界通过安全调用汇编指令向所述安全世界指示所述目标中断处理函数执行完毕;
[0139] 控制所述安全世界根据预先备份的数据,恢复所述目标位置的上下文数据,并返回至所述非安全世界的所述目标位置继续执行系统代码。
[0140] 可选的,若检测到目标中断处理函数执行完成,非安全世界通过smc同步异常指令进入EL3层级,指示目标中断处理函数执行完毕,同时传入指定ID,该指定ID用于指示后续处理流程。
[0141] 可选的,在smc进入EL3层级同步异常向量时,软件根据传入不同的ID的值,走不同的处理分支。再根据之前保存的目标位置的上下文数据进行恢复,从而退出处理流程后在非安全世界下的目标位置处继续执行。
[0142] 若所述目标中断号对应的目标中断处理函数由安全世界执行,则控制所述安全世界调用并执行所述目标中断处理函数。
[0143] 可选的,若目标中断号对应的目标中断处理函数预先设置的是由安全世界执行,则安全世界可以直接调用并执行目标中断处理函数。
[0144] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0145] 本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0146] 本发明实施例终端中的模块或单元可以根据实际需要进行合并、划分和删减。
[0147] 本发明实施例的微控制器等部件,可以以通用集成电路,如CPU,或以专用集成电路(Application Specific Integrated Circuit,ASIC)来实现。
[0148] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈