基于片上系统的固件恢复方法、装置、系统及存储介质与流程

文档序号:26405779发布日期:2021-08-24 16:20阅读:75来源:国知局
基于片上系统的固件恢复方法、装置、系统及存储介质与流程

本申请涉及计算机技术领域,具体而言,涉及一种基于片上系统的固件恢复方法、装置、系统及存储介质。



背景技术:

固件是设备内部保存的针对设备的“驱动程序”,承担着片上系统最基础最底层的工作。作为片上系统中不可或缺的部分,固件的安全性面临多方面的考验,例如,不法分子可能会通过攻击或恶意篡改片上系统的固件在计算机操作系统启动后获取较高的权限,进而获取计算机中的敏感数据,给用户带成巨大的安全风险。

为了提高固件的安全性,现在通常会为计算机配置可信启动机制,即启动计算机操作系统前先对固件进行检测,当检测到损坏的固件时,禁止计算机操作系统启动。用户如果需要修复损坏的固件,只能进行返厂修复。

但是,返厂修复会效率低下,也具有一定的安全风险。



技术实现要素:

有鉴于此,本申请的目的在于提供一种基于片上系统的固件恢复方法、装置、系统及存储介质,以提高修复固件的效率,降低修复固件的安全风险。

第一方面,本申请提供一种基于片上系统的固件恢复方法,包括:

执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,其中,预设rom程序被配置为可信启动根,第一地址用于存储固件;

若原启动程序启动失败,则通过预设rom程序切换第二地址加载固件的备用启动程序,其中,第二地址用于存储备用启动程序,备用启动程序用于恢复存储于第一地址处的固件。

在可选的实施方式中,执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,包括:

执行预设rom程序,跳转至片内嵌入式闪存的第一地址加载固件的原启动程序,其中,固件包括:预设rom程序、片内嵌入式闪存程序、片外闪存程序。

在可选的实施方式中,通过预设rom程序切换第二地址加载固件的备用启动程序,包括:

通过预设rom程序切换第二地址,对第二地址处的备用启动程序进行校验;

若校验通过,则加载固件的备用启动程序。

在可选的实施方式中,通过预设rom程序切换第二地址加载固件的备用启动程序之后,还包括:

通过备用启动程序检测数据接口是否连接存储设备;

若数据接口连接有存储设备,通过数据接口读取存储设备中是否存储备用固件;

若是,将备用固件存储至第一地址处。

在可选的实施方式中,通过预设rom程序切换第二地址加载固件的备用启动程序之后,还包括:

通过备用启动程序检测是否存在网络接口;

若存在,对网络接口进行初始化;

通过网络接口和预设网络地址下载获取备用固件,并将备用固件存储至第一地址处。

在可选的实施方式中,方法还包括:

通过预设rom程序切换第一地址加载固件的原启动程序,以启动存储于第一地址处的备份固件。

在可选的实施方式中,片内嵌入式闪存包括第一地址对应的存储空间和第二地址对应的存储空间,第一地址对应的存储空间用于存储原启动程序和固件、第二地址对应的存储空间用于存储备用启动程序。

第二方面,本申请提供一种基于片上系统的固件恢复装置,包括:

第一加载模块,用于执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,其中,预设rom程序被配置为可信启动根,第一地址用于存储固件;

第二加载模块,用于若原启动程序启动失败,则通过预设rom程序切换第二地址加载固件的备用启动程序,其中,第二地址用于存储备用启动程序,备用启动程序用于恢复存储于第一地址处的固件。

第三方面,本申请提供一种基于片上系统的固件恢复系统,基于片上系统的固件恢复系统包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当基于片上系统的固件恢复系统运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行如前述实施方式任一方法的步骤。

第四方面,本申请提供一种存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行如前述实施方式任一方法的步骤。

