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

固件更新方法、固件更新装置和车辆与流程

2023-02-06 15:20:14 来源:中国专利 TAG:


1.本公开涉及车辆技术领域,具体而言,涉及一种固件更新方法、固件更新装置和车辆。


背景技术:

2.在车辆中,可以基于统一诊断服务的引导加载程序(unified diagnostic services boot loader,uds boot loader)来实现固件的更新。具体而言,位于服务端的诊断仪等设备可以以车载总线为传输介质,将相关数据传输给车辆中的控制模块(例如,微控制器mcu等电控单元),从而实现固件的更新等。然而,如果在更新固件的过程中发生了通讯故障(例如由于断电、网络连接中断等引起)或传输错误(例如由于电磁干扰、人为破坏等引起)等情况,将导致固件更新失败,且控制模块中原有的固件也被破坏,这会导致控制模块功能的丢失,影响车辆的正常运行。因此,存在对固件更新方式进行改进的需要。


技术实现要素:

3.本公开的目的之一在于提出一种固件更新方法、固件更新装置和车辆,以避免失败的更新导致车辆无法正常运行的问题。
4.根据本公开的第一方面,提供了一种用于车辆的固件更新方法,包括:
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.其中,所述处理单元被配置为执行所述引导加载程序以实现以下操作:
49.接收固件更新文件;
50.根据固件更新文件分别对所述第一存储单元和所述第二存储单元中的固件文件进行更新;
51.对更新的固件文件进行校验;以及
52.在所述第一存储单元中的更新的固件文件未通过校验的情况下,基于所述第二存储单元中的所述至少一个有效的固件文件对所述第一存储单元进行回滚。
53.在一些实施例中,所述第二存储单元包括至少两个存储分区。
54.在一些实施例中,所述至少两个存储分区中的每个存储分区包括文件头信息块和数据信息块,其中,文件头信息块被配置为存储文件头信息,数据信息块被配置为存储固件文件,且文件头信息被配置为至少指示相应的固件文件的有效性和更新时间。
55.在一些实施例中,所述至少两个存储分区中的每个存储分区具有相同的存储容量。
56.根据本公开的第三方面,提供了一种车辆,所述车辆包括如上所述的固件更新装置。
57.根据本公开的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可执行指令,当所述计算机可执行指令被处理器执行时,实现如上所述的固件更新方法的步骤。
58.根据本公开的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括
计算机可执行指令,当所述计算机可执行指令被处理器执行时,实现如上所述的固件更新方法的步骤。
59.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
60.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
61.参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
62.图1示出了根据本公开的一示例性实施例的包括固件更新装置的车辆和诊断仪的示意图;
63.图2示出了图1的固件更新装置的控制模块中第一存储单元的示意图;
64.图3示出了图1的固件更新装置中第二存储单元的示意图;
65.图4示出了根据本公开的一示例性实施例的固件更新方法的流程示意图;
66.图5示出了一具体示例中根据固件更新文件对车辆的第二存储单元中的固件文件进行更新的流程示意图;
67.图6示出了另一具体示例中根据固件更新文件对车辆的第二存储单元中的固件文件进行更新的流程示意图;
68.图7示出了一具体示例中基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚的流程示意图。
69.注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
70.为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
71.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
72.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的各种技术、方法和设备是以示例性的方式示出,来说明本公开中的不同实施例,而并非意图限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本发明的示例性方式,而不是穷尽的方式。
73.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
74.在车辆中,可以基于uds boot loader来实现对固件的更新。然而,由于车辆的控
制模块中的存储空间有限,一般只能存储一个固件文件,因此在固件更新过程中,需要将控制模块中已有的固件文件擦除,然后写入新的固件文件。在这种情况下,如果在固件更新过程中发生了通讯故障或传输错误等,将导致控制模块中没有完整且有效的固件文件,进而导致控制模块不能正常地控制车辆的运行。
75.在一些情况下,可以通过增大控制模块中的存储空间使其可以容纳至少两个固件文件。但是,一方面,增大存储空间将导致控制模块的成本上升;另一方面,由于控制模块与车辆中的其他部件存在密切的信息交互,因此如果要更换现有车辆中的控制模块,必然要考虑新的控制模块与现有车辆中其他部件之间的兼容性问题,这通常需要对相应的控制程序或部件进行大幅修改,导致更换难度较大,此外还可能导致车辆的可靠性和稳定性变差。
76.为了解决上述问题,本公开提出了一种用于车辆的固件更新方法、固件更新装置以及相应的车辆,通过在车辆的控制模块外部额外设置存储单元,并在其中存储至少一个有效的固件文件,使得在固件更新发生错误时可以进行回滚,以保障车辆的正常运行,同时保持较低的固件更新成本。
77.在本公开的一示例性实施例中,如图1所示,车辆的固件更新装置100可以包括控制模块110和第二存储单元120,其中,控制模块110可以包括处理单元111和第一存储单元112,且第二存储单元120设于控制模块110的外部。
78.在一些实施例中,如图2所示,控制模块110内部的第一存储单元112可以被配置为存储引导加载程序(boot loader)和固件文件。其中,boot loader是整个运行程序的引导程序,是在产品上电或者复位后第一个运行的程序。它会首先判断内置的第一存储单元112中的有效标志,如果第一存储单元112中的标志有效则可以跳转到第一存储单元112中的固件文件区域继续运行,这时整个车辆具有正常功能。如果第一存储单元112中的标志无效,则boot loader可以启动回滚,如后文将详细描述的。完成回滚后,可以通过复位指令来重启boot loader,由于固件回滚流程恢复了第一存储单元112中的固件文件区域,因此程序可以完成跳转,从而恢复车辆的正常功能。
79.在一具体示例中,第一存储单元112可以是闪存(flash)。然而可以理解的是,在其他具体示例中,也可以采用其他类型的存储器作为第一存储单元,在此不作限制。
80.另外,控制模块110中的处理单元111可以调用第一存储单元112中的引导加载程序,以执行固件更新方法,如后文中将详细描述的。而且,处理单元111还可以基于第一存储单元112中存储的固件文件,对车辆的运行进行控制。
81.在本公开的实施例中,设于控制模块110外部的第二存储单元120中始终保存有至少一个有效的固件文件。这样,如果固件更新失败,可以将第二存储单元120中保存的有效的固件文件写入控制模块110内部的第一存储单元112中,以实现回滚,从而使处理单元111始终可以根据第一存储单元112中完整且有效的固件文件来控制车辆的正常运行。需要注意的是,可以在出厂前通过例如flash工具等下载一个原始的固件文件备份在第二存储单元中,以确保在产品的整个生命周期中第二存储单元中都至少有一个有效的固件文件。
82.在一具体示例中,第二存储单元120也可以是闪存。然而可以理解的是,在其他具体示例中,也可以采用其他类型的存储器作为第二存储单元,在此不作限制。
83.在一些实施例中,如图1所示,设于车辆外部的诊断仪200与车辆(或控制模块110的处理单元111)之间可以通过控制器局域网(controller area network,can)来进行信息
的交互,以及车辆的第二存储单元120与控制模块110(或控制模块110的处理单元111)之间可以通过串行外设接口(serial peripheral interface,spi)来进行信息的交互。具体而言,处理单元111可以调用第一存储单元112中的引导加载程序,以将经由can从服务端的例如诊断仪200等设备中获得的例如固件更新文件等数据传输到第二存储单元120中。
84.在一些实施例中,第二存储单元120可以包括至少两个存储分区。这样,其中一个存储分区可以用来接收在固件更新过程中接收到的固件更新文件,而其他的存储分区中可以保存有至少一个有效的固件文件,以便在固件更新失败时基于该有效的固件文件对控制模块110进行回滚。
85.在一些实施例中,每个存储分区可以包括文件头信息块和数据信息块,其中,文件头信息块被配置为存储文件头信息,而数据信息块被配置为存储固件文件(即固件在外置的第二存储单元120中的镜像),其中文件头信息可以被配置为至少指示相应的固件文件的有效性和更新时间。这样,在对固件更新文件进行存储时或者在发生故障进行回滚时,可以方便地根据文件头信息来选择相应的存储分区或其中的固件文件,如后文中将详细描述的。此外,文件头信息还可以被配置为指示相应的固件文件的长度等,在此不作限制。
86.另外,通常情况下,每个存储分区中最多仅存储一个固件文件和相应的文件头信息。考虑到此,为了尽可能高效和简便地利用第二存储单元120中的存储空间,每个存储分区可以具有相同的存储容量。
87.在一具体示例中,如图3所示,第二存储单元120可以包括两个存储分区,即第一存储分区121和第二存储分区122,且第一存储分区121和第二存储分区122可以具有相同的存储容量。这样,在写入固件文件时,可以不用额外考虑固件文件的大小与不同的存储分区大小之间的匹配关系,从而简化存储分区的选择。但是,可以理解的是,根据实际需求,第二存储单元120也可以包括三个或更多个存储分区以存储更多的固件文件,且每个存储分区的大小可以相同或不同,在此不作限制。
88.基于上述固件更新装置,可以实现相应的固件更新方法。在一示例性实施例中,如图4所示,固件更新方法可以包括:
89.步骤s910,由车辆的处理单元接收固件更新文件。
90.其中,通常情况下,对固件进行更新是指对车辆中的固件进行升级,然而可以理解的是,在一些情况下,对固件进行更新也可以指将车辆中的较新版本的固件恢复为较老版本的固件,在此不作限制。如图1所示,车辆的处理单元111可以通过can从与车辆分开设置的诊断仪200(通常设置在服务端)等设备处获取固件更新文件。其中,固件更新文件可以是更新的固件文件本身,此时可以直接用固件更新文件来替换原有的固件文件,或者固件更新文件中可以仅记录对固件文件的修改,从而可以根据固件更新文件来更新当前的固件文件。
91.返回图4,固件更新方法还可以包括:
92.步骤s920,根据固件更新文件分别对车辆的第一存储单元和第二存储单元中的固件文件进行更新。
93.具体而言,在对第一存储单元和第二存储单元中的固件文件进行刷写之前,处理单元111可以预先校验其从诊断仪200等设备处获得的固件更新文件是否是完整和正确的,并在校验通过的情况下继续刷写第一存储单元和第二存储单元。在根据固件更新文件对第
一存储单元112中的固件文件进行更新时,处理单元111可以调用第一存储单元112中的引导加载程序控制以下操作:擦除第一存储单元112中用于存储固件文件的区域,然后第一存储单元112接收更新的固件文件,再将接收到的固件文件写入第一存储单元112中的用于存储固件文件的区域。
94.在对第二存储单元120中的固件文件进行更新时,由于需要始终保持第二存储单元120中至少有一个有效的固件文件,因此在写入之前,需要预先选择第二存储单元120中的待写入的存储分区。在一具体示例中,如图5所示,根据固件更新文件对车辆的第二存储单元中的固件文件进行更新可以包括:
95.步骤s9211,分别读取每个存储分区中的文件头信息,并根据文件头信息确定相应的存储分区中的固件文件的有效性;
96.步骤s9212,根据每个存储分区中的固件文件的有效性从至少两个存储分区中选择一个第一目标存储分区,使得在除了第一目标存储分区之外的其他存储分区中保存有至少一个有效的固件文件;以及
97.步骤s9213,根据固件更新文件对第一目标存储分区中的固件文件进行更新。
98.也就是说,在这个具体示例中,可以根据第二存储单元中每个存储分区中的文件头信息,选择用于写入更新的固件文件的第一目标存储分区。其中,至少一个有效的固件文件被保存在第二存储单元中的除了第一目标存储分区之外的其他存储分区中,其他这些存储分区中的内容不会在固件更新过程中被擦除或刷写,从而保证了第二存储单元中始终保存有至少一个有效的固件文件,以便在需要进行回滚时使用。
99.在另一具体示例中,如图6所示,根据固件更新文件对车辆的第二存储单元中的固件文件进行更新可以包括:
100.步骤s9221,分别读取每个存储分区中的文件头信息,并根据文件头信息确定相应的存储分区中的固件文件的有效性和更新时间;
101.步骤s9222,在存在其中固件文件无效的存储分区的情况下,将其中固件文件无效的任一存储分区确定为第一目标存储分区;
102.步骤s9223,在不存在其中固件文件无效的存储分区的情况下,将其中固件文件的更新时间最早的一个存储分区确定为第一目标存储分区;以及
103.步骤s9224,根据固件更新文件对第一目标存储分区中的固件文件进行更新。
104.在这个具体示例中,还根据文件头信息中记录的固件文件的更新时间,选择用于写入更新的固件文件的第一目标存储分区。具体而言,只要第二存储单元中存在一个或多个这样的存储分区,其中的固件文件是无效的,那么就可以将其中任意一个包含无效的固件文件的存储分区确定为第一目标存储分区,在本次更新过程中刷写该存储分区中的固件文件,而不会对第二存储单元中所存储的有效的固件文件造成影响。另外,如果第二存储单元的每个存储分区中的固件文件都是有效的,那么可以将其中包含了最早的固件文件的存储分区确定为第一目标存储分区,在本次更新过程中用更新的固件文件去覆盖最早的固件文件,以保留其他存储分区中的较新的固件文件用作进行回滚的固件文件备份。
105.然而,可以理解的是,在其他一些具体示例中,也可以根据需要设置用来确定第一目标存储分区的其他条件,在此不作限制。例如,在第二存储单元中可以存储三个或更多个固件文件的情况下,如果每个存储分区中的固件文件都是有效的,也可以保留其中更新时
间最早和更新时间最晚的固件文件的存储分区,而选择其他存储分区作为第一目标存储分区进行刷写。
106.类似地,在根据固件更新文件对第一目标存储分区中的固件文件进行更新时,可以在引导加载程序的控制下进行。具体而言,可以擦除第二存储单元中的第一目标存储分区,然后第二存储单元可以在引导加载程序的控制下接收更新的固件文件,再将接收到的固件文件写入第一目标存储分区中。
107.返回图4,固件更新方法还可以包括:
108.步骤s930,对更新的固件文件进行校验。
109.在一些实施例中,对固件文件的写入和校验可以是交替进行的。例如,每写入固件文件的一部分,可以回读这部分写入的内容,将回读的内容与例如随机存取存储器(ram)中的相应部分内容进行比较,只有在一致的情况下才继续写入固件文件的下一部分,依此类推。如果对某一部分的校验未能通过,可以直接确定为校验未通过;或者,可以尝试对这部分进行重新写入,如果在预设尝试次数或时间内成功地写入,则可以继续进行固件文件的写入,否则可以确定为校验未通过。这里,校验可以在引导加载程序的控制下进行,且可以同时实现对第一存储单元和第二存储单元中的写入的固件文件的校验。在一些具体示例中,也可以采用循环冗余校验(crc)、防篡改校验等对更新的固件文件进行校验。其中,循环冗余校验是一种根据网上数据包或计算机文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。其中,生成的数字在传输或者存储之前计算出来并且附加到数据后面,然后接收方可以进行检验以确定数据是否发生变化。
110.在另一些实施例中,也可以在完成整个固件文件的写入后,对第一存储单元和第二存储单元中的固件文件进行校验,在此不作限制。
111.返回图4,本公开的固件更新方法还可以包括:
112.步骤s940,在第一存储单元中的更新的固件文件未通过校验的情况下,基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚。
113.具体而言,如果第一存储单元中的更新的固件文件未通过校验,那么由于更新过程中对第一存储单元进行了刷写,此时第一存储单元中将没有完整且有效的固件文件。为了使车辆仍然能够正常运行,可以基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚。换句话说,可以将第二存储单元中的所选定的一个有效的固件文件写入第一存储单元中,使得车辆可以在该固件文件的支持下正常地运行。
114.在一些实施例中,可以在一旦第一存储单元中的固件文件未通过校验时,就基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚。
115.在另一些实施例中,也可以尝试重新在第一存储单元中写入固件文件,如果达到预设重新更新次数(例如,三次)后依然未能通过校验,再进行回滚。具体而言,在第一存储单元中的更新的固件文件未通过校验的情况下,基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚可以包括:在第一存储单元中的更新的固件文件未通过校验的情况下,根据固件更新文件重新对第一存储单元中的固件文件进行更新;对重新更新的固件文件进行校验;若在预设重新更新次数内第一存储单元中的重新更新的固件文件通过校验,则将第一存储单元中的固件文件的状态标记为有效;若在预设重新更新次数内第
一存储单元中的重新更新的固件文件未通过校验,则基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚。
116.在一具体示例中,如图7所示,在更新的固件文件未通过校验的情况下,基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚可以包括:
117.步骤s941,分别读取每个存储分区中的文件头信息,并根据文件头信息确定相应的存储分区中的固件文件的有效性和更新时间;
118.步骤s942,根据每个存储分区中的固件文件的有效性和更新时间从至少两个存储分区中确定一个第二目标存储分区,使得第二目标存储分区中的固件文件是有效固件文件中的具有最晚更新时间的有效固件文件;以及
119.步骤s943,将第二目标存储分区中的固件文件写入第一存储单元中,以对第一存储单元进行回滚。
120.在这个具体示例中,进行回滚时,可以将第二存储单元的有效固件文件中的具有最晚更新时间的固件文件写入第一存储单元中,从而使得第一存储单元中的有效固件是尽可能新的,进而尽可能保持车辆的运行性能。
121.在一具体示例中,选择更新时间最晚的有效固件文件具体可以如下进行:分别读取每个存储分区中的文件头信息,并根据文件头信息确定相应的存储分区中的固件文件的有效性;在仅存在一个其中固件文件有效的存储分区的情况下,将一个其中固件文件有效的存储分区确定为第二目标存储分区;在存在多个其中固件文件有效的存储分区的情况下,分别确定其中固件文件有效的每个存储分区中的固件文件的更新时间;将其中固件文件更新时间最晚且有效的存储分区确定为第二目标存储分区。
122.然而,可以理解的是,在其他一些实施例中,也可以根据需要采用其他方式来确定用来回滚的有效固件文件或相应的第二目标存储分区,在此不作限制。例如,可以接收用户指令,并根据用户指令来选择相应的有效固件文件进行回滚。
123.进一步地,在基于第二存储单元中的至少一个有效的固件文件对第一存储单元进行回滚之后,固件更新方法还可以包括:对第一存储单元中回滚的固件文件进行校验;在回滚的固件文件通过校验的情况下,将第一存储单元中的固件文件的状态标记为有效;在回滚的固件文件未通过校验的情况下,将第一存储单元中的固件文件的状态标记为无效。
124.这样,可以方便地确定回滚是否成功,以便确定下一步要执行的操作。
125.类似地,在本公开的一些实施例中,在对更新的固件文件进行校验之后,固件更新方法还可以包括以下中的至少一个操作:
126.在第一存储单元中的更新的固件文件通过校验的情况下,将第一存储单元中的固件文件的状态标记为有效;
127.在第二存储单元中的更新的固件文件通过校验的情况下,将第二存储单元中的固件文件的状态标记为有效;以及
128.在第二存储单元中的更新的固件文件未通过校验的情况下,将第二存储单元中的固件文件的状态标记为无效。
129.这样,在需要的时候,可以根据各个存储单元或存储分区中的状态的标记来确定其中固件文件的有效性,以便执行相应的操作。
130.在本公开的一些实施例中,只要第一存储单元中的固件文件写入成功,或者对第
一存储单元的回滚成功,那么车辆就可以正常地运行,此时无论第二存储单元中的固件文件是否写入成功,都不影响车辆运行。
131.由此可见,在一些情况下,如果检测到第二存储单元中的固件文件写入失败,只需要将相应的存储分区中的固件文件标记为无效,而无需进行重新写入等操作。这是因为在第二存储单元的至少一个其他存储分区中,还保存有有效的固件文件,且对当前包含了无效的固件文件的存储分区而言,其在下一次固件更新时将有机会被写入有效的固件文件,因此此时无需进行重新写入,从而有助于简化固件更新过程。
132.然而,可以理解的是,在一些情况下,如果检测到第二存储单元中的固件文件写入失败,也可以对第二存储单元进行重新写入,以尽可能使第二存储单元中的多份固件文件都是有效的。具体而言,在对更新的固件文件进行校验之后,固件更新方法还可以包括:在第二存储单元中的更新的固件文件未通过校验的情况下,根据固件更新文件重新对第二存储单元中的固件文件进行更新;对重新更新的固件文件进行校验;若在预设重新更新次数(例如,三次)内第二存储单元中的重新更新的固件文件通过校验,则将第二存储单元中的固件文件的状态标记为有效;若在预设重新更新次数内第二存储单元中的重新更新的固件文件未通过校验,则将第二存储单元中的固件文件的状态标记为无效。
133.在本公开的技术方案中,在更新固件文件发生了异常的情况下,可以通过设置在控制模块之外的第二存储单元中存储的备份的有效固件文件,自动对控制模块的第一存储单元中的固件文件进行回滚,从而恢复控制模块的原有功能,从而解决了现有固件更新技术中所存在的不足。本公开的技术方案可以在不改变原有的车辆系统架构的前提下,仅通过增加外置的第二存储单元和对引导加载程序进行适当修改,就可以实现软件回滚功能,从而为控制模块进行在线固件更新提供了一种保障,且保持了较低的固件更新成本。
134.根据本公开的另一方面,还提供了一种车辆,该车辆可以包括如上所述的固件更新装置。
135.此外,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质上可以存储有指令,当指令被处理器执行时,可以实现如上所述的固件更新方法的步骤。
136.本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的计算机可读存储介质旨在包括但不限于这些和任意其他适合类型的存储器。
137.根据本公开的另一方面,还提供了一种计算机程序产品,该计算机程序产品可以包括指令,当指令被处理器执行时,可以实现如上所述的固件更新方法的步骤。
138.指令可以是将由一个或多个处理器直接地执行的任何指令集,诸如机器代码,或者间接地执行的任何指令集,诸如脚本。本文中的术语“指令”、“应用”、“过程”、“步骤”和“程序”在本文中可以互换使用。指令可以存储为目标代码格式以便由一个或多个处理器直接处理,或者存储为任何其他计算机语言,包括按需解释或提前编译的独立源代码模块的脚本或集合。指令可以包括引起诸如一个或多个处理器来充当本文中的各神经网络的指令。本文其他部分更加详细地解释了指令的功能、方法和例程。
139.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
140.在说明书及权利要求中的词语“前”、“后”、“顶”、“底”、“之上”、“之下”等,如果存
在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其他取向上操作。
141.如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在上述技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
142.如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪音以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
143.上述描述可以指示被“连接”或“耦合”在一起的元件或节点或特征。如在此所使用的,除非另外明确说明,“连接”意指一个元件/节点/特征与另一种元件/节点/特征在电学上、机械上、逻辑上或以其它方式直接地连接(或者直接通信)。类似地,除非另外明确说明,“耦合”意指一个元件/节点/特征可以与另一元件/节点/特征以直接的或间接的方式在机械上、电学上、逻辑上或以其它方式连结以允许相互作用,即使这两个特征可能并没有直接连接也是如此。也就是说,“耦合”意图包含元件或其它特征的直接连结和间接连结,包括利用一个或多个中间元件的连接。
144.还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
145.本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其他各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。因此,本说明书和附图应当被看作是说明性的,而非限制性的。
146.虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献