CN113238779A - 一种由多模块组成的单嵌入式装置的高可靠性升级方法 - Google Patents
一种由多模块组成的单嵌入式装置的高可靠性升级方法 Download PDFInfo
- Publication number
- CN113238779A CN113238779A CN202110564351.5A CN202110564351A CN113238779A CN 113238779 A CN113238779 A CN 113238779A CN 202110564351 A CN202110564351 A CN 202110564351A CN 113238779 A CN113238779 A CN 113238779A
- Authority
- CN
- China
- Prior art keywords
- module
- upgrading
- rollback
- file
- modules
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 abstract description 4
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
本发明公开了一种由多模块组成的单嵌入式装置的高可靠性升级方法,采用一个主多从模式,在所有模块中选择一个模块作为主控模块;主控模块负责控制监控,其他模块的升级过程及升级状态。主模块作为控制和监测模块,要确保所有从模块都升级成功后,才能执行自升级。在自升级完成后,在主模块存储中保存当次升级用的所有模块固件,用于下次升级失败时回退模块版本使用。本发明在升级时,单装置上的所有模块都同时升级成功。如果,其中一个模块升级异常,所有模块都会回退到之前的版本,设备能正常运行。保证由多个模块组成的单嵌入式装置的成功升级,保证各个模块间升级后固件的可靠性和一致性,具有推广应用的价值。
Description
技术领域
本发明涉及由多个模块组成的单嵌入式装置,尤其涉及一种由多模块组成的单嵌入式装置的高可靠性升级方法。
背景技术
某些单个嵌入式装置上,需要多个模块协同工作,每个模块有一份独立的固件。在对这种嵌入式装置升级时,需要满足如下条件:1.可靠性,保证各个模块都能成功升级。2.一致性,各个模块不能一些升级完成,一些未升级。要保障各个模块版本之间的一致性。3.因存储空间太小,不具备双镜像条件的模块,其他模块升级异常时,也能成功回退版本;此方案可解决上述问题;现有技术无法解决上述技术问题,因此迫切需要一种可靠的升级方法。
发明内容
本发明的目的是要提供一种由多模块组成的单嵌入式装置的高可靠性升级方法。
为达到上述目的,本发明是按照以下技术方案实施的:
本发明一种由多模块组成的单嵌入式装置的高可靠性升级方法,包括以下步骤:
S1:获取升级文件,并对获取的文件是否完整进行校验,若不完整则结束升级,若完整则进入下一步;
S2:通知各个从模块进入升级状态,从模块进行是否具备进入升级状态条件进行判断,若进入升级状态失败,则通知其他从模块全部退出升级状态,结束升级,若进入升级状态成功,则进入下一步;
S3:通知各个从模块发送升级文件,从模块接收文件并校验接收文件是否完整,若接收异常,则通知其他模块删除已经接收的软件,结束升级,若接收成功,则进入下一步;
S4:通知各个模块开始写入存储,各个模块自己执行存储写入过程,若写入失败,则执行所有版本回退操作,结束升级,若写入成功,则进入下一步;
S5:通知各个模块执行新固件,获取各个模块版本号,执行新固件并返回当前固件版本号,并检查从模块返回的固件版本号是否和要升级的一致,若不一致,则执行所有模块版本回退操作,若一致,则进入下一步;
S6:确认所有从模块都升级成功后,主模块执行自升级;
S7:主模块自升级完成后,在存储中保存当前用于升级的所有模块文件,便于下次升级失败回退使用,结束升级。
进一步,所述步骤S4或步骤S5中版本回退操作包括以下步骤:
Sa:从主模块自己的存储中获取最近一次升级成功的从模块文件;
Sb:向从模块请求获取当前版本存储里面的版本号,获取自己当前存储里面的软件版本号并返回,通过版本从模块版本号判定哪些是模块需要回退版本,当判定无需回退,则通知该模块直接退出升级流程,当判定需要回退,则进入下一步;
Sc:通知从模块进入回退状态,并接受回退文件;
Sd:进入回退状态,并接收回退文件,检查自己是处于软件写入存储未运行状态还是写入存储已运行状态,当检测到是写入未运行状态时,将回退软件直接写入存储,进行步骤Sf;当检测到写入已运行状态时,进入步骤Se;
Se:将回退文件直接写入存储,运行新写入的回退软件;
Sf:通知主模块回退完成,等待所有模块回退完成,当检测到全部回退完成,则结束升级逻辑步骤,当检测到有回退失败,则重新舱室回退流程,并返回步骤Sd。
本发明的有益效果是:
本发明是一种由多模块组成的单嵌入式装置的高可靠性升级方法,与现有技术相比,本发明在升级时,单装置上的所有模块都同时升级成功。如果,其中一个模块升级异常,所有模块都会回退到之前的版本,设备能正常运行。保证由多个模块组成的单嵌入式装置的成功升级,保证各个模块间升级后固件的可靠性和一致性,具有推广应用的价值。
附图说明
图1是本发明的方法流程图;
图2是本发明的方法中版本回退流程图。
具体实施方式
下面结合附图以及具体实施例对本发明作进一步描述,在此发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
升级方法概述:
①主模块和多个从模块间使用i2c连接;
②对升级包的要求:多个模块固件,无论是否有更新,都要一起打包。如果其中有某个模块的固件无功能修改,打包时也必须修改其版本号,并重新生成固件打包。主要用于保证各个模块固件都进行升级操作,防止人为打包操作错误,导致某个模块没进行升级操作。
③采用一个主多从模式,在所有模块中选择一个模块作为主控模块;主控模块负责控制监控,其他模块的升级过程及升级状态。
④主模块作为控制和监测模块,要确保所有从模块都升级成功后,才能执行自升级。在自升级完成后,在主模块存储中保存当次升级用的所有模块固件,用于下次升级失败时回退模块版本使用。
如图1所示:本发明一种由多模块组成的单嵌入式装置的高可靠性升级方法,包括以下步骤:
S1:获取升级文件,并对获取的文件是否完整进行校验,若不完整则结束升级,若完整则进入下一步;
S2:通知各个从模块进入升级状态,从模块进行是否具备进入升级状态条件进行判断,若进入升级状态失败,则通知其他从模块全部退出升级状态,结束升级,若进入升级状态成功,则进入下一步;
S3:通知各个从模块发送升级文件,从模块接收文件并校验接收文件是否完整,若接收异常,则通知其他模块删除已经接收的软件,结束升级,若接收成功,则进入下一步;
S4:通知各个模块开始写入存储,各个模块自己执行存储写入过程,若写入失败,则执行所有版本回退操作,结束升级,若写入成功,则进入下一步;
S5:通知各个模块执行新固件,获取各个模块版本号,执行新固件并返回当前固件版本号,并检查从模块返回的固件版本号是否和要升级的一致,若不一致,则执行所有模块版本回退操作,若一致,则进入下一步;
S6:确认所有从模块都升级成功后,主模块执行自升级;
S7:主模块自升级完成后,在存储中保存当前用于升级的所有模块文件,便于下次升级失败回退使用,结束升级。
如图2所示:所述步骤S4或步骤S5中版本回退操作包括以下步骤:
Sa:从主模块自己的存储中获取最近一次升级成功的从模块文件;
Sb:向从模块请求获取当前版本存储里面的版本号,获取自己当前存储里面的软件版本号并返回,通过版本从模块版本号判定哪些是模块需要回退版本,当判定无需回退,则通知该模块直接退出升级流程,当判定需要回退,则进入下一步;
Sc:通知从模块进入回退状态,并接受回退文件;
Sd:进入回退状态,并接收回退文件,检查自己是处于软件写入存储未运行状态还是写入存储已运行状态,当检测到是写入未运行状态时,将回退软件直接写入存储,进行步骤Sf;当检测到写入已运行状态时,进入步骤Se;
Se:将回退文件直接写入存储,运行新写入的回退软件;
Sf:通知主模块回退完成,等待所有模块回退完成,当检测到全部回退完成,则结束升级逻辑步骤,当检测到有回退失败,则重新舱室回退流程,并返回步骤Sd。
二、方法中需要用到的消息说明:
通知所有模块进入升级准备状态:
主模块侧逻辑:
1.从usb或网络获取升级文件并校验后,发送“准备升级消息”给所有从模块,通知从模块进入准备升级状态;
2.主模块发送消息后,等待所有从模块的响应消息。收到所有响应消息后,检查这些消息中是否存在“进入升级状态失败的消息”。如果存在,则发送“退出升级消息”给所有从模块,退出升级状态。如果不存在,则继续下一步操作。
从模块侧逻辑:
1.收到“准备升级指令”后,不断检查自己当前运行的所有任务,对于已经运行到安全点的任务,将任务暂停并挂起等待。直到所有任务都运行到安全点,向主模块返回“进入升级状态成功消息”。然后准备接收,升级文件
2.如果有任务等待10秒,都不能进入安全点,则向主模块发送“进入升级状态失败消息”。
安全点:
满足下面条件的任务执行节点,称为安全点;
1.当前任务在此点暂停,对用户感知影响不大;(比如:半夜用户未使用设备的时间段,用户自定义的升级时间点,检测到用户此时未使用设备,提示用户并得到用户授权等)
2.系统没有运行中断后会导致系统异常的关键任务;(关键任务:任务正在存储数据,任务正在执行上一次升级,任务正在处理高实时性数据)
3.系统任务没有使用通讯模块和外界交换数据时;
将升级文件发送给各个模块:
主模块侧逻辑:
1.通过xmodem协议发送升级文件,等待所有模块执行完成。如果任何一个模块发送失败,则发送“退出升级消息”给所有从模块,退出升级状态。
从模块侧逻辑:
1.通过xmodem协议接收升级文件。如果接收失败或接收到文件校验失败,通知主模块文件接收异常,同时等待主模块“退出升级消息”。如果接收成功,等待主模块下一部操作指令;
2.如果接收成功,但等待过程中收到“退出升级消息”,则删除已接收到的升级文件,并退出升级状态;
通知所有从模块,将接收到的升级文件写入存储:
主模块侧逻辑:
1.发送“写入存储消息”给所有从模块,通知从模块将接收到的升级文件写入非易失性存储。
2.接收所有从模块返回消息,如果返回消息中存在“写入失败”消息,则发送“进入版本回退状态消息”给所有从模块,进入版本回退状态。
从模块侧逻辑:
1.收到“写入存储消息”后,将上一阶段接收到的升级文件写入非易失性存储,永久保存。
2.如果写入失败,返回“写入失败”消息给主模块,并等待主模块“退出升级消息”。如果写入成功,返回“写入成功”消息给主模块,并等待主模块下一条消息。
通知所有从模块运行新接收到的固件:
主模块侧逻辑:
1.发送“运行新固件消息”给所有从模块。
2.接收所有从模块返回消息,如果接收消息中存在运行失败消息,则发送“进入版本回退状态消息”给所有从模块,进入版本回退状态。
从模块侧逻辑:
1.接收“运行新固件消息”,切换当前运行的固件到新升级的固件,并重启模块,重启后发送“运行新固件成功消息”给主模块。
2.如果运行失败,发送“运行新固件失败消息”给主模块,并等待主模块“退出升级消息”。
获取存储中的固件版本号和正在运行的固件版本号(只有在升级中,新固件写入存储,但还没运行时才会出现存储中的固件版本号或正在运行的固件版本号不一致的情况):
主模块侧逻辑:
1.发送“获取固件版本号”的消息给从模块;
2.接收所有模块返回的版本号,判断所有从模块中返回消息中,是否存在“存储中的固件版本号+正在运行的固件版本号+主模块中对应模块的升级文件版本号”三者不一致的情况。如果存在,发送“进入版本回退状态消息”给所有从模块,准备版本回退。如果不存在,主模块认为所有从模块都成功,此时主模块开始对自己进行升级。
3.主模块自己升级完成后,一定要保存本次的升级的所有模块的固件到主模块的非易失性存储中,以便下次升级失败时,用于版本回退操作。
从模块侧逻辑:
返回存储中的固件版本号和正在运行的固件版本号;
用于升级异常时,通知从模块回退到前一个版本;
主模块侧逻辑:
1.主模块检查每个从模块“存储中的固件版本号”是否和升级前(升级前版本主模块在上次升级成功后会自己的存储中保存)的一致。如果一致,主模块直接发送“退出升级消息”给对应从模块,通知从模块退出升级状态。如果不一致,发送“进入版本回退状态消息”给所对应从模块,准备版本回退。
2.从主模块自己的存储中取出上次升级成功时保存的固件,发送给对应从模块。
3.接收从模块的“回退完成”消息,当接收到所有从模块的“回退完成”消息后,向所有从模块发送“退出升级消息”,退出升级状态。
从模块侧逻辑:
1.接收到主模块发送的“进入版本回退状态消息”后,准备从主模块接收要回退的固件。
2.接收回退固件完成后,将回退固件写入“非易失性存储”。
3.从模块自检当前正在运行的固件和存储在”存储“中的是否一致。如果一致,则等待主模块发出”退出升级“消息。如果不一致,则运行回退到”存储“的固件,并重启模块自己,重启完成后等待主模块发出”退出升级“消息。
用于通知从模块退出升级状态:
主模块侧逻辑:
向从模块发送“退出升级状态消息”。
从模块侧逻辑:
1.当从模块处于刚接收到“准备升级消息”状态时,直接恢复所有在安全点挂起的任务即可。
2.当从模块处于接收到升级固件并未写入非易失性存储状态时,直接删除接收到的升级固件,恢复所有在安全点挂起的任务即可。
3.当从模块处于回退完成状态时,直接恢复所有在安全点挂起的任务即可。
本发明的技术方案不限于上述具体实施例的限制,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。
Claims (2)
1.一种由多模块组成的单嵌入式装置的高可靠性升级方法,其特征在于,包括以下步骤:
S1:获取升级文件,并对获取的文件是否完整进行校验,若不完整则结束升级,若完整则进入下一步;
S2:通知各个从模块进入升级状态,从模块进行是否具备进入升级状态条件进行判断,若进入升级状态失败,则通知其他从模块全部退出升级状态,结束升级,若进入升级状态成功,则进入下一步;
S3:通知各个从模块发送升级文件,从模块接收文件并校验接收文件是否完整,若接收异常,则通知其他模块删除已经接收的软件,结束升级,若接收成功,则进入下一步;
S4:通知各个模块开始写入存储,各个模块自己执行存储写入过程,若写入失败,则执行所有版本回退操作,结束升级,若写入成功,则进入下一步;
S5:通知各个模块执行新固件,获取各个模块版本号,执行新固件并返回当前固件版本号,并检查从模块返回的固件版本号是否和要升级的一致,若不一致,则执行所有模块版本回退操作,若一致,则进入下一步;
S6:确认所有从模块都升级成功后,主模块执行自升级;
S7:主模块自升级完成后,在存储中保存当前用于升级的所有模块文件,便于下次升级失败回退使用,结束升级。
2.根据权利要求1所述的由多模块组成的单嵌入式装置的高可靠性升级方法,其特征在于:所述步骤S4或步骤S5中版本回退操作包括以下步骤:
Sa:从主模块自己的存储中获取最近一次升级成功的从模块文件;
Sb:向从模块请求获取当前版本存储里面的版本号,获取自己当前存储里面的软件版本号并返回,通过版本从模块版本号判定哪些是模块需要回退版本,当判定无需回退,则通知该模块直接退出升级流程,当判定需要回退,则进入下一步;
Sc:通知从模块进入回退状态,并接受回退文件;
Sd:进入回退状态,并接收回退文件,检查自己是处于软件写入存储未运行状态还是写入存储已运行状态,当检测到是写入未运行状态时,将回退软件直接写入存储,进行步骤Sf;当检测到写入已运行状态时,进入步骤Se;
Se:将回退文件直接写入存储,运行新写入的回退软件;
Sf:通知主模块回退完成,等待所有模块回退完成,当检测到全部回退完成,则结束升级逻辑步骤,当检测到有回退失败,则重新舱室回退流程,并返回步骤Sd。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110564351.5A CN113238779A (zh) | 2021-05-24 | 2021-05-24 | 一种由多模块组成的单嵌入式装置的高可靠性升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110564351.5A CN113238779A (zh) | 2021-05-24 | 2021-05-24 | 一种由多模块组成的单嵌入式装置的高可靠性升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113238779A true CN113238779A (zh) | 2021-08-10 |
Family
ID=77138278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110564351.5A Pending CN113238779A (zh) | 2021-05-24 | 2021-05-24 | 一种由多模块组成的单嵌入式装置的高可靠性升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113238779A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316189A (zh) * | 2008-05-27 | 2008-12-03 | 华为技术有限公司 | 一种实现网络设备升级的方法、系统和设备 |
CN109669708A (zh) * | 2018-11-02 | 2019-04-23 | 金卡智能集团股份有限公司 | 用于模块化物联网终端设备的远程升级方法 |
CN110119280A (zh) * | 2018-02-06 | 2019-08-13 | 深圳市帝迈生物技术有限公司 | 多固件升级的方法及装置 |
CN111459522A (zh) * | 2020-04-01 | 2020-07-28 | 珠海格力电器股份有限公司 | 一种空调及其通讯模块升级方法 |
CN112202920A (zh) * | 2020-10-23 | 2021-01-08 | 上海擎感智能科技有限公司 | 车机系统升级方法及装置 |
-
2021
- 2021-05-24 CN CN202110564351.5A patent/CN113238779A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316189A (zh) * | 2008-05-27 | 2008-12-03 | 华为技术有限公司 | 一种实现网络设备升级的方法、系统和设备 |
CN110119280A (zh) * | 2018-02-06 | 2019-08-13 | 深圳市帝迈生物技术有限公司 | 多固件升级的方法及装置 |
CN109669708A (zh) * | 2018-11-02 | 2019-04-23 | 金卡智能集团股份有限公司 | 用于模块化物联网终端设备的远程升级方法 |
CN111459522A (zh) * | 2020-04-01 | 2020-07-28 | 珠海格力电器股份有限公司 | 一种空调及其通讯模块升级方法 |
CN112202920A (zh) * | 2020-10-23 | 2021-01-08 | 上海擎感智能科技有限公司 | 车机系统升级方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108334331B (zh) | 一种安全的电动汽车电池管理系统软件升级方法 | |
CN103713925A (zh) | 避免存储阵列在升级过程的业务中断方法和装置 | |
CN107153559A (zh) | 一种电子设备的应用程序升级方法 | |
CN100583782C (zh) | 软件升级方法和装置 | |
CN108345464A (zh) | 一种安卓系统的启动方法及安卓车机 | |
CN114116280A (zh) | 交互式bmc自恢复方法、系统、终端及存储介质 | |
CN115840579A (zh) | Fpga远程更新方法、系统、贴片机及存储介质 | |
CN115454469A (zh) | 镜像更新方法、装置、芯片、电子设备及存储介质 | |
CN113656061B (zh) | 5g通信电源固件更新方法及更新装置 | |
CN113238779A (zh) | 一种由多模块组成的单嵌入式装置的高可靠性升级方法 | |
CN112685068A (zh) | 远程升级boot镜像文件的方法及计算机可读介质 | |
WO2010135966A1 (zh) | 成对冗余结构中器件的升级方法及设备 | |
CN111400081A (zh) | 进程的守护方法、装置、电子设备和计算机存储介质 | |
CN111917588A (zh) | 边缘设备管理方法、装置、边缘网关设备和存储介质 | |
CN111090537A (zh) | 集群启动方法、装置、电子设备及可读存储介质 | |
CN110458989A (zh) | 支持主备倒换的智能锁系统以及主备倒换的启动方法 | |
CN106972963B (zh) | 业务模块的启用控制方法、崩溃重启后的启用控制方法 | |
CN114860286A (zh) | 一种cpld无感升级方法、系统、存储介质及设备 | |
CN114793196A (zh) | 固件升级方法、装置、设备和存储介质 | |
CN114860292A (zh) | 终端设备固件升级控制方法、装置、计算机设备及介质 | |
US9529581B2 (en) | Circuit and method for writing program codes of basic input/output system | |
JP2010146436A (ja) | 監視システム、及びその制御方法、プログラム | |
CN111694516A (zh) | 一种分布式块存储系统的版本在线升级方法及终端 | |
CN111008092A (zh) | 一种焊机通信管理方法及焊机 | |
CN111078452A (zh) | 一种bmc固件镜像恢复方法与装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210810 |
|
RJ01 | Rejection of invention patent application after publication |