一种程序跳转方法、装置、电子设备及存储介质与流程

文档序号:17600631发布日期:2019-05-07 20:14阅读:189来源:国知局
一种程序跳转方法、装置、电子设备及存储介质与流程

本发明涉及计算机技术领域,特别是涉及一种程序跳转方法、一种程序跳转装置、一种电子设备以及一种可读存储介质。



背景技术:

uefi(unifiedextensiblefirmwareinterface,统一的可扩展固件接口)是一种详细描述类型接口的标准,用于操作系统自动从预启动的操作环境,加载到一种操作系统上。uefi提供给系统的的接口包括启动服务(bootservices)和运行时服务(runtimeservices)。

uefi上电运行的第一个阶段是sec(security,安全验证)阶段,这个阶段主要完成对cpu基本的一些配置,使其能够开始运行uefi的代码。这个阶段包含了与处理器架构相关的汇编代码和与处理器架构无关的通用性的c语言代码。

经申请人研究发现,在uefi的sec阶段对mips(microprocessorwithoutinterlockedpipedstages,无内部互锁流水级的微处理器)架构的处理器进行初始化时,uefi的源码是无法直接适用的。因为目前uefi官方的代码中,仅对x86或者arm等架构有具体sec阶段的实现的代码,为了严格遵守uefi的架构和标准,需要额外在mips架构上再次开发uefi的代码,成本和效率都不高。



技术实现要素:

本发明实施例所要解决的技术问题是提供一种程序跳转方法、装置、电子设备及可读存储介质,以便避免现有的uefi代码无法直接适用在mips架构上的问题,以及再次开放成本高效率低的问题。

为了解决上述问题,本发明提供了一种程序跳转方法,包括:

获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令;

执行所述跳转指令,进入uefi的sec阶段程序,所述sec阶段程序包括汇编程序和高级语言程序;

执行所述汇编程序,对所述mips处理器初始化时,锁定执行所述高级语言程序所需的目标缓冲空间,将所述高级语言程序从非易失存储器复制到所述目标缓冲空间,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序。

可选地,所述锁定执行所述高级语言程序所需的目标缓冲空间包括:

根据在内存的地址空间内的第一起始地址,以及预设第一占用空间,锁定所述目标缓冲空间。

可选地,所述将所述高级语言程序从非易失存储器复制到所述目标缓冲空间包括:

获取所述高级语言程序在所述非易失存储器中的第二起始地址;

获取所述高级语言程序在所述目标缓冲空间中的第三起始地址;

获取所述高级语言程序和uefi的pei阶段程序的预设第二占用空间;

根据所述第二起始地址、第三起始地址和预设第二占用空间,将所述高级语言程序和pei阶段程序从所述非易失存储器复制到所述目标缓冲空间。

可选地,在所述从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之前,所述方法还包括:

获取用于执行所述高级语言程序的目标堆栈在所述目标缓冲空间中的第四起始地址;

获取所述目标堆栈的预设第三占用空间;

根据所述第四起始地址和第三占用空间,确定所述目标堆栈的栈顶指针。

可选地,所述从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序包括:

获取所述高级语言程序的起始子程序的第五起始地址;

根据所述第五起始地址,跳转到所述目标缓冲空间中运行所述起始子程序;

将所述目标堆栈的第四起始地址和栈顶指针传递给所述起始子程序。

可选地,在所述执行所述汇编程序,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之后,所述方法还包括:

执行所述高级语言程序,查找uefi的pei阶段程序的固件卷;

执行所述高级语言程序,在所述固件卷中查找所述pei阶段程序的入口点,在所述目标缓冲空间中运行所述pei阶段程序。

相应的,本发明还提供了一种程序跳转装置,包括:

跳转指令获取模块,用于获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令;

sec阶段进入模块,用于执行所述跳转指令,进入uefi的sec阶段程序,所述sec阶段程序包括汇编程序和高级语言程序;

跳转模块,用于执行所述汇编程序,对所述mips处理器初始化时,锁定执行所述高级语言程序所需的目标缓冲空间,将所述高级语言程序从非易失存储器复制到所述目标缓冲空间,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序。

可选地,所述跳转模块包括:

锁定子模块,用于根据在内存的地址空间内的第一起始地址,以及预设第一占用空间,锁定所述目标缓冲空间。

可选地,所述跳转模块包括:

第二地址获取子模块,用于获取所述高级语言程序在所述非易失存储器中的第二起始地址;

第三地址获取子模块,用于所述高级语言程序在所述目标缓冲空间中的第三起始地址;

第二空间获取子模块,用于获取所述高级语言程序和uefi的pei阶段程序的预设第二占用空间;

复制子模块,用于根据所述第二起始地址、第三起始地址和预设第二占用空间,将所述高级语言程序和pei阶段程序从所述非易失存储器复制到所述目标缓冲空间。

可选地,所述装置还包括:

第四地址获取模块,用于在所述从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之前,获取用于执行所述高级语言程序的目标堆栈在所述目标缓冲空间中的第四起始地址;

第三空间获取模块,用于获取所述目标堆栈的预设第三占用空间;

指针确定模块,用于根据所述第四起始地址和第三占用空间,确定所述目标堆栈的栈顶指针。

可选地,所述程序跳转模块包括:

第五地址获取子模块,用于获取所述高级语言程序的起始子程序的第五起始地址;

跳转子模块,用于根据所述第五起始地址,跳转到所述目标缓冲空间中运行所述起始子程序;

传递子模块,用于将所述目标堆栈的第四起始地址和栈顶指针传递给所述起始子程序。

可选地,所述装置还包括:

固件卷查找模块,用于在所述执行所述汇编程序,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之后,执行所述高级语言程序,查找uefi的pei阶段程序的固件卷;

pei阶段运行模块,用于执行所述高级语言程序,在所述固件卷中查找所述pei阶段程序的入口点,在所述目标缓冲空间中运行所述pei阶段程序。

相应的,本发明还提供了一种电子设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:

获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令;

执行所述跳转指令,进入uefi的sec阶段程序,所述sec阶段程序包括汇编程序和高级语言程序;

执行所述汇编程序,对所述mips处理器初始化时,锁定执行所述高级语言程序所需的目标缓冲空间,将所述高级语言程序从非易失存储器复制到所述目标缓冲空间,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序。

相应的,本发明还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述程序跳转方法。

依据本发明实施例,通过获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令,执行跳转指令,进入uefi的sec阶段程序,sec阶段程序包括汇编程序和高级语言程序,执行汇编程序,对所述mips处理器初始化时,锁定执行高级语言程序所需的目标缓冲空间,将高级语言程序从非易失存储器复制到所述目标缓冲空间,从汇编程序跳转到目标缓冲空间中运行高级语言程序,能够实现在mips架构下进入uefi的sec阶段,在汇编程序执行阶段,完成对于高级语言程序执行所需的准备工作,实现了从汇编程序到高级语言程序的跳转,避免现有的uefi代码无法直接适用在mips架构上的问题,减少了开发成本,提高了开发效率。

附图说明

图1示出了本发明实施例一的一种程序跳转方法的步骤流程图;

图2示出了本发明实施例二的一种程序跳转方法的步骤流程图;

图3示出了本发明实施例三的一种程序跳转装置实施例的结构框图;

图4示出了根据一示例性实施例示出的一种用于程序跳转的电子设备的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明实施例一的一种程序跳转方法的步骤流程图,具体可以包括如下步骤:

步骤101,获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令。

mips处理器是指基于mips架构的处理器,是一种采取精简指令集的处理器,广泛被使用在许多电子产品、网络设备、个人娱乐设备与商业设备上。

uefi,即统一的可扩展固件接口是一种详细描述类型接口的标准,用于操作系统自动从预启动的操作环境,加载到一种操作系统上。uefi的sec阶段是平台初始化的第一个阶段,计算机系统加电或重启后应进入这个阶段,进入sec阶段,即执行sec阶段的程序,记为sec阶段程序。

首个指令地址是mips处理器上电取指的第一条指令的地址。由于现有uefi代码无法支持mips处理器直接进入uefi的sec阶段,因此在二级制的描述文件.fdf文件中定义首个指令地址所存放的指令,即预置为进入uefi的sec阶段的跳转指令。

