CN116382753A - 一种基于网络的设备固件高可靠性远程升级方法 - Google Patents
一种基于网络的设备固件高可靠性远程升级方法 Download PDFInfo
- Publication number
- CN116382753A CN116382753A CN202310343107.5A CN202310343107A CN116382753A CN 116382753 A CN116382753 A CN 116382753A CN 202310343107 A CN202310343107 A CN 202310343107A CN 116382753 A CN116382753 A CN 116382753A
- Authority
- CN
- China
- Prior art keywords
- state
- firmware
- space
- equipment
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000004069 differentiation Effects 0.000 claims abstract 3
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 3
- 239000011248 coating agent Substances 0.000 claims description 2
- 238000000576 coating method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000006467 substitution reaction 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
- G06F8/658—Incremental updates; Differential 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
-
- 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
-
- 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/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及电动车技术领域,具体为一种基于网络的设备固件高可靠性远程升级方法,包括以下步骤:步骤一、设备上电启动后,设备固件从设备非易失性存储器参数空间中读取状态机的状态值,如果是第一次启动,则读取到的状态机将处于第一状态,第一状态为空闲状态;所述如果不是第一次启动,则有可能是八种状态的中的任意一种,步骤二、第一次启动,引导程序引导原系统固件运行,状态机处于第一状态,设备开始定时向升级服务器申请新的固件差分包。本发明提供的基于网络的设备固件高可靠性远程升级方法,使得设备固件的远程升级过程比较可靠,有效防止了下载过程信号不好、升级过程意外断电情况下导致升级过程中断或系统不可用等升级不可靠的问题。
Description
技术领域
本发明涉及电动车技术领域,具体为一种基于网络的设备固件高可靠性远程升级方法。
背景技术
远程升级技术,主要是指一种通过空中接口远程管理、更新设备中固件(或软件)的技术。通过远程升级操作,不仅可以下载升级应用层固件,也可以更新设备的操作系统固件。这样,远程升级技术使设备可以在售后时自动升级固件,大大节约了人工成本。
在现有的网络设备(特别是物联网设备)的远程升级过程中,可能存在以下问题:(1)下载过程信号不好:所选择的远程传输技术可以为GPRS、NBIOT、4G等,对信号质量要求高,信号质量不好时容易丢失数据,导致升级过程不可靠,升级成功率得不到保证,设备的固件升级成本增高;(2)升级过程意外断电:设备要求低功耗,一般用电池供电,升级过程中若出现电池耗尽情况或其他断电情况,会导致升级流程中断,严重时导致设备重新开机仍无法正常使用,为此我们提出一种基于网络的设备固件高可靠性远程升级方法。
发明内容
本发明的目的在于提供一种基于网络的设备固件高可靠性远程升级方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于网络的设备固件高可靠性远程升级方法,包括以下步骤:
步骤一、设备上电启动后,设备固件从设备非易失性存储器参数空间中读取状态机的状态值,如果是第一次启动,则读取到的状态机将处于第一状态,第一状态为空闲状态;所述如果不是第一次启动,则有可能是八种状态的中的任意一种,
步骤二、第一次启动,引导程序引导原系统固件运行,状态机处于第一状态,设备开始定时向升级服务器申请新的固件差分包,升级服务器应答后,设备根据升级服务器应答的升级指令检查算法检测升级服务器下发的升级指令参数是否合法:若所述升级指令参数不合法,则重复步骤二继续定时向升级服务器申请新的固件差分包;若所述升级指令参数合法,则状态机进入第二状态,第二状态为开始升级状态,同时将第二状态写入设备非易失性存储器参数空间中;
步骤三、进入第二状态后,设备开始通过断点续传下载算法向步骤二中所述升级指令参数中包含的下载服务器地址发送下载固件差分包远程升级的申请:若固件差分包第一个数据包一直下载失败,超过一定次数则状态机进入第八状态,第八状态为升级错误状态,同时将第八状态写入设备非易失性存储器参数空间中,记录失败原因后,状态机恢复为第一状态,同时将第一状态写入设备非易失性存储器参数空间中,返回步骤二重新开始下一轮升级过程;若固件差分包第一个数据包下载成功并写入设备非易失性存储器固件差分包空间中,则状态机进入第三状态,第三状态为下载中状态,同时将第三状态写入设备非易失性存储器参数空间中;
步骤四、进入第三状态后,设备继续通过断点续传下载算法向步骤二中升级指令参数中包含的下载服务器地址发送下载固件差分包远程升级申请;若下载某一帧数据包时由于网络信号质量差下载失败,则自动重复下载此帧数据包;若固件差分包下载完成且设备计算的固件差分包的MD5校验值与步骤二中所述升级指令参数中包含的固件差分包的MD5校验值不一致,则状态机进入第八状态,同时将第八状态写入设备非易失性存储器参数空间中,记录失败原因后,状态机恢复为第一状态,同时将第一状态写入设备非易失性存储器参数空间中,返回步骤二重新开始下一轮升级过程;若固件差分包下载完成且设备计算的固件差分包的MD5校验值与步骤二中所述升级指令参数中包含的固件差分包的MD5校验值一致,则状态机进入第四状态,第四状态为下载成功状态,同时将第四状态写入设备非易失性存储器参数空间中;
步骤五、进入第四状态后,设备通过将所述步骤四中所述非易失性存储器固件差分包空间中的固件差分包和非易失性存储器原系统固件备份包空间中的原系统固件备份包两者作为输入,执行还原算法,得到目标固件包,同时将目标固件包写入非易失性存储器目标固件包空间中;若还原算法运行失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备计算的目标固件包的MD5校验值与步骤二中所述升级指令参数中包含的固件差分包的MD5校验值不一致,则重复执行还原算法;若还原算法连续多次失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备计算的目标固件包的MD5校验值与步骤二中所述升级指令参数中包含的目标固件的MD5校验值连续多次不一致,则状态机进入第八状态,同时将第八状态写入设备非易失性存储器参数空间中,记录失败原因后,状态机恢复为第一状态,同时将第一状态写入设备非易失性存储器参数空间中,返回步骤二重新开始下一轮升级过程;若还原算法运行成功,得到目标固件包,且设备计算的目标固件包的MD5校验值与步骤二中所述升级指令参数中包含的目标固件的MD5校验值一致,则状态机进入第五状态,第五状态为还原成功状态,同时将第五状态写入设备非易失性存储器参数空间中;
步骤六、进入第五状态后,设备设置升级类型标志为差分升级,同时将升级类型标志和状态机第五状态写入设备非易失性存储器参数空间中;状态机进入第六状态,第六状态为升级文件准备好状态;
步骤七、进入第六状态后,用于设备升级的即替换原系统固件包的目标固件包已准备好,此时设备开始定时检测是否满足系统重启条件;若设备不满足重启条件,则重复步骤七继续判断;若设备满足重启条件,则状态机进入第七状态,所述第七状态为升级文件写入状态,同时将第七状态写入非易失性存储器参数空间中;
步骤八、进入第七状态后,设备自动触发系统重启,重启后设备开始运行bootloader引导程序,引导程序根据对步骤四中所述的目标固件包进行读取和计算MD5校验值;若设备计算的MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备计算的MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值一致,则将目标固件包空间的目标固件包覆盖原系统固件空间的原系统固件包;覆盖完成后,引导程序对新的系统固件包进行读取和计算MD5校验值,若设备计算的新系统固件MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备计算的新系统固件MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值一致,则引导程序将引导新系统固件正常启动;到此步骤为止,整个远程升级过程成功,系统重新启动后,设备根据非易失性存储器参数空间中的状态机和其他标志判断升级结果后,向升级服务器返回升级结果;将状态机恢复为第一状态,同时将第一状态写入非易失性存储器参数空间中;
步骤九、后续正常运行时发生关机重新启动或升级过程任意步骤中发生意外断电后重新启动时,状态机可能是八种状态中的任意一种:若启动时状态机处于第一状态,则根据所述步骤二至步骤八执行升级过程;若启动时状态机处于第二状态,则根据所述步骤三至步骤八执行升级过程;若启动时状态机处于第三状态,则根据所述步骤四至步骤八执行升级过程;若启动时状态机处于第四状态,则根据所述步骤五至步骤八执行升级过程;若启动时状态机处于第五状态,则根据所述步骤六至步骤八执行升级过程;若启动时状态机处于第六状态,则根据所述步骤七至步骤八执行升级过程;若启动时状态机处于第七状态,则根据所述步骤八执行升级过程。
优选的,所述步骤二中的升级指令检查算法具体为:
步骤一、检查升级指令参数的格式是否为http网址格式;
步骤二、检查升级指令参数中是否包含有效IP地址;
步骤三、检查升级指令参数中固件差分包、目标固件包的大小是否在有效范围内,有效范围具体根据非易失性存储器中固件差分包空间和目标固件包空间大小而定;
步骤四、检查升级指令参数中原系统固件版本号与设备当前实际固件版本号是否一致;
步骤五、检查升级指令参数中设备硬件版本号与设备当前实际硬件版本号是否一致;
步骤六、全部通过则升级指令参数合法。
优选的,所述步骤三中的断点续传下载算法具体为:
步骤一、设备与下载服务器建立socket连接;
步骤二、设备通过HTTP报文向下载服务器每次请求下载一个字节的数据包,具体通过“Content-Range”字段来控制请求的长度和位置;
步骤三、设备将HTTP下载成功的数据包写入非易失性存储器固件差分包空间中,并在非易失性存储器参数空间中记录下已经下载成功的长度和位置;
步骤四、若由于网络信号质量差发生与下载服务器的socket连接中断,待网络信号质量恢复时设备会自动重建socket连接,并从非易失性存储器参数空间中读取步骤三中所述的长度和位置,继续通过所述步骤二来下载;
步骤五、若由于意外断电发生socket连接中断,待设备重启后,设备进入步骤四所述状态,则设备继续重建socket连接,并从非易失性存储器参数空间中读取步骤三中所述的长度和位置,继续通过所述步骤二来下载;
步骤六、全部数据下载完成后,设备关闭socket网络连接。
优选的,所述步骤七中的重启条件具体为:
步骤一、设备使用电池供电时电池剩余电量满足升级所需最低电量要求;
步骤二、设备无正在处理或待处理的服务器端或业务相关的任务需要执行;
步骤三、设备无正在会处理或待处理地与其他设备业务相关的任务需要执行;
步骤四、特别地,若设备重启涉及其他系统的安全性的临时缺失,则必须向该系统发送请求获得许可;
步骤五、若无以上要求,则设备可以直接重启。
优选的,所述任一步骤中发生意外断电时的保护步骤具体为:
步骤一、涉及状态机切换时,需要等待此状态下任务步骤执行完毕,然后将新状态更新到非易失性存储器参数空间中,再切换到新状态下的任务继续执行;以此保证即使发生意外断电,设备重新上电后状态机状态可在此状态或新状态下继续执行;
步骤二、涉及固件下载时,需要等待当前一帧数据包下载完毕且写入到非易失性存储器固件差分包空间中,并且将本帧数据包的长度和位置写入到非易失性存储器参数空间中,再继续下一帧数据包的下载;以此保证即使发生意外断电,设备重新上电后,通过读取非易失性存储器参数空间中存储的状态机状态和当前已下载的固件长度和位置,可继续进行精确无误地下载;
步骤三、涉及引导程序空间中引导程序使用目标固件包空间中目标固件包对原系统固件空间中原系统固件覆盖时,需要等待覆盖完毕且MD5校验通过才能将目标固件包空间目标固件包作为原系统固件空间中新的系统固件进行引导启动;若覆盖任务执行到一半时发生意外断电,设备重新上电后引导程序空间中引导程序可以重新进行使用目标固件包空间中目标固件包对原系统固件空间中原系统固件覆盖的操作;即使所述覆盖任务连续多次仍然失败,则引导程序空间中引导程序可以使用源系统固件备份包空间中原系统固件备份包对原系统固件空间中原系统固件进行恢复,以此保证总有一个版本的固件可以成功执行;
步骤四、其他断电保护的场景以此类推,通过对非易失性存储器诸空间的合理划分引导程序空间、原系统固件空间、源系统固件备份包空间、目标固件包空间、固件差分包空间和参数空间参数的合理设置,可以使设备状态机和文件进行保护。
综上所述,本发明的有益效果是:
本发明提供的基于网络的设备固件高可靠性远程升级方法,使得设备固件的远程升级过程比较可靠,有效防止了下载过程信号不好、升级过程意外断电情况下导致升级过程中断或系统不可用等升级不可靠的问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于网络的设备固件高可靠性远程升级方法所述设备的设备与外部服务器关系和设备内部非易失性存储器空间的示意图;
图2为本发明基于网络的设备固件高可靠性远程升级方法的状态机流程图。
图中:100、设备;200、升级服务器;300、下载服务器;1001、引导程序空间;1002、原系统固件空间;1003、源系统固件备份包空间;1004、目标固件包空间;1005、固件差分包空间;1006、参数空间;4001、第一状态;4002、第二状态;4003、第三状态;4004、第四状态;4005、第五状态;4006、第六状态;4007、第七状态;4008、第八状态。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1-2所示的一种基于网络的设备固件高可靠性远程升级方法,包括以下步骤:
步骤一、设备100上电启动后,设备固件从设备非易失性存储器参数空间中读取状态机的状态值,如果是第一次启动,则读取到的状态机将处于第一状态4001,第一状态4001为空闲状态;如果不是第一次启动,则有可能是八种状态的中的任意一种,
步骤二、第一次启动,引导程序引导原系统固件运行,状态机处于第一状态4001,设备开始定时向升级服务器200申请新的固件差分包,升级服务器200应答后,设备100根据升级服务器200应答的升级指令检查算法检测升级服务器下发的升级指令参数是否合法:若升级指令参数不合法,则重复步骤二继续定时向升级服务器200申请新的固件差分包;若升级指令参数合法,则状态机进入第二状态4002,第二状态4002为开始升级状态,同时将第二状态4002写入设备非易失性存储器参数空间1006中;
步骤三、进入第二状态4002后,设备100开始通过断点续传下载算法向步骤二中升级指令参数中包含的下载服务器300地址发送下载固件差分包远程升级的申请:若固件差分包第一个数据包一直下载失败,超过一定次数则状态机进入第八状态4008,第八状态4008为升级错误状态,同时将第八状态4008写入设备非易失性存储器参数空间1006中,记录失败原因后,状态机恢复为第一状态4001,同时将第一状态4001写入设备非易失性存储器参数空间1006中,返回步骤二重新开始下一轮升级过程;若固件差分包第一个数据包下载成功并写入设备非易失性存储器固件差分包空间1005中,则状态机进入第三状态4003,第三状态4003为下载中状态,同时将第三状态4003写入设备非易失性存储器参数空间1006中;
步骤四、进入第三状态4003后,设备100继续通过断点续传下载算法向步骤二中升级指令参数中包含的下载服务器300地址发送下载固件差分包远程升级申请;若下载某一帧数据包时由于网络信号质量差下载失败,则自动重复下载此帧数据包;若固件差分包下载完成且设备100计算的固件差分包的MD5校验值与步骤二中升级指令参数中包含的固件差分包的MD5校验值不一致,则状态机进入第八状态4008,同时将第八状态4008写入设备非易失性存储器参数空间1006中,记录失败原因后,状态机恢复为第一状态4001,同时将第一状态4001写入设备非易失性存储器参数空间1006中,返回步骤二重新开始下一轮升级过程;若固件差分包下载完成且设备100计算的固件差分包的MD5校验值与步骤二中升级指令参数中包含的固件差分包的MD5校验值一致,则状态机进入第四状态4004,第四状态4004为下载成功状态,同时将第四状态4004写入设备非易失性存储器参数空间1006中;
步骤五、进入第四状态4004后,设备100通过将步骤四中非易失性存储器固件差分包空间1005中的固件差分包和非易失性存储器原系统固件备份包空间1003中的原系统固件备份包两者作为输入,执行还原算法,得到目标固件包,同时将目标固件包写入非易失性存储器目标固件包空间1004中;若还原算法运行失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备100计算的目标固件包的MD5校验值与步骤二中升级指令参数中包含的固件差分包的MD5校验值不一致,则重复执行还原算法;若还原算法连续多次失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备计算的目标固件包的MD5校验值与步骤二中升级指令参数中包含的目标固件的MD5校验值连续多次不一致,则状态机进入第八状态4008,同时将第八状态4008写入设备非易失性存储器参数空间1006中,记录失败原因后,状态机恢复为第一状态4001,同时将第一状态4001写入设备非易失性存储器参数空间1006中,返回步骤二重新开始下一轮升级过程;若还原算法运行成功,得到目标固件包,且设备100计算的目标固件包的MD5校验值与步骤二中升级指令参数中包含的目标固件的MD5校验值一致,则状态机进入第五状态4005,第五状态4005为还原成功状态,同时将第五状态4005写入设备非易失性存储器参数空间1006中;
步骤六、进入第五状态4005后,设备100设置升级类型标志为差分升级,同时将升级类型标志和状态机第五状态4005写入设备非易失性存储器参数空间1006中;状态机进入第六状态4006,第六状态4006为升级文件准备好状态;
步骤七、进入第六状态4006后,用于设备100升级的即替换原系统固件包的目标固件包已准备好,此时设备100开始定时检测是否满足系统重启条件;若设备100不满足重启条件,则重复步骤七继续判断;若设备100满足重启条件,则状态机进入第七状态4007,第七状态4007为升级文件写入状态,同时将第七状态4007写入非易失性存储器参数空间1006中;
步骤八、进入第七状态4007后,设备100自动触发系统重启,重启后设备100开始运行bootloader引导程序,引导程序根据对步骤四中的目标固件包进行读取和计算MD5校验值;若设备100计算的MD5校验值与步骤二中升级指令参数中包含的目标固件包的MD5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备100计算的MD5校验值与步骤二中升级指令参数中包含的目标固件包的MD5校验值一致,则将目标固件包空间1004的目标固件包覆盖原系统固件空间1002的原系统固件包;覆盖完成后,引导程序对新的系统固件包进行读取和计算MD5校验值,若设备100计算的新系统固件MD5校验值与步骤二中升级指令参数中包含的目标固件包的MD5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备计算的新系统固件MD5校验值与步骤二中升级指令参数中包含的目标固件包的MD5校验值一致,则引导程序将引导新系统固件正常启动;到此步骤为止,整个远程升级过程成功,系统重新启动后,设备100根据非易失性存储器参数空间1006中的状态机和其他标志判断升级结果后,向升级服务器200返回升级结果;将状态机恢复为第一状态4001,同时将第一状态4001写入非易失性存储器参数空间1006中;
步骤九、后续正常运行时发生关机重新启动或升级过程任意步骤中发生意外断电后重新启动时,状态机可能是八种状态中的任意一种:若启动时状态机处于第一状态4001,则根据步骤二至步骤八执行升级过程;若启动时状态机处于第二状态4002,则根据步骤三至步骤八执行升级过程;若启动时状态机处于第三状态4003,则根据步骤四至步骤八执行升级过程;若启动时状态机处于第四状态4004,则根据步骤五至步骤八执行升级过程;若启动时状态机处于第五状态4005,则根据步骤六至步骤八执行升级过程;若启动时状态机处于第六状态4006,则根据步骤七至步骤八执行升级过程;若启动时状态机处于第七状态4007,则根据步骤八执行升级过程。
步骤二中的升级指令检查算法具体为:
步骤一、检查升级指令参数的格式是否为http网址格式;
步骤二、检查升级指令参数中是否包含有效IP地址;
步骤三、检查升级指令参数中固件差分包、目标固件包的大小是否在有效范围内,有效范围具体根据非易失性存储器中固件差分包空间1005和目标固件包空间1004大小而定;
步骤四、检查升级指令参数中原系统固件版本号与设备100当前实际固件版本号是否一致;
步骤五、检查升级指令参数中设备硬件版本号与设备100当前实际硬件版本号是否一致;
步骤六、全部通过则升级指令参数合法。
步骤三中的断点续传下载算法具体为:
步骤一、设备100与下载服务器300建立socket连接;
步骤二、设备100通过HTTP报文向下载服务器300每次请求下载一个1024字节的数据包,具体通过“Content-Range”字段来控制请求的长度和位置;
步骤三、设备100将HTTP下载成功的数据包写入非易失性存储器固件差分包空间1005中,并在非易失性存储器参数空间1006中记录下已经下载成功的长度和位置;
步骤四、若由于网络信号质量差发生与下载服务器300的socket连接中断,待网络信号质量恢复时设备会自动重建socket连接,并从非易失性存储器参数空间1006中读取步骤三中的长度和位置,继续通过步骤二来下载;
步骤五、若由于意外断电发生socket连接中断,待设备100重启后,设备100进入步骤四状态,则设备100继续重建socket连接,并从非易失性存储器参数空间1006中读取步骤三中的长度和位置,继续通过步骤二来下载;
步骤六、全部数据下载完成后,设备100关闭socket网络连接。
步骤七中的重启条件具体为:
步骤一、设备100使用电池供电时电池剩余电量满足升级所需最低电量要求;
步骤二、设备100无正在处理或待处理的服务器端200或300业务相关的任务需要执行;
步骤三、设备100无正在会处理或待处理地与其他设备业务相关的任务需要执行;
步骤四、特别地,若设备100重启涉及其他系统的安全性的临时缺失,则必须向该系统发送请求获得许可;
步骤五、若无以上要求,则设备100可以直接重启。
任一步骤中发生意外断电时的保护步骤具体为:
步骤一、涉及状态机切换时,需要等待此状态下任务步骤执行完毕,然后将新状态更新到非易失性存储器参数空间1006中,再切换到新状态下的任务继续执行;以此保证即使发生意外断电,设备100重新上电后状态机状态可在此状态或新状态下继续执行,不会发生混乱;
步骤二、涉及固件下载时,需要等待当前一帧数据包下载完毕且写入到非易失性存储器固件差分包空间1005中,并且将本帧数据包的长度和位置写入到非易失性存储器参数空间1006中,再继续下一帧数据包的下载;以此保证即使发生意外断电,设备重新上电后,通过读取非易失性存储器参数空间1006中存储的状态机状态和当前已下载的固件长度和位置,可继续进行精确无误地下载,即固件的完整性将得到保证;
步骤三、涉及引导程序空间1001中引导程序使用目标固件包空间1004中目标固件包对原系统固件空间1002中原系统固件覆盖时,需要等待覆盖完毕且MD5校验通过才能将目标固件包空间1004目标固件包作为原系统固件空间1002中新的系统固件进行引导启动;若覆盖任务执行到一半时发生意外断电,设备100重新上电后引导程序空间1001中引导程序可以重新进行使用目标固件包空间1004中目标固件包对原系统固件空间1002中原系统固件覆盖的操作;即使覆盖任务连续多次仍然失败,则引导程序空间1001中引导程序可以使用源系统固件备份包空间1003中原系统固件备份包对原系统固件空间1002中原系统固件进行恢复,以此保证总有一个版本的固件可以成功执行,保证了系统的可用性;
步骤四、其他断电保护的场景以此类推,通过对非易失性存储器诸空间的合理划分引导程序空间1001、原系统固件空间1002、源系统固件备份包空间1003、目标固件包空间1004、固件差分包空间1005和参数空间1006参数的合理设置,可以使设备100状态机和文件进行保护,进而提高了升级过程的可靠性。
最后应说明的是:以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于网络的设备固件高可靠性远程升级方法,其特征在于,包括以下步骤:
步骤一、设备(100)上电启动后,设备固件从设备非易失性存储器参数空间中读取状态机的状态值,如果是第一次启动,则读取到的状态机将处于第一状态(4001),第一状态(4001)为空闲状态;所述如果不是第一次启动,则有可能是八种状态的中的任意一种,
步骤二、第一次启动,引导程序引导原系统固件运行,状态机处于第一状态(4001),设备开始定时向升级服务器(200)申请新的固件差分包,升级服务器(200)应答后,设备(100)根据升级服务器(200)应答的升级指令检查算法检测升级服务器下发的升级指令参数是否合法:若所述升级指令参数不合法,则重复步骤二继续定时向升级服务器(200)申请新的固件差分包;若所述升级指令参数合法,则状态机进入第二状态(4002),第二状态(4002)为开始升级状态,同时将第二状态(4002)写入设备非易失性存储器参数空间(1006)中;
步骤三、进入第二状态(4002)后,设备(100)开始通过断点续传下载算法向步骤二中所述升级指令参数中包含的下载服务器(300)地址发送下载固件差分包远程升级的申请:若固件差分包第一个数据包一直下载失败,超过一定次数则状态机进入第八状态(4008),第八状态(4008)为升级错误状态,同时将第八状态(4008)写入设备非易失性存储器参数空间(1006)中,记录失败原因后,状态机恢复为第一状态(4001),同时将第一状态(4001)写入设备非易失性存储器参数空间(1006)中,返回步骤二重新开始下一轮升级过程;若固件差分包第一个数据包下载成功并写入设备非易失性存储器固件差分包空间(1005)中,则状态机进入第三状态(4003),第三状态(4003)为下载中状态,同时将第三状态(4003)写入设备非易失性存储器参数空间(1006)中;
步骤四、进入第三状态(4003)后,设备(100)继续通过断点续传下载算法向步骤二中升级指令参数中包含的下载服务器(300)地址发送下载固件差分包远程升级申请;若下载某一帧数据包时由于网络信号质量差下载失败,则自动重复下载此帧数据包;若固件差分包下载完成且设备(100)计算的固件差分包的MD5校验值与步骤二中所述升级指令参数中包含的固件差分包的MD5校验值不一致,则状态机进入第八状态(4008),同时将第八状态(4008)写入设备非易失性存储器参数空间(1006)中,记录失败原因后,状态机恢复为第一状态(4001),同时将第一状态(4001)写入设备非易失性存储器参数空间(1006)中,返回步骤二重新开始下一轮升级过程;若固件差分包下载完成且设备(100)计算的固件差分包的MD5校验值与步骤二中所述升级指令参数中包含的固件差分包的MD5校验值一致,则状态机进入第四状态(4004),第四状态(4004)为下载成功状态,同时将第四状态(4004)写入设备非易失性存储器参数空间(1006)中;
步骤五、进入第四状态(4004)后,设备(100)通过将所述步骤四中所述非易失性存储器固件差分包空间(1005)中的固件差分包和非易失性存储器原系统固件备份包空间(1003)中的原系统固件备份包两者作为输入,执行还原算法,得到目标固件包,同时将目标固件包写入非易失性存储器目标固件包空间(1004)中;若还原算法运行失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备(100)计算的目标固件包的MD5校验值与步骤二中所述升级指令参数中包含的固件差分包的MD5校验值不一致,则重复执行还原算法;若还原算法连续多次失败,无法得到目标固件包,或虽然还原得到了目标固件包,但设备计算的目标固件包的MD5校验值与步骤二中所述升级指令参数中包含的目标固件的MD5校验值连续多次不一致,则状态机进入第八状态(4008),同时将第八状态(4008)写入设备非易失性存储器参数空间(1006)中,记录失败原因后,状态机恢复为第一状态(4001),同时将第一状态(4001)写入设备非易失性存储器参数空间(1006)中,返回步骤二重新开始下一轮升级过程;若还原算法运行成功,得到目标固件包,且设备(100)计算的目标固件包的MD5校验值与步骤二中所述升级指令参数中包含的目标固件的MD5校验值一致,则状态机进入第五状态(4005),第五状态(4005)为还原成功状态,同时将第五状态(4005)写入设备非易失性存储器参数空间(1006)中;
步骤六、进入第五状态(4005)后,设备(100)设置升级类型标志为差分升级,同时将升级类型标志和状态机第五状态(4005)写入设备非易失性存储器参数空间(1006)中;状态机进入第六状态(4006),第六状态(4006)为升级文件准备好状态;
步骤七、进入第六状态(4006)后,用于设备(100)升级的即替换原系统固件包的目标固件包已准备好,此时设备(100)开始定时检测是否满足系统重启条件;若设备(100)不满足重启条件,则重复步骤七继续判断;若设备(100)满足重启条件,则状态机进入第七状态(4007),所述第七状态(4007)为升级文件写入状态,同时将第七状态(4007)写入非易失性存储器参数空间(1006)中;
步骤八、进入第七状态(4007)后,设备(100)自动触发系统重启,重启后设备(100)开始运行bootloader引导程序,引导程序根据对步骤四中所述的目标固件包进行读取和计算MD5校验值;若设备(100)计算的MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备(100)计算的MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值一致,则将目标固件包空间(1004)的目标固件包覆盖原系统固件空间(1002)的原系统固件包;覆盖完成后,引导程序对新的系统固件包进行读取和计算MD5校验值,若设备(100)计算的新系统固件MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值不一致,则引导程序跳过升级步骤继续引导原系统固件正常启动;若设备计算的新系统固件MD5校验值与步骤二中所述升级指令参数中包含的目标固件包的MD5校验值一致,则引导程序将引导新系统固件正常启动;到此步骤为止,整个远程升级过程成功,系统重新启动后,设备(100)根据非易失性存储器参数空间(1006)中的状态机和其他标志判断升级结果后,向升级服务器(200)返回升级结果;将状态机恢复为第一状态(4001),同时将第一状态(4001)写入非易失性存储器参数空间(1006)中;
步骤九、后续正常运行时发生关机重新启动或升级过程任意步骤中发生意外断电后重新启动时,状态机可能是八种状态中的任意一种:若启动时状态机处于第一状态(4001),则根据所述步骤二至步骤八执行升级过程;若启动时状态机处于第二状态(4002),则根据所述步骤三至步骤八执行升级过程;若启动时状态机处于第三状态(4003),则根据所述步骤四至步骤八执行升级过程;若启动时状态机处于第四状态(4004),则根据所述步骤五至步骤八执行升级过程;若启动时状态机处于第五状态(4005),则根据所述步骤六至步骤八执行升级过程;若启动时状态机处于第六状态(4006),则根据所述步骤七至步骤八执行升级过程;若启动时状态机处于第七状态(4007),则根据所述步骤八执行升级过程。
2.一种根据权利要求1所述的可以远程管控的电动车限流限电方法,其特征在于,所述步骤二中的升级指令检查算法具体为:
步骤一、检查升级指令参数的格式是否为http网址格式;
步骤二、检查升级指令参数中是否包含有效IP地址;
步骤三、检查升级指令参数中固件差分包、目标固件包的大小是否在有效范围内,有效范围具体根据非易失性存储器中固件差分包空间(1005)和目标固件包空间(1004)大小而定;
步骤四、检查升级指令参数中原系统固件版本号与设备(100)当前实际固件版本号是否一致;
步骤五、检查升级指令参数中设备硬件版本号与设备(100)当前实际硬件版本号是否一致;
步骤六、全部通过则升级指令参数合法。
3.根据权利要求2所述的一种基于网络的设备固件高可靠性远程升级方法,其特征在于:所述步骤三中的断点续传下载算法具体为:
步骤一、设备(100)与下载服务器(300)建立socket连接;
步骤二、设备(100)通过HTTP报文向下载服务器(300)每次请求下载一个(1024)字节的数据包,具体通过“Content-Range”字段来控制请求的长度和位置;
步骤三、设备(100)将HTTP下载成功的数据包写入非易失性存储器固件差分包空间(1005)中,并在非易失性存储器参数空间(1006)中记录下已经下载成功的长度和位置;
步骤四、若由于网络信号质量差发生与下载服务器(300)的socket连接中断,待网络信号质量恢复时设备会自动重建socket连接,并从非易失性存储器参数空间(1006)中读取步骤三中所述的长度和位置,继续通过所述步骤二来下载;
步骤五、若由于意外断电发生socket连接中断,待设备(100)重启后,设备(100)进入步骤四所述状态,则设备(100)继续重建socket连接,并从非易失性存储器参数空间(1006)中读取步骤三中所述的长度和位置,继续通过所述步骤二来下载;
步骤六、全部数据下载完成后,设备(100)关闭socket网络连接。
4.根据权利要求3所述的一种基于网络的设备固件高可靠性远程升级方法,其特征在于:所述步骤七中的重启条件具体为:
步骤一、设备(100)使用电池供电时电池剩余电量满足升级所需最低电量要求;
步骤二、设备(100)无正在处理或待处理的服务器端(200)或(300)业务相关的任务需要执行;
步骤三、设备(100)无正在会处理或待处理地与其他设备业务相关的任务需要执行;
步骤四、特别地,若设备(100)重启涉及其他系统的安全性的临时缺失,则必须向该系统发送请求获得许可;
步骤五、若无以上要求,则设备(100)可以直接重启。
5.根据权利要求4所述的一种基于网络的设备固件高可靠性远程升级方法,其特征在于:所述任一步骤中发生意外断电时的保护步骤具体为:
步骤一、涉及状态机切换时,需要等待此状态下任务步骤执行完毕,然后将新状态更新到非易失性存储器参数空间(1006)中,再切换到新状态下的任务继续执行;以此保证即使发生意外断电,设备(100)重新上电后状态机状态可在此状态或新状态下继续执行;
步骤二、涉及固件下载时,需要等待当前一帧数据包下载完毕且写入到非易失性存储器固件差分包空间(1005)中,并且将本帧数据包的长度和位置写入到非易失性存储器参数空间(1006)中,再继续下一帧数据包的下载;以此保证即使发生意外断电,设备重新上电后,通过读取非易失性存储器参数空间(1006)中存储的状态机状态和当前已下载的固件长度和位置,可继续进行精确无误地下载;
步骤三、涉及引导程序空间(1001)中引导程序使用目标固件包空间(1004)中目标固件包对原系统固件空间(1002)中原系统固件覆盖时,需要等待覆盖完毕且MD5校验通过才能将目标固件包空间(1004)目标固件包作为原系统固件空间(1002)中新的系统固件进行引导启动;若覆盖任务执行到一半时发生意外断电,设备(100)重新上电后引导程序空间(1001)中引导程序可以重新进行使用目标固件包空间(1004)中目标固件包对原系统固件空间(1002)中原系统固件覆盖的操作;即使所述覆盖任务连续多次仍然失败,则引导程序空间(1001)中引导程序可以使用源系统固件备份包空间(1003)中原系统固件备份包对原系统固件空间(1002)中原系统固件进行恢复,以此保证总有一个版本的固件可以成功执行;
步骤四、其他断电保护的场景以此类推,通过对非易失性存储器诸空间的合理划分引导程序空间(1001)、原系统固件空间(1002)、源系统固件备份包空间(1003)、目标固件包空间(1004)、固件差分包空间(1005)和参数空间(1006)参数的合理设置,可以使设备(100)状态机和文件进行保护。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310343107.5A CN116382753A (zh) | 2023-03-31 | 2023-03-31 | 一种基于网络的设备固件高可靠性远程升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310343107.5A CN116382753A (zh) | 2023-03-31 | 2023-03-31 | 一种基于网络的设备固件高可靠性远程升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116382753A true CN116382753A (zh) | 2023-07-04 |
Family
ID=86972689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310343107.5A Pending CN116382753A (zh) | 2023-03-31 | 2023-03-31 | 一种基于网络的设备固件高可靠性远程升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116382753A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841591A (zh) * | 2023-08-30 | 2023-10-03 | 杭州炬源智能科技有限公司 | 计量设备的固件升级方法、系统以及介质 |
-
2023
- 2023-03-31 CN CN202310343107.5A patent/CN116382753A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116841591A (zh) * | 2023-08-30 | 2023-10-03 | 杭州炬源智能科技有限公司 | 计量设备的固件升级方法、系统以及介质 |
CN116841591B (zh) * | 2023-08-30 | 2023-12-26 | 杭州炬源智能科技有限公司 | 计量设备的固件升级方法、系统以及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608706B (zh) | 一种基于功能模块的应用程序自动热更新方法 | |
WO2017067448A1 (zh) | 一种无线固件升级方法、系统及计算机存储介质 | |
US6892255B2 (en) | Program install method, file renewal method, program and computer system | |
CN100525206C (zh) | 自动恢复设备故障的实现方法及系统 | |
JP5113700B2 (ja) | ファームウェア更新装置及び方法 | |
CN109491698B (zh) | 基于热补丁的系统更新方法及装置 | |
CN109634638B (zh) | 一种集群软件升级方法、装置、设备及介质 | |
CN116382753A (zh) | 一种基于网络的设备固件高可靠性远程升级方法 | |
WO2022094855A1 (zh) | 固件升级方法及电子设备 | |
CN111651304B (zh) | 基于双芯智能电表的软件恢复方法、装置和计算机设备 | |
CN110597532A (zh) | 一种数据采集模块及其固件升级方法和存储介质 | |
CN111090546A (zh) | 一种操作系统重启方法、装置、设备及可读存储介质 | |
CN112732412B (zh) | 一种服务配置文件处理方法、装置、存储介质及电子设备 | |
CN112269692A (zh) | 一种网络摄像机远程升级断电自恢复机制 | |
CN113032183A (zh) | 系统管理方法、装置、计算机设备和存储介质 | |
WO2012097570A1 (zh) | 实现软件版本同步的方法及装置 | |
CN116909611A (zh) | 电子设备固件更新方法、清洁设备以及存储介质 | |
JP2005284902A (ja) | 端末装置、その制御方法及び制御プログラム、ホスト装置、その制御方法及び制御プログラム、遠隔更新システム、方法及びプログラム | |
CN114546455A (zh) | 一种双分区的mcu软件升级方法及装置 | |
CN114035831B (zh) | 一种cpld升级方法、系统及计算机可读存储介质 | |
JP2011053780A (ja) | 復旧システム、復旧方法及びバックアップ制御システム | |
CN114995852A (zh) | 一种设备升级方法、设备及计算机可读存储介质 | |
JP2001331379A (ja) | フラッシュメモリ更新プログラムの書き換え方法及び装置 | |
JP2004361994A (ja) | データ管理装置、データ管理方法及びプログラム | |
CN105282614B (zh) | 一种模块电视的升级方法、模块电视及升级系统 |
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 |