本申请实施例提供的基于片上系统的固件恢复方法、装置、系统和计算机可读存储介质,首先执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,其中,预设rom程序被配置为可信启动根,原启动程序用于启动存储于第一地址处的固件;然后若原启动程序启动失败,则通过预设rom程序切换第二地址加载固件的备用启动程序,其中,备用启动程序用于恢复存储于第一地址处的固件。本申请实施例提供的基于片上系统的固件恢复方法、装置、系统和计算机可读存储介质,通过提供的预设rom来实现从原启动程序到备用启动程序的切换,加载备用启动程序即可实现固件恢复,能够有效提高修复固件的效率,降低修复固件的安全风险。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例所提供的一种基于片上系统的固件恢复方法的流程图;

图2示出了本申请实施例所提供的另一种基于片上系统的固件恢复方法的流程图;

图3示出了本申请实施例所提供的再一种基于片上系统的固件恢复方法的流程图;

图4示出了本申请实施例所提供的一种基于片上系统的固件恢复方法的执行流程图;

图5示出了本申请实施例所提供的一种基于片上系统的固件恢复装置的结构示意图;

图6示出了本申请实施例所提供的一种基于片上系统的固件恢复系统的示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

在对本申请进行详细解释之前,先对本申请中的部分名词及本申请的应用场景予以介绍。

片上系统(systemonchip,soc)又称为系统级芯片,是一个有专有目标的集成电路,其中包含完整系统并有嵌入软件的全部内容,从狭义角度来说,片上系统是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上,从广义角度来说,片上系统是一个微小型系统,一般包含微处理器、ip核(intellectualpropertycore)、存储器或片外存储控制接口。片上系统通常硬件规模较大,软件比重大,能够有效减小集成电路的面积,节省成本。

片上系统的基础设计思想是固件集成,具体为实现全系统的固件集成,使用户能够根据需要选择并改进各部分模块和嵌入结构,从而实现对固件特性的充分优化,而不必花时间熟悉定制电路的开发技术。如此能够使系统能更接近理想系统,更容易实现设计要求。

作为片上系统中不可或缺的部分,固件一般是写入只读存储器的程序,固件的安全性面临多方面的考验,例如,一些场景下可能会通过攻击或恶意篡改片上系统的固件在计算机操作系统启动后获取较高的权限,进而获取计算机中的敏感数据,给用户带成巨大的安全风险。为了提高固件的安全性,现在通常会为计算机配置可信启动机制,即启动计算机操作系统前先对固件进行检测,当检测到损坏的固件时,禁止计算机操作系统启动。用户如果需要修复损坏的固件,只能进行返厂修复。但是,返厂修复会效率低下,也具有一定的安全风险。

为了解决这一问题,本申请实施例提供了一种基于片上系统的固件恢复方法、装置、系统和存储介质,下面通过实施例进行描述。

请参阅图1,本申请实施例提供一种基于片上系统的固件恢复方法,本申请实施例在片上系统执行,包括:

s101:执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,其中,预设rom程序被配置为可信启动根,第一地址用于存储固件。

具体地,只读存储器(read-onlymemory,简称rom)又称固定存储器,是一种以非破坏性读出方式工作,只能读出信息无法写入信息的存储器,信息一旦写入只读存储器就固定下来,即使切断电源,信息也不会丢失。本申请实施例中的只读存储器可以为电可擦除可编程只读存储器、可编程可擦除只读存储器、可编程可擦除只读存储器、掩膜编程的只读存储器等,本申请对此不做限定。本申请实施例中,预设rom程序被配置为可信启动根,即预设rom程序的代码和数据极其精简,且经过充分验证,并且片上系统不检测预设rom程序的行为。如此有利于避免rom程序存在漏洞或错误,提高rom程序的稳定性和安全性。

在可选的实施方式中,预设rom程序可以在只读存储器装入计算机等电子设备之前写入只读存储器。如此,在电子设备工作时,预设rom程序只能被读取,而不能进行更改,也能够避免预设rom程序后期被更改损坏,导致电子设备无法正常启动,有利于降低安全风险。