例如,mips处理器的首个指令地址是32位的0x1fc00000,使用mips的地址空间转换后的64位地址是0x900000001fc00000,预置的跳转指令是跳转到地址为0x900000001fc10000的位置去执行uefi的sec阶段的程序,即sec阶段程序。在这个跳转的地址之前,预留64k的空间,是为uefi保留一些变量来使用的。在编译好的二进制文件烧写到flash之后,上电执行的第一条指令就是跳转指令,实际由两条指令组成,第一条是将地址0x9fc10000加载到t4寄存器,也就是64位下的地址0x900000001fc10000。通过cache(高速缓冲存储器)来访问。然后第二条指令是直接跳转到t4寄存器对应的地址去取指执行。

步骤102,执行所述跳转指令,进入uefi的sec阶段程序,所述sec阶段程序包括汇编程序和高级语言程序。

在本发明实施例中,sec阶段程序包括汇编程序和高级语言程序,汇编程序就是用汇编代码实现的程序,高级语言程序就是用c语言等高级语言实现的程序。执行跳转指令后,跳转到的地址存放有sec阶段程序,即进入uefi的sec阶段程序。

例如,执行跳转指令后,跳转到的地址0x900000001fc10000处存放的就是secmain.bin(即uefi的sec阶段程序)的第一条指令。secmain.bin由两部分组成,一部分是start.s为代表的汇编代码(即汇编程序),一部分是secmain.c所包含的c语言代码(即高级语言程序),从开始执行secmain.bin的代码后,就开始运行uefi的整个sec阶段的代码。

步骤103,执行所述汇编程序,对所述mips处理器初始化时,锁定执行所述高级语言程序所需的目标缓冲空间,将所述高级语言程序从非易失存储器复制到所述目标缓冲空间,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序。

汇编程序是在非易失存储器(例如,flash)中运行的,不需要函数堆栈,但是高级语言程序运行的环境是在ram(randomaccessmemory,随机存取存储器)中才可以运行的,而ram可以是锁定的缓冲空间或者内存。在bios早期内存还没有进行初始化的时候,是无法使用内存的,因此要想使用ram就要将一部分缓冲空间进行锁定不让缓冲空间的内容进行刷新,也就是car(cacheasram)技术。

在本发明实施例中,执行sec阶段的汇编程序,主要用于完成对mips处理器的初始化,在初始化过程中,为高级语言程序锁定所需的目标缓冲空间。目标缓冲空间是指利用cache(高速缓冲存储器)等缓冲空间。

在本发明实施例中,锁定执行所述高级语言程序所需的目标缓冲空间的一种实现方式可以包括:根据在内存的地址空间内的第一起始地址,以及预设第一占用空间,锁定所述目标缓冲空间,具体可以包括任意适用的实现方式,本发明实施例对此不做限制。缓冲空间锁定后,就可以当做内存来使用,进行锁定就是不让缓冲的内容进行刷新。

例如,sec阶段程序的汇编程序的代码,主要包含start.s和pcitlb.s和loongson3fixup.s等汇编代码。主要包含一些功能配置,如开启系统的store命令自动写合并,禁用用户模式下的64位操作使能,设置默认操作的地址空间为mips主机可见空间,中断屏蔽,禁用对kernel段、supervisor段、user段的访问,设置处理器模式核心态等,完成清中断,设置中断微量入口,启动例外向量入口地址,使能对kernel段、supervisor段、user段的访问,设置快速访问模式,初始化串口通信等配置工作。除此之外,还要锁定cache,一般锁定2m大小的cache即可,cache锁定后,即可以将这一段空间当做内存使用。

在本发明实施例中,执行汇编程序,锁定目标缓冲空间后,为了能够执行高级语言程序,需要将高级语言程序从非易失存储器复制到目标缓冲空间。

在本发明实施例中,将所述高级语言程序从非易失存储器复制到所述目标缓冲空间的一种实现方式可以包括:获取高级语言程序在所述非易失存储器中的第二起始地址,获取高级语言程序在所述目标缓冲空间中的第三起始地址,获取高级语言程序和uefi的pei阶段程序的预设第二占用空间,根据第二起始地址、第三起始地址和预设第二占用空间,将高级语言程序和pei阶段程序从非易失存储器复制到目标缓冲空间,具体可以包括任意适用的实现方式,本发明实施例对此不做限制。

在本发明实施例中,汇编程序执行完后,就可以跳转到目标缓冲空间中,运行高级语言程序。从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序的一种实现方式可以包括:获取高级语言程序的起始子程序的第五起始地址,根据第五起始地址,跳转到目标缓冲空间中运行起始子程序,将目标堆栈的第四起始地址和栈顶指针传递给起始子程序。具体可以包括任意适用的实现方式,本发明实施例对此不做限制。

