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

5G通信电源固件更新方法及更新装置与流程

2021-11-17 23:53:00 来源:中国专利 TAG:

5g通信电源固件更新方法及更新装置
技术领域
1.本发明涉及固定更新技术领域,特别涉及一种5g通信电源固件更新方法及更新装置。


背景技术:

2.在通信电源领域,由于数字微处理器(mcu)计算性能的提升,越来越多的电源产品采用mcu作为控制核心,即数字化控制方式,在复杂的多系统业务中,相对模拟控制电源,数字控制电源是通过软件编程来实现多方面的控制应用,其具备的可扩展性与重复使用性使用户可以方便更改工作参数,优化升级电源系统。
3.由于mcu是通过软件编程实现,软件变更功能后需要经过编译,把编译生成的固件烧录到mcu的flash中运行,所以当系统功能的需求发生变更时,就需要不断更新升级mcu中运行的固件。目前一般是通过串行通信方式把数据发送给mcu,mcu执行一段升级程序把固件烧录到内部的flash中,实现对固件的更新。固件是mcu正确运行的基础,如果固件更新时数据出错或者缺失,就会导致整个电源系统失效。
4.目前,常规的固件更新方法有以下两种:
5.一种是采用单固件区方式,即在mcu内部flash中分配一个应用固件区,更新固件的时候需要把当前运行的应用固件区擦除,再写入新的应用固件。采用这种更新方式,由于mcu中只需分配一个固件区,因此能最大化的利用mcu的内部flash空间;但是由于更新固件的时候需要先擦除当前固件,所以如果在更新过程中失败或者数据错误就会造成不可恢复的后果,导致整个系统失效。
6.另一种是采用双固件区方式,即在mcu内部flash中分配两个应用固件区,更新固件的时候只需把另外一个应用固件区更新即可,从而不会擦除正在运行的应用固件区,更新完成后把mcu启动引导地址指向另外一个应用固件区即可完成更新。采用这种更新方式虽然可以避免固件更新失败后不可恢复这一问题,但是由于mcu的内部flash存储空间本身就比较有限,划分为两个固件区则降低了一半的空间利用率,因此存在不能最大化利用flash存储空间的问题,而且有的mcu并不支持两个固件区的启动跳转。
7.由于5g基站是分布式布置,如果基站通信电源设备的固件更新出现不可靠或者不可恢复的情况,势必会造成较大的维护成本。


技术实现要素:

8.本发明针对现有固件更新方法所存在的上述技术问题,提供一种5g通信电源固件更新方法及更新装置,可很好地解决固件更新过程中由于网络错误造成数据包重传或偶发短时断网时,导致固件更新失败的问题,以保证固件更新过程的可靠性及可恢复性。
9.为解决上述技术问题,本发明采用的技术方案如下:
10.一种5g通信电源固件更新方法,包括:
11.待更新设备初始化,进入更新主程序,启动升级状态机,所述升级状态机在接收到
升级指令后,从初始的空闲状态进入升级状态,接收发送的更新数据包,并写入待更新设备,当更新数据包接收完成后,所述升级状态机进入校验状态,对接收的更新数据包进行校验;
12.所述升级状态机进入升级状态时,触发容错状态机启动,所述容错状态机从初始的等待状态进入运行状态,判断更新数据包的接收间隔时间是否超时;
13.当容错状态机判断未发生超时,等待升级状态机反馈校验结果,若升级状态机数据校验成功,容错状态机进入跳转状态,跳转到固件程序,待更新设备固件更新完成;
14.当容错状态机判断发生超时或升级状态机数据校验失败,容错状态机从运行状态进入错误状态;所述容错状态机在错误状态下,持续检测是否有有效数据被接收,若在设定时间内有有效数据被接收,则进入等待状态,重新开始更新主程序。
15.上述技术方案中,进一步地,所述容错状态机在错误状态下,若在设定时间内没有数据被接收,则退出容错状态机并返回错误。
16.上述技术方案中,进一步地,所述容错状态机在进入跳转状态之前,判断待更新设备的固件程序是否完整,若完整则进入跳转状态,否则进入错误状态。
17.上述技术方案中,进一步地,在升级状态机进入升级状态时,若容错状态机在设定时间内未进入运行状态,则判断待更新设备的固件程序是否完整,若固件程序完整,容错状态机进入跳转状态,若固件程序不完整,容错状态机进入错误状态。
18.上述技术方案中,进一步地,所述容错状态机进入跳转状态后,判断跳转的堆栈地址是否正确,若正确则跳转到固件程序,退出容错状态机,并返回正确,否则跳转失败,进入错误状态;
19.优选在跳转到固件程序之前,判断容错状态机的返回值,若返回值为正确则跳转到固件程序,若返回值为错误,则待更新设备复位重启,并将固件更新状态标记设置为需要更新。
20.上述技术方案中,进一步地,在接收到升级指令后,根据固件更新状态标记判断是否需要进行固件更新;如果需要则启动容错状态机,如果不需要则直接跳转到固件程序。
21.上述技术方案中,进一步地,所述升级状态机在接收到结束升级指令后进入校验状态,同时接收用于数据校验的crc校验值;
22.优选在校验状态下,循环按地址读取待更新设备固件区存储的更新数据,计算固件区更新数据的crc校验值,与接收到的crc校验值对比,进行crc校验。
23.本发明中还提供一种5g通信电源固件更新方法,通过主机对待更新设备进行固件更新,包括以下步骤:
24.s01、开始更新主程序,待更新设备的mcu上电并初始化;主机向待更新设备发出升级指令;
25.s02、启动升级状态机,所述升级状态机的执行过程在空闲状态、升级状态与校验状态之间转换;
26.在初始状态下升级状态机处于空闲状态,当接收到升级指令后,进入升级状态,主机向待更新设备发送更新数据包;
27.在升级状态下持续接收更新数据包,当更新数据包接收完成,且接收到主机发送的结束升级指令后,进入校验状态;优选在升级状态下接收固件更新数据出错时,进入空闲
状态;
28.在校验状态下待更新设备循环按地址读取固件区存储的更新数据,计算固件区更新数据的crc校验值,与主机发送的crc校验值对比,进行crc校验;若对比一致则固件更新数据正确,校验成功,若对比不一致则固件更新数据错误,校验失败;将校验结果发送到主机,主机根据校验结果判断待更新设备是否更新成功;校验完成后升级状态机转换到空闲状态;
29.s03、更新主程序中断,等待步骤s02中升级状态机接收有效指令;
30.s04、判断是否需要执行固件更新,若不需要则直接跳转到待更新设备固件程序,若需要则启动容错状态机;
31.s05、所述容错状态机的执行过程在等待状态、运行状态、跳转状态与错误状态之间转换;
32.在初始状态下容错状态机处于等待状态,当升级状态机进入升级状态时,触发容错状态机进入运行状态;若在设定时间内升级状态机未进入升级状态,则判断待更新设备的固件程序是否完整,如果固件程序完整则进入跳转状态,如果固件程序不完整则进入错误状态;
33.在运行状态下判断更新数据包的接收间隔时间是否超过设定的时间,若超时则进入错误状态;若未超时,等待升级状态的校验结果,如果数据校验成功则进入跳转状态,否则进入错误状态;
34.在跳转状态下判断跳转的堆栈地址是否正确,若判断为错误则跳转失败,进入错误状态,若判断为正确则退出容错状态机并返回正确;优选在进入跳转状态之前,判断待更新设备的固件程序是否完整,若完整则进入跳转状态,否则进入错误状态;
35.在错误状态下持续检测是否有有效数据被接收,如果在设定的时间内没有有效数据被接收,则退出容错状态机并返回错误;如果有有效数据被接收,则进入等待程序,重新开始更新主程序;
36.s06、判断容错状态机的返回值,如果返回值为正确则执行跳转,跳转到固件程序,若返回值为错误,则待更新设备复位重启,并将待更新设备中的固件更新状态标记设置为需要更新;
37.s07、跳转并执行固定程序。
38.本发明中还提供一种5g通信电源固件更新装置,包括:
39.数据接收模块,所述数据接收模块用于接收主机发送的更新数据包、升级指令、结束升级指令及crc校验值;
40.升级状态机,所述升级状态机执行升级指令,将接收到的更新数据包写入待更新设备的固件区,并在接收到结束升级指令后对更新数据包进行crc校验;
41.容错状态机,所述容错状态机用于判断更新数据包的接收间隔时间是否超时,并根据判断结果和/或更新数据包的校验结果,判断是否跳转到固件程序或重新启动更新主程序。
42.上述技术方案中,进一步地,所述升级状态机的优先级要高于容错状态机,升级状态机可中断容错状态机的执行,或触发容错状态机的状态转换。
43.本发明采用升级状态机和容错状态机对固件更新流程进行分层处理,分别用于执
行数据的更新/校验及对数据传输错误或通信异常造成的超时进行处理,两个状态机之间相互作用、相互关联,可实现对设备固件数据的更新升级。
44.本发明在不对设备固件区进行分区处理的情况下,解决了固件更新过程中由于网络错误或偶发性断网造成固件更新失败的问题,使固件更新过程具有一定的容错能力及出错后可恢复的能力,避免了固件更新失败而导致系统失效等情况的发生。
附图说明
45.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
46.图1为本发明实施例中固件更新方法流程图;
47.图2为本发明实施例中升级状态机工作状态转换流程图;
48.图3为本发明实施例中容错状态机工作状态转换流程图。
具体实施方式
49.为了使本技术的目的、技术方案和优点更加清楚,下面结合附图对本技术具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
50.实施例一
51.本实施例中的5g通信电源固件更新方法,该固件更新方法对应待更新设备端执行,固件更新方法包括:
52.待更新设备初始化,进入更新主程序,启动升级状态机,所述升级状态机在接收到升级指令后,从初始的空闲状态进入升级状态,接收发送的更新数据包,并写入待更新设备,当更新数据包接收完成后,所述升级状态机进入校验状态,对接收的更新数据包进行校验;
53.所述升级状态机进入升级状态时,触发容错状态机启动,所述容错状态机从初始的等待状态进入运行状态,判断更新数据包的接收间隔时间是否超时;
54.当容错状态机判断未发生超时,等待升级状态机反馈校验结果,若升级状态机数据校验成功,容错状态机进入跳转状态,跳转到固件程序,待更新设备固件更新完成;
55.当容错状态机判断发生超时或升级状态机数据校验失败,容错状态机从运行状态进入错误状态;所述容错状态机在错误状态下,持续检测是否有有效数据被接收,若在设定时间内有有效数据被接收,则进入等待状态,重新开始更新主程序;若在设定时间内没有数据被接收,则退出容错状态机并返回错误。
56.容错状态机在进入跳转状态之前,判断待更新设备的固件程序是否完整,若完整则进入跳转状态,否则进入错误状态。
57.在升级状态机进入升级状态时,若容错状态机在设定时间内未进入运行状态,则判断待更新设备的固件程序是否完整,若固件程序完整,容错状态机进入跳转状态,若固件程序不完整,容错状态机进入错误状态。
58.容错状态机进入跳转状态后,判断跳转的堆栈地址是否正确,若正确则跳转到固件程序,退出容错状态机,并返回正确,否则跳转失败,进入错误状态。
59.在跳转到固件程序之前,判断容错状态机的返回值,若返回值为正确则跳转到固件程序,若返回值为错误,则待更新设备复位重启,并将固件更新状态标记设置为需要更新。
60.在接收到升级指令后,根据固件更新状态标记判断是否需要进行固件更新;如果需要则启动容错状态机,如果不需要则直接跳转到固件程序。
61.升级状态机在接收到结束升级指令后进入校验状态,同时接收用于数据校验的crc校验值;在校验状态下,循环按地址读取待更新设备固件区存储的更新数据,计算固件区更新数据的crc校验值,与接收到的crc校验值对比,进行crc校验,并将校验结果发送到主机。这里的更新数据包括待更新设备接收的更新数据包。
62.实施例二
63.如图1所示,本实施例中的5g通信电源固件更新方法,通过主机对待更新设备进行固件更新,包括以下步骤:
64.s01、开始更新主程序,待更新设备的mcu上电,进行系统始终和外设的初始化,包括对串行通信模块(即数据串口)的初始化。
65.s02、对数据串口初始化后,启动升级状态机,升级状态机进入空闲状态;这里升级状态机的执行和状态转换是在数据接收中断中进行的,中断程序的优先级要高于更新主循环程序的优先级,当数据串口接收到有效数据后,会中断执行过程中的更新主循环程序,并执行升级状态机程序。如图2所示,为升级状态机工作状态之间转换流程图,升级状态机在执行过程中的状态及状态之间的转换过程如下:
66.空闲状态:为升级状态机的初始状态,当未接收到有效指令如升级指令时,一直等待,直到接收到升级指令后,则进入升级状态;
67.升级状态:在进入升级状态后,首先擦除待更新设备的固件区,然后持续通过数据串口接收固件更新数据包,这里主机在向待更新设备传输固件更新数据时,由于固件的数据量较大,需要将固件更新数据拆分成多个数据包进行传输;此时在接收固件数据包时按照数据包的偏移地址将数据写入到mcu的固件区,当固件更新数据接收完成并写入到固件区后,且在接收到结束升级指令后,升级状态机进入校验状态;如果在升级状态中接收到的固件数据出错,则进入空闲状态;
68.校验状态:在进入校验状态后,循环按地址读取mcu内固件区的数据,并进行crc校验,与主机下发的crc校验值进行对比,经对比如果一致则反馈固件更新数据正确,校验成功,若不一致则反馈固件更新数据错误,校验失败;并将校验结果发送到主机,主机通过该校验结果判断是否升级成功;然后升级状态机转换到空闲状态,至此升级状态机完成一次完整的状态转换。
69.s03、更新主程序中断3秒,等待步骤s02中升级状态机接收有效指令。
70.s04、根据固件更新状态标记,判断是否需要执行固件更新,如果不需要执行固件更新,则直接跳转到该待更新设备固件程序,如果需要进行固件更新,则启动容错状态机。
71.s05、容错状态机在更新主循环程序中执行(即前台执行),而升级状态机是在中断中执行(即后台执行),即升级状态机优先级要比容错状态机优先级要高,可以随时中断容错状态机的执行;并且容错状态机的状态切换是以升级状态机的状态为基础来驱动的;如图3所示,为容错状态机工作状态之间的转换流程图,容错状态机在执行过程中的状态转换过程如下:
72.等待状态:为容错状态机的初始状态;当升级状态机进入升级状态,则启动容错状态机进入运行状态,反之,等待10s后若升级状态机未进入升级状态,则判定等待超时,此时判断mcu内的固件程序是否完整,如果固件程序完整则进入跳转状态,如果固件程序不完整,说明固件发生损坏,则进入错误状态;
73.运行状态:在进入运行状态后,说明此时升级状态机已经在开始更新固件数据,在运行状态下,主要任务是判断在更新数据包的接收过程中,两个数据包的接收时间间隔是否超过设定的时间,如可设置设定的时间为20s,如果在20s内没有收到有效的更新数据包,则判定为发生超时,容错状态机进入错误状态;若判定为未发生超时,则等待升级状态机反馈的固件数据校验结果,若数据校验成功,则进入跳转状态,否则进入错误状态;
74.跳转状态:只有在mcu中的固件程序完整且正确的情况下才进入跳转状态,否则进入错误状态;在进入该状态后首先判断跳转的堆栈地址是否正确,如果判断为错误,则跳转失败,则进入错误状态;如果判断为正确则退出容错状态机并返回正确;
75.错误状态:在错误状态下持续检测数据串口是否有有效数据被接收,如果在60s内都没有有效数据被接收,则退出容错状态机并返回错误;如果有有效数据被接收,则说明即将重新开始更新主程序,进入等待状态。
76.s06、判断容错状态机的返回值,如果返回值为正确则执行程序跳转,跳转到固件程序;如果返回值为错误则待更新设备的mcu复位重启,并将固件升级状态标记设置为需要更新。
77.s07、跳转并执行固件程序。
78.本发明中的固件更新方法,采用两个状态机进行分层处理,升级状态机在串口中断中运行,容错状态机在更新主循环程序中运行,且设置升级状态机的优先级高于容错状态机,而容错状态机的状态转换则是以升级状态机的状态为基础,两者在程序执行过程分别执行不同的流程,并相互关联,协同完成更新流程和数据容错处理流程,从而很好地解决了由于网络错误造成的数据包重传或偶发短时断网而造成固件更新失败的问题,并在出现错误时具有可恢复的特性,具备很好的容错能力和可恢复能力,确保5g通信电源设备的固件更新的可靠性。
79.同时,容错状态机中各状态中的判断时间可以进行单独设置,能够很好地兼容不同的通信错误工况。
80.实施例三
81.本实施例为执行上述固件更新程序的固件更新装置,用于执行并实现上述的固件更新方法,包括:
82.数据接收模块,所述数据接收模块用于接收主机发送的更新数据包、升级指令、结束升级指令及crc校验值;
83.升级状态机,所述升级状态机执行升级指令,将接收到的更新数据包写入待更新设备的固件区,并在接收到结束升级指令后对更新数据包进行crc校验;
84.容错状态机,所述容错状态机用于判断更新数据包的接收间隔时间是否超时,并根据判断结果和/或更新数据包的校验结果,判断是否跳转到固件程序或重新启动更新主程序。
85.其中,升级状态机的优先级要高于容错状态机,升级状态机可中断容错状态机的执行,或触发容错状态机的状态转换。
86.以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

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

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

相关文献