本申请实施例中,第一地址是用于指示固件的原启动程序和固件所在存储空间的地址,固件的原启动程序用于将片外闪存中的固件加载至片内的第一地址处,并检查加载的固件是否损坏,如果加载的固件没有损坏,则执行加载的固件以启动电子设备。如此,保证了电子设备在安全可信的环境下启动,有利于降低使用电子设备的安全风险。需要说明的是,片外闪存中可以存储u-boot(universalbootloader,通用引导加载程序)、uefi(unifiedextensiblefirmwareinterface,统一可扩展固件接口)、os(operationsystem,操作系统)等通用固件,以便于被固件的原启动程序加载。

s102:若原启动程序启动失败,则通过预设rom程序切换第二地址加载固件的备用启动程序,其中,第二地址用于存储备用启动程序,备用启动程序用于恢复存储于第一地址处的固件。

可选地,如果原启动程序检查加载的固件损坏,则认为原启动程序启动失败。

可选地,可以利用签名-验签机制检查加载的固件是否损坏,即在未损坏的固件写入片外闪存之前,对其进行数字签名,原启动程序检查加载的固件中的数字签名是否正确,若正确,则表示加载的固件未损坏,若不正确,则表示加载的固件已损坏。如此,可以保证加载的固件不是存在漏洞或者被篡改的固件,降低安全风险。

可选地,还可以利用防回滚机制检查加载的固件是否损坏,防回滚机制即禁止加载之前存在漏洞或者被篡改的固件,从而降低安全风险。

本申请实施例中,固件还包括备用启动程序,第二地址用于指示固件的备用启动程序所在的存储空间的地址。固件的备用启动程序用于恢复存储于第一地址处的固件,即将损坏的固件恢复为能够使电子设备正常启动的固件。

本申请实施例提供的基于片上系统的固件恢复方法中,首先执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,其中,预设rom程序被配置为可信启动根,第一地址用于存储固件;然后若原启动程序启动失败,则通过预设rom程序切换第二地址加载固件的备用启动程序,其中,备用启动程序用于恢复存储于第一地址处的固件。与现有技术中的通过返厂修复固件相比,通过提供的预设rom来实现从原启动程序到备用启动程序的切换,加载备用启动程序即可实现固件恢复,能够有效提高修复固件的效率,降低修复固件的安全风险。

下面对本申请实施例提供的基于片上系统的固件恢复方法进行详细说明。

在可选的实施方式中,执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,包括:

执行预设rom程序,跳转至片内嵌入式闪存的第一地址加载固件的原启动程序,其中,固件包括:预设rom程序、片内嵌入式闪存程序、片外闪存程序。

其中,片上系统上电后先执行上述预设rom程序的代码/数据,之后由rom程序跳转至嵌入式闪存的启动程序处执行。

具体地,片上系统包括片内嵌入式闪存,片内嵌入式闪存即embeddedflash,简写为eflash,是一种可以快速读取数据的存储芯片。

在可选的实施方式中,片内嵌入式闪存包括第一地址对应的存储空间,第一地址对应的存储空间用于存储原启动程序。

本申请实施例中的固件包括预设rom程序、片内嵌入式闪存程序以及片外闪存程序。其中预设rom程序存储于只读存储器中,且被配置为可信启动根,一旦写入只读存储器后无法更改。片外闪存程序为执行固件的原启动程序时从片外闪存中加载的固件,能够用于启动电子设备,片外闪存程序容易出现升级错误、被篡改以及升级过程中断电等情况,从而导致电子设备无法正常启动。片内嵌入式闪存程序存储于片内嵌入式闪存中,是片外闪存程序损坏时用于启动电子设备的备份固件,片内嵌入式闪存程序被配置为禁止更新,以防止更新过程中出现错误,导致电子设备无法正常启动。

请参阅图2,在可选的实施方式中,通过预设rom程序切换第二地址加载固件的备用启动程序,包括:

通过预设rom程序切换第二地址,对第二地址处的备用启动程序进行校验;若校验通过,则加载固件的备用启动程序。

可选地,可以利用签名-验签机制对第二地址处的备用启动程序进行校验,即在未损坏的备用启动程序写入第二地址之前,对其进行数字签名,rom程序校验备用启动程序的数字签名是否正确,若正确,则表示备用启动程序未损坏,校验通过;若不正确,则表示备用启动程序已损坏,校验不通过。如此,可以降低备用启动程序存在漏洞或者被篡改的风险,提高安全性。