依据本发明实施例,通过获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令,执行跳转指令,进入uefi的sec阶段程序,sec阶段程序包括汇编程序和高级语言程序,执行汇编程序,对所述mips处理器初始化时,锁定执行高级语言程序所需的目标缓冲空间,将高级语言程序从非易失存储器复制到所述目标缓冲空间,从汇编程序跳转到目标缓冲空间中运行高级语言程序,能够实现在mips架构下进入uefi的sec阶段,在汇编程序执行阶段,完成对于高级语言程序执行所需的准备工作,实现了从汇编程序到高级语言程序的跳转,避免现有的uefi代码无法直接适用在mips架构上的问题,减少了开发成本,提高了开发效率。

参照图2,示出了本发明实施例二的一种程序跳转方法的步骤流程图,具体可以包括如下步骤:

步骤201,获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令。

在本发明实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

步骤202,执行所述跳转指令,进入uefi的sec阶段程序,所述sec阶段程序包括汇编程序和高级语言程序。

在本发明实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

步骤203,执行所述汇编程序,对所述mips处理器初始化时,根据在内存的地址空间内的第一起始地址,以及预设第一占用空间,锁定所述目标缓冲空间。

在本发明实施例中,锁定目标缓冲空间时,由于后续在从目标缓冲空间跳转入内存(pei阶段到dxe阶段时转换)运行前会有解锁缓冲空间的操作,而解锁操作需要将目标缓冲空间中的数据刷新到可用的对应的内存空间上。为此目标缓冲空间的第一起始地址应该在内存的地址空间内。

在锁定时,根据第一起始地址、预设第一占用空间,锁定对应位置的缓冲空间,作为目标缓冲空间。其中,预设第一占用空间可以根据实际需要设置,本发明实施例对此不做限制。例如,在cache中锁定2m的cache作为目标缓冲空间,映射的空间为0x9800000110000000到0x9800000110200000。

步骤204,获取所述高级语言程序在所述非易失存储器中的第二起始地址。

在本发明实施例中,为了复制高级语言程序,需要先获取高级语言程序在非易失存储器中的起始地址,记为第二起始地址。例如,第二起始地址是由宏定义的,其数值为0xffffffff9fc10000。

步骤205,获取所述高级语言程序在所述目标缓冲空间中的第三起始地址。

在本发明实施例中,获取高级语言程序要复制到目标缓冲空间中的起始地址,记为第三起始地址。例如,第三起始地址是由宏定义的,其数值为0x9800000110100000。

步骤206,获取所述高级语言程序和uefi的pei阶段程序的预设第二占用空间。

在本发明实施例中,uefi的sec阶段之后,要进入pei阶段,pei阶段程序也需要在目标缓冲空间中运行,因此获取sec阶段程序的高级语言程序之外,还要获取pei阶段程序。高级语言程序和uefi的pei阶段程序放在一起占用的空间大小,记为预设第二占用空间。例如,预设第二占用空间是宏定义的,其数值为0x90000。

步骤207,根据所述第二起始地址、第三起始地址和预设第二占用空间,将所述高级语言程序和pei阶段程序从所述非易失存储器复制到所述目标缓冲空间。

在本发明实施例中,根据第二起始地址和预设第二占用空间,从非易失存储器获取到高级语言程序和pei阶段程序,即高级语言程序和pei阶段程序的代码,复制到目标缓冲空间中从第三起始地址起的空间中。

步骤208,获取用于执行所述高级语言程序的目标堆栈在所述目标缓冲空间中的第四起始地址。

在本发明实施例中,执行高级语言程序需要堆栈来存放数据,因此要在目标缓冲空间中设置目标堆栈,用于执行高级语言程序。目标堆栈在目标缓冲空间中的起始地址,记为第四起始地址。例如,汇编程序的一条指令是将第四起始地址0x9800000110000000存放到a0寄存器中。

步骤209,获取所述目标堆栈的预设第三占用空间。

在本发明实施例中,目标堆栈所占用的空间,记为预设第三占用空间。例如,汇编程序的一条指令是将预设第三占用空间0x10000存放到a1寄存器中。

步骤210,根据所述第四起始地址和第三占用空间,确定所述目标堆栈的栈顶指针。

