CN117744067A - 访问空间切换方法、装置、处理器、设备及存储介质 - Google Patents
访问空间切换方法、装置、处理器、设备及存储介质 Download PDFInfo
- Publication number
- CN117744067A CN117744067A CN202410190644.5A CN202410190644A CN117744067A CN 117744067 A CN117744067 A CN 117744067A CN 202410190644 A CN202410190644 A CN 202410190644A CN 117744067 A CN117744067 A CN 117744067A
- Authority
- CN
- China
- Prior art keywords
- space
- access
- secure
- access space
- switching
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000009191 jumping Effects 0.000 claims abstract description 4
- 238000004590 computer program Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 26
- 238000012545 processing Methods 0.000 description 13
- 230000006399 behavior Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000012795 verification Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本公开提供一种访问空间切换方法、装置、处理器、设备及存储介质。该方法基于接收的访问参数确定待切换的访问空间,并从当前访问空间跳转至EL3;在EL3中,保存当前访问空间的上下文,并进行访问空间的切换设置,设置完成后恢复当前访问空间的上下文,基于恢复的当前访问空间的上下文,确定待切换的访问空间的运行程序;安全空间的运行程序和非安全空间的运行程序使用一套代码;基于待切换的访问空间的运行程序和切换设置,进入到待切换的访问空间。通过使用一套代码,模拟安全空间的运行程序和非安全空间的运行程序,不需要针对不同的访问空间设置不同的堆栈、运行程序和操作系统,在实现上更加简易,也减轻了开发人员的工作量。
Description
技术领域
本公开涉及安全访问技术领域,尤其涉及一种访问空间切换方法、装置、处理器、设备及存储介质。
背景技术
对于ARMv8 aarch64架构的处理器安全访问场景,如图1所示,使用了信任区(TRUSTZONE,TZ)机制将系统分为非安全空间(Non-secure state/Normal world/REE)和安全空间(Secure state/Secure world/TEE),并在非安全空间和安全空间的基础上引入了称为监视模式(Secure Monitor,又称安全监视器)的处理器模式,使得非安全空间和安全空间之间可以通过安全监视器模式实现彼此自由切换。在上述TZ架构的基础上,考虑到非安全空间和安全空间的各个组件对应有不同的访问系统和处理器资源的权限级别,因此又引入了可信固件(Trusted Firmware,TF)方案中的异常等级(Exception Levels,EL)对其进一步划分,具体地:分为EL0、EL1、EL2、EL3这四个等级。其中,EL0中运行的是普通APP;而EL1中一般运行的是操作系统或底层软件;EL2提供了对虚拟化的支持,可以不实现;EL3提供了安全空间与非安全空间之间的切换以及其他的高级功能。
对于目前的硬件验证来说,并不涉及复杂的操作系统以及任务调度等,更加聚焦在寄存器配置/硬件通路分析等,故目前的硬件验证一般都是非安全访问,并不涉及安全访问。但随着技术的进步,在一些安全场景(如机密计算和数字版权管理),对于外设来说,为保证安全性(如指纹验证),有一部分寄存器是私密的,对于普通的APP(如微信)无法直接访问,否则会触发异常或返回值内容不符合预期。故有的硬件验证场景也需要涉及到安全访问,但目前的硬件验证固件代码并不支持安全访问,也不涉及非安全访问和安全访问之间的切换。若采用现有产品交付形式的安全空间或非安全空间的访问方法,需要实现或移植完整的EL0/EL1/EL3中的堆栈/代码/处理逻辑以及相关的安全启动流程,具有工作量巨大、软件设计能力要求高的问题。
其中,ARM(Advanced RISC Machines,先进精简指令集机器)架构是一个精简指令集(Reduced Instruction Set Computer,RISC)处理器架构,ARMvX中的X指的是ARM的指令集和架构版本,ARMv8是第一代支持64位处理器的指令集和体系结构,ARMv8有两个执行状态,aarch64:64位的执行状态,aarch32:32位的执行状态。
发明内容
本公开的目的是提供一种访问空间切换方法、装置、处理器、设备及存储介质,以简化安全空间和非安全空间之间切换的工作量。
根据本公开的一个方面,提供一种访问空间切换方法,包括:
基于接收的访问参数确定待切换的访问空间,并从当前访问空间跳转至EL3;访问空间包括安全空间和非安全空间,当前访问空间与待切换的访问空间为不同的访问空间;
在EL3中,保存当前访问空间的上下文,并进行访问空间的切换设置,设置完成后恢复当前访问空间的上下文,基于恢复的当前访问空间的上下文,确定待切换的访问空间的运行程序;所述安全空间的运行程序和非安全空间的运行程序使用一套代码;
基于待切换的访问空间的运行程序和切换设置,进入到待切换的访问空间。
进一步的,访问空间切换方法还包括:
在进行访问空间切换之前,对安全空间和非安全空间进行固件堆栈设置。
进一步的,对安全空间和非安全空间进行固件堆栈设置,包括:
将安全空间的堆栈和非安全空间的堆栈设置为同一堆栈。
进一步的,对安全空间和非安全空间进行固件堆栈设置,还包括:
为安全空间和非安全空间配置相同的MMU页表。
进一步的,为安全空间和非安全空间配置相同的MMU页表,包括:
将MMU页表中的NS位设置为0。
进一步的,上下文包括当前访问空间的相关寄存器值,基于恢复的所述当前访问空间的上下文,确定待切换的访问空间的运行程序,包括:
基于当前访问空间的相关寄存器值获取当前访问空间的当前运行程序地址;
基于当前运行程序地址获得待切换的访问空间的运行程序。
进一步的,进行访问空间的切换设置包括:
根据待切换的访问空间的类型,对SCR_EL3寄存器的NS位进行设置;SCR_EL3寄存器的NS位设置为0则表征进行安全空间的访问行为,SCR_EL3寄存器的NS位设置为1则表征进行非安全空间的访问行为。
根据本公开的另一方面,本公开提供一种访问空间切换装置,包括:
访问空间确定模块,用于基于接收的访问参数确定待切换的访问空间,并从当前访问空间跳转至EL3;访问空间包括安全空间和非安全空间,当前访问空间与待切换的访问空间为不同的访问空间;
访问空间切换设置模块,用于在EL3中,保存当前访问空间的上下文,并进行访问空间的切换设置,设置完成后恢复当前访问空间的上下文,基于恢复的当前访问空间的上下文,确定待切换的访问空间的运行程序;所述安全空间的运行程序和非安全空间的运行程序使用一套代码;
访问空间切换模块,用于基于待切换的访问空间的运行程序和切换设置,进入到待切换的访问空间。
进一步的,访问空间切换装置还包括:
初始化设置模块,用于在进行访问空间切换之前,对安全空间和非安全空间进行固件堆栈设置。
进一步的,初始化设置模块,还用于将安全空间的堆栈和非安全空间的堆栈设置为同一堆栈。
进一步的,初始化设置模块,还用于为安全空间和非安全空间配置相同的MMU页表。
进一步的,初始化设置模块,还用于将MMU页表中的NS位设置为0。
进一步的,上下文包括当前访问空间的相关寄存器值,访问空间切换设置模块,还用于基于当前访问空间的相关寄存器值获取当前访问空间的当前运行程序地址;
基于当前运行程序地址获得待切换的访问空间的运行程序。
进一步的,访问空间切换设置模块,还用于根据待切换的访问空间的类型,对SCR_EL3寄存器的NS位进行设置;SCR_EL3寄存器的NS位设置为0则表征进行安全空间的访问行为,SCR_EL3寄存器的NS位设置为1则表征进行非安全空间的访问行为。
根据本公开的另一方面,提供一种处理器,将处理器划分为安全空间、非安全空间和EL3,处理器基于上述任一实施例所述的访问空间切换方法,进行安全空间和非安全空间之间的切换。
根据本公开的另一方面,提供一种电子装置,包括上述任一实施例所述的处理器。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例所述的电子装置。
根据本公开的另一方面,提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的访问空间切换方法的步骤。
附图说明
图1为现有技术的处理器架构示意图;
图2为本公开一个实施例提供的访问空间切换方法流程示意图;
图3为本公开一个实施例提供的访问空间切换装置结构示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种简化的访问空间切换方法,由于现有的安全空间与非安全空间之间的切换方法在实现过程中,会对安全空间和非安全空间分别设置对应的堆栈,安全空间的运行程序保存在安全空间对应的堆栈中,非安全空间的运行程序保存在非安全空间对应的堆栈中,即安全空间的运行程序和非安全空间的运行程序为两套代码。例如,若当前程序在非安全空间的EL1运行,来了一个想给安全空间的EL1处理的中断,此时非安全空间的EL1会调用SMC(secure monitor call,安全监控调用)进入EL3,即该步骤是通过非安全空间的EL1的程序+非安全空间的堆栈实现的;进入到EL3后,EL3保存非安全空间的上下文,并进行访问空间的切换设置,设置完成后恢复安全空间的上下文,通过ERET(Exception Return,异常返回)指令进入到安全空间的EL1,即该步骤是通过EL3的程序+EL3的堆栈实现的;进入到安全空间的EL1后,安全空间的EL1进行相关处理,即该步骤是通过安全空间的EL1的程序+安全空间的堆栈实现的。且在执行不同空间的运行程序时,所采用的操作系统也会不同,例如安全空间的EL1使用OPTEE,非安全空间的EL1使用LINUX,EL3使用ATF(ARM trusted firmware,ARM可信固件);其中,OPTEE是一种ARM架构下支持Trustzone技术的双内核操作系统。
而本公开将安全空间的堆栈和非安全空间的堆栈设置为同一堆栈,安全空间的运行程序和非安全空间的运行程序也使用同一套代码,通过使用一套代码,模拟安全空间的运行程序和非安全空间的运行程序;即本公开在非安全空间的EL1和安全空间的EL1实际上是从同一个堆栈中获取运行程序,且运行程序也是使用同一套代码;具体实现就是在EL3中,EL3保存的上下文和恢复的上下文为同一套代码的相关内容,只是保存的上下文用于指示当前访问空间的运行程序,恢复的上下文用于指示待切换的访问空间的运行程序;由于使用一套代码,操作系统也就只需采用一种。相较于现有的安全空间与非安全空间之间的切换方法,本公开的切换方案不需要针对不同的访问空间设置不同的堆栈、运行程序和操作系统,在实现上更加简易,也减轻了开发人员的工作量。同时,本公开的EL3只需实现空间切换和保存上下文的功能,无需实现其它功能,故本公开的EL3的代码也相较于现有的EL3的代码更加简要。
本公开的一个实施例提供一种访问空间切换方法,如图2所示,该访问空间切换方法包括以下步骤:
步骤101、基于接收的访问参数确定待切换的访问空间,并从当前访问空间跳转至EL3;
步骤102、在EL3中,保存当前访问空间的上下文,并进行访问空间的切换设置,设置完成后恢复当前访问空间的上下文,基于恢复的当前访问空间的上下文,确定待切换的访问空间的运行程序;
步骤103、基于待切换的访问空间的运行程序和切换设置,进入到待切换的访问空间。
其中,访问空间包括安全空间和非安全空间,当前访问空间与待切换的访问空间为不同的访问空间;安全空间的运行程序和非安全空间的运行程序使用一套代码。
应理解,基于ARMv8 aarch64架构的处理器使用了TRUSTZONE机制划分为非安全空间、安全空间和EL3,而非安全空间和安全空间又引入了可信固件方案中的EL进行进一步划分,将非安全空间和安全空间均进一步分为EL0、EL1和EL2。而该处理器可以为ARMv8aarch64架构的CPU(Central Processing Unit,中央处理器)、GPU(graphics processingunit,图形处理器)和片上系统的MCU(Micro Control Unit,微控制单元)等。
在一种实施方式中,若程序当前正常运行在非安全空间的EL1中,固件代码可以通过调用接口输入访问参数。接口判断访问参数为非安全访问还是安全访问,若为安全访问,则确定待切换的访问空间为安全空间,若为非安全访问,则确定待切换的访问空间为非安全空间。
若基于接收的访问参数确定待切换的访问空间为安全空间的EL1,且当前访问空间为非安全空间的EL1;则非安全空间的EL1会调用SMC指令,由于SMC是EL1/2到EL3的跳转,因此会跳转到EL3的中断向量表,同时访问参数会存入到ESR_EL3寄存器的ISS字段。ESR_EL3是ARMV8的一个寄存器,ISS是ESR_EL3的一个字段,如果发生了“SMC X”指令,X会存入到ISS字段中;其中,X是SMC指令的参数,X依据访问参数确定。因此可以通过待切换的访问空间是安全空间或非安全空间来设置X的值,通过ISS进行参数传递;可以设置X的值为0表征待切换的访问空间是安全空间,可以设置X的值为1表征待切换的访问空间是非安全空间。
EL3识别此时为SMC指令,且之前运行在非安全空间的EL1中,因此调用中断处理函数(例如,SYNC的处理函数EL3_SYNC_HANDLER),中断处理函数通过汇编指令保存当前访问空间的上下文;保存后跳转到C处理函数(例如,EL3_L64SYNC的C处理函数),C处理函数读取ESR_EL3寄存器中ISS字段的值,若该值为0,则识别到此时要进入安全空间,因此进行访问空间的切换设置,设置完成后退出到中断处理函数。
由于安全空间的运行程序和非安全空间的运行程序使用一套代码,因此直接恢复之前保存的上下文,确定待切换的访问空间的运行程序;然后触发ERET指令,进入到待切换的访问空间。
在本公开中上下文包括当前访问空间的相关寄存器值,基于当前访问空间的相关寄存器值获取当前访问空间的当前运行程序地址,基于当前运行程序地址获得待切换的访问空间的运行程序。
应理解,由于安全空间的运行程序和非安全空间的运行程序使用一套代码,即安全空间的运行程序和非安全空间的运行程序为该套代码中不同位置。当前运行程序地址可以理解为非安全空间到安全空间切换时,非安全空间的运行程序当前地址;基于当前运行程序地址可以获得安全空间的运行程序地址,基于安全空间的运行程序地址即可获得安全空间的运行程序。其中,在非安全空间到安全空间切换时,硬件会自动把PC(指令)保存到ELR_EL1寄存器中,ERET后,硬件会从ELR_EL1中恢复PC值;由于在汇编指令中,由PC指针指示执行哪一条指令,所以基于非安全空间的PC值可以知道,切换到安全空间后,安全空间的运行程序地址,即知道下一步执行哪条汇编指令。
当然该实施例只是本公开的一种示例,基于当前运行程序地址获得待切换的访问空间的运行程序的方式并不局限于此,还可以根据实际情况进行设置。若对于安全访问场景的验证需求,只聚焦于外设的行为是否符合预期;如只关注是否进行了非安全访问和安全访问的切换操作,而不关注具体访问功能;在生成代码时,就不用专门指定哪些代码为安全空间的运行程序,哪些代码为非安全空间的运行程序;以及在进行访问空间切换操作时,待切换的访问空间的运行程序获取方式,只需对当前运行程序地址进行加1操作即可,只要保证访问空间的切换设置前后,运行是不同的代码;即只需保证进行访问空间的切换即可。
在本公开中,进行访问空间的切换设置包括:根据待切换的访问空间的类型,对SCR_EL3寄存器的NS位进行设置;SCR_EL3寄存器的NS位设置为0则表征进行安全空间的访问行为,SCR_EL3寄存器的NS位设置为1则表征进行非安全空间的访问行为。
应理解,EL3的C处理函数根据ESR_EL3寄存器中ISS字段的值确定待切换的访问空间的类型,识别到此时要进入安全空间,则会设置SCR_EL3寄存器中的NS BIT为0,设置完成后退出到中断处理函数。
在进行访问空间的切换设置过程中,除了对SCR_EL3寄存器中的NS BIT进行设置,还需对MMU (memory management unit,配置内存管理单元)页表进行配置。由于现有技术中对安全空间和非安全空间分别设置对应的堆栈,安全空间的运行程序和非安全空间的运行程序为两套代码,故安全空间和非安全空间也分别配置MMU页表,即MMU页表配置为两个。
而本公开为了使安全空间与非安全空间之间的切换方法更加精简,为安全空间和非安全空间配置相同的MMU页表,即只配置一个MMU页表。并将MMU页表中的NS位设置为0,MMU页表中的NS位设置为0表征对安全空间发起的访问有效。
在进行访问空间的切换设置过程中,为了保证访问模型符合预期,需要先对SCR_EL3寄存器中的NS BIT进行设置,再对MMU页表进行配置。将SCR_EL3寄存器中的NS BIT设置为0,则表征进行安全空间的访问行为,在SCR_EL3寄存器中的NS BIT设置为0的情况下,为了保证对安全空间发起的访问是有效的,还需将MMU页表的NS位设置为0;即SCR_EL3寄存器中的NS BIT设置为0,且MMU页表的NS位设置为0,才能顺利的从非安全空间切换到安全空间。若进行安全空间到非安全空间的切换,则只需保证SCR_EL3寄存器中的NS BIT设置为1即可,MMU页表的NS位的值在SCR_EL3寄存器中的NS BIT设置为1的情况下,是无效的。
故为了使切换流程更加简化,在进行固件堆栈设置时,即进行初始设置时,将MMU页表中的NS位设置为0。在每次进行访问空间的切换设置时,只需对SCR_EL3寄存器中的NSBIT进行设置即可,由于MMU页表中的NS位固定设置为0,在每次进行访问空间切换时,就不用对MMU页表进行操作,简化了访问空间切换流程。
在本公开中,安全空间到非安全空间的切换流程与非安全空间到安全空间的切换流程基本相同,区别仅在于访问参数的值不同,以及进行访问空间的切换设置时,对SCR_EL3寄存器中的NS BIT设置的值也不同,其余流程均相同。
在本公开中,在进行访问空间切换之前,还需对安全空间和非安全空间进行固件堆栈设置,将安全空间的堆栈和非安全空间的堆栈设置为同一堆栈。安全空间的运行程序和非安全空间的运行程序均保持在同一堆栈中,进而实现安全空间的运行程序和非安全空间的运行程序使用一套代码。
在进行访问空间切换之前,本公开还需进行初始化设置,对于本公开的EL3来说,仅需实现切换功能、保存和恢复上下文的功能。支持切换功能、保存和恢复上下文的功能的基础需求是:提供SMC指令支持+SMC中断支持(即中断向量表+对应的处理函数)+ 函数/局部变量支持(即EL3的堆栈)+模式切换(即C处理函数中支持ESR_EL3寄存器的NS BIT设置 )。因此,为了支持EL3的切换功能、保存和恢复上下文的功能,本公开分别对各基础需求在初始化时进行了支持。
为了支持SMC指令,将SCR_EL3寄存器中的SMD进行关闭操作,同时设置SCR_EL3寄存器中的NS为1。
为支持SMC中断,将EL3的中断向量表EL3_Vectors配置到EL3的中断处理函数VBAR_EL3中,对于EL3_Vectors中的中断处理函数,基于DEN0024A_v8_architecture_PG文档(为ARM V8的一个官方文档),可以看到分为4个组,每个组有4个入口,分别为处理不同类型的EL的不同输入。对于本公开来说,因为EL1运行在Aarch64执行状态,且SMC指令为同步/Synchronous指令,所以只需要实现第三组(Lower EL using AArch64)中的第一个入口(Synchronous)对应的中断处理函数;模式切换功能在中断处理函数中实现。
为支持函数/局部变量,加载了在链接文件中配置的EL3堆栈,使得函数入参/局部变量等可以有对应的堆栈进行出/入栈,对于此操作,只需要通过LDR指令将EL3堆栈在堆栈设置中配置的地址加载到sp中即可。
EL3的堆栈可以设置为:EL3_STACK +0 ALIGN 16 EMPTY 0x800,其中,EL3_STACK是堆栈的名字,+0代表紧跟着前面的栈,ALIGN 16代表16字节对齐,EMPTY代表默认填0,0x800是堆栈大小。EL3的堆栈增加方式可以为指示EL3_STACK紧跟上一个堆栈(如EL1_STACK),16字节对齐且大小为0x800,内容为全0。
基于相同的发明构思,本公开实施例还提供一种访问空间切换装置,该访问空间切换装置可以包括如图3所示的访问空间确定模块201、访问空间切换设置模块202和访问空间切换模块203。
访问空间确定模块201,用于基于接收的访问参数确定待切换的访问空间,并从当前访问空间跳转至EL3;访问空间包括安全空间和非安全空间,当前访问空间与待切换的访问空间为不同的访问空间。
应理解,访问空间确定模块201用于执行上述步骤101的内容。
访问空间切换设置模块202,用于在EL3中,保存当前访问空间的上下文,并进行访问空间的切换设置,设置完成后恢复当前访问空间的上下文,基于恢复的当前访问空间的上下文,确定待切换的访问空间的运行程序;安全空间的运行程序和非安全空间的运行程序使用一套代码。
在本公开中,访问空间切换设置模块202,还用于基于当前访问空间的相关寄存器值获取当前访问空间的当前运行程序地址;基于当前运行程序地址获得待切换的访问空间的运行程序。
访问空间切换设置模块202,还用于根据待切换的访问空间的类型,对SCR_EL3寄存器的NS位进行设置;SCR_EL3寄存器的NS位设置为0则表征进行安全空间的访问行为,SCR_EL3寄存器的NS位设置为1则表征进行非安全空间的访问行为。
应理解,访问空间切换设置模块202用于执行上述步骤102的内容。
访问空间切换模块203,用于基于待切换的访问空间的运行程序和所述切换设置,进入到待切换的访问空间。
应理解,访问空间切换模块203用于执行上述步骤103的内容。
进一步的,本公开提供的访问空间切换装置200还包括:初始化设置模块204,用于在进行访问空间切换之前,对安全空间和非安全空间进行固件堆栈设置。
初始化设置模块204,还用于将安全空间的堆栈和非安全空间的堆栈设置为同一堆栈。
初始化设置模块204,还用于为安全空间和非安全空间配置相同的MMU页表。
初始化设置模块204,还用于将MMU页表中的NS位设置为0。
基于相同的发明构思,本公开实施例还提供一种处理器,将处理器划分为安全空间、非安全空间和EL3,处理器基于上述任一实施例所述的访问空间切换方法,进行安全空间和非安全空间之间的切换。
该处理器可以为ARMv8 aarch64架构的CPU、GPU和片上系统的MCU等。
基于相同的发明构思,本公开实施例还提供一种电子装置,该电子装置包括上述任一实施例中所述的处理器。在一些使用场景下,该电子装置的产品形式体现为显卡;在另一些使用场景下,该电子装置的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子装置。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
基于相同的发明构思,本公开实施例还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的访问空间切换方法的步骤。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (16)
1.一种访问空间切换方法,包括:
基于接收的访问参数确定待切换的访问空间,并从当前访问空间跳转至EL3;所述访问空间包括安全空间和非安全空间,所述当前访问空间与所述待切换的访问空间为不同的访问空间;
在所述EL3中,保存当前访问空间的上下文,并进行访问空间的切换设置,设置完成后恢复所述当前访问空间的上下文,基于恢复的所述当前访问空间的上下文,确定所述待切换的访问空间的运行程序;所述安全空间的运行程序和非安全空间的运行程序使用一套代码;
基于所述待切换的访问空间的运行程序和所述切换设置,进入到所述待切换的访问空间。
2.根据权利要求1所述的访问空间切换方法,所述方法还包括:
在进行访问空间切换之前,对所述安全空间和非安全空间进行固件堆栈设置。
3.根据权利要求2所述的访问空间切换方法,所述对所述安全空间和非安全空间进行固件堆栈设置,包括:
将所述安全空间的堆栈和非安全空间的堆栈设置为同一堆栈。
4.根据权利要求3所述的访问空间切换方法,所述对所述安全空间和非安全空间进行固件堆栈设置,还包括:
为所述安全空间和非安全空间配置相同的MMU页表。
5.根据权利要求4所述的访问空间切换方法,所述为所述安全空间和非安全空间配置相同的MMU页表,包括:
将所述MMU页表中的NS位设置为0。
6.根据权利要求1所述的访问空间切换方法,所述进行访问空间的切换设置包括:
根据待切换的访问空间的类型,对SCR_EL3寄存器的NS位进行设置;所述SCR_EL3寄存器的NS位设置为0则表征进行安全空间的访问行为,所述SCR_EL3寄存器的NS位设置为1则表征进行非安全空间的访问行为。
7.一种访问空间切换装置,包括:
访问空间确定模块,用于基于接收的访问参数确定待切换的访问空间,并从当前访问空间跳转至EL3;所述访问空间包括安全空间和非安全空间,所述当前访问空间与所述待切换的访问空间为不同的访问空间;
访问空间切换设置模块,用于在所述EL3中,保存当前访问空间的上下文,并进行访问空间的切换设置,设置完成后恢复所述当前访问空间的上下文,基于恢复的所述当前访问空间的上下文,确定所述待切换的访问空间的运行程序;所述安全空间的运行程序和非安全空间的运行程序使用一套代码;
访问空间切换模块,用于基于所述待切换的访问空间的运行程序和所述切换设置,进入到所述待切换的访问空间。
8.根据权利要求7所述的访问空间切换装置,所述装置还包括:
初始化设置模块,用于在进行访问空间切换之前,对所述安全空间和非安全空间进行固件堆栈设置。
9.根据权利要求8所述的访问空间切换装置,所述初始化设置模块,还用于将所述安全空间的堆栈和非安全空间的堆栈设置为同一堆栈。
10.根据权利要求9所述的访问空间切换装置,所述初始化设置模块,还用于为所述安全空间和非安全空间配置相同的MMU页表。
11.根据权利要求10所述的访问空间切换装置,所述初始化设置模块,还用于将所述MMU页表中的NS位设置为0。
12.根据权利要求7所述的访问空间切换装置,所述访问空间切换设置模块,还用于根据待切换的访问空间的类型,对SCR_EL3寄存器的NS位进行设置;所述SCR_EL3寄存器的NS位设置为0则表征进行安全空间的访问行为,所述SCR_EL3寄存器的NS位设置为1则表征进行非安全空间的访问行为。
13.一种处理器,将所述处理器划分为安全空间、非安全空间和EL3,所述处理器基于权利要求1-6任一项所述的访问空间切换方法,进行安全空间和非安全空间之间的切换。
14.一种电子装置,包括权利要求13所述的处理器。
15.一种电子设备,包括权利要求14所述的电子装置。
16.一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410190644.5A CN117744067B (zh) | 2024-02-21 | 访问空间切换方法、装置、处理器、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410190644.5A CN117744067B (zh) | 2024-02-21 | 访问空间切换方法、装置、处理器、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117744067A true CN117744067A (zh) | 2024-03-22 |
CN117744067B CN117744067B (zh) | 2024-06-21 |
Family
ID=
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391673A (zh) * | 2014-09-04 | 2016-03-09 | 华为技术有限公司 | 安全访问方法及装置 |
CN108090376A (zh) * | 2016-11-23 | 2018-05-29 | 厦门雅迅网络股份有限公司 | 基于TrustZone的CAN总线数据防护方法及系统 |
CN108959916A (zh) * | 2017-05-22 | 2018-12-07 | 华为技术有限公司 | 用于访问安全世界的方法、装置和系统 |
US20190087185A1 (en) * | 2017-09-20 | 2019-03-21 | Samsung Electronics Co., Ltd. | Electronic device and control method thereof |
CN112329019A (zh) * | 2020-11-02 | 2021-02-05 | 歌尔科技有限公司 | 基于TrustZone的编程方法、终端设备及存储介质 |
CN112818327A (zh) * | 2021-02-26 | 2021-05-18 | 中国人民解放军国防科技大学 | 基于TrustZone的用户级代码和数据安全可信保护方法及装置 |
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105391673A (zh) * | 2014-09-04 | 2016-03-09 | 华为技术有限公司 | 安全访问方法及装置 |
CN108090376A (zh) * | 2016-11-23 | 2018-05-29 | 厦门雅迅网络股份有限公司 | 基于TrustZone的CAN总线数据防护方法及系统 |
CN108959916A (zh) * | 2017-05-22 | 2018-12-07 | 华为技术有限公司 | 用于访问安全世界的方法、装置和系统 |
US20190087185A1 (en) * | 2017-09-20 | 2019-03-21 | Samsung Electronics Co., Ltd. | Electronic device and control method thereof |
CN112329019A (zh) * | 2020-11-02 | 2021-02-05 | 歌尔科技有限公司 | 基于TrustZone的编程方法、终端设备及存储介质 |
CN112818327A (zh) * | 2021-02-26 | 2021-05-18 | 中国人民解放军国防科技大学 | 基于TrustZone的用户级代码和数据安全可信保护方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6629157B1 (en) | System and method for virtualizing the configuration space of PCI devices in a processing system | |
KR100950102B1 (ko) | 보호 실행 모드로 동작 가능한 프로세서를 포함한 컴퓨터 시스템 및 상기 컴퓨터 시스템의 초기화 방법 | |
US8386788B2 (en) | Method and apparatus for loading a trustable operating system | |
CN108475217B (zh) | 用于审计虚拟机的系统及方法 | |
US8416253B2 (en) | Apparatus, method, and recording medium for detecting update of image information | |
CA2517442A1 (en) | Customized execution environment and operating system capable of supporting same | |
US7725637B2 (en) | Methods and apparatus for generating system management interrupts | |
US8843742B2 (en) | Hypervisor security using SMM | |
CN114035842B (zh) | 固件配置方法、计算系统配置方法、计算装置以及设备 | |
US20060212609A1 (en) | Effecting a processor operating mode change to execute device code | |
WO2004109754A2 (en) | Method and apparatus for multi-mode operation in a semiconductor circuit | |
US20080178261A1 (en) | Information processing apparatus | |
CN113569245A (zh) | 处理装置、嵌入式系统、片上系统以及安全控制方法 | |
CN115599510A (zh) | 一种缺页异常的处理方法及相应装置 | |
CN112749397A (zh) | 一种系统和方法 | |
CN107066331B (zh) | 一种基于TrustZone的资源分配方法及设备 | |
EP0290942B1 (en) | Guest machine execution control system for virtual machine system | |
CN113268447A (zh) | 计算机架构及其内的访问控制、数据交互及安全启动方法 | |
CN117744067B (zh) | 访问空间切换方法、装置、处理器、设备及存储介质 | |
CN109446755B (zh) | 内核钩子函数保护方法、装置、设备以及存储介质 | |
EP3948548A1 (en) | Processor having multiple operating modes | |
CN117744067A (zh) | 访问空间切换方法、装置、处理器、设备及存储介质 | |
CN114697440B (zh) | 网络管理方法及移动终端 | |
CN117667465B (zh) | 代码共享方法、装置、交换机、多主机系统、设备和介质 | |
CN111382442B (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 |