可选地,还可以利用防回滚机制检查备用启动程序是否损坏,防回滚机制即禁止加载之前存在漏洞或者被篡改的备用启动程序,从而降低安全风险。

在可选的实施方式中,片内嵌入式闪存还包括第二地址对应的存储空间,第二地址对应的存储空间用于存储备用启动程序。

也就是说,本申请实施例中的片内嵌入式闪存可以包括两块存储空间,第一地址对应的存储空间用于存储原启动程序和固件,第二地址对应的存储空间用于存储备用启动程序,即第一地址和第二地址为同一个闪存中的两块存储空间,如此,便于在原启动程序启动失败时,从第一地址切换为第二地址,从而加载固件的备用启动程序对固件进行恢复。当然,这里只是示例性说明,片内嵌入式闪存也可以包括三块、四块等多块存储空间,本申请对此不做限定。

在可选的实施方式中,通过预设rom程序切换第二地址加载固件的备用启动程序之后,还包括:

通过备用启动程序检测数据接口是否连接存储设备;若数据接口连接有存储设备,通过数据接口读取存储设备中是否存储备用固件;若是,将备用固件存储至第一地址处。

可选地,数据接口可以是通用串行总线(universalserialbus,简称usb)接口,也可以是其他连结存储设备的接口,在此不作限制。相应地,存储设备可以为闪存,如此,读取速率较快,传输效率较高,有利于缩短加载备用启动程序的时间,从而提高用户体验。当然,这里只是示例性说明,存储设备还可以为软盘、光盘、硬盘、闪存等,本申请对此不做限定。

可选地,可以先对数据接口及存储设备进行初始化,以便于使数据接口及存储设备正常工作。

本申请实施例中,如果原启动程序启动失败,用户还可以将可信存储设备通过电子设备的数据接口连接电子设备,以通过备用启动程序加载存储设备中存储的备用固件,并将备用固件存储至第一地址处。如此,避免了原启动程序启动失败时,用户修复固件只能通过返厂流程的问题,有利于提高固件恢复效率,降低安全风险。

请参阅图3,在可选的实施方式中,通过预设rom程序切换第二地址加载固件的备用启动程序之后,还包括:

通过备用启动程序检测是否存在网络接口;若存在,对网络接口进行初始化;通过网络接口和预设网络地址下载获取备用固件,并将备用固件存储至第一地址处。

具体地,预设网络地址为用户保存备用启动程序的可信网络地址。

本申请实施例中,如果原启动程序启动失败,用户还可以调用备用启动程序以通过网络接口和预设网络地址下载获取备用固件,并将备用固件存储至第一地址处。如此,避免了原启动程序启动失败,且第二地址对应的存储空间不存在备用固件时,用户修复固件只能通过返厂流程的问题,有利于提高固件恢复效率,降低安全风险。

需要特别说明的是,图2所示的获取备份固件的方法与图3所示的获取备份固件的方法是两种独立且并列的方法,例如,可以先通过图2所示的方法获取备份固件,如果获取成功,则不执行图3所示的获取备份固件的方法,如果获取失败,则执行图3所示的获取备份固件的方法;也可以先通过图3所示的方法获取备份固件,如果获取成功,则不执行图2所示的获取备份固件的方法,如果获取失败,则执行图2所示的获取备份固件的方法;还可以仅通过图2所示的方法获取备份固件;还可以仅通过图3所示的方法获取备份固件。当然,这里只是示例性说明,并不代表本申请局限于此。

在可选的实施方式中,方法还包括:

通过预设rom程序切换第一地址加载固件的原启动程序,以启动存储于第一地址处的备份固件。

如此,可以减小预设rom程序中包含的数据,有利于降低预设rom程序包含漏洞和错误的风险,降低安全风险。

请参阅图4,本申请实施例所提供的片内嵌入式闪存包括第一地址对应的存储空间和第二地址对应的存储空间,第一地址对应的存储空间用于存储原启动程序和固件、第二地址对应的存储空间用于存储备用启动程序。

