一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种硬盘固件的更新方法、装置、电子设备及存储介质与流程

2022-02-22 17:53:49 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种硬盘固件的更新方法、装置、电子设备及存储介质。


背景技术:

2.ssd固件一般保存在eeprom或flash中,可由特定的刷新程序进行升级。在ssd系统启动时,处理器的固化程序加载boot loader,boot loader初始化硬件并随后加载固件。如果当前固件程序有问题,那么系统无法正常启动出现丢盘现象。
3.对于固件的管理,不同的厂商存在不同的管理方式,如只保存最新版本的固件和保存多个版本固件等方式。对于前者,如果升级固件时出现问题那么ssd将无法正常使用。而后者,在升级固件时需要选择一个正确位置去替换掉原来的固件,保证在系统启动时能够找到最新的有效固件。
4.不论哪种方式,升级时首先需要擦除一段空间,然后写入新固件。这个过程可能要耗费比较长的时间,而且一旦被异常中断,那么下次上电就无法正常启动。在启动时,需要从eprom或flash中找到最新的有效固件并加载,对于存在多个版本固件的情况,bootloader需要校验每个固件的有效性并查找出最后一次升级的固件,整个过程比较耗时。


技术实现要素:

5.为了解决上述技术问题或者至少部分地解决上述技术问题,本技术提供了一种硬盘固件的更新方法、装置、电子设备及存储介质。
6.根据本技术实施例的一个方面,提供了一种硬盘固件的更新方法,应用于固态硬盘,所述方法包括:
7.接收主机设备发送的固件更新指令,其中,所述固件更新指令中携带目标固件;
8.从所述固态硬盘中查询所述目标固件对应的目标插槽,其中,所述目标插槽中包括多个存储区域;
9.遍历所述目标插槽中的存储区域对应的头文件,确定满足预设写入条件的目标存储区域,并将所述目标固件写入所述目标存储区域,得到更新后的目标插槽;
10.在所述固态硬盘上电启动后,基于所述更新后的目标插槽对所述目标固件进行运行。
11.进一步的,所述遍历所述目标插槽中的存储区域对应的头文件,确定满足预设写入条件的目标存储区域,并将所述目标固件写入所述目标存储区域,包括:
12.遍历所述目标插槽中的存储区域,确定所述存储区域的第一状态信息;
13.将所述第一状态信息为空闲状态的存储区域确定为满足预设写入条件的目标存储区域;
14.查询各个存储区域对应的头文件,确定所述目标固件对应的历史最大版本号;
15.根据所述历史最大版本号确定存储至所述目标存储区域对应头文件的当前最大版本号;
16.将所述目标固件写入所述目标存储区域,并将所述当前最大版本号存储至所述目标存储区域对应的头文件。
17.进一步的,在所述目标插槽中不存在所述第一状态信息为空闲状态的存储区域的情况下,所述方法还包括:
18.查询各个存储区域对应的头文件,确定所述目标固件对应的历史最大版本号以及历史最小版本号;
19.根据所述历史最大版本号确定存储至所述目标存储区域对应头文件的当前最大版本号;
20.擦除所述历史最小版本号对应存储区域中存储的固件,并将擦固件后的存储区域确定为满足预设写入条件的目标存储区域;
21.将所述目标固件写入所述目标存储区域,并将当前最大版本号存储至所述目标存储区域对应的头文件。
22.进一步的,在将所述目标固件写入所述目标存储区域,并将当前最大版本号存储至所述目标存储区域对应的头文件之后,所述方法还包括:
23.获取所述目标固件对应的校验数据;
24.将所述校验数据写入所述头文件,并作为所述头文件的文件类型码。
25.进一步的,所述在所述固态硬盘上电启动后,基于所述更新后的目标插槽对所述目标固件进行加载运行,包括:
26.接收上电启动指令;
27.根据所述上电启动指令完成所述固态硬盘的启动后,查询更新后的目标插槽中各个存储区域对应的头文件,得到所述目标固件对应的当前最大版本号以及校验数据;
28.在所述校验数据校验通过的情况下,将所述当前最大版本号确定为有效最大版本号;
29.控制所述目标固件按照有效最大版本号运行。
30.进一步的,在所述固态硬盘上电启动后,所述方法还包括:
31.查询各个存储区域对应的头文件,得到未完整写入所述存储区域的历史固件;
32.继续执行所述历史固件的写入操作。
33.进一步的,在基于所述更新后的目标插槽对所述目标固件进行加载运行之后,所述方法还包括:
34.在所述固态硬盘上电结束后,遍历更新后的目标插槽中各个存储区域的第二状态信息;
35.在更新后的目标插槽中不存在所述第二状态信息为空闲状态的存储区域的情况下,查询各个存储区域对应的头文件,确定所述目标固件的当前最小版本号;
36.擦除所述当前最小版本号对应存储区域中存储的固件。
37.根据本技术实施例的再一个方面,还提供了一种硬盘固件的更新装置,包括:
38.接收模块,用于接收主机设备发送的固件更新指令,其中,所述固件更新指令中携带目标固件;
39.查询模块,用于从固态硬盘中查询所述目标固件对应的目标插槽,其中,所述目标插槽中包括多个存储区域;
40.遍历模块,用于遍历所述目标插槽中的存储区域对应的头文件,确定满足预设写入条件的目标存储区域,并将所述目标固件写入所述目标存储区域,得到更新后的目标插槽;
41.执行模块,用于在所述固态硬盘上电启动后,基于所述更新后的目标插槽对所述目标固件进行运行。
42.根据本技术实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
43.根据本技术实施例的另一方面,还提供了一种电子装置,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;其中:存储器,用于存放计算机程序;处理器,用于通过运行存储器上所存放的程序来执行上述方法中的步骤。
44.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法中的步骤。
45.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:本技术实施例通过遍历目标插槽中的存储区域对应的头文件能够快速确定是否满足写入条件的目标存储区域,并将目标固件直接写入目标存储区域,不再需要对每个存储区域进行逐个排查,提高了固件更新效率。
附图说明
46.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
47.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
48.图1为本技术实施例提供的一种硬盘固件的更新方法的流程图;
49.图2为本技术另一实施例提供的一种硬盘固件的更新方法的流程图;
50.图3为本技术另一实施例提供的一种硬盘固件的更新方法的流程图;
51.图4为本技术实施例提供的一种硬盘固件的更新装置的框图;
52.图5为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
53.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
54.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一
个实体或者操作与另一个类似的实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
55.本技术实施例提供了一种硬盘固件的更新方法、装置、电子设备及存储介质。本发明实施例所提供的方法可以应用于任意需要的电子设备,例如,可以为服务器、终端等电子设备,在此不做具体限定,为描述方便,后续简称为电子设备。
56.根据本技术实施例的一方面,提供了一种硬盘固件的更新方法的方法实施例。图1为本技术实施例提供的一种硬盘固件的更新方法的流程图,如图1所示,该方法包括:
57.步骤s11,接收主机设备发送的固件更新指令,其中,固件更新指令中携带目标固件。
58.在本技术实施例中,主机设备会跟据设备的配置确定固态硬盘中需要更新的固件,固件又称firmware,它是存储于设备中的eeprom(电可擦除可编程存储非只读芯片)芯片中,可由用户通过特定的刷新程序进行升级的程序。它的作用相当于主板的bios,里面装的是用汇编语言编写的。在主机设备确定待更新的固件后,会向固态硬盘发送固件更新指令,固件更新指令中携带目标固件以及目标固件在固态硬盘的存储插槽标识(及slot编号)。
59.在本技术实施例中,固态硬盘在得到主机设备下发的目标固件后,对目标固件的有效性进行检测,如果目标固件有效,则对目标固件执行相应的写入操作。
60.步骤s12,从固态硬盘中查询目标固件对应的目标插槽,其中,目标插槽中包括多个存储区域。
61.本技术实施例在固态硬盘中设置有多个插槽(slot),每个插槽用于存储同一类型的固件,每个插槽中又包括多个存储区域(region),存储区域用于存储不同版本号的固件。需要说明的是,除了出厂固件写入第一个存储区域,其他存储区域在默认未升级的情况下,都是被擦除的空状态。当其中写入数据时,会默认在最前面写入一个定长的头文件。头文件中包含版本号和固件的完整性校验数据。固件写入时,首先写入将版本号写入头文件,数据的完整性校验数据写入magic number。在固件全部写入结束后,将magic number替换为真实的完整性校验数据。
62.在本技术实施例中,从固态硬盘中查询目标固件对应的目标插槽的过程如下:根据主机设备下发的存储插槽标识从固态硬盘中获取相应的目标插槽,目标插槽中包括多个存储区域,每个存储区域内存储有与目标固件同一类型的的历史固件,其中每一个历史固件对应一个历史版本号。
63.步骤s13,遍历目标插槽中的存储区域对应的头文件,确定满足预设写入条件的目标存储区域,并将目标固件写入目标存储区域,得到更新后的目标插槽。
64.在本技术实施例中,遍历目标插槽中的存储区域对应的头文件,确定满足预设写入条件的目标存储区域,并将目标固件写入目标存储区域,包括以下步骤a1-a5:
65.步骤a1,遍历目标插槽中的存储区域,确定存储区域的第一状态信息。
66.步骤a2,将第一状态信息为空闲状态的存储区域确定为满足预设写入条件的目标存储区域。
67.步骤a3,查询各个存储区域对应的头文件,确定目标固件对应的历史最大版本号。
68.步骤a4,根据历史最大版本号确定存储至目标存储区域对应头文件的当前最大版本号。
69.步骤a5,将目标固件写入目标存储区域,并将当前最大版本号存储至目标存储区域对应的头文件。
70.在本技术实施例中,在确定目标固件对应的目标插槽后,遍历目标插槽中各个存储区域的第一状态信息,其中,第一状态信息可以是存储状态和空闲状态,当第一状态信息为存储状态时,则表示该存储区域中已写入固件;当第一状态信息为空闲状态时,则表示该存储区域未写入固件。
71.在本技术实施例中,获取目标插槽中第一状态信息为空闲状态的存储区域,并将第一状态信息为空闲状态的存储区域确定为满足预设写入条件的目标存储区域。如果目标插槽中存在多个空闲状态的存储区域,则将目标固件随机写入一个处于空闲状态的存储区域。
72.在本技术实施例中,在将目标固件写入的目标存储区域之前,还需要确定目标固件对应的目标版本号,具体过程为:查询各个存储区域对应的头文件,确定目标固件对应的历史最大版本号n,将n 1确定为当前最大版本号。然后将当前最大版本号写入头文件,以及将目标固件写入目标存储区域,在目标固件写入完成后,得到了更新后的目标插槽。
73.在本技术实施例中,在目标插槽中不存在第一状态信息为空闲状态的存储区域的情况下,方法还包括以下步骤b1-b4:
74.步骤b1,查询各个存储区域对应的头文件,确定目标固件对应的历史最大版本号以及历史最小版本号。
75.步骤b2,根据历史最大版本号确定存储至目标存储区域对应头文件的当前最大版本号。
76.步骤b3,擦除历史最小版本号对应存储区域中存储的固件,并将擦固件后的存储区域确定为满足预设写入条件的目标存储区域。
77.步骤b4,将目标固件写入目标存储区域,并将当前最大版本号存储至目标存储区域对应的头文件。
78.在本技术实施例中,如果目标插槽中不存在第一状态信息为空闲状态的存储区域的情况下,则确定目标插槽中所有的存储区域都已写入固件,此时会查询各个存储区域对应的头文件,确定目标固件对应的历史最大版本号以及历史最小版本号,然后将历史最小版本号对应存储区域中的固件擦除,以使历史最小版本号对应的存储区域处于空闲状态,然后根据历史最大版本号确定当前最大版本号,将当前最大版本号写入历史最小版本号对应存储区域的头文件,并将目标固件写入历史最小版本号对应的存储区域(即目标存储区域)。
79.在本技术实施例中,在将目标固件写入目标存储区域,并将当前最大版本号存储至目标存储区域对应的头文件之后,方法还包括:获取目标固件对应的校验数据,将校验数据写入头文件,并作为头文件的文件类型码。
80.本技术实施例通过将校验数据作为头文件的文件类型码,是用于后续根据文件类型码在目标固件加载运行时进行校验。
81.步骤s14,在固态硬盘上电启动后,基于更新后的目标插槽对目标固件进行运行。
82.在本技术实施例中,步骤s14,在固态硬盘上电启动后,基于更新后的目标插槽对目标固件进行加载运行,包括以下步骤c1-c4:
83.步骤c1,接收上电启动指令。
84.步骤c2,根据上电启动指令完成固态硬盘的启动后,查询更新后的目标插槽中各个存储区域对应的头文件,得到目标固件对应的当前最大版本号以及校验数据。
85.步骤c3,在校验数据校验通过的情况下,将当前最大版本号确定为有效最大版本号。
86.步骤c4,控制目标固件按照有效最大版本号运行。
87.在本技术实施例中,固态硬盘上电启动后,会读取目标插槽,然后查询目标插槽中各个存储区域对应的头文件,读取当前最大版本号m,并根据文件类型码进行数据完整性校验。如果校验通过则继续检查固件有效性,如有效则加载该固件,以实现控制目标固件按照有效最大版本号运行。
88.否则,读取版本号为m-1的头文件,继续上述操作。如果还是不通过,继续查找版本号为m-2的头文件,重复上述操作直到查找到有效的固件。通过各个存储区域对应头文件的版本及数据完整性校验,可以优先查找最新的版本号,并且不用每次都去重新检查各个固件的有效性,节省了加载时间。
89.本技术实施例通过遍历目标插槽中的存储区域对应的头文件能够快速确定是否满足写入条件的目标存储区域,并将目标固件直接写入目标存储区域,不再需要对每个存储区域进行逐个排查,提高了固件更新效率。
90.在本技术实施例中,在固态硬盘上电启动后,如图2所示,方法还包括以下步骤:
91.步骤s21,查询各个存储区域对应的头文件,得到未完整写入存储区域的历史固件。
92.步骤s22,继续执行历史固件的写入操作。
93.在本技术实施例中,由于在固件升级更新的过程中,如发生断电等异常事件导致固件升级更新失败,或固件未完整写入等状况。因为存储区域的头文件存在,可以在固态硬盘重新上电之后,快速扫描识别到未正确写入的历史固件,并确定一个该历史固件正常使用的最新版本号(最大版本号)临时运行,同时继续执行历史固件的写入操作。
94.本技术实施例通过将版本号写入存储区域对应的头文件中,能够在突发异常事件导致固件未完整写入时,快速定位当前能够正常使用的最新版本号,并使用最新版本号的固件临时运行,同时继续执行历史固件的写入操作。
95.在本技术实施例中,在基于更新后的目标插槽对目标固件进行加载运行之后,如图3所示,方法还包括:
96.步骤s31,在固态硬盘上电结束后,遍历更新后的目标插槽中各个存储区域的第二状态信息。
97.步骤s32,在更新后的目标插槽中不存在第二状态信息为空闲状态的存储区域的情况下,查询各个存储区域对应的头文件,确定目标固件的当前最小版本号。
98.步骤s33,擦除当前最小版本号对应存储区域中存储的固件。
99.在本技术实施例中,在固态硬盘上电运行结束后,查询固态硬盘内更新后的目标插槽的存储区域是否都写入了头文件。如果都写入了头文件,则查询各个存储区域对应的头文件,确定目标固件的当前最小版本号,擦除当前最小版本号对应存储区域中存储的固件。
100.本技术实施例通过在固态硬盘每次上电运行完成后,做一个预擦除的判断,预先擦除掉一个未使用的老版本固件,以便于当主机设备再次下发固件更新指令时,由于预擦除已经清空了存储区域的空间,因此可以直接写入固件,节省了写入时间。
101.图4为本技术实施例提供的一种硬盘固件的更新装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,该装置包括:
102.接收模块41,用于接收主机设备发送的固件更新指令,其中,固件更新指令中携带目标固件。
103.查询模块42,用于从固态硬盘中查询目标固件对应的目标插槽,其中,目标插槽中包括多个存储区域。
104.遍历模块43,用于遍历目标插槽中的存储区域对应的头文件,确定满足预设写入条件的目标存储区域,并将目标固件写入目标存储区域,得到更新后的目标插槽。
105.执行模块44,用于在固态硬盘上电启动后,基于更新后的目标插槽对目标固件进行运行。
106.在本技术实施例中,遍历模块43,用于遍历目标插槽中的存储区域,确定存储区域的第一状态信息;将第一状态信息为空闲状态的存储区域确定为满足预设写入条件的目标存储区域;查询各个存储区域对应的头文件,确定目标固件对应的历史最大版本号;根据历史最大版本号确定存储至目标存储区域对应头文件的当前最大版本号;将目标固件写入目标存储区域,并将当前最大版本号存储至目标存储区域对应的头文件。
107.在本技术实施例中,硬盘固件的更新装置还包括:处理模块,用于查询各个存储区域对应的头文件,确定目标固件对应的历史最大版本号以及历史最小版本号;根据历史最大版本号确定存储至目标存储区域对应头文件的当前最大版本号;擦除历史最小版本号对应存储区域中存储的固件,并将擦固件后的存储区域确定为满足预设写入条件的目标存储区域;将目标固件写入目标存储区域,并将当前最大版本号存储至目标存储区域对应的头文件。
108.在本技术实施例中,硬盘固件的更新装置还包括:存储模块,用于获取目标固件对应的校验数据;将校验数据写入头文件,并作为头文件的文件类型码。
109.在本技术实施例中,执行模块44,用于接收上电启动指令;根据上电启动指令完成固态硬盘的启动后,查询更新后的目标插槽中各个存储区域对应的头文件,得到目标固件对应的当前最大版本号以及校验数据;在校验数据校验通过的情况下,将当前最大版本号确定为有效最大版本号;控制目标固件按照有效最大版本号运行。
110.在本技术实施例中,硬盘固件的更新装置还包括:检测模块,用于查询各个存储区域对应的头文件,得到未完整写入存储区域的历史固件;继续执行历史固件的写入操作。
111.在本技术实施例中,硬盘固件的更新装置还包括:排查模块,用于在固态硬盘上电结束后,遍历更新后的目标插槽中各个存储区域的第二状态信息;在更新后的目标插槽中
不存在第二状态信息为空闲状态的存储区域的情况下,查询各个存储区域对应的头文件,确定目标固件的当前最小版本号;擦除当前最小版本号对应存储区域中存储的固件。
112.本技术实施例还提供一种电子设备,如图5所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
113.存储器1503,用于存放计算机程序;
114.处理器1501,用于执行存储器1503上所存放的计算机程序时,实现上述实施例的步骤。
115.上述终端提到的通信总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
116.通信接口用于上述终端与其他设备之间的通信。
117.存储器可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
118.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
119.在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的硬盘固件的更新方法。
120.在本技术提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的硬盘固件的更新方法。
121.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk)等。
122.以上所述仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。凡在
本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
123.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献