CN111045709B - 固件升级方法和固件升级装置 - Google Patents
固件升级方法和固件升级装置 Download PDFInfo
- Publication number
- CN111045709B CN111045709B CN201911367665.5A CN201911367665A CN111045709B CN 111045709 B CN111045709 B CN 111045709B CN 201911367665 A CN201911367665 A CN 201911367665A CN 111045709 B CN111045709 B CN 111045709B
- Authority
- CN
- China
- Prior art keywords
- storage space
- file
- specific storage
- embedded controller
- upgrade
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种固件升级方法,包括:响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间;将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离。本公开还提供了一种固件升级装置。
Description
技术领域
本公开涉及一种固件升级方法和一种固件升级装置。
背景技术
随着通信和计算机技术的快速发展,电子设备成为人们日常工作和生活中不可或缺的产品。电子设备可以通过固件对电源、基本输入输出系统(Basic Input OutputSystem,简称BIOS)等进行管理,以实现操作系统启动等。
在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题。用户需要对固件进行升级以满足用户需求,然而,固件升级失败可能导致无法启动操作系统。
发明内容
本公开的一个方面提供了一种固件升级方法,包括:响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间;以及将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离。
本公开实施例提供的固件升级方法,在对固件进行升级时,先对固件进行备份,使得升级前的固件被备份在特定存储空间中。这样使得本公开的实施例在固件升级失败时,可以从特定存储空间中对固件进行恢复,进而使得如嵌入式控制器等能正常修复,从而不影响用户正常使用。
可选地,所述方法还包括:在将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间之后,利用所述自身存储空间的升级文件启动所述嵌入式控制器。如果确定启动所述嵌入式控制器失败,则将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。这样可以实现嵌入式控制器的自动修复。
可选地,所述方法还包括:如果确定启动成功,则设置升级成功标识。
可选地,将第二特定存储空间的已有文件拷贝在所述自身存储空间中可以包括:将所述第二特定存储空间的已有文件的标识修改为与所述第一特定存储空间的升级文件的标识相同。对所述第一特定存储空间的升级文件的标识进行修改,以使得修改后的所述第一特定存储空间的升级文件的标识与修改后的所述第二特定存储空间的已有文件的标识不同。将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。相应地,所述将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中可以包括:基于所述第一特定存储空间的升级文件的标识从所述第二特定存储空间中查找所述已有文件。将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
可选地,所述第一特定存储空间和所述第二特定存储空间是所述基础输入输出系统的存储空间的子空间。
可选地,所述响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间可以包括如下操作:首先,比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致。然后,如果确定不一致,则将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。
可选地,所述方法还包括:在比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致之后,如果确定一致,则利用所述自身存储空间的已有文件启动所述嵌入式控制器。
可选地,所述利用所述自身存储空间的升级文件启动所述嵌入式控制器可以包括如下操作:所述嵌入式控制器设置看门狗定时器。利用所述自身存储空间的升级文件启动所述嵌入式控制器。如果确定启动成功,则清除所述看门狗定时器。
本公开的另一个方面提供了一种固件升级装置,包括:备份模块、替换模块。其中,备份模块用于响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。替换模块用于将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离。
可选地,所述装置还包括:启动模块和恢复模块。其中,启动模块用于利用所述自身存储空间的升级文件启动所述嵌入式控制器。恢复模块用于如果确定启动所述嵌入式控制器失败,则将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
可选地,所述装置还包括:标识设置模块,该标识设置模块用于如果确定启动成功,则设置升级成功标识。
可选地,所述替换模块包括:第一标识修改单元、第二标识修改单元和替换单元。其中,第一标识修改单元用于将所述第二特定存储空间的已有文件的标识修改为与所述第一特定存储空间的升级文件的标识相同。第二标识修改单元用于对所述第一特定存储空间的升级文件的标识进行修改,以使得修改后的所述第一特定存储空间的升级文件的标识与修改后的所述第二特定存储空间的已有文件的标识不同。替换单元用于将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。相应地,所述恢复模块包括:文件查找单元和恢复单元。其中,文件查找单元基于所述第一特定存储空间的升级文件的标识从所述第二特定存储空间中查找所述已有文件。恢复单元用于将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
可选地,所述第一特定存储空间和所述第二特定存储空间是所述基础输入输出系统的存储空间的子空间。
可选地,所述备份模块包括:查新单元用于和备份单元。其中,查新单元用于比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致。备份单元用于如果确定不一致,则将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。
可选地,所述装置还包括启动模块,启动模块用于在比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致之后,如果确定一致,则利用所述自身存储空间的已有文件启动所述嵌入式控制器。
可选地,所述启动模块包括:看门狗设置单元、启动单元。其中,看门狗设置单元用于所述嵌入式控制器设置看门狗定时器。启动单元用于利用所述自身存储空间的升级文件启动所述嵌入式控制器。
可选地,所述启动模块还包括:看门狗清除单元,看门狗清除单元用于如果确定启动成功,则清除所述看门狗定时器。
本公开的另一方面提供了一种电子设备,包括:一个或多个处理器、计算机可读存储介质,用于存储一个或多个计算机程序,所述计算机程序在被所述处理器执行时,实现如上所述的方法。
本公开的另一方面提供了一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的固件升级方法和固件升级装置的应用场景;
图2示意性示出了根据本公开实施例的固件升级方法的流程图;
图3示意性示出了根据本公开实施例的适用于固件升级方法的系统架构图;
图4示意性示出了根据本公开实施例的第一特定存储空间和第二特定存储空间的示意图;
图5示意性示出了根据本公开另一实施例的固件升级方法的流程图;
图6示意性示出了根据本公开实施例的固件还原方法的流程图;
图7示意性示出了根据本公开实施例的固件升级装置的框图;以及
图8示意性示出了根据本公开实施例的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
本公开的实施例提供了一种固件升级方法和固件升级装置。该方法包括备份过程和升级过程。在备份过程中,响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。在完成备份过程之后,进入升级过程,将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离。
图1示意性示出了根据本公开实施例的固件升级方法和固件升级装置的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,相关技术的电子设备中,很多类型的电子设备具有操作系统、嵌入式控制器、输入输出控制器、中央处理器等。其中,嵌入式控制器、输入输出控制器等具有固件,以控制相关的装置上电、信息输入输出等。随着产品的更新迭代,固件也需要进行升级,以提升如软硬件之间的耦合度、硬件的处理能力和降低能耗等。如图1所示,相关技术对固件进行升级时,可能出现升级失败的情况,导致电子设备无法正常使用。为了解决该问题,相关技术中可以在如嵌入式控制器中设置启动代码(Boot Code)机制。当嵌入式控制器的固件升级失败时,通过Boot Code机制进入操作系统,然后由用户重新下载升级固件,以重新替换固件。通过以上方式进行固件升级存在如下问题:需要用户手动介入,下载升级固件来重新升级,重新升级后仍然可能出现升级失败的问题。此外,启动代码的存储空间较小,只能存储最基本的开机功能对应的代码,该代码能否正常开机进入系统也无法得到保证。
本公开实施例提供的固件升级方法,在利用固件升级文件对固件进行升级之前,先对嵌入式控制器中存储的已有固件在第一特定存储空间进行备份,使得可以在出现升级失败时利用备份的已有固件对嵌入式控制器的固件进行恢复。
图2示意性示出了根据本公开实施例的固件升级方法的流程图。
如图2所示,该固件升级方法可以包括操作S201至操作S203。
在操作S201,响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。
其中,嵌入式控制器是一个16位单片机,其内部自身也有一定容量的闪存(Flash)来存储代码。但是,嵌入式控制器的闪存的存储空间有限,无法在自身的存储空间中对固件进行备份,否则,需要增加自身的存储空间的大小,导致成本增加过多。
在本实施例中,第一特定存储空间和第二特定存储空间需要在嵌入式控制器(Embed Controller,简称EC)上电后即可进行对其进行读写操作的存储介质的存储空间,否则在固件升级失败,无法启动系统时,无法从存储介质中读取备份的已有文件。
在一个实施例中,受限于嵌入式控制器自身的存储空间有限,所述第一特定存储空间和所述第二特定存储空间是所述基础输入输出系统的存储空间的子空间。
图3示意性示出了根据本公开实施例的适用于固件升级方法的系统架构图。
如图3所示,串行外设接口闪存(Serial Peripheral Interface Flash,简称SPIFlash)通过串行外设接口总线(Serial Peripheral Interface BUS,简称SPI总线)与EC连接。EC还分别与能源管理(Power Management)模块、增强串行外设接口总线(EnhancedSerial Peripheral Interface BUS,简称ESPI总线)。能源管理模块还与南桥(SouthBridge)芯片相连。南桥芯片与ESPI总线和SPI Flash通讯连接。
其中,EC是负责如笔记本电脑的电源管理、散热控制、键盘、快捷键等功能的硬件集成电路。如中央处理器(CPU)的上电需要由EC进行控制,当EC出现故障时可能导致无法开机。本实施例中BIOS通过SPI总线与EC连接,使得EC在开机或重启时可以直接从SPI闪存中读取代码,如可以读取固件。
图4示意性示出了根据本公开实施例的第一特定存储空间和第二特定存储空间的示意图。
如图4所示,串行外设接口闪存中划分出至少三个存储空间:基本输入输出系统存储空间、第一特定存储空间和第二特定存储空间,串行外设接口闪存中该第一特定存储空间和第二特定存储空间与EC自身的存储空间之间相互隔离,可以是不同的存储装置中的存储空间。其中,第二特定存储空间在不进行固件升级时可以不存储文件,仅在需要对固件进行升级时,将EC中已有的固件拷贝至该第二特定存储空间中。第一特定存储空间可以用来存储对固件进行升级的升级文件。其中,第二特定存储空间大小可以大于第一特定存储空间的大小,以保证EC中已有文件可以被完全拷贝。但是第二特定存储空间的大小也无需过大。例如,第一特定存储空间的大小约200Kb,具体地,可以为192Kb。第二特定存储空间大小可以比200Kb大,具体地,可以为为256Kb、384Kb等。这样可以在保证EC中已有文件被完整备份的前提下,不会占用串行外设接口闪存的过多存储空间,为BIOS保留较充足的存储空间。SPI闪存的存储空间可以为如16Mb等,因此,第一特定存储空间和第二特定存储空间不会过多的占用BIOS所需的存储空间。
在另一个实施例中,为了提升用户使用便捷度,可以由系统自动识别是否需要对EC进行固件升级,并在确定需要对EC固件进行升级时,可以由电子设备自动完成升级过程。
具体地,所述响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间可以包括如下操作。
首先,比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致。
然后,如果确定不一致,则将所述升级文件拷贝在第一特定存储空间,并且,将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。拷贝方法可以同现有技术。
通过比对嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致,可以自动判断出是否存在固件的待升级文件,以便于实现自动升级。需要说明的是,该比对过程可以是以预设周期进行自动比对,当确定不一致时,提示用户是否进行固件升级。此外,该比对过程还可以是在电子设备启动时或系统重启时自动进行的,当确定不一致时,则自动进行固件升级。
此外,所述方法在执行比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致之后的操作之后,还可以包括如下操作。
如果确定一致,则利用所述自身存储空间的已有文件启动所述嵌入式控制器。当确定一致时,则表明当前没有针对固件的升级文件,则可以进入系统启动的流程。
在操作S203,将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离。
在本实施例中,通过将所述自身存储空间的已有文件替换为第一特定存储空间的升级文件,以实现固件升级。参考图3和图4所示,第一特定存储空间可以是独立于EC之外的存储介质的存储空间,如SPI闪存中划分出来的存储空间。
在一个具体实施例中,首先,接收固件升级文件。然后,EC比对自身存储空间中的已有文件和固件升级文件。如果已有文件和固件升级文件比对成功,则表明该固件升级文件与已有文件相同,无需对EC的固件进行升级,此时可以采用常规启动方式。
如果已有文件和固件升级文件比对失败,则表明该固件升级文件与已有文件不同,存在固件的待升级文件,此时为了避免EC的已有文件丢失且固件升级失败的可能性,需要首先对EC的已有文件(其为可以正常运行的固件)进行备份,如将EC的已有文件拷贝至SPI闪存的第二特定存储空间中,以便于在需要进行固件恢复时使用。然后,将第一特定存储空间中的待升级文件拷贝至EC的自身存储空间中,此时可以设置更新标签,然后进行EC重启。
本公开实施例的固件升级方法,可以有效改善因固件升级失败造成可用固件丢失,无法启动电子设备,或只能使用具有最基本启动功能的启动代码(Boot Code)启动电子设备的问题。具体地,在对固件进行升级之前,会把EC中已有的固件在SPI存储空间中进行保存,这样使得在升级失败时,可以从SPI存储空间中恢复备份的固件,降低由于固件升级失败,并且已有固件已丢失,导致电子设备无法正常开机的可能性。
图5示意性示出了根据本公开另一实施例的固件升级方法的流程图。
如图5所示,所述方法在执行操作S203将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间之后,还可以包括操作S501~操作S503。
在操作S501,利用所述自身存储空间的升级文件启动所述嵌入式控制器。
在本实施例中,可以通过是否能利用自身存储空间的升级文件启动所述嵌入式控制器,来确定固件升级是否成功。启动的过程可以同现有技术中利用升级文件启动EC的过程。
在操作S503,如果确定启动所述嵌入式控制器失败,则将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
在本实施例中,由于已经在如SPI闪存的第二特定存储空间中备份了EC的可用固件,因此,在确定启动所述嵌入式控制器失败,即固件升级失败时,自动使用备份的可用固件恢复EC的固件,使得电子设备可以按照固件升级前的状态进行启动。这样使得不会因固件升级失败导致电子设备无法正常开机(包括电子设备不能开机和电子设备只能使用上述启动代码进行非正常启动,且上述启动代码无法保证能实现进入系统),提升了系统的稳定性和可靠性。
图6示意性示出了根据本公开实施例的固件还原方法的流程图。
如图6所述,为利用备份的EC的已有文件对升级失败的EC进行还原的方法示意图。
具体地,所述将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中包括可以包括操作S601至操作S605。
在操作S601,将所述第二特定存储空间的已有文件的标识修改为与所述第一特定存储空间的升级文件的标识相同。
在操作S603,对所述第一特定存储空间的升级文件的标识进行修改,以使得修改后的所述第一特定存储空间的升级文件的标识与修改后的所述第二特定存储空间的已有文件的标识不同;
在操作S605,将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
相应地,所述将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中包括操作S607至操作S609。
在操作S607,基于所述第一特定存储空间的升级文件的标识从所述第二特定存储空间中查找所述已有文件;以及
在操作S609,将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
由于SPI闪存中可以存储多个文件,如何便捷地在EC升级失败后,从SPI闪存的多个文件中找到所需的EC在升级前使用的可用固件(即上述已有文件),则成为非常重要的问题。EC在升级失败后,其默认使用的固件标识是升级时使用的固件标识。因此,为了使得EC在升级失败后可以从SPI闪存中找到备份的可用固件,在运行上述启动代码后,可以首先将第二特定存储空间的已有文件的标识修改为与第一特定存储空间的升级文件的标识相同,然后,将第一特定存储空间的升级文件的标识修改为其它标识,接着,再把第二特定存储空间的已有文件拷贝在所述自身存储空间中,这样使得EC的固件升级失败时,可以基于第一存储空间中待升级文件的标识从第二特定存储空间中便捷地找到备份的可用固件,然后将可用固件拷贝至EC自身的存储空间中,进行重启,实现EC固件的恢复,有效降低因EC固件升级失败导致电子设备无法正常启动的可能性。
在另一个实施例中,为了提升固件升级失败时进行固件恢复的便捷度,所述利用所述自身存储空间的已有文件启动所述嵌入式控制器可以包括如下操作。
首先,所述嵌入式控制器设置看门狗定时器。其中,看门狗定时器可以在利用升级文件启动所述嵌入式控制器失败(如超过预设时长后仍然没有成功启动),执行特定的指令以使得电子设备自动进入固件恢复流程,如执行启动代码进入固件恢复流程。
然后,利用所述自身存储空间的升级文件启动所述嵌入式控制器。
此外,所述方法在利用所述自身存储空间的升级文件启动所述嵌入式控制器之后,还可以包括如下操作。如果确定启动成功,则清除所述看门狗定时器。
通过以上操作,可以使得EC的固件升级失败时,系统自动对EC的固件进行恢复,无需用户手动利用上述启动代码以非正常的模式启动电子设备,并重新进行升级,提升了用户操作便捷度和体验。
在一个实施例中,如果确定利用所述自身存储空间的升级文件成功启动所述嵌入式控制器,则表明固件升级成功。此时,可以为设置升级成功标识。具体地,所述方法还包括:如果确定启动成功,则设置升级成功标识。
以下以一个完整的固件升级流程为例进行示例性说明。
首先,在SPI闪存中分配两个用于存放EC固件的区块,第一特定存储空间和第二特定存储空间。其中,第一特定存储空间用于存放待更新的EC固件的升级文件,第二特定存储空间先预留。
然后,在EC更新自身存储空间(如Embedded Firmware ROM)的固件之前,先将已有文件(如Embedded ROM)备份到第二特定存储空间,然后将第一特定存储空间中的文件,刷写到EC Embedded ROM中。
接着,进行重启时,EC的集成电路(IC)判断到有固件(Firmware)升级文件,则设置开门狗计时器(Watch Dog Timer),如果能正常启动就清除开门狗计时器。如果不能正常启动,就启动进EC的启动代码(Boot Code),进入还原模式。
在进入还原模式后,EC Boot Code先修改第二特定存储空间中,使得备份文件(固件)的标识(Signature,占用约16Bytes存储空间)与第一特定存储空间中的待刷文件的标识相同。并将第一特定存储空间中的文件修改为其它值(避免存在相同的标识而无法准确找到备份文件)。
然后,执行EC刷写流程,此时EC IC就能将第二特定存储空间中备份的文件,刷写到EC Embedded ROM中,实现EC Firmware自修复。在修复完成后,可以按照正常启动模式进行重启。
图7示意性示出了根据本公开实施例的固件升级装置的框图。
如图7所示,该固件升级装置700可以包括备份模块710、替换模块730。
其中,备份模块710用于响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。
替换模块730用于将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离。
在一个实施例中,所述装置700还可以包括:启动模块和恢复模块。
其中,启动模块用于利用所述自身存储空间的升级文件启动所述嵌入式控制器。
恢复模块用于如果确定启动所述嵌入式控制器失败,则将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
在一个实施例中,所述装置700还可以包括:标识设置模块,该标识设置模块用于如果确定启动成功,则设置升级成功标识。
具体地,所述替换模块730可以包括:第一标识修改单元、第二标识修改单元和替换单元。
其中,第一标识修改单元用于将所述第二特定存储空间的已有文件的标识修改为与所述第一特定存储空间的升级文件的标识相同。
第二标识修改单元用于对所述第一特定存储空间的升级文件的标识进行修改,以使得修改后的所述第一特定存储空间的升级文件的标识与修改后的所述第二特定存储空间的已有文件的标识不同。
替换单元用于将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
相应地,所述恢复模块可以包括:文件查找单元和恢复单元。
其中,文件查找单元基于所述第一特定存储空间的升级文件的标识从所述第二特定存储空间中查找所述已有文件。
恢复单元用于将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
例如,所述第一特定存储空间和所述第二特定存储空间是所述基础输入输出系统的存储空间的子空间。
在一个实施例中,所述备份模块710可以包括:查新单元用于和备份单元。
其中,查新单元用于比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致。
备份单元用于如果确定不一致,则将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。
此外,所述装置700还可以包括启动模块,启动模块用于在比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致之后,如果确定一致,则利用所述自身存储空间的已有文件启动所述嵌入式控制器。
为了实现固件升级失败后由系统自动进行固件恢复,所述启动模块可以包括:看门狗设置单元、启动单元。
其中,看门狗设置单元用于所述嵌入式控制器设置看门狗定时器。
启动单元用于利用所述自身存储空间的升级文件启动所述嵌入式控制器。
此外,所述启动模块还可以包括:看门狗清除单元,看门狗清除单元用于如果确定启动成功,则清除所述看门狗定时器。
根据本公开的实施例,备份模块和替换模块执行的操作,可以参见上面的描述,这里不再重复。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,备份模块710、替换模块730中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,备份模块710、替换模块730中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,备份模块710、替换模块730中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图8示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的框图。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,所述电子设备800包括:一个或多个处理器810和计算机可读存储介质820。该电子设备可以执行根据本公开实施例的方法。
具体地,处理器810例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器810还可以包括用于缓存用途的板载存储器。处理器810可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质820,例如可以是非易失性的计算机可读存储介质,具体示例包括但不限于:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存等等。
计算机可读存储介质820可以包括程序821,该程序821可以包括代码/计算机可执行指令,其在由处理器810执行时使得处理器810执行根据本公开实施例的方法或其任何变形。
程序821可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,程序821中的代码可以包括一个或多个程序模块,例如包括程序模块821A、程序模块821B、……。应当注意,程序模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器810执行时,使得处理器810可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,处理器810可以与计算机可读存储介质820进行交互,来执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,备份模块710、替换模块730中的至少一个可以实现为参考图8描述的程序模块,其在被处理器810执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (9)
1.一种针对嵌入式控制器的固件升级方法,包括:
响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间;以及
将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离;
利用所述自身存储空间的升级文件启动所述嵌入式控制器;以及
如果确定启动所述嵌入式控制器失败,则将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中;
其中,所述将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中包括:
将所述第二特定存储空间的已有文件的标识修改为与所述第一特定存储空间的升级文件的标识相同,并且对所述第一特定存储空间的升级文件的标识进行修改,以使得修改后的所述第一特定存储空间的升级文件的标识与修改后的所述第二特定存储空间的已有文件的标识不同;以及
将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
2.根据权利要求1所述的方法,还包括:如果确定启动成功,则设置升级成功标识。
3.根据权利要求1所述的方法,其中:
所述将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中包括:
基于所述第一特定存储空间的升级文件的标识从所述第二特定存储空间中查找所述已有文件;以及
将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
4.根据权利要求1所述的方法,其中,所述第一特定存储空间和所述第二特定存储空间是基础输入输出系统的存储空间的子空间。
5.根据权利要求1所述的方法,其中,所述响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间包括:
比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致;以及
如果确定不一致,则将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间。
6.根据权利要求5所述的方法,还包括:在比对所述嵌入式控制器的自身存储空间的已有文件与所述第一特定存储空间的已有文件是否一致之后,
如果确定一致,则利用所述自身存储空间的已有文件启动所述嵌入式控制器。
7.根据权利要求1所述的方法,其中,所述利用所述自身存储空间的已有文件启动所述嵌入式控制器包括:
所述嵌入式控制器设置看门狗定时器;以及
利用所述自身存储空间的升级文件启动所述嵌入式控制器。
8.根据权利要求7所述的方法,还包括:在利用所述自身存储空间的升级文件启动所述嵌入式控制器之后,以及
如果确定启动成功,则清除所述看门狗定时器。
9.一种针对嵌入式控制器的固件升级装置,包括:
备份模块,用于响应于获得嵌入式控制器的升级文件,将所述升级文件拷贝在第一特定存储空间,并且将所述嵌入式控制器的已有文件拷贝在第二特定存储空间;
替换模块,用于将所述第一特定存储空间的升级文件拷贝在所述嵌入式控制器的自身存储空间,以替换所述自身存储空间的已有文件,所述嵌入式控制器的自身存储空间与所述第一特定存储空间和所述第二特定存储空间之间相互隔离;
启动模块,用于利用所述自身存储空间的升级文件启动所述嵌入式控制器;以及
恢复模块,用于如果确定启动所述嵌入式控制器失败,则将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中;其中,所述将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中包括:将所述第二特定存储空间的已有文件的标识修改为与所述第一特定存储空间的升级文件的标识相同,并且对所述第一特定存储空间的升级文件的标识进行修改,以使得修改后的所述第一特定存储空间的升级文件的标识与修改后的所述第二特定存储空间的已有文件的标识不同;以及将所述第二特定存储空间的已有文件拷贝在所述自身存储空间中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911367665.5A CN111045709B (zh) | 2019-12-26 | 2019-12-26 | 固件升级方法和固件升级装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911367665.5A CN111045709B (zh) | 2019-12-26 | 2019-12-26 | 固件升级方法和固件升级装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045709A CN111045709A (zh) | 2020-04-21 |
CN111045709B true CN111045709B (zh) | 2021-12-24 |
Family
ID=70240473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911367665.5A Active CN111045709B (zh) | 2019-12-26 | 2019-12-26 | 固件升级方法和固件升级装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045709B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931246A (zh) * | 2024-03-19 | 2024-04-26 | 天固信息安全系统(深圳)有限公司 | 一种升级ec固件的方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375844A (zh) * | 2013-08-12 | 2015-02-25 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
CN109032846A (zh) * | 2018-08-08 | 2018-12-18 | 京信通信系统(中国)有限公司 | 设备远程备份升级方法、装置、计算机存储介质及设备 |
CN109189451A (zh) * | 2018-10-25 | 2019-01-11 | 京信通信系统(中国)有限公司 | 一种固件升级方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7380113B2 (en) * | 2002-05-17 | 2008-05-27 | Xiotech Corporation | Method for updating memory resident firmware as a background operation |
US20040030877A1 (en) * | 2002-08-06 | 2004-02-12 | Aleksandr Frid | Using system BIOS to update embedded controller firmware |
US7334117B2 (en) * | 2004-08-04 | 2008-02-19 | National Instruments Corporation | Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device |
US20070260790A1 (en) * | 2006-04-03 | 2007-11-08 | Jerry Chen | Embedded controller and method for updating the firmware thereof |
CN103425549A (zh) * | 2012-05-22 | 2013-12-04 | 鸿富锦精密工业(深圳)有限公司 | 嵌入式控制器的固件管理方法及系统 |
US9507942B2 (en) * | 2013-11-13 | 2016-11-29 | Via Technologies, Inc. | Secure BIOS mechanism in a trusted computing system |
CN104572229B (zh) * | 2015-02-12 | 2018-07-20 | 西安诺瓦电子科技有限公司 | 嵌入式系统的固件升级方法以及固件升级装置 |
CN107943501A (zh) * | 2017-11-30 | 2018-04-20 | 深圳市东微智能科技股份有限公司 | 嵌入式设备升级方法、装置、计算机设备和存储介质 |
-
2019
- 2019-12-26 CN CN201911367665.5A patent/CN111045709B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375844A (zh) * | 2013-08-12 | 2015-02-25 | 中兴通讯股份有限公司 | 固件升级方法及装置 |
CN109032846A (zh) * | 2018-08-08 | 2018-12-18 | 京信通信系统(中国)有限公司 | 设备远程备份升级方法、装置、计算机存储介质及设备 |
CN109189451A (zh) * | 2018-10-25 | 2019-01-11 | 京信通信系统(中国)有限公司 | 一种固件升级方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111045709A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601255B2 (en) | Approaches for updating bios | |
US8539471B2 (en) | Updating firmware of an electronic device | |
JP5077726B1 (ja) | コンピュータ、その制御方法及びプログラム | |
US7017004B1 (en) | System and method for updating contents of a flash ROM | |
KR101427755B1 (ko) | Usb를 이용한 펌웨어 업그레이드 장치 및 방법 | |
CN104572229A (zh) | 嵌入式系统的固件升级方法以及固件升级装置 | |
US20080270685A1 (en) | Information processing apparatus and firmware updating method | |
CN113254048B (zh) | 引导程序更新方法、装置、设备及计算机可读介质 | |
CN110874237A (zh) | 软件升级方法、装置、终端以及可读存储介质 | |
CN109582332B (zh) | 互联网摄像机的系统升级方法及装置 | |
CN107566169A (zh) | 一种基于openwrt的固件升级方法及路由器 | |
WO2015184732A1 (zh) | 引导程序的存储方法、故障恢复方法及设备、计算机存储介质 | |
CN111078469A (zh) | 一种数据处理方法和数据处理设备 | |
CN111045709B (zh) | 固件升级方法和固件升级装置 | |
TW202131170A (zh) | 韌體損壞恢復技術 | |
CN110716723A (zh) | 一种固件升级方法及系统 | |
KR20180023575A (ko) | 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 | |
KR100832269B1 (ko) | 무선 통신 단말의 프로그램 갱신 방법 및 시스템 | |
US11409607B1 (en) | Basic input output system updates | |
KR102423056B1 (ko) | 부팅 디스크 변경 방법 및 시스템 | |
CN112667444A (zh) | 一种系统升级方法、存储介质及终端设备 | |
CN106611124A (zh) | 计算机装置及其开机方法 | |
CN112395130A (zh) | 一种系统备份的方法和设备 | |
KR20090023863A (ko) | 펌웨어 업데이트 시스템 및 방법 | |
US9971659B1 (en) | Memory programming providing corruption protection |
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 | ||
GR01 | Patent grant |