一种固件在线升级的方法和系统与流程

文档序号:28683573发布日期:2022-01-29 10:15阅读:302来源:国知局
一种固件在线升级的方法和系统与流程

1.本发明涉及固件升级技术领域,尤其涉及一种固件在线升级的方法和系统。


背景技术:

2.在工控行业中,核电数字化仪控系统作为核电站关键设备,控制器是该系统的中枢核心。为了完善控制器的稳定性,修补控制器的漏洞,需要对控制器中的固件进行升级。目前对固件升级的方法是:技术人员先拆卸控制器,再利用升级设备对控制器进行升级。但是,技术人员需耗费时间对控制器进行拆卸和组装,并且完成固件升级工作以后,还需要检查控制器能否正常运行,此种方式均会耗费大量的人力和时间,升级效率较低和升级成本较高。


技术实现要素:

3.有鉴于此,本发明实施例提供一种固件在线升级的方法和系统,以解决在现有固件升级方式存在的升级效率较低和升级成本较高的问题。
4.为实现上述目的,本发明实施例提供如下技术方案:
5.本发明实施例第一方面公开一种固件在线升级的方法,所述方法包括:
6.比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致,所述目标存储位置为控制器的存储器中用于存放固件数据的位置;
7.若所述原固件数据与所述目标固件不一致,备份所述原固件数据;
8.将所述目标固件存储至所述目标存储位置;
9.回读所述目标存储位置中的数据,得到第一回读数据;
10.若所述第一回读数据和所述目标固件不一致,根据执行将所述目标固件存储至所述目标存储位置这一步骤的次数,对控制器执行相关操作,并返回执行将所述目标固件存储至所述目标存储位置这一步骤;
11.当执行将所述目标固件存储至所述目标存储位置这一步骤的次数大于预设值,且当所述第一回读数据和所述目标固件不一致时,将所述原固件数据存储至所述目标存储位置;
12.回读所述目标存储位置中的数据,得到第二回读数据;
13.若所述第二回读数据和所述原固件数据一致,反馈第一失败信息,所述第一失败信息用于指示固件升级失败和原固件数据成功恢复;
14.若所述第二回读数据和所述原固件数据不一致,返回执行将所述原固件数据存储至所述目标存储位置这一步骤;
15.当执行将所述原固件数据存储至所述目标存储位置这一步骤的次数大于预设值,且当所述第二回读数据和所述原固件数据不一致时,反馈第二失败信息,所述第二失败信息用于指示固件升级失败和原固件数据恢复失败。
16.优选的,所述根据执行将所述目标固件存储至所述目标存储位置这一步骤的次
数,对控制器执行相关操作,包括:
17.当执行将所述目标固件存储至所述存储器这一步骤的次数为1时,停止对所述存储器的读写操作,清除所述目标存储位置中的数据;
18.当执行将所述目标固件存储至所述存储器这一步骤的次数为2时,停止所述控制器的当前所有进程,清除所述目标存储位置中的数据。
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.优选的,所述第二比对单元具体用于:当执行将所述目标固件存储至所述存储器这一步骤的次数为1时,停止对所述存储器的读写操作,清除所述目标存储位置中的数据;当执行将所述目标固件存储至所述存储器这一步骤的次数为2时,停止所述控制器的当前所有进程,清除所述目标存储位置中的数据。
44.优选的,所述存储单元具体用于:
45.将所述目标存储位置已存储的数据进行清除;将所述原固件数据存储至所述目标存储位置。
46.基于上述本发明实施例提供的一种固件在线升级的方法和系统,该方法为:比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致;若不一致,备份原固件数据;多次尝试将目标固件存储至目标存储位置,进行固件升级操作,若固件升级不成功则根据尝试固件升级的次数对控制器进行相关操作。在多次尝试固件升级仍失败后,尝试恢复所备份的原固件数据,若原固件数据成功恢复,则向上位机软件反馈原固件恢复成功但固件升级失败的信息;若多次尝试恢复原固件数据仍失败,则向上位机软件反馈固件升级失败且恢复原固件数据失败信息。在对目标固件进行在线升级的过程中不需要对控制器进行拆卸和组装,减少了耗费的时间,节省了人力成本;在尝试多次对控制器固件升级仍失败后可尝试恢复原固件数据,提高了固件升级的成功率和固件升级失败的应急恢复速度。
附图说明
47.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
48.图1为本发明实施例提供的一种固件在线升级方法的流程图;
49.图2为本发明实施例提供的上位机软件和控制器软件的通信关系图;
50.图3为本发明实施例提供的固件升级异常恢复的流程图;
51.图4为本发明实施例提供的硬件拨码、拨码值和存储位置之间的关系示意图;
52.图5为本发明实施例提供的一种固件在线升级系统的结构框图。
具体实施方式
53.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
54.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
55.由背景技术可知,目前对固件升级的方法是:技术人员先拆卸控制器,再利用升级设备对控制器进行升级。但是,技术人员需耗费时间对控制器进行拆卸和组装,并且完成固件升级工作以后,还需要检查控制器能否正常运行,此种方式均会耗费大量的人力和时间,升级效率较低和升级成本较高。
56.因此,本发明实施例提供一种固件在线升级的方法和系统,比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致;若原固件数据与目标固件不一致,备份原固件数据;将目标固件存储至目标存储位置;判断是否成功对控制器进行固件升级;若升级失败则根据尝试固件升级的次数对控制器执行相关操作并将目标固件再次存储至目标存储位置,尝试多次对控制器固件进行升级;若多次尝试固件升级仍失败,则将上述备份的原固件数据存储至目标存储位置,多次尝试恢复原固件数据。若恢复原固件数据成功则发送第一失败信息;若多次尝试恢复原固件数据后均失败则发送第二失败信息。在对目标固件进行在线升级的过程中不需要对控制器进行拆卸和组装,减少了耗费的时间,节省了人力成本,提高了固件升级的效率;在目标固件传输和存储的过程中,对目标存储位置的固件进行多次校验比对,提高了固件在线升级的成功率。
57.需要说明的是,本发明实施例所提供的一种固件在线升级的方法,可应用于诸如分散控制系统(distributed control system,dcs)和可编程逻辑控制器(programmable logic controller,plc)等设备的控制器固件的升级,具体而言,可利用控制器软件接收上位机软件发送的在线固件升级请求和目标固件,再通过控制器软件将目标固件更新到目标存储位置(或者更新到指定的路径),以完成控制器的固件升级。
58.参见图1,示出了本发明实施例提供的一种固件在线升级的方法的流程图,该固件在线升级的方法包括:
59.步骤s101:比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致。当原固件数据与目标固件不一致时,执行步骤s102;当原固件数据与目标固件一致时,向上位机软件反馈用于指示固件升级成功的信息,并结束本次固件在线升级,控制器自动重启。
60.在具体实施步骤s101的过程中,上位机软件向控制器发送固件升级请求,其中,固件升级请求中包括有检验码信息和目标固件。控制器对接收的目标固件进行正确性校验,将通过正确性检验后的目标固件和从目标存储位置中读取的原固件数据进行比对(例如二进制比对),若目标固件和原固件数据一致,则指示当前固件数据处于最新版本,可视为固
件升级成功,向上位机软件反馈固件升级成功信息;若目标固件和原固件数据不一致,确定需要进行固件在线升级,执行步骤s102。
61.需要说明的是,目标存储位置为控制器的存储器中用于存放固件数据的位置。
62.可以理解的是,将接收的目标性固件进行正确性校验是指:当接收到上位机软件发送的固件升级请求时,对目标固件进行正确性校验(例如32位crc校验)。若对目标固件正确性校验的结果和检验码信息一致,表示目标固件通过正确性校验,此时可比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致;若对目标固件正确性校验的结果和检验码信息不一致,向上位机软件反馈用于指示固件数据错误的信息。
63.可以理解的是,上位机软件提供固件在线升级的操作界面,可响应用户的操作指令。操作界面包括的内容可以是:用户管理、二次确认窗口、待更新的目标文件路径或文件选择框、操作日志、异常提示等。其中二次确认窗口可以是增加用户管理和二次确认机制,实现只有被授权的用户才可以进行固件升级操作,以防固件升级被意外操作。上位机软件和控制器软件之间的通信关系参见图2所示。
64.步骤s102:若原固件数据与目标固件不一致,备份原固件数据。
65.在具体实施步骤s102的过程中,当从目标存储位置读取的原固件数据和所接收的目标固件不一致时,指示当前需要进行固件升级。此时为了防止固件升级失败导致控制器无法正常运行,读取原固件数据并进行备份,以便后续当固件升级失败时,利用原固件数据进行恢复,使控制器保持正常运行。
66.步骤s103:将目标固件存储至目标存储位置。
67.在具体实现步骤s103的过程中,将目标固件存储到目标存储位置中,以对控制器进行固件升级,此时可能存在两种情况,一种情况为成功将目标固件存储到目标存储位置(也就是固件升级成功),另一种情况为未能成功将目标固件存储到目标存储位置(也就是固件升级不成功);针对前述两种情况,在将目标固件存储到目标存储位置之后,可通过回读目标存储位置中的数据来判断是否成功将目标固件存储到目标存储位置,详见以下步骤。
68.步骤s104:回读目标存储位置中的数据,得到第一回读数据。
69.在具体实施步骤s104的过程中,对目标存储位置中的数据进行回读,得到第一回读数据,将第一回读数据和接收的目标固件进行比对,确定是否成功将目标固件存储到目标存储位置中。
70.步骤s105:比对第一回读数据和目标固件是否一致。当第一回读数据和目标固件不一致时,执行步骤s106;当第一回读数据和目标固件一致时,向上位机软件反馈用于指示固件升级成功的信息,并结束本次固件在线升级,控制器自动重启。
71.需要说明的是,当第一回读数据和目标固件不一致时,再次尝试对控制器的固件进行升级,并且可以再尝试进行2次固件升级,同理,尝试固件升级的次数也可以根据实际情况进行设定,在此不做限定。
72.步骤s106:判断执行步骤s103的次数是否大于预设值。当执行步骤s103的次数不大于预设值时,执行步骤s107;当执行步骤s103的次数大于预设值时,执行步骤s108。
73.在具体实现步骤s106的过程中,当第一回读数据和目标固件不一致时,此时指示固件升级失败,判断执行步骤s103的次数是否大于预设值。若执行步骤s103的次数不大于
预设值,则根据执行步骤s103的次数对控制器执行相关的操作并返回执行步骤s103;若执行步骤s103的次数大于预设值,则指示多次尝试固件升级均失败,需要将原固件数据进行恢复以便控制器正常运行,此时执行步骤s108。
74.可以理解的是,判断执行步骤s103的次数目的是确定尝试固件升级的次数。在尝试固件升级的次数尚未大于预设值且固件升级失败时,可再次进行固件升级直至固件升级成功,或者直至尝试固件升级的次数大于预设值。执行后续步骤。
75.步骤s107:根据执行步骤s103的次数,对控制器执行相关操作,并返回执行步骤s103。
76.需要说明的是,执行步骤s103的次数即为尝试对控制器的固件进行升级的次数,在对控制器的固件进行升级之前,可根据执行步骤s103的次数对控制器执行相关操作。
77.在一些具体实施例中,当执行步骤s103的次数为1时(即第一次固件升级未成功时),停止对存储器的读写操作,清除目标存储位置中的数据;当执行步骤s103的次数为2时(即第二次固件升级未成功时),停止控制器的当前所有进程,清除目标存储位置中的数据。
78.也就是说,可重复对控制器进行多次固件升级,当第一次固件升级失败时,停止对存储器的读写操作,以避免出现读写失败导致数据丢失的问题;清除此时目标存储位置中的数据,重新将目标固件写入目标存储位置,尝试对控制器进行第二次固件升级。当第二次固件升级失败时,停止控制器的当前所有进程,清除此时目标存储位置中的数据,再次将目标固件写入目标存储位置,尝试对控制器进行第三次固件升级。可以理解的是,前述关于对控制器进行固件升级的重复次数,仅用于举例说明,并不做具体限定。
79.步骤s108:将原固件数据存储至目标存储位置。
80.在具体实施步骤s107的过程中,当执行步骤s103的次数大于预设值(例如预设值为2),且当第一回读数据和目标固件不一致时,即多次对控制器的固件进行固件升级均失败的情况下,将原固件数据存储至目标存储位置,以恢复控制器的原固件数据。
81.需要说明的是,将原固件数据存储至目标存储位置的具体实现方式为:将目标存储位置已存储的数据进行清除,再将原固件数据存储至目标存储位置。
82.步骤s109:回读目标存储位置中的数据,得到第二回读数据。
83.在具体实施步骤s109的过程中,将原固件数据存储至目标存储位置之后,对目标存储位置中的数据进行回读,得到第二回读数据;将第二回读数据和该原固件数据进行比较,判断是否成功恢复原固件数据至目标存储位置。
84.步骤s110:比对第二回读数据和原固件数据是否一致。当第二回读数据和原固件数据一致时,执行步骤s112;当第二回读数据和原固件数据不一致时,执行步骤s111。
85.需要说明的是,将原固件数据存储至目标存储位置之后,需要判断是否成功将原固件数据成功恢复至目标存储位置,在具体实施步骤s110的过程中,将对目标存储位置中的数据进行回读得到的第二回读数据,和所备份的原固件数据进行比对,以判断是否成功恢复原固件数据。
86.步骤s111:判断执行步骤s108的次数是否大于预设值。若执行步骤s108的次数大于预设值,执行步骤s113;若执行步骤s107的次数不大于预设值,返回执行步骤s108。
87.在具体实施步骤s111的过程中,当第二回读数据和原固件数据不一致时,指示原固件数据尝试恢复失败。若执行步骤s108的次数不大于预设值时,需要再次尝试对原固件
数据进行恢复;若执行步骤s108的次数大于预设值,则指示多次尝试恢复原固件数据均失败,需要向上位机软件反馈失败信息。
88.可以理解的是,同上述步骤s106的目的类似,判断执行步骤s108的次数目的是确定尝试恢复原固件数据的次数。在尝试恢复原固件数据的次数不大于预设值且原固件数据恢复失败时,需要再次进行恢复原固件数据操作,即步骤s108。反复执行步骤s108直至原固件数据恢复成功或执行步骤s108的次数大于预设值,执行后续步骤。
89.步骤s112:若第二回读数据和原固件数据一致,反馈第一失败信息。
90.在具体实施步骤s112的过程中,当第二回读数据和原固件数据一致时,此时指示已成功恢复原固件数据,使控制器可以正常运行,但是固件升级失败,需要向上位机软件反馈第一失败信息。
91.需要说明的是,第一失败信息是用于指示固件升级失败和原固件数据成功恢复的信息。
92.步骤s113:当执行步骤s108的次数大于预设值,且当第二回读数据和原固件数据不一致时,反馈第二失败信息。
93.在具体实施步骤s113的过程中,当执行步骤s108的次数大于预设值(例如预设值为2),此时指示固件升级失败且多次尝试恢复原固件数据均失败,需要向上位机软件反馈第二失败信息。
94.需要说明的是,第二失败信息是用于指示固件升级失败和原固件数据恢复失败的信息。
95.在实际应用中,当上位机软件接收到固件升级失败且原固件数据恢复失败的异常信息或识别到控制器无法正常运行时,会提示需要人工干预进行恢复。当技术人员将设置在控制器上的拨码控件拨动时,启动相关响应程序。相关响应程序的实现方式详见以下本发明实施例图3中的内容。
96.在本发明实施例中,将接收的目标固件和从目标存储位置中读取的原固件数据进行比对;若原固件数据与目标固件不一致,备份原固件数据;利用目标固件对控制器进行固件升级操作,将目标固件存储至目标存储位置;判断是否正确写入目标固件;若写入失败则根据执行将目标固件存储至目标存储位置这一步骤的次数,对控制器执行相关操作,并返回执行将目标固件存储至目标存储位置这一步骤;当多次尝试对固件进行升级仍失败时,利用所备份的原固件数据进行固件恢复操作,将原固件数据存储至目标存储位置;判断是否成功恢复原固件数据;若成功恢复原固件数据则发送第一失败信息;若恢复原固件数据失败,返回执行将原固件数据存储至目标存储位置这一步骤;当多次尝试恢复原固件数据仍失败时,发送第二失败信息。固件的在线升级使得无需再将控制器进行拆卸再组装,避免了因为操作失误造成的固件升级失败和减少了固件升级所耗费的时间和人力成本,提升了固件升级的成功率。
97.上述本发明涉及的人工干预恢复控制器正常运行的相关响应程序的实现方式,参见图3,示出了本发明实施例提供的固件升级异常恢复的流程图,包括以下步骤:
98.步骤s301:检测设置在控制器上的拨码控件是否被触发。
99.在具体实施步骤s301的过程中,当向上位机软件发送第二失败信息后,指示当前控制器无法正常运行,可利用预先烧写的控制器固件再次对控制器进行固件升级操作。
100.可以理解的是,拨码控件设置在控制器上,可以在启动引导程序(bootloader,如u-boot等)中识别。
101.需要说明的是,可以将控制器固件(例如操作系统镜像)预先烧写到存储器中不同的预设存储位置上,不同的预设存储位置的个数为n(例如n》=3),n为拨码控件对应的拨码值的个数,即每个拨码值对应一个预设存储位置。其中n的值可以根据拨码可识别的键值、存储设备的空间大小和设计复杂度来决定。
102.步骤s302:若拨码控件被触发时,获取拨码控件当前所指向的拨码值。
103.需要说明的是,可通过拨码控件切换不同的拨码值,当检测到拨码控件被触发时,获取拨码控件当前所指向的拨码值。由上述内容可知,每个拨码值对应一个相应的预设存储位置,因此,可通过拨码控件当前所指向的拨码值确定需要从哪一预设存储位置读取控制器固件。
104.步骤s303:从存储器中与拨码值对应的预设存储位置中,读取控制器固件。
105.在具体实施步骤s303的过程中,获取到拨码控件当前所指向的拨码值后,根据拨码值(拨码控件当前所指向的拨码值)所对应的存储器中的预设存储位置,读取该预设存储位置中预先烧写的控制器固件,利用所读取的控制器固件再次对控制器进行固件升级。
106.步骤s304:将所读取的控制器固件作为目标固件,返回执行步骤s103。
107.在具体实现步骤s304的过程中,将步骤s303读取到的预先存储的控制器固件作为目标固件,并将该目标固件(此处的目标固件为从预设存储位置读取得到的控制器固件)拷贝到目标存储位置,也就是返回执行上述本发明实施例图1中的步骤s103,再次进行固件升级操作。
108.为更好解释说明上述关于拨码值和存储位置的关系,通过图4示出的硬件拨码、拨码值和存储位置之间的关系示意图进行举例说明。
109.如图4,通过检测硬件拨码(也就是上述所提及的拨码控件)被触发时,获取硬件拨码当前所指向的拨码值(1至n中的任一值),其中,不同拨码值对应不同的预设存储位置,如拨码值1对应的预设存储位置为存储地址1,拨码值2对应的预设存储位置为存储地址2;加载硬件拨码当前所指向的拨码值对应的预设存储位置中的控制器固件;将所加载的控制器固件作为目标固件并返回执行上述本发明实施例图1中的步骤s103(也就是再次进行固件升级操作)。
110.步骤s305:当获取到第二失败信息且拨码值为预设值时,反馈用于指示返厂维修的建议信息。
111.需要说明的是,不同拨码值对应不同的恢复难度,例如:n为2时,即使更新失败一次也还有机会可以进行现场恢复;n为1时,如果更新失败,则指示控制器系统无法启动,没有恢复的机会,此时需要直接返厂维修。即n的值越大,即使出现更新失败,现场恢复的概率就越大。
112.在具体实现步骤s305的过程中,将所读取的控制器固件作为目标固件并返回执行本发明实施例图1中的步骤s103之后,若还是获取得到第二失败信息(也就是固件升级再次失败),当拨码控件当前所指向的拨码值为预设值时(如拨码值为1时),反馈用于指示返厂维修的建议信息。
113.步骤s306:当获取到第二失败信息且拨码值不为预设值时,返回执行步骤s301。
114.需要说明的是,当获取到第二失败信息且拨码值不为预设值时,指示无法恢复控制器正常运行,但是还有机会可以进行现场恢复。
115.在具体实现步骤s306的过程中,将所读取的控制器固件作为目标固件并返回执行本发明实施例图1中的步骤s103之后,若还是获取得到第二失败信息(也就是固件升级再次失败),当拨码控件当前所指向的拨码值不为预设值时(如拨码值不为1时),表示还有机会可以进行现场恢复,此时可再次触发拨码控件切换当前所指向的拨码值以再次进行固件升级,
116.例如:当获取到第二失败信息且拨码值不为1时,假设此时拨码控件当前所指向的拨码值为2,若经过上述各步骤仍获取到第二失败信息,可再次触发拨码控件将该拨码控件当前所指向的拨码值变更为1(相当于再次触发拨码控件),返回执行步骤s301。
117.在本发明实施例中,检测设置在控制器上的拨码控件是否被触发;若拨码控件被触发时,获取拨码控件当前所指向的拨码值;从存储器中与拨码值对应的预设存储位置,读取控制器固件;将所读取的控制器固件作为目标固件,返回执行将目标固件存储至目标存储位置这一步骤;当获取到第二失败信息且拨码值为预设值时,反馈用于指示返厂维修的建议信息;当获取到第二失败信息且拨码值不为预设值时,返回执行检测设置在控制器上的拨码控件是否被触发这一步骤。在固件升级失败且原固件数据无法恢复时,可以读取预先存储的控制器固件,用于备份恢复控制器的正常运行,加快了固件升级失败后的应急处理。
118.为更好地解释说明上述本发明实施例图1的内容,通过过程a1至过程a22进行举例说明。
119.a1、对从上位机软件接收的目标固件进行正确性校验。
120.a2、读取目标存储位置中的原固件数据。
121.a3、将原固件数据和通过正确性校验的目标固件进行二进制比对。
122.a4、若原固件数据和通过正确性校验的目标固件一致,向上位机软件反馈固件升级成功信息,结束本次升级,控制器自动重启。
123.a5、若原固件数据和通过正确性校验的目标固件不一致,读取原固件数据并进行备份。
124.a6、将目标固件存储至目标存储位置。
125.a7、对目标存储位置中的数据进行回读,得到第一回读数据。
126.a8、将第一回读数据和目标固件进行二进制比对。
127.a9、若第一回读数据和目标固件一致,向上位机软件反馈固件升级成功信息,控制器自动重启。
128.a10、若第一回读数据和目标固件不一致,停止对控制器的存储器的读写操作,清除目标存储位置中的数据。
129.a11、将目标固件存储至目标存储位置。
130.a12、再次对目标存储位置中的数据进行回读,得到新的第一回读数据。
131.a13、将新的第一回读数据和目标固件进行二进制比对。
132.a14、若新的第一回读数据和目标固件一致,向上位机软件反馈固件升级成功信息,控制器自动重启。
133.a15、若新的第一回读数据和目标固件不一致,停止控制器的当前所有进程,清除目标存储位置中的数据。
134.a16、将目标固件存储至目标存储位置。
135.a17、再次回读目标存储位置中的数据,得到另一新的第一回读数据。
136.a18、若另一新的第一回读数据和目标固件一致,向上位机软件反馈固件升级成功信息,控制器自动重启。
137.a19、若另一新的第一回读数据和目标固件不一致,清除目标存储位置中的数据。
138.a20、将所备份的原固件数据存储至目标存储位置,对目标存储位置中的数据进行回读,得到第二回读数据,将第二回读数据和原固件数据进行二进制比对。
139.a21、若第二回读数据和原固件数据一致,向上位机软件反馈第一失败信息。
140.a22、若第二回读数据和原固件数据不一致,重复过程a20两次,若执行两次过程a20均得到第二回读数据和原固件数据不一致的结果,向上位机软件反馈第二失败信息。
141.与上述本发明实施例提供的一种固件在线升级方法相对应,参见图5,本发明实施例还提供了一种固件在线升级系统的结构框图,该固件在线升级系统包括:第一比对单元501、第二比对单元502、存储单元503、第三比对单元504和反馈单元505:
142.第一比对单元501,用于比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致,目标存储位置为控制器的存储器中用于存放固件数据的位置;若原固件数据与目标固件不一致,备份原固件数据;将目标固件存储至目标存储位置。
143.在具体实现中,第一比对单元501还用于:当接收到固件升级请求时,对目标固件进行正确性校验;请求包括检验码信息和目标固件;若正确性校验的结果和检验码信息一致,执行比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致这一步骤;若正确性校验的结果和检验码信息不一致,反馈用于指示固件数据错误的信息。
144.在具体实现中,第一比对单元501还用于:当原固件数据与目标固件一致时,反馈用于指示固件升级成功的信息。
145.第二比对单元502,用于回读目标存储位置中的数据,得到第一回读数据;若第一回读数据和目标固件不一致,根据执行将目标固件存储至目标存储位置这一步骤的次数,对控制器执行相关操作,并返回执行将目标固件存储至目标存储位置这一步骤。
146.在具体实现中,第二比对单元502具体用于:当执行将目标固件存储至存储器这一步骤的次数为1时,停止对存储器的读写操作,清除目标存储位置中的数据;当执行将目标固件存储至存储器这一步骤的次数为2时,停止控制器的当前所有进程,清除目标存储位置中的数据。
147.在具体实现中,第二比对单元502还用于:当第一回读数据和目标固件一致时,反馈用于指示固件升级成功的信息。
148.存储单元503,用于当执行将目标固件存储至目标存储位置这一步骤的次数大于预设值,且当第一回读数据和目标固件不一致时,将原固件数据存储至目标存储位置。
149.在具体实现中,存储单元503具体用于:将目标存储位置已存储的数据进行清除;将原固件数据存储至目标存储位置。
150.第三比对单元504,用于回读目标存储位置中的数据,得到第二回读数据;若第二回读数据和原固件数据一致,反馈第一失败信息,第一失败信息用于指示固件升级失败和
原固件数据成功恢复;若第二回读数据和原固件数据不一致,返回执行将原固件数据存储至目标存储位置这一步骤。
151.反馈单元505,用于当执行将原固件数据存储至目标存储位置这一步骤的次数大于预设值,且当第二回读数据和原固件数据不一致时,反馈第二失败信息,第二失败信息用于指示固件升级失败和原固件数据恢复失败。
152.在本发明实施例中,比对接收的目标固件和从目标存储位置中读取的原固件数据是否一致;若原固件数据与目标固件不一致,备份原固件数据;将目标固件存储至目标存储位置;判断是否成功对控制器进行固件升级;若升级失败则根据尝试固件升级的次数对控制器执行相关操作并将目标固件再次存储至目标存储位置,尝试多次对控制器固件进行升级;若多次尝试固件升级仍失败,则将上述备份的原固件数据存储至目标存储位置,多次尝试恢复原固件数据。若恢复原固件数据成功则发送第一失败信息;若多次尝试恢复原固件数据失败则发送第二失败信息。固件实现了在线升级的方式,并对固件进行对此校验,提高了固件升级的准确性;在升级异常时可以自动对恢复原固件数据,极大程度地保护了控制器的正常运行,提高了固件升级的安全性,同时也使得固件升级的效率提高,减少了维护成本。
153.优选的,结合图5示出的内容,该固件在线升级的系统还包括:
154.检测单元,用于检测设置在控制器上的拨码控件是否被触发;
155.获取单元,用于若拨码控件被触发时,获取拨码控件当前所指向的拨码值;从存储器中与拨码值对应的预设存储位置中,读取控制器固件;将所读取的控制器固件作为目标固件,返回执行第一比对单元501以执行将目标固件存储至目标存储位置这一步骤;
156.处理单元,用于当获取到第二失败信息且拨码值为预设值时,反馈用于指示返厂维修的建议信息;当获取到第二失败信息且拨码值不为预设值时,返回执行检测单元。
157.综上所述,本发明实施例提供一种固件在线升级的方法和系统,将接收的目标固件和从目标存储位置中读取的原固件数据进行比对;当原固件数据和目标固件不一致时,读取原固件数据并进行备份;将目标固件存储至目标存储位置,判断目标存储位置中的数据是否和目标固件一致;若不一致则将目标存储位置中的数据进行清除;再次将目标固件存储至目标存储位置;同时根据执行目标固件存储至目标存储位置这一步骤的次数对控制器执行相关操作。多次尝试将目标固件存储至目标存储位置,若目标存储位置中的数据与目标固件仍不一致,将原固件数据存储至目标存储位置。若此时目标存储位置中的数据和原固件数据一致,向上位机软件发送第一失败信息;若多次尝试将原固件数据存储至目标存储位置,但此时目标存储位置中的数据与原固件数据仍不一致,向上位机软件发送第二失败信息。固件的在线升级使得无需再将控制器进行拆卸再组装,避免了因为操作失误造成的固件升级失败和减少了固件升级所耗费的时间和人力成本,对固件对此进行正确性比对,大大提升了固件升级效率。
158.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或
者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
159.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
160.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1