在本发明实施例中,根据第四起始地址和第三占用空间,可以确定目标堆栈的栈顶指针。例如,汇编程序中的一条指令是设置栈顶指针sp的值为a0寄存器加a1寄存器的值,然后一条指令是将栈顶指针sp的值存放到a1寄存器中,然后一条指令是将栈顶指针sp的值减去8字节,以使栈顶指针为8字节对齐。

步骤211,获取所述高级语言程序的起始子程序的第五起始地址。

在本发明实施例中,高级语言程序中包含多个子程序,首个要执行的程序,记为起始子程序,起始子程序的起始地址,记为第五起始地址。例如,将第五起始地址存放到ra寄存器中。

步骤212,根据所述第五起始地址,跳转到所述目标缓冲空间中运行所述起始子程序。

在本发明实施例中,根据第五起始地址,跳转到目标缓冲空间中,运行起始子程序,即开始运行高级语言程序。

步骤213,将所述目标堆栈的第四起始地址和栈顶指针传递给所述起始子程序。

在本发明实施例中,起始子程序,即高级语言程序开始执行的第一个函数。这个函数的入参就是目标堆栈的第四起始地址和栈顶指针。例如,汇编程序的一条指令是将前述a0寄存器的值和a1寄存器的值传递给起始子程序。

步骤214,执行所述高级语言程序,查找uefi的pei阶段程序的固件卷。

在本发明实施例中,高级语言程序的部分是比较通用的,在各种架构上实现都基本类似。主要完成在准备pei阶段要使用的固件卷地址,大小,堆栈的位置等,然后解析加载入目标缓冲空间的代码。

步骤215,执行所述高级语言程序,在所述固件卷中查找所述pei阶段程序的入口点,在所述目标缓冲空间中运行所述pei阶段程序。

在本发明实施例中,在sec阶段的高级语言程序的执行过程中,在固件卷中查找pei阶段程序的入口点,然后将准备的数据作为参数,开始执行pei阶段的入口点,从这之后系统进行pei阶段。pei阶段所需的参数,在现有的uefi代码的实现中,是从sec阶段的汇编程序执行过程获取到,但在mips架构下,可以在sec阶段的高级语言程序执行过程中获取到,并传递给pei阶段程序。

依据本发明实施例,通过获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令,执行跳转指令,进入uefi的sec阶段程序,sec阶段程序包括汇编程序和高级语言程序,执行汇编程序,对所述mips处理器初始化时,锁定执行高级语言程序所需的目标缓冲空间,将高级语言程序从非易失存储器复制到所述目标缓冲空间,从汇编程序跳转到目标缓冲空间中运行高级语言程序,能够实现在mips架构下进入uefi的sec阶段,在汇编程序执行阶段,完成对于高级语言程序执行所需的准备工作,实现了从汇编程序到高级语言程序的跳转,避免现有的uefi代码无法直接适用在mips架构上的问题,减少了开发成本,提高了开发效率。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图3,示出了本发明实施例三的一种程序跳转装置实施例的结构框图,具体可以包括如下模块:

跳转指令获取模块301,用于获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令;

sec阶段进入模块302,用于执行所述跳转指令,进入uefi的sec阶段程序,所述sec阶段程序包括汇编程序和高级语言程序;

跳转模块303,用于执行所述汇编程序,对所述mips处理器初始化时,锁定执行所述高级语言程序所需的目标缓冲空间,将所述高级语言程序从非易失存储器复制到所述目标缓冲空间,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序。

在本发明实施例中,可选地,所述跳转模块包括:

锁定子模块,用于根据在内存的地址空间内的第一起始地址,以及预设第一占用空间,锁定所述目标缓冲空间。

在本发明实施例中,可选地,所述跳转模块包括:

第二地址获取子模块,用于获取所述高级语言程序在所述非易失存储器中的第二起始地址;

第三地址获取子模块,用于所述高级语言程序在所述目标缓冲空间中的第三起始地址;

第二空间获取子模块,用于获取所述高级语言程序和uefi的pei阶段程序的预设第二占用空间;

复制子模块,用于根据所述第二起始地址、第三起始地址和预设第二占用空间,将所述高级语言程序和pei阶段程序从所述非易失存储器复制到所述目标缓冲空间。

在本发明实施例中,可选地,所述装置还包括:

第四地址获取模块,用于在所述从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之前,获取用于执行所述高级语言程序的目标堆栈在所述目标缓冲空间中的第四起始地址;

