本发明涉及操作系统领域,尤其涉及一种双系统启动方法及计算机可读存储介质。
背景技术:
trustzone技术(可信区域技术)是arm处理器的一种安全扩展功能,该技术可以把系统设备上的硬件和软件划分成两个运行环境:可信环境和非可信环境。运行于可信环境下的软件可以访问处理器的所有资源,而运行于非可信环境下的软件只能访问处理器上的非安全资源。非可信环境下一般运行一个应用丰富的普通操作系统,比如linux操作系统和android操作系统,可信环境下运行一个实时操作系统。
目前基于trustzone双系统引导方法如下:
设备上电后首先运行固化在处理器上的启动程序(rom程序),之后加载并验证第一个启动引导程序,验证通过后,第一个启动引导程序开始执行。第一个启动引导程序加载实时操作系统和第二个启动引导程序到处理器的内存区域,并验证实时操作系统和第二个启动引导程序的身份,验证通过后,跳转到实时操作系统中运行,实时操作系统初始化完成后跳到第二个启动引导程序处运行,第二个启动引导程序再加载普通操作系统到内存区域,并验证普通操作系统的身份,验证通过后跳到普通操作系统的入口地址处开始运行普通操作系统。
这个方法的缺点是需要运行两个启动引导程序(两个引导程序主体功能一样,只是启动的对象不一样),工程上测量到的一个启动引导程序的运行时间大致在600ms~700ms之间,在需要快速启动的场合,比如车载ecu模块要求在2s内启动,这个时间的花费代价是巨大的。
技术实现要素:
本发明所要解决的技术问题是:提供一种双系统启动方法及计算机可读存储介质,简化启动流程,减少启动时间,同时不失安全性。
为了解决上述技术问题,本发明采用的技术方案为:一种基于trustzone技术的双系统启动方法,包括:
运行rom程序;
若所述rom程序验证启动引导程序通过,则运行所述启动引导程序;
所述启动引导程序加载实时操作系统和普通操作系统到内存区域;
运行所述实时操作系统;
通过所述实时操作系统加载并运行所述普通操作系统。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
运行rom程序;
若所述rom程序验证启动引导程序通过,则运行所述启动引导程序;
所述启动引导程序加载实时操作系统和普通操作系统到内存区域;
运行所述实时操作系统;
通过所述实时操作系统加载并运行所述普通操作系统。
本发明的有益效果在于:只使用一个启动引导程序启动加载双系统,取消了第二个启动引导程序,而是由第一个操作系统直接启动第二个操作系统,跳过了第二个启动引导程序的运行时间,大大缩短了启动时间,同时简化了启动流程,又能保证启动过程系统镜像的安全,在需要快速启动的场合中具有很好的工程利用价值。
附图说明
图1为本发明一种基于trustzone技术的双系统启动方法的流程图;
图2为本发明实施例一的方法流程图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:只使用一个启动引导程序启动加载双系统,由第一个操作系统直接启动第二个操作系统。
请参阅图1,一种基于trustzone技术的双系统启动方法,包括:
运行rom程序;
若所述rom程序验证启动引导程序通过,则运行所述启动引导程序;
所述启动引导程序加载实时操作系统和普通操作系统到内存区域;
运行所述实时操作系统;
通过所述实时操作系统加载并运行所述普通操作系统。
从上述描述可知,本发明的有益效果在于:简化启动流程,减少启动时间,同时不失安全性。
进一步地,所述“若所述rom程序验证启动引导程序通过,则运行所述启动引导程序”具体为:
所述rom程序通过固化在设备上的根密钥对启动引导程序进行验证;
若验证通过,则运行启动引导程序。
进一步地,所述“运行所述实时操作系统”具体为:
所述启动引导程序通过固化在设备上的根密钥对实时操作系统进行验证;
若验证通过,则运行所述实时操作系统。
由上述描述可知,通过使用根密钥对启动引导程序和实时操作系统进行验证,保证安全性。
进一步地,所述“通过所述实时操作系统加载并运行所述普通操作系统”具体为:
所述实时操作系统通过固化在设备上的根密钥对所述普通操作系统进行验证;
若验证通过,则运行实时操作系统的监控模式程序;
所述监控模式程序保存当前处理器的安全状态的上下文环境,所述安全状态的上下文环境包括arm通用寄存器的值和状态寄存器的值;
所述监控模式程序设置并加载非安全状态的上下文环境,所述非安全状态的上下文环境包括普通操作系统的入口地址以及普通操作系统启动所需的启动参数;
从所述入口地址开始运行,并根据所述启动参数启动普通操作系统。
由上述描述可知,通过使用根密钥对普通操作系统进行验证,保证安全性;通过先保存处理器的安全状态的上下文环境,避免处理器切换到非安全状态后,安全状态下的当前关键寄存器值就会被非安全状态下的值所取代;将处理器从安全状态切换到非安全状态,以启动普通操作系统。
进一步地,所述“所述监控模式程序设置并加载非安全状态的上下文环境,所述非安全状态的上下文环境包括普通操作系统的入口地址以及普通操作系统启动所需的启动参数”具体为:
所述监控模式程序将切换处理器为非安全状态后运行的第一条指令地址设置为所述普通操作系统的入口地址,并设置普通操作系统启动所需的启动参数,所述启动参数包括设备号和设备树地址;
所述监控模式程序将所述入口地址和启动参数加载到处理器相应的寄存器中,并将协处理器cp15的scr寄存器中的ns位设置为1。
由上述描述可知,准备非安全状态的上下文环境,然后使处理器可从安全状态切换到非安全状态,从而启动普通操作系统。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
运行rom程序;
若所述rom程序验证启动引导程序通过,则运行所述启动引导程序;
所述启动引导程序加载实时操作系统和普通操作系统到内存区域;
运行所述实时操作系统;
通过所述实时操作系统加载并运行所述普通操作系统。
进一步地,所述“若所述rom程序验证启动引导程序通过,则运行所述启动引导程序”具体为:
所述rom程序通过固化在设备上的根密钥对启动引导程序进行验证;
若验证通过,则运行启动引导程序。
进一步地,所述“运行所述实时操作系统”具体为:
所述启动引导程序通过固化在设备上的根密钥对实时操作系统进行验证;
若验证通过,则运行所述实时操作系统。
进一步地,所述“通过所述实时操作系统加载并运行所述普通操作系统”具体为:
所述实时操作系统通过固化在设备上的根密钥对所述普通操作系统进行验证;
若验证通过,则运行实时操作系统的监控模式程序;
所述监控模式程序保存当前处理器的安全状态的上下文环境,所述安全状态的上下文环境包括arm通用寄存器的值和状态寄存器的值;
所述监控模式程序设置并加载非安全状态的上下文环境,所述非安全状态的上下文环境包括普通操作系统的入口地址以及普通操作系统启动所需的启动参数;
从所述入口地址开始运行,并根据所述启动参数启动普通操作系统。
进一步地,所述“所述监控模式程序设置并加载非安全状态的上下文环境,所述非安全状态的上下文环境包括普通操作系统的入口地址以及普通操作系统启动所需的启动参数”具体为:
所述监控模式程序将切换处理器为非安全状态后运行的第一条指令地址设置为所述普通操作系统的入口地址,并设置普通操作系统启动所需的启动参数,所述启动参数包括设备号和设备树地址;
所述监控模式程序将所述入口地址和启动参数加载到处理器相应的寄存器中,并将协处理器cp15的scr寄存器中的ns位设置为1。
实施例一
请参照图2,本发明的实施例一为:一种基于trustzone技术的双系统启动方法,包括如下步骤:
s1:设备上电,此时设备处于安全状态。
s2:设备运行固化在设备上的rom程序。
s3:所述rom程序通过固化在设备上的根密钥对启动引导程序进行验证,判断是否验证通过,若是,则执行步骤s4。
s4:设备运行启动引导程序;启动引导程序先初始化设备的基本运行环境,然后执行步骤s5。
s5:所述启动引导程序加载实时操作系统和普通操作系统到内存区域;即启动引导程序从设备的闪存中加载实时操作系统和普通操作系统到设备的内存区域。
s6:所述启动引导程序通过固化在设备上的根密钥对实时操作系统进行验证,判断是否验证通过,若是,则执行步骤s7。该步骤中的根密钥即为步骤s3中的根密钥。
s7:设备运行所述实时操作系统;实时操作系统先完成自身的初始化工作,然后执行步骤s8。
s8:所述实时操作系统通过固化在设备上的根密钥对所述普通操作系统进行验证,判断是否验证通过,若是,则执行步骤s9。该步骤中的根密钥也为步骤s3中的根密钥。
s9:设备运行实时操作系统的监控模式程序;验证普通操作系统通过后,实时操作系统执行smc指令,该指令使设备进入监控模式,进入监控模式后,设备开始运行实时操作系统的监控模式程序。
s10:所述监控模式程序保存当前处理器的安全状态的上下文环境,所述安全状态的上下文环境包括arm通用寄存器的值和状态寄存器的值;即将相关寄存器值保存在一块连续的内存区域。
s11:所述监控模式程序设置并加载非安全状态的上下文环境,所述非安全状态的上下文环境包括普通操作系统的入口地址以及普通操作系统启动所需的启动参数。
具体地,将切换处理器为非安全状态后运行的第一条指令地址设置为所述普通操作系统的入口地址,并设置普通操作系统启动所需的启动参数,如设备号和设备树地址等;然后将非安全状态的上下文环境加载到处理器相应的寄存器中,即将保存在内存区域上的寄存器值赋值给处理器相应的寄存器,并将协处理器cp15的scr寄存器中的ns位设置为1(支持trustzone的arm处理器的协处理器cp15有个安全配置寄存器scr,该寄存器有个ns位,这个ns位指明当前系统状态,如果ns=0,系统处于安全状态,ns=1,系统处于非安全状态)。此时,设备处于非安全状态。
s12:从所述入口地址开始运行,并根据所述启动参数启动普通操作系统。即设备开始从普通操作系统的入口地址运行,运行普通操作系统,然后普通操作系统根据传入的启动参数,完成启动。
由于处理器需要在安全状态和非安全状态之间切换,且安全状态和非安全状态下都是使用同一组寄存器,为了防止处理器切换到非安全状态后,安全状态下的当前关键寄存器值就会被非安全状态下的值所取代,因此,在步骤s10中,需保存处理器安全状态下一些关键寄存器的值。
本实施例提出双系统的新的引导方法,改进了trustzone经典启动方式,只使用一个启动引导程序启动加载双系统,取消了第二个启动引导程序,而是由第一个操作系统直接启动第二个操作系统,跳过了第二个启动引导程序的运行时间,大大缩短了启动时间,同时简化了启动流程,又能保证启动过程系统镜像的安全,在需要快速启动的场合中具有很好的工程利用价值。
实施例二
本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:
运行rom程序;
若所述rom程序验证启动引导程序通过,则运行所述启动引导程序;
所述启动引导程序加载实时操作系统和普通操作系统到内存区域;
运行所述实时操作系统;
通过所述实时操作系统加载并运行所述普通操作系统。
进一步地,所述“若所述rom程序验证启动引导程序通过,则运行所述启动引导程序”具体为:
所述rom程序通过固化在设备上的根密钥对启动引导程序进行验证;
若验证通过,则运行启动引导程序。
进一步地,所述“运行所述实时操作系统”具体为:
所述启动引导程序通过固化在设备上的根密钥对实时操作系统进行验证;
若验证通过,则运行所述实时操作系统。
进一步地,所述“通过所述实时操作系统加载并运行所述普通操作系统”具体为:
所述实时操作系统通过固化在设备上的根密钥对所述普通操作系统进行验证;
若验证通过,则运行实时操作系统的监控模式程序;
所述监控模式程序保存当前处理器的安全状态的上下文环境,所述安全状态的上下文环境包括arm通用寄存器的值和状态寄存器的值;
所述监控模式程序设置并加载非安全状态的上下文环境,所述非安全状态的上下文环境包括普通操作系统的入口地址以及普通操作系统启动所需的启动参数;
从所述入口地址开始运行,并根据所述启动参数启动普通操作系统。
进一步地,所述“所述监控模式程序设置并加载非安全状态的上下文环境,所述非安全状态的上下文环境包括普通操作系统的入口地址以及普通操作系统启动所需的启动参数”具体为:
所述监控模式程序将切换处理器为非安全状态后运行的第一条指令地址设置为所述普通操作系统的入口地址,并设置普通操作系统启动所需的启动参数,所述启动参数包括设备号和设备树地址;
所述监控模式程序将所述入口地址和启动参数加载到处理器相应的寄存器中,并将协处理器cp15的scr寄存器中的ns位设置为1。
综上所述,本发明提供的一种双系统启动方法及计算机可读存储介质,只使用一个启动引导程序启动加载双系统,取消了第二个启动引导程序,而是由第一个操作系统直接启动第二个操作系统,跳过了第二个启动引导程序的运行时间,大大缩短了启动时间,同时简化了启动流程,又能保证启动过程系统镜像的安全,在需要快速启动的场合中具有很好的工程利用价值。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。