基于上述实施例,可选地,本申请实施例所提供的基于片上系统的固件恢复方法的执行流程可以为:执行只读存储器预设rom程序,跳转至片内嵌入式闪存的第一地址加载固件的原启动程序,其中,固件包括:预设rom程序、片内嵌入式闪存程序、片外闪存程序,其中,预设rom程序被配置为可信启动根,第一地址用于存储固件;若原启动程序启动失败,通过预设rom程序切换第二地址,对第二地址处的备用启动程序进行校验;若校验通过,则加载固件的备用启动程序,其中,第二地址用于存储备用启动程序,备用启动程序用于恢复存储于第一地址处的固件;备用启动程序恢复存储于第一地址处的固件的具体过程可以为,通过备用启动程序检测数据接口是否连接存储设备;若数据接口连接有存储设备,通过数据接口读取存储设备中是否存储备用固件;若是,将备用固件存储至第一地址处。备用启动程序恢复存储于第一地址处的固件的具体过程还可以为,通过备用启动程序检测是否存在网络接口;若存在,对网络接口进行初始化;通过网络接口和预设网络地址下载获取备用固件,并将备用固件存储至第一地址处。通过预设rom程序切换第一地址加载固件的原启动程序,以启动存储于第一地址处的备份固件。由此实现对固件的恢复,与现有技术中的通过返厂修复固件相比,本申请实施例提供的基于片上系统的固件恢复方法、装置、系统和计算机可读存储介质能够有效提高修复固件的效率,降低修复固件的安全风险。

请参阅图5,本申请提供一种基于片上系统的固件恢复装置20,包括:第一加载模块201和第二加载模块202,其中:

第一加载模块201,用于执行只读存储器预设rom程序,通过第一地址加载固件的原启动程序,其中,预设rom程序被配置为可信启动根,第一地址用于存储固件。

第二加载模块202,用于若原启动程序启动失败,则通过预设rom程序切换第二地址加载固件的备用启动程序,其中,第二地址用于存储备用启动程序,备用启动程序用于恢复存储于第一地址处的固件。

在可选的实施方式中,第一加载模块201具体用于执行预设rom程序,跳转至片内嵌入式闪存的第一地址加载固件的原启动程序,其中,固件包括:预设rom程序、片内嵌入式闪存程序、片外闪存程序。

在可选的实施方式中,第二加载模块202具体用于通过预设rom程序切换第二地址,对第二地址处的备用启动程序进行校验;若校验通过,则加载固件的备用启动程序。

在可选的实施方式中,装置还包括:

第三加载模块,用于通过备用启动程序检测数据接口是否连接存储设备;若数据接口连接有存储设备,通过数据接口读取存储设备中是否存储备用固件;若是,将备用固件存储至第一地址处。

在可选的实施方式中,装置还包括:

第四加载模块,用于通过备用启动程序检测是否存在网络接口;若存在,对网络接口进行初始化;通过网络接口和预设网络地址下载获取备用固件,并将备用固件存储至第一地址处。

在可选的实施方式中,第一加载模块201具体用于通过预设rom程序切换第一地址加载固件的原启动程序,以启动存储于第一地址处的备份固件。

在可选的实施方式中,片内嵌入式闪存包括第一地址对应的存储空间和第二地址对应的存储空间,第一地址对应的存储空间用于存储原启动程序和固件、第二地址对应的存储空间用于存储备用启动程序。

本申请实施例所提供的基于片上系统的固件恢复装置20可以为设备上的特定硬件或者安装于设备上的软件或固件等。本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。

请参阅图6,本申请提供一种基于片上系统的固件恢复系统,基于片上系统的固件恢复系统包括:处理器301、存储介质302和总线303,存储介质302存储有处理器301可执行的机器可读指令,当基于片上系统的固件恢复系统运行时,处理器301与存储介质302之间通过总线303通信,处理器301执行机器可读指令,以执行如前述实施方式的步骤。

本申请提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行如前述实施方式的步骤。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。

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