第三空间获取模块,用于获取所述目标堆栈的预设第三占用空间;

指针确定模块,用于根据所述第四起始地址和第三占用空间,确定所述目标堆栈的栈顶指针。

在本发明实施例中,可选地,所述程序跳转模块包括:

第五地址获取子模块,用于获取所述高级语言程序的起始子程序的第五起始地址;

跳转子模块,用于根据所述第五起始地址,跳转到所述目标缓冲空间中运行所述起始子程序;

传递子模块,用于将所述目标堆栈的第四起始地址和栈顶指针传递给所述起始子程序。

在本发明实施例中,可选地,所述装置还包括:

固件卷查找模块,用于在所述执行所述汇编程序,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之后,执行所述高级语言程序,查找uefi的pei阶段程序的固件卷;

pei阶段运行模块,用于执行所述高级语言程序,在所述固件卷中查找所述pei阶段程序的入口点,在所述目标缓冲空间中运行所述pei阶段程序。

依据本发明实施例,通过获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令,执行跳转指令,进入uefi的sec阶段程序,sec阶段程序包括汇编程序和高级语言程序,执行汇编程序,对所述mips处理器初始化时,锁定执行高级语言程序所需的目标缓冲空间,将高级语言程序从非易失存储器复制到所述目标缓冲空间,从汇编程序跳转到目标缓冲空间中运行高级语言程序,能够实现在mips架构下进入uefi的sec阶段,在汇编程序执行阶段,完成对于高级语言程序执行所需的准备工作,实现了从汇编程序到高级语言程序的跳转,避免现有的uefi代码无法直接适用在mips架构上的问题,减少了开发成本,提高了开发效率。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

图4是根据一示例性实施例示出的一种用于程序跳转的电子设备700的结构框图。例如,电子设备700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图4,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(i/o)的接口712,传感器组件714,以及通信组件716。

处理组件702通常控制电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理部件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。

存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

电力组件704为电子设备700的各种组件提供电力。电力组件704可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。

多媒体组件708包括在所述电子设备700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(mic),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。

i/o接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信部件714经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件714还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行一种程序跳转方法,所述方法包括:

获取在mips处理器上电执行的首个指令地址预置的进入uefi的sec阶段的跳转指令;

执行所述跳转指令,进入uefi的sec阶段程序,所述sec阶段程序包括汇编程序和高级语言程序;

执行所述汇编程序,对所述mips处理器初始化时,锁定执行所述高级语言程序所需的目标缓冲空间,将所述高级语言程序从非易失存储器复制到所述目标缓冲空间,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序。

可选地,所述锁定执行所述高级语言程序所需的目标缓冲空间包括:

根据在内存的地址空间内的第一起始地址,以及预设第一占用空间,锁定所述目标缓冲空间。

可选地,所述将所述高级语言程序从非易失存储器复制到所述目标缓冲空间包括:

获取所述高级语言程序在所述非易失存储器中的第二起始地址;

获取所述高级语言程序在所述目标缓冲空间中的第三起始地址;

获取所述高级语言程序和uefi的pei阶段程序的预设第二占用空间;

根据所述第二起始地址、第三起始地址和预设第二占用空间,将所述高级语言程序和pei阶段程序从所述非易失存储器复制到所述目标缓冲空间。

可选地,在所述从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之前,所述方法还包括:

获取用于执行所述高级语言程序的目标堆栈在所述目标缓冲空间中的第四起始地址;

获取所述目标堆栈的预设第三占用空间;

根据所述第四起始地址和第三占用空间,确定所述目标堆栈的栈顶指针。

可选地,所述从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序包括:

获取所述高级语言程序的起始子程序的第五起始地址;

根据所述第五起始地址,跳转到所述目标缓冲空间中运行所述起始子程序;

将所述目标堆栈的第四起始地址和栈顶指针传递给所述起始子程序。

可选地,在所述执行所述汇编程序,从所述汇编程序跳转到所述目标缓冲空间中运行所述高级语言程序之后,所述方法还包括:

执行所述高级语言程序,查找uefi的pei阶段程序的固件卷;

执行所述高级语言程序,在所述固件卷中查找所述pei阶段程序的入口点,在所述目标缓冲空间中运行所述pei阶段程序。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种程序跳转方法、一种程序跳转装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1