CN109842523A - 一种固件升级方法、装置、设备及存储介质 - Google Patents
一种固件升级方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109842523A CN109842523A CN201910114548.1A CN201910114548A CN109842523A CN 109842523 A CN109842523 A CN 109842523A CN 201910114548 A CN201910114548 A CN 201910114548A CN 109842523 A CN109842523 A CN 109842523A
- Authority
- CN
- China
- Prior art keywords
- data packet
- slave computer
- host computer
- computer
- request instruction
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种固件升级方法、装置、设备及存储介质,包括:下位机向上位机发送数据包的请求指令;其中,请求指令包含数据包编号;请求指令,用于指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机;下位机接收上位机发送的数据包,并将数据包存储到对应的存储位置;返回下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包;下位机采用固件升级包进行升级。本发明实施例能够提高固件升级的效率。
Description
技术领域
本发明实施例涉及数据升级技术,尤其涉及一种固件升级方法、装置、设备及存储介质。
背景技术
随着芯片技术的发展,各种嵌入式设备应运而生,嵌入式设备主要由主控芯片和各种执行机构组成,在主控芯片固件开发或设备功能维护中均需要对主控芯片内部固件进行固件升级。
现有技术中,对主控芯片进行固件升级有多种途径,可以通过主控芯片的各类外设,如通用同步/异步串行接收/发送器(Universal Synchronous/AsynchronousReceiver/Transmitter,USART)接口、通用串行总线(Universal Serial Bus,USB)接口、串行外设接口(Serial Peripheral Interface,SPI)和控制器局域网络(Controller AreaNetwork,CAN)总线接口等进行固件升级,在固件升级时,一般采取的方式是上位机发送一个或者多个数据包后等待下位机的应答信息,若超时没有接收到应答信息则重新向下位机发送数据包,直至接收到下位机的应答信息才进行其他数据包的发送。
然而,当上位机和下位机之间存在网络异常时,由于上位机迟迟接收不到下位机的应答信息,会出现上位机重复发送数据包的现象,导致数据被重复写入下位机的存储介质中,严重影响固件升级的效率。
发明内容
本发明实施例提供了一种固件升级方法、装置、设备及存储介质,以提高固件升级的效率。
第一方面,本发明实施例提供了一种固件升级方法,包括:
下位机向上位机发送数据包的请求指令;其中,所述请求指令包含数据包编号;所述请求指令,用于指示所述上位机将所述请求指令中包含的数据包编号对应的数据包发送给所述下位机;
所述下位机接收所述上位机发送的数据包,并将所述数据包存储到对应的存储位置;
返回所述下位机向所述上位机发送所述数据包的请求指令的操作,直至所述下位机接收到的数据包组成固件升级包;
所述下位机采用所述固件升级包进行升级。
第二方面,本发明实施例还提供了一种固件升级装置,包括:
请求发送模块,用于下位机向上位机发送数据包的请求指令;其中,所述请求指令包含数据包编号;所述请求指令,用于指示所述上位机将所述请求指令中包含的数据包编号对应的数据包发送给所述下位机;
数据接收模块,用于所述下位机接收所述上位机发送的数据包,并将所述数据包存储到对应的存储位置;
操作返回模块,用于返回所述下位机向所述上位机发送所述数据包的请求指令的操作,直至所述下位机接收到的数据包组成固件升级包;
固件升级模块,用于所述下位机采用所述固件升级包进行升级。
第三方面,本发明实施例还提供了一种设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例提供的固件升级方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例提供的固件升级方法。
本发明通过下位机向上位机发送包含数据包编号的请求指令,指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机,下位机在接收到上位机发送的数据包后,将数据包存储到对应的存储位置,并返回执行下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包,最终,下位机采用完整的固件升级包进行升级。即本发明中,下位机位于主导位置,在向上位机发送数据包的请求指令后,上位机才会发送对应的数据包,而非现有技术中,将上位机置于主导位置,在上位机发送数据包后,需要等待下位机的应答才可以进行后续操作,解决了现有的固件升级技术中,当上位机和下位机之间的网络异常时,由于上位机迟迟接收不到下位机的应答信息,从而重复发送数据包,导致数据被重复写入下位机的问题,实现了提高固件升级的效率的效果。
附图说明
图1是本发明实施例一提供的一种固件升级方法的流程图;
图2是本发明实施例二提供的一种固件升级方法的流程图;
图3是本发明实施例三提供的一种固件升级方法的流程图;
图4是本发明实施例三提供的一种具体实施方式的流程图;
图5是本发明实施例四提供的一种固件升级装置的结构示意图;
图6是本发明实施例五提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种固件升级方法的流程图,本实施例可适用于上位机对下位机中的固件进行在线升级的情况,该方法可以由固件升级装置来执行,该装置可以由硬件和/或软件构成,并可以集成在各种通用计算机设备中,一般的,上位机与下位机通过总线连接,一个上位机可以对应一个或者多个下位机,典型的,所述总线为CAN总线,所述上位机为总线端的控制器或者处理器,所述下位机为嵌入式设备,所述固件为主控芯片固件。
本发明实施例具体包括如下步骤:
步骤110、下位机向上位机发送数据包的请求指令。
其中,请求指令包含数据包编号;请求指令,用于指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机。
在本实施例中,在上位机与下位机确定建立通讯连接后,采用下位机主动请求机制,下位机向上位机发送包含数据包编号的请求指令,上位机在接收到请求指令后,对下位机请求的固件升级数据包进行应答。典型的,在CAN总线通讯标准帧中,每条指令(数据包)包括8字节数据,其中,在请求指令中可以将预设位置的字节数据作为针对本次升级的数据包编号。
在一个具体的例子中,在CAN总线通讯固件升级过程中,下位机在请求第一固件升级数据包时,向上位机发送请求指令:24 24 53 58 00 00 0D 0A,其中,24 24 53 58为下位机向上位机请求数据包的自定义字段,即当上位机接收到以24 24 53 58标识的指令时,确定是下位机在请求固件升级数据包的请求信息,故读取请求指令中预设位置上的针对本次升级的数据包编号,以便对下位机进行应答。在本例中,数据包编号位为第5和第6字节位,即00 00,第7和第8字节位为固定结尾字段,无具体含义。
步骤120、下位机接收上位机发送的数据包,并将数据包存储到对应的存储位置。
在本实施例中,当上位机接收到下位机发送的请求指令后,向下位机发送与请求指令中包含的数据包编号对应的数据包,下位机接收该数据包,并解析其中的数据信息,将可用于固件升级的数据信息存储在下位机中的对应存储位置,其中,可用于固件升级的数据信息可以是数据包中的全部数据信息,也可以是预设位置上的部分数据信息;确定对应的存储位置的方法可以是绝对寻址方法,也可以是相对寻址方法。典型的,可用于固件升级的数据信息是预设位置上的部分数据信息,例如,在8字节数据包中,规定数据包中的前4字节位为用于固件升级的数据信息位,其他字节位上的数据信息可用于存储数据包编号和/或校验信息。典型的,确定对应的存储位置的方法是绝对寻址方法,即固定存储所有固件升级数据信息的初始位置,并计算确定每一个数据信息字节的存储位置。
在一个具体的例子中,在CAN总线通讯固件升级过程中,当上位机接收到下位机发来的请求第一固件升级数据包的请求指令后,发送第一固件升级数据包18 08 00 20 0000 FF CF至下位机,在本例中,固件升级数据包的字节位设置如表1所示,其中,在8字节数据包中,前4字节位为用于固件升级的数据信息位,第5和第6字节位为存储数据包编号的数据位,第7字节位为预留数据位,第8字节位为异或校验信息位。下位机在接收到上位机发送的第一固件升级数据包后,解析其中的数据信息,当第一固件升级数据包中的数据包编号和校验信息均通过验证后,提取第一固件升级数据包中前4字节的数据信息,存储到下位机预先确定的存储位置中。
表1
步骤130、返回下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包。
在本实施例中,当下位机通过计算确定当前上位机发送的所有数据包不能组成针对本次升级的固件升级包时,返回执行步骤110,直至下位机确定收到的上位机发送的所有数据包可以组成针对本次升级的固件升级包为止,针对本次固件升级操作的数据包传输任务完成。
步骤140、下位机采用固件升级包进行升级。
在本实施例中,下位机通过执行存储于下位机中对应位置上的固件升级数据信息,实现本次固件升级操作。
本实施例的技术方案,通过下位机向上位机发送包含数据包编号的请求指令,指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机,下位机在接收到上位机发送的数据包后,将数据包存储到对应的存储位置,并返回执行下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包,最终,下位机采用完整的固件升级包进行升级。即本实施例的技术方案中,下位机位于主导位置,在向上位机发送数据包的请求指令后,上位机才会发送对应的数据包,而非现有技术中,将上位机置于主导位置,在上位机发送数据包后,需要等待下位机的应答才可以进行后续操作,解决了现有的固件升级技术中,当上位机和下位机之间的网络异常时,由于上位机迟迟接收不到下位机的应答信息,从而重复发送数据包,导致数据被重复写入下位机的问题,实现了提高固件升级的效率的效果。
实施例二
图2是本发明实施例二提供的一种固件升级方法的流程图,本实施例在上一实施例的基础上进一步细化,提供了在下位机向上位机发送数据包请求指令之前的具体实施步骤。下面结合图2对本发明实施例二提供的一种固件升级方法进行说明,包括以下步骤:
步骤210、下位机接收上位机发送的握手指令。
其中,握手指令是上位机发送的,用于请求与下位机建立通讯连接,实现针对本次固件升级操作中的数据传输任务的指令,握手指令中包含针对本次固件升级操作的数据包总数。
在本实施例中,上位机每隔预设时间段向下位机发送握手指令,直至接收到下位机的应答指令,确定与下位机建立了通讯连接为止。
在一个具体的例子中,在CAN总线通讯固件升级过程中,上位机在请求与下位机建立通讯连接时,向下位机发送握手指令:24 24 53 53 39 07 0D 0A,在本例中,握手指令的字节位设置如表2所示,其中,24 24 53 53为上位机请求与下位机建立通讯连接的自定义字段,即当下位机接收到以24 24 53 53标识的指令时,确定是上位机在请求建立通讯连接以传输数据包的握手信息,39 07为针对本次升级的数据包总数,即按照预设的通信协议,若上位机在每个数据包中发送4字节用于固件升级的数据信息,共需发送1849(0x0739)个数据包,0D 0A为固定结尾字段,无具体含义。
表2
字节1 | 字节2 | 字节3 | 字节4 | 字节5 | 字节6 | 字节7 | 字节8 |
24 | 24 | 53 | 53 | 数据包总数位 | 数据包总数位 | 0D | 0A |
可选的,在下位机接收上位机发送的握手指令之前,还包括:
上位机加载针对本次升级的固件升级包,确定固件升级包的大小;
上位机根据预设的通信协议,确定针对本次升级的数据包总数。
在本可选的技术方案中,在上位机发送握手指令之前,上位机需要根据待升级的固件升级包的大小,以及预设的通信协议(例如,在8字节数据包通讯协议中,每个数据包中用于固件升级的数据信息占4个字节)确定本次升级的数据包总数,将得到的数据包总数与预设的握手信息自定义字段组合,才可以得到针对本次升级的握手指令。
可选的,在下位机接收上位机发送的握手指令之前,还包括下位机初始化操作。
其中,下位机初始化操作包括下位机外设初始化操作和下位机变量初始化操作,下位机外设初始化操作用于对下位机芯片的外围设备进行初始化,所述外围设备包含但不限于通信接口、CAN总线接口以及定时器设备,所述变量包含但不限于数据包计数变量、数据包超时变量以及数据信息存储位置首地址。
在本可选的技术方案中,在下位机接收上位机发送的握手指令之前,下位机需要完成初始化操作,在完成初始化操作后,下位机才开始接收上位机发送的握手指令。
步骤220、下位机解析握手指令中包含的针对本次升级的数据包总数,并保存。
可选的,在下位机解析握手指令中包含的针对本次升级的数据包总数,并保存之后,还包括:
下位机向上位机发送针对握手指令的应答指令。
在一个具体的例子中,在CAN总线通讯固件升级过程中,上位机向下位机发送的握手指令为:24 24 53 53 39 07 0D 0A(指令具体含义与步骤210中举例相同),下位机接收到该握手指令后,解析指令中的数据包总数信息,即按照预设的通信协议,从握手指令中读取第5和第6字节位(0x39和0x07),组成数据包总数1849(0x0739),并将该数据包总数保存,用于后续确定固件升级数据信息的存储位置,之后,下位机向上位机发送针对握手指令的应答指令2424 53 53 81 01 0D 0A,其中,24 24 53 53同样为建立通讯连接的自定义字段,81 01为针对握手指令的应答指令标识,0D 0A为固定结尾字段,无具体含义。
步骤230、下位机向上位机发送数据包的请求指令;其中,请求指令包含数据包编号;请求指令,用于指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机。
步骤240、下位机接收上位机发送的数据包,并将数据包存储到对应的存储位置。
步骤250、返回下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包。
步骤260、下位机采用固件升级包进行升级。
本实施例的技术方案,提供了在下位机向上位机发送数据包请求指令之前的具体实施步骤,通过握手指令建立上位机与下位机的通讯连接,并在握手指令中添加数据包总数,以便下位机获取针对本次升级的数据包数量,以及发送相应的数据包编号至上位机,提高了下位机获取的数据包的准确性,进而提高了固件升级的效率。
可选的,在将数据包存储到对应的存储位置之后,还包括:
下位机读取数据包中的数据信息,并判断读取的数据信息与存储到对应的存储位置的数据信息是否一致;
若是,下位机更新再次发送的请求指令中的数据包编号;
若否,下位机向上位机重新发送当前读取的数据包的请求指令。
在本可选的技术方案中,采用二次读取机制来进一步确定下位机获取的数据包中的数据信息的准确性,即当下位机确定再次读取的数据包中的数据信息与存储到对应的存储位置的数据信息一致时,才会更新再次发送的请求指令中的数据包编号(数据包编号加1),向上位机请求下一数据包,否则,下位机需要重新发送当前读取的数据包的请求指令,直至经过二次读取机制确定再次读取的数据包中的数据信息与存储到对应的存储位置的数据信息一致为止。
本可选的技术方案,通过采用二次读取机制来进一步判断下位机获取的数据包中的数据信息与存储到对应的存储位置的数据信息是否一致,提高了下位机获取的固件升级数据信息的准确性,提高了固件升级的效率。
可选的,在更新再次发送的请求指令中的数据包编号之后,还包括:
下位机判断更新的数据包编号是否大于数据包总数;
若是,下位机结束向上位机发送数据包的请求指令的操作;
若否,下位机根据更新的数据包编号更新数据包的请求指令。
在本可选的技术方案中,在更新再次发送的请求指令中的数据包编号之后,还包括对更新的数据包编号进行判断的具体步骤,当更新的数据包编号大于数据包总数时,即当前数据包编号与数据包总数相同,说明本次升级的数据包已经全部由上位机发送至下位机中,下位机可以结束向上位机发送数据包的请求指令的操作;当更新的数据包编号不大于数据包总数时,说明本次升级的数据包还没有全部由上位机发送至下位机中,下位机需要继续使用更新的数据包编号更新数据包的请求指令,并将更新的请求指令发送至上位机。
本可选的技术方案,通过判断更新的数据包编号是否大于数据包总数,来确定本次升级的数据包是否已经全部由上位机发送至下位机中,从而控制数据包的请求指令的发送或者停止,使下位机可以准确接收所有针对本次升级的数据包,保证本次固件升级操作成功实现。
实施例三
图3是本发明实施例三提供的一种固件升级方法的流程图,本实施例在上述实施例的基础上进一步细化,提供了在下位机接收上位机发送的数据包之后的具体实施步骤。下面结合图3对本发明实施例三提供的一种固件升级方法进行说明,包括以下步骤:
步骤310、下位机接收上位机发送的握手指。
步骤320、下位机解析握手指令中包含的针对本次升级的数据包总数,并保存。
步骤330、下位机向上位机发送数据包的请求指令;其中,请求指令包含数据包编号;请求指令,用于指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机。
步骤340、下位机接收上位机发送的数据包,并将数据包存储到对应的存储位置。
步骤350、下位机判断接收到的当前数据包中的编号与当前数据包的请求指令中的数据包编号是否一致,且当前数据包中的数据信息的校验结果与当前数据包中的校验信息是否一致。若是,执行步骤360,若否,执行步骤370。
在本实施例中,增加了下位机对数据包中的编号以及校验信息进行验证的过程,下位机判断接收到的当前数据包中的编号与当前数据包的请求指令中的数据包编号是否一致,若一致,说明下位机接收到的数据包是下位机预先请求的数据包;下位机判断当前数据包中的数据信息的校验结果与当前数据包中的校验信息是否一致,若一致,说明下位机接收到的数据包中的数据信息与上位机中存储的对应数据信息是一致的,上述两个判断步骤可以并行执行也可以串行执行,对其执行顺序不做限定。
步骤360、下位机根据编号,确定与当前数据包中数据信息对应的存储位置,执行步骤380。
在本实施例中,当下位机接收到的当前数据包中的编号与当前数据包的请求指令中的数据包编号一致,且当前数据包中的数据信息的校验结果与当前数据包中的校验信息一致时,确定与当前数据包中数据信息对应的存储位置。
可选的,确定与当前数据包中数据信息对应的存储位置的计算公式为:数据信息对应的存储位置=数据信息存储位置首地址+每个数据包中固件升级数据位总数×当前数据包编号。
典型的,基于上述实施例,在CAN总线通讯固件升级过程中,每个数据包包括8个字节,其中,固件升级数据位总数为4个字节,则对应的,上述公式为:数据信息对应的存储位置=数据信息存储位置首地址+4×当前数据包编号。
本可选的技术方案,提供了一种确定与当前数据包中数据信息对应的存储位置的方法,保证了下位机通过绝对寻址,精准地对数据信息进行写入操作,提高了固件升级的成功率。
步骤370、下位机重新向上位机发送当前数据包的请求指令。
在本实施例中,当下位机接收到的当前数据包中的编号与当前数据包的请求指令中的数据包编号不一致,和/或当前数据包中的数据信息的校验结果与当前数据包中的校验信息不一致时,认为下位机接收到的当前数据包中的数据信息不正确,则下位机重新向上位机发送当前数据包的请求指令,重新获取对应的数据包。
步骤380、下位机将数据包存储到对应的存储位置。
步骤390、返回下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包。
步骤3100、下位机采用固件升级包进行升级
本实施例的技术方案,通过判断下位机接收到的当前数据包中的编号与当前数据包的请求指令中的数据包编号是否一致,且当前数据包中的数据信息的校验结果与当前数据包中的校验信息是否一致,来确定下位机接收到的当前数据包中的数据信息是否正确,即在本实施例中增加了对数据信息的验证过程,使下位机接收到的数据信息更加准确,保证了最终获取的固件升级包的正确性,提高了固件升级的效率。
可选的,在发送数据包请求指令至上位机之后,还包括:
若下位机预设时间内没有接收到,与数据包的请求指令中的数据包编号对应的数据包,重新向上位机发送数据包的请求指令。
本可选的技术方案,通过判断下位机发送请求指令后且没有接收到上位机发送的数据包时的时间长度是否大于预设时间,若大于,则说明上位机响应超时,下位机需要重新向上位机发送数据包的请求指令,通过这种机制,可以有效减少下位机等待上位机发送数据包的等待时间,提高固件升级效率。
可选的,在发送数据包请求指令至上位机之后,还包括:
若下位机接收到上位机发送的传输终止指令,结束向上位机发送数据包的请求指令的操作;其中,当上位机确定本次升级的数据包发送完毕时,发送传输终止指令。
在本可选的技术方案中,提供了另一种下位机结束向上位机发送数据包的请求指令的操作方式,即若下位机接收到上位机发送的传输终止指令,说明针对本次固件升级操作的数据传输任务结束,例如,在CAN总线通讯固件升级过程中,上位机向下位机发送的传输终止指令为:24 24 53 5A 18 00 0D 0A,其中,可以将24 24 53 5A 18 00作为标识数据传输任务结束的自定义字段,当下位机接收到该传输终止指令后,向上位机发送针对传输终止指令的应答信息,即返回24 24 53 58 81 00 0D 0A指令,表示本次固件升级操作中的数据信息传输任务完成。
本可选的技术方案,利用上位机向下位机发送的传输终止指令来结束下位机向上位机发送数据包的请求指令的操作,可以使下位机即时进入固件升级包的执行阶段,提高固件升级的效率。
具体的,以对包含STM32F042芯片的下位机进行CAN总线固件升级为例,说明本实施例的技术方案。升级过程中,上位机需要加载固件升级bin文件,本例中固件升级bin文件的大小约为7.22K,按照预设的通信协议(在8字节数据包通讯协议中,每个数据包中用于固件升级的数据信息占4个字节),确定上位机共需发送1849个数据包。如图4所示,首先对下位机中STM32F042芯片的外设以及变量进行初始化操作,包括对通信接口、CAN总线接口以及定时器设备的初始化操作以及对数据包计数变量、数据包超时变量以及数据信息存储位置首地址(首地址初始化为0x8000000)的初始化操作。在初始化完毕后的2秒内,下位机需接收上位机发送的握手指令,若下位机没有接收到上位机发送的握手指令,则本次升级结束并失败,若下位机接收到上位机发送的握手指令24 24 53 53 39 07 0D 0A,下位机解析握手指令中包含的针对本次升级的数据包总数,即握手指令中的第5和第6字节位组成的0x0739对应的数据包总数,并保存该数据,向上位机返回24 24 53 53 81 01 0D 0A指令,告知上位机当前通讯连接建立,同时,下位机清空存储介质中与数据包总数对应的存储空间,用于存储上位机发送的数据信息。下位机向上位机发送第一固件升级数据包的请求指令24 24 53 58 00 00 0D 0A,其中第5和第6字节位为所请求的数据包编号,上位机接收到下位机发来的请求指令后,向下位机发送第一固件升级数据包18 08 00 20 00 00 FF CF,其中,18 08 00 20为固件升级数据信息,00 00为数据包编号,CF为异或校验信息。下位机接收到上述第一固件升级数据包后,先判断接收到的是否为传输终止指令24 24 53 5A 1800 0D 0A,若是,下位机返回24 24 53 58 81 00 0D 0A指令,并结束向上位机发送数据包的请求指令的操作;若否,下位机判断接收到的当前数据包中的编号与第一固件升级数据包的请求指令中的数据包编号是否一致,且当前数据包中的数据信息的校验结果与当前数据包中的校验信息是否一致,若否,下位机重新向上位机发送第一固件升级数据包的请求指令24 24 53 58 00 00 0D 0A;若是,下位机根据编号0x00,计算第一固件升级数据包中数据信息对应的存储位置,计算公式为:数据信息对应的存储位置=0x8000000+4×当前数据包编号,并将第一固件升级数据包中获取的数据信息写入对应的存储位置中,而后,下位采用二次读取机制判断写入对应存储位置的数据与当前第一固件升级数据包中的数据信息是否一致,若否,下位机向上位机重新发送第一固件升级数据包的请求指令24 24 53 5800 00 0D 0A;若是,下位机在当前数据包编号上加1,得到更新的数据包编号,即第二固件升级数据包编号0x01,并判断更新的数据包编号是否大于数据包总数,若是,下位机结束向上位机发送数据包的请求指令的操作;若否,下位机根据更新的数据包编号,即第二固件升级数据包,更新数据包的请求指令,向上位机发送第二固件升级数据包的请求指令24 2453 58 01 00 0D 0A,直至下位机接收到的数据包组成固件升级包,下位机采用固件升级包进行升级。
实施例四
图5是本发明实施例四提供的一种固件升级装置的结构示意图,该装置包括:请求发送模块410、数据接收模块420、操作返回模块430和固件升级模块440。
请求发送模块410,用于下位机向上位机发送数据包的请求指令;其中,请求指令包含数据包编号;请求指令,用于指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机;
数据接收模块420,用于下位机接收上位机发送的数据包,并将数据包存储到对应的存储位置;
操作返回模块430,用于返回下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包;
固件升级模块440,用于下位机采用固件升级包进行升级。
本实施例的技术方案,通过下位机向上位机发送包含数据包编号的请求指令,指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机,下位机在接收到上位机发送的数据包后,将数据包存储到对应的存储位置,并返回执行下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包,最终,下位机采用完整的固件升级包进行升级。即本实施例的技术方案中,下位机位于主导位置,在向上位机发送数据包的请求指令后,上位机才会发送对应的数据包,而非现有技术中,将上位机置于主导位置,在上位机发送数据包后,需要等待下位机的应答才可以进行后续操作,解决了现有的固件升级技术中,当上位机和下位机之间的网络异常时,由于上位机迟迟接收不到下位机的应答信息,从而重复发送数据包,导致数据被重复写入下位机的问题,实现了提高固件升级的效率的效果。
可选的,在请求发送模块410之前,还包括:
握手指令接收模块,用于下位机接收上位机发送的握手指令;
总数解析模块,用于下位机解析握手指令中包含的针对本次升级的数据包总数,并保存。
可选的,在数据接收模块420之后,还包括:
第一判断模块,用于下位机判断接收到的当前数据包中的编号与当前数据包的请求指令中的数据包编号是否一致,且当前数据包中的数据信息的校验结果与当前数据包中的校验信息是否一致;
位置确定模块,用于若是,下位机根据编号,确定与当前数据包中数据信息对应的存储位置;
第一请求重发模块,用于若否,下位机重新向上位机发送当前数据包的请求指令。
可选的,在数据接收模块420之后,还包括,包括:
第二判断模块,用于下位机读取数据包中的数据信息,并判断读取的数据信息与存储到对应的存储位置的数据信息是否一致;
编号更新模块,用于若是,下位机更新再次发送的请求指令中的数据包编号;
第二请求重发模块,用于若否,下位机向上位机重新发送当前读取的数据包的请求指令。
可选的,在编号更新模块之后,还包括:
第三请求重发模块,用于下位机判断更新的数据包编号是否大于数据包总数;
第一操作结束模块,用于若是,下位机结束向上位机发送数据包的请求指令的操作;
请求更新模块,用于若否,下位机根据更新的数据包编号更新数据包的请求指令。
可选的,在请求发送模块410之后,还包括:
第三请求重发模块,用于若下位机预设时间内没有接收到,与数据包的请求指令中的数据包编号对应的数据包,重新向上位机发送数据包的请求指令。
可选的,在请求发送模块410之后,还包括:
第二操作结束模块,用于若下位机接收到上位机发送的传输终止指令,结束向上位机发送数据包的请求指令的操作;其中,当上位机确定本次升级的数据包发送完毕时,发送传输终止指令。
本发明实施例所提供的一种固件升级装置可执行本发明任意实施例所提供的一种固件升级方法,具备执行方法相应的功能模块和有益效果。
实施例五
图6为本发明实施例五提供的一种设备的结构示意图,如图6所示,该设备包括处理器50和存储器51;设备中处理器50的数量可以是一个或多个,图6中以两个处理器50为例;设备中的处理器50和存储器51可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种固件升级方法对应的程序指令/模块(例如,固件升级装置中的请求发送模块410、数据接收模块420、操作返回模块430和固件升级模块440)。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的固件升级方法。
存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种固件升级方法,该方法包括:
下位机向上位机发送数据包的请求指令;其中,请求指令包含数据包编号;请求指令,用于指示上位机将请求指令中包含的数据包编号对应的数据包发送给下位机;
下位机接收上位机发送的数据包,并将数据包存储到对应的存储位置;
返回下位机向上位机发送数据包的请求指令的操作,直至下位机接收到的数据包组成固件升级包;
下位机采用固件升级包进行升级。
当然,本发明实施例所提供的包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的固件升级方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述一种固件升级装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种固件升级方法,其特征在于,包括:
下位机向上位机发送数据包的请求指令;其中,所述请求指令包含数据包编号;所述请求指令,用于指示所述上位机将所述请求指令中包含的数据包编号对应的数据包发送给所述下位机;
所述下位机接收所述上位机发送的数据包,并将所述数据包存储到对应的存储位置;
返回所述下位机向所述上位机发送所述数据包的请求指令的操作,直至所述下位机接收到的数据包组成固件升级包;
所述下位机采用所述固件升级包进行升级。
2.根据权利要求1所述的方法,其特征在于,在所述下位机向上位机发送数据包请求指令之前,还包括:
所述下位机接收所述上位机发送的握手指令;
所述下位机解析所述握手指令中包含的针对本次升级的数据包总数,并保存。
3.根据权利要求1所述的方法,其特征在于,在所述下位机接收所述上位机发送的数据包之后,还包括:
所述下位机判断接收到的当前数据包中的编号与所述当前数据包的请求指令中的数据包编号是否一致,且所述当前数据包中的数据信息的校验结果与所述当前数据包中的校验信息是否一致;
若是,所述下位机根据所述编号,确定与所述当前数据包中数据信息对应的存储位置;
若否,所述下位机重新向所述上位机发送所述当前数据包的请求指令。
4.根据权利要求1-3任一所述的方法,其特征在于,在将所述数据包存储到对应的存储位置之后,还包括:
所述下位机读取所述数据包中的数据信息,并判断读取的所述数据信息与存储到对应的存储位置的所述数据信息是否一致;
若是,所述下位机更新再次发送的所述请求指令中的数据包编号;
若否,所述下位机向所述上位机重新发送当前读取的所述数据包的请求指令。
5.根据权利要求4所述的方法,其特征在于,在更新再次发送的所述请求指令中的数据包编号之后,还包括:
所述下位机判断更新的所述数据包编号是否大于数据包总数;
若是,所述下位机结束向所述上位机发送所述数据包的请求指令的操作;
若否,所述下位机根据更新的所述数据包编号更新所述数据包的请求指令。
6.根据权利要求1所述的方法,其特征在于,在所述发送数据包请求指令至上位机之后,还包括:
若所述下位机预设时间内没有接收到,与所述数据包的请求指令中的数据包编号对应的数据包,重新向所述上位机发送所述数据包的请求指令。
7.根据权利要求1所述的方法,其特征在于,在所述发送数据包请求指令至上位机之后,还包括:
若所述下位机接收到所述上位机发送的传输终止指令,结束向所述上位机发送所述数据包的请求指令的操作;其中,当所述上位机确定本次升级的数据包发送完毕时,发送所述传输终止指令。
8.一种固件升级装置,其特征在于,包括:
请求发送模块,用于下位机向上位机发送数据包的请求指令;其中,所述请求指令包含数据包编号;所述请求指令,用于指示所述上位机将所述请求指令中包含的数据包编号对应的数据包发送给所述下位机;
数据接收模块,用于所述下位机接收所述上位机发送的数据包,并将所述数据包存储到对应的存储位置;
操作返回模块,用于返回所述下位机向所述上位机发送所述数据包的请求指令的操作,直至所述下位机接收到的数据包组成固件升级包;
固件升级模块,用于所述下位机采用所述固件升级包进行升级。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的固件升级方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的固件升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910114548.1A CN109842523A (zh) | 2019-02-14 | 2019-02-14 | 一种固件升级方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910114548.1A CN109842523A (zh) | 2019-02-14 | 2019-02-14 | 一种固件升级方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109842523A true CN109842523A (zh) | 2019-06-04 |
Family
ID=66884694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910114548.1A Pending CN109842523A (zh) | 2019-02-14 | 2019-02-14 | 一种固件升级方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109842523A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427207A (zh) * | 2019-08-07 | 2019-11-08 | 成都易明半导体有限公司 | 一种基于集控器的led路灯控制器固件程序升级方法 |
CN110990042A (zh) * | 2019-12-20 | 2020-04-10 | 深圳市优必选科技股份有限公司 | 一种系统的升级方法、上位机和存储介质 |
CN111045710A (zh) * | 2019-11-22 | 2020-04-21 | 苏州浪潮智能科技有限公司 | 一种基于IPMI命令的SAS-Expander固件升级的方法、设备及介质 |
CN111246396A (zh) * | 2020-01-06 | 2020-06-05 | 杭州涂鸦信息技术有限公司 | 一种基于udp局域网的整机烧录方法及系统 |
CN111556117A (zh) * | 2020-04-22 | 2020-08-18 | 歌尔科技有限公司 | 耳机升级方法、装置、耳机控制方法、耳机组和存储介质 |
CN111623475A (zh) * | 2020-04-27 | 2020-09-04 | 海信(山东)空调有限公司 | 一种空调器室外eeprom的升级方法、装置、存储介质及空调器 |
CN112241283A (zh) * | 2020-10-30 | 2021-01-19 | 深圳市广和通无线股份有限公司 | 软件升级方法、装置、计算机设备和存储介质 |
CN112860287A (zh) * | 2021-01-18 | 2021-05-28 | 深圳市锐尔觅移动通信有限公司 | 系统程序升级方法、装置、计算机设备及存储介质 |
CN112909306A (zh) * | 2021-01-07 | 2021-06-04 | 武汉众宇动力系统科技有限公司 | 燃料电池测试台停机工作方法 |
CN114443095A (zh) * | 2022-01-21 | 2022-05-06 | 佛山市钒音科技有限公司 | 空调器升级方法、空调器 |
CN115150218A (zh) * | 2021-03-30 | 2022-10-04 | 广东博智林机器人有限公司 | 一种上位机与驱动器的串行通信方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546804A (zh) * | 2012-01-13 | 2012-07-04 | 深圳市朗赛尔科技有限公司 | 塔吊gps终端远程升级方法 |
KR101320347B1 (ko) * | 2012-04-25 | 2013-12-19 | 라이트웍스 주식회사 | 다수의 이더넷 스위치의 펌웨어 업그레드 방법 |
CN107957880A (zh) * | 2017-11-30 | 2018-04-24 | 广东美的暖通设备有限公司 | 空调固件升级方法、装置、空调和计算机设备 |
US20180227083A1 (en) * | 2017-02-03 | 2018-08-09 | Samsung Electro-Mechanics Co., Ltd. | Method for updating firmware of low power wide area module |
CN109117168A (zh) * | 2018-08-29 | 2019-01-01 | 拓攻(南京)机器人有限公司 | 无人机固件更新方法、装置、无人机及存储介质 |
-
2019
- 2019-02-14 CN CN201910114548.1A patent/CN109842523A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546804A (zh) * | 2012-01-13 | 2012-07-04 | 深圳市朗赛尔科技有限公司 | 塔吊gps终端远程升级方法 |
KR101320347B1 (ko) * | 2012-04-25 | 2013-12-19 | 라이트웍스 주식회사 | 다수의 이더넷 스위치의 펌웨어 업그레드 방법 |
US20180227083A1 (en) * | 2017-02-03 | 2018-08-09 | Samsung Electro-Mechanics Co., Ltd. | Method for updating firmware of low power wide area module |
CN108390772A (zh) * | 2017-02-03 | 2018-08-10 | 三星电机株式会社 | 用于更新低功率广域模块的固件的方法 |
CN107957880A (zh) * | 2017-11-30 | 2018-04-24 | 广东美的暖通设备有限公司 | 空调固件升级方法、装置、空调和计算机设备 |
CN109117168A (zh) * | 2018-08-29 | 2019-01-01 | 拓攻(南京)机器人有限公司 | 无人机固件更新方法、装置、无人机及存储介质 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427207A (zh) * | 2019-08-07 | 2019-11-08 | 成都易明半导体有限公司 | 一种基于集控器的led路灯控制器固件程序升级方法 |
CN110427207B (zh) * | 2019-08-07 | 2023-05-16 | 成都易明半导体有限公司 | 一种基于集控器的led路灯控制器固件程序升级方法 |
CN111045710A (zh) * | 2019-11-22 | 2020-04-21 | 苏州浪潮智能科技有限公司 | 一种基于IPMI命令的SAS-Expander固件升级的方法、设备及介质 |
CN111045710B (zh) * | 2019-11-22 | 2022-11-22 | 苏州浪潮智能科技有限公司 | 一种基于IPMI命令的SAS-Expander固件升级的方法、设备及介质 |
CN110990042A (zh) * | 2019-12-20 | 2020-04-10 | 深圳市优必选科技股份有限公司 | 一种系统的升级方法、上位机和存储介质 |
CN111246396B (zh) * | 2020-01-06 | 2021-11-09 | 杭州涂鸦信息技术有限公司 | 一种基于udp局域网的整机烧录方法及系统 |
CN111246396A (zh) * | 2020-01-06 | 2020-06-05 | 杭州涂鸦信息技术有限公司 | 一种基于udp局域网的整机烧录方法及系统 |
CN111556117A (zh) * | 2020-04-22 | 2020-08-18 | 歌尔科技有限公司 | 耳机升级方法、装置、耳机控制方法、耳机组和存储介质 |
CN111623475A (zh) * | 2020-04-27 | 2020-09-04 | 海信(山东)空调有限公司 | 一种空调器室外eeprom的升级方法、装置、存储介质及空调器 |
CN112241283A (zh) * | 2020-10-30 | 2021-01-19 | 深圳市广和通无线股份有限公司 | 软件升级方法、装置、计算机设备和存储介质 |
CN112909306A (zh) * | 2021-01-07 | 2021-06-04 | 武汉众宇动力系统科技有限公司 | 燃料电池测试台停机工作方法 |
CN112909306B (zh) * | 2021-01-07 | 2022-01-07 | 武汉众宇动力系统科技有限公司 | 燃料电池测试台停机工作方法 |
CN112860287A (zh) * | 2021-01-18 | 2021-05-28 | 深圳市锐尔觅移动通信有限公司 | 系统程序升级方法、装置、计算机设备及存储介质 |
CN115150218A (zh) * | 2021-03-30 | 2022-10-04 | 广东博智林机器人有限公司 | 一种上位机与驱动器的串行通信方法、装置及系统 |
CN114443095A (zh) * | 2022-01-21 | 2022-05-06 | 佛山市钒音科技有限公司 | 空调器升级方法、空调器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109842523A (zh) | 一种固件升级方法、装置、设备及存储介质 | |
CN105573810A (zh) | 一种无线传感器网络节点远程升级方法及装置 | |
CN101778378B (zh) | 一种固件节点更新方法、装置和系统 | |
CN107783777A (zh) | 一种车载一体机的升级方法、设备和系统 | |
CN101694622A (zh) | 一种多设备组合装置的固件远程升级方法及系统 | |
CN109002310A (zh) | 固件升级方法 | |
CN101403994A (zh) | 存储装置和存储装置访问控制方法 | |
CN103164244A (zh) | 一种基于通用可扩展固件接口的固件系统远程更新方法 | |
CN109086058A (zh) | 车载程序升级系统 | |
CN106874054A (zh) | 一种直放站内模块程序在线升级方法与系统 | |
CN108989103A (zh) | 设备升级方法、调试器、网络设备和网络系统 | |
CN109981360A (zh) | 物联网设备站点开通方法、装置、系统及存储介质 | |
CN107357595A (zh) | 一种基于总线的多驱动器固件在线更新系统 | |
CN107564175A (zh) | 一种退卡方法、退卡终端、移动网络运营端和退款终端 | |
CN104102519A (zh) | 机架式服务器系统的固件更新方法及其装置 | |
CN109901866A (zh) | 用于多模块系统的在线升级方法及旋转导向系统 | |
CN109388413A (zh) | 一种fpga程序更新方法及系统 | |
CN109814900A (zh) | 一种固件更新方法、装置及机器人关节的控制器 | |
CN107426770A (zh) | 基于数据链路层的数据通讯方法、数据终端及系统 | |
CN110505071A (zh) | 局域网内fpga板卡的远程更新方法、系统及相关装置 | |
US9170801B2 (en) | Data card updating method, personal computer, and data card | |
CN108769241B (zh) | 一种热泵机组远程控制的操作方法、装置及系统 | |
CN113867758A (zh) | 无人机自动升级方法、装置、无人机、遥控端及存储介质 | |
CN109358872A (zh) | 远程固件升级方法、装置及计算机可读存储介质 | |
CN105320534A (zh) | 单板的boot远程升级方法、装置及系统 |
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: 20190604 |
|
RJ01 | Rejection of invention patent application after publication |