固件升级方法、装置及存储介质
文献发布时间:2023-06-19 11:49:09
技术领域
本公开涉及固件升级技术领域,尤其涉及一种固件升级方法、装置及存储介质。
背景技术
OTA(Over The Air)空中下载技术是常用的固件升级方法。在应用过程中,首先需要将所有的固件升级包均打包至终端的存储介质中,然后再对打包至终端的存储介质中的固件升级包进行选择判断,确定哪些固件升级包为本终端需要进行升级的固件的升级包。由于存储介质中储存了大量的可能不需要进行升级的固件的升级包,进而占用了存储介质的空间,导致固件升级的效率低。
发明内容
为克服相关技术中存在的问题,本公开提供一种固件升级方法、装置及存储介质。
根据本公开实施例的第一方面,提供一种固件升级方法,所述固件升级方法应用于终端,包括:接收云服务端发送的广播消息,广播消息用于广播更新的固件类型;将与固件类型匹配的固件信息发送至云服务端;接收云服务端推送的与固件信息相对应的固件升级包。
在一种实施方式中,固件升级方法还包括:基于固件升级包的下载地址下载固件升级包,并基于固件升级包进行固件升级。
在另一种实施方式中,固件升级方法还包括:将固件升级包中包含的数据以指定数据格式写入存储介质分区;检测到终端开机后,读取存储介质分区中的数据,进行固件升级。
在又一种实施方式中,将与固件类型匹配的固件信息发送至云服务端,包括:终端接收到广播消息后,调用固件升级工具查看存储至终端本地的固件的产品序列号和固件版本号,并将固件的产品序列号和固件版本号发送至云服务端。
在又一种实施方式中,将与固件类型匹配的固件信息发送至云服务端,包括:将与固件类型匹配的固件信息以json格式,发送至云服务端。
在又一种实施方式中,固件升级方法还包括:接收云服务端发送的用于校验固件升级包完整性的校验码;基于校验码,对下载的固件升级包的完整性进行校验,并在校验通过时基于固件升级包进行固件升级。
在又一种实施方式中,固件升级方法还包括:在对下载的固件升级包的完整性校验失败时,重新基于下载地址下载固件升级包。
在又一种实施方式中,指定数据格式中包括:存储介质分区中固件升级区的标志位、固件的产品序列号、查找到的终端本地的固件的版本号、写入存储介质分区中固件升级区的固件的版本号、写入存储介质分区中固件升级区的固件的起始地址、写入存储介质分区中固件升级区的固件的大小。
在又一种实施方式中,读取存储介质分区中的数据,进行固件升级,包括:按照指定数据格式读取存储介质分区中的数据,并读取本地查找到的固件的产品序列号;在存储介质分区中数据包含的固件的产品序列号的信息与本地查找到的固件的产品序列号的信息一致时,将存储介质分区中的数据写入固件存储区域;在将存储介质分区中的数据写入固件存储区域成功时,调用机器重启指令进行终端重启,完成固件升级。
在又一种实施方式中,固件升级方法还包括:在将存储介质分区中的数据写入固件存储区域失败时,在电源管理集成电路的寄存器中设置表征升级失败的标志位。
根据本公开实施例的第二方面,提供一种固件升级方法,所述固件升级方法应用于云服务端,包括:在存在更新的固件时,发送广播消息,广播消息用于广播更新的固件类型;接收终端发送的与固件类型匹配的固件信息;发送与固件信息相对应的固件升级包至终端。
在一种实施方式中,固件升级方法还包括:发送与固件信息相对应的固件升级包的下载地址至终端。
在另一种实施方式中,接收终端发送的与固件类型匹配的固件信息,包括:以json格式接收终端发送的与固件类型匹配的固件信息。
在又一种实施方式中,固件升级方法还包括:向终端发送用于校验固件升级包完整性的校验码。
根据本公开实施例的第三方面,提供一种固件升级装置,应用于终端,包括:接收广播模块,用于接收云服务端发送的广播消息,广播消息用于广播更新的固件类型;发送固件信息模块,用于将固件类型匹配的固件信息发送至云服务端;接收固件升级包模块,用于接收云服务端推送的与固件信息相对应的固件升级包。
在一种实施方式中,固件升级装置还包括:升级模块,用于基于固件升级包的下载地址下载固件升级包,并基于固件升级包进行固件升级。
在另一种实施方式中,升级模块还用于:将固件升级包中包含的数据以指定数据格式写入存储介质分区;检测到终端开机后,读取存储介质分区中的数据,进行固件升级。
在又一种实施方式中,发送固件信息模块用于:终端接收到广播消息后,调用固件升级工具查看存储至终端本地的固件的产品序列号和固件版本号,并将固件的产品序列号和固件版本号发送至云服务端。
在又一种实施方式中,发送固件信息模块用于:将与固件类型匹配的固件信息以json格式,发送至云服务端。
在又一种实施方式中,接收固件升级包模块还用于:接收云服务端发送的用于校验固件升级包完整性的校验码;升级模块还用于:基于校验码,对下载的固件升级包的完整性进行校验,并在校验通过时基于固件升级包进行固件升级。
在又一种实施方式中,固件升级装置还包括:下载模块,用于在对下载的固件升级包的完整性校验失败时,重新基于下载地址下载固件升级包。
在又一种实施方式中,指定数据格式中包括:存储介质分区中固件升级区的标志位、固件的产品序列号、查找到的终端本地的固件的版本号、写入存储介质分区中固件升级区的固件的版本号、写入存储介质分区中固件升级区的固件的起始地址、写入存储介质分区中固件升级区的固件的大小。
在又一种实施方式中,升级模块还用于:按照指定数据格式读取存储介质分区中的数据,并读取本地查找到的固件的产品序列号;在存储介质分区中数据包含的固件的产品序列号的信息与本地查找到的固件的产品序列号的信息一致时,将存储介质分区中的数据写入固件存储区域;在将存储介质分区中的数据写入固件存储区域成功时,调用机器重启指令进行终端重启,完成固件升级。
在又一种实施方式中,升级模块还用于:在将存储介质分区中的数据写入固件存储区域失败时,在电源管理集成电路的寄存器中设置表征升级失败的标志位。
根据本公开实施例的第四方面,提供一种固件升级装置,应用于云服务端,包括:发送广播模块,在存在更新的固件时,用于发送广播消息,广播消息用于广播更新的固件类型;接收固件信息模块,用于接收终端发送的与固件类型匹配的固件信息;发送固件升级包模块,用于发送与固件信息相对应的固件升级包至终端。
在一种实施方式中,发送固件升级包模块还用于:发送与固件信息相对应的固件升级包的下载地址至终端。
在另一种实施方式中,接收固件信息模块用于:以json格式接收终端发送的与固件类型匹配的固件信息。
在又一种实施方式中,发送固件升级包模块还用于:向终端发送用于校验固件升级包完整性的校验码。
根据本公开实施例的第五方面,提供一种固件升级装置,包括:存储器,配置用于存储指令;以及处理器,配置用于调用所述指令执行第一方面或第一方面任意一种实施方式中所述的固件升级方法。
根据本公开实施例的第六方面,提供一种非临时性计算机可读存储介质,非临时性计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行第一方面或第一方面任意一种实施方式中所述的固件升级方法。
根据本公开实施例的第七方面,提供一种固件升级装置,包括:存储器,配置用于存储指令;以及处理器,配置用于调用所述指令执行第二方面或第二方面任意一种实施方式中所述的固件升级方法。
根据本公开实施例的第八方面,提供一种非临时性计算机可读存储介质,非临时性计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在由处理器执行时,执行第二方面或第二方面任意一种实施方式中所述的固件升级方法。
本公开的实施例提供的技术方案可以包括以下有益效果:接收本终端需要升级的固件的固件升级包,无需接收终端不需要升级的固件的固件升级包,有效节约了终端的存储介质的空间,提高了固件升级的效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是示出根据本公开的一示例性实施例的一种固件升级方法的流程图;
图2是示出根据本公开的一示例性实施例的另一种固件升级方法的流程图;
图3是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图;
图4是示出根据本公开的一示例性实施例的另一种固件升级方法的流程图;
图5是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图;
图6是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图;
图7是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图;
图8是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图;
图9是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图;
图10是示出根据本公开的一示例性实施例的一种固件升级方法的交互图;
图11是示出根据本公开的一示例性实施例的一种固件升级装置的示意图;
图12是示出根据本公开的一示例性实施例的另一种固件升级装置的示意图;
图13是一种用于固件升级的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是示出根据本公开的一示例性实施例的一种固件升级方法的流程图。
如图1所示,本公开提供的固件升级方法应用于终端,其中,固件升级方法包括步骤S101、步骤S102和步骤S103。下面将分别介绍各步骤的情况。
在步骤S101中,接收云服务端发送的广播消息。
其中,广播消息用于广播更新的固件类型。
云服务端可以理解为是一种一站式云服务软件,可以为终端提供数据同步、备份、查找设备、空间扩容、管理账号、固件更新等服务。其中,云服务端与终端通过通信实现连接。
广播消息可以是向与云服务端通信连接的各个终端广播更新的固件类型,例如,摄像模组、显示模组、触摸模组或指纹解锁模组等。
在步骤S102中,将与固件类型匹配的固件信息发送至服务端。
终端查找本终端的固件与广播消息中的更新的固件的类型是否匹配。例如,若广播消息中的更新的固件的类型是摄像模组,则终端查找到的本终端的摄像模组,与该广播消息相匹配。
终端查找到与广播的更新的固件类型相匹配的固件时,将查找到的固件的固件信息发送至云服务端。
终端可以调用终端本地的ffu_tool查找该终端本地的固件的产品序列号和固件的固件版本号。终端通过cat底层的节点,例如proc/mv将查找到的固件的固件信息发送至云服务端。
在步骤S103中,接收云服务端推送的与固件信息相对应的固件升级包。
云服务端接收到终端发送的固件信息后,在云服务端查找与该固件信息相对应的固件升级包,例如摄像模组的升级包。并将固件升级包推送至终端。
本公开提供的固件升级方法,通过接收本终端需要升级的固件的固件升级包,而无需接收终端不需要升级的固件的固件升级包,有效节约了终端的存储介质的空间,提高了固件升级的效率。
图2是示出根据本公开的一示例性实施例的另一种固件升级方法的流程图。
在本公开一示例性实施例中,如图2所示,固件升级方法除了步骤S101、步骤S102、和步骤S103之外,还包括步骤S104和步骤S105。下面将分别介绍步骤S104和步骤S105。
在步骤S104中,基于固件升级包的下载地址,下载固件升级包。
云服务端接收到终端发送的固件信息后,在云服务端查找与该固件信息相对应的固件升级包,例如摄像模组的升级包,并将升级包的下载地址发送至终端,终端基于升级包的下载地址,下载固件升级包。
在步骤S105中,基于固件升级包进行固件升级。
终端基于下载的固件升级包,对相应的固件进行升级。
通过接收云服务端发送的与终端的固件相匹配的固件升级包的下载地址,下载固件升级包至终端,并基于固件升级包对终端的固件进行升级。
对于本终端需要升级的固件的固件升级包进行下载,并对固件进行升级处理,而无需下载不需要升级的固件的固件升级包,有效节约了终端的存储介质的空间,提高了固件升级的效率。
图3是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图。
在本公开一示例性实施例中,如图3所示,固件升级方法除了步骤S101、步骤S102、和步骤S103之外,还包括步骤S106和步骤S107。下面将分别介绍步骤S106和步骤S107。
在步骤S106中,将固件升级包中包含的数据以指定数据格式写入存储介质分区。
在步骤S107中,检测到终端开机后,读取存储介质分区中的数据,进行固件升级。
其中,存储介质分区可以理解为存储固件升级包的存储区域。当固件升级包下载至终端本地时,可以调用ffu_tool把固件升级包的信息写入至相应的存储区域。为后续升级固件过程中,明确读取并获取升级固件包的相关信息提供基础。
当检测到终端开机后,完成固件升级处理。并通过将读取到的存储在存储介质分区中的升级固件包的相关信息写入到指定的固件存储区域中,来实现对固件的升级处理。
通过此种方式对固件完成升级处理,可以不必要求用户手动点击更新升级才进行升级处理。
由于终端仅存储了需要升级的固件的升级固件包,可以保证在占用终端较小内存的情况下,当检测到终端开机后,即可完成对固件的升级,实现对固件的快速升级。
在本公开一示例性实施例中,将与固件类型匹配的固件信息发送至云服务端包括:终端接收到广播消息后,调用固件升级工具查看存储至终端本地的固件的产品序列号和固件版本号,并将固件的产品序列号和固件版本号发送至云服务端。
固件升级工具可以是用ffu_tool。通过调用终端本地的ffu_tool查找该终端本地的固件的产品序列号和固件的固件版本号。终端通过cat底层的节点,例如proc/mv将查找到的固件的产品序列号和固件版本号发送至云服务端。
在本公开一示例性实施例中,将与固件类型匹配的固件信息以json格式,发送至云服务端。
终端在查找并获取到终端本地的固件的产品序列号和固件版本号之后,可以生成json格式后,并将json格式的固件信息发送至云服务端,以便于云服务端进行固件信息读取。
相应的,云服务端接收到json格式的固件信息后,将解析json格式的固件信息,以获得相应的固件信息。
在云服务端获得固件信息后,查找与该固件信息相对应的固件升级包,并将升级包的下载地址发送至终端,终端基于升级包的下载地址,下载固件升级包并基于所述固件升级包进行固件升级。
图4是示出根据本公开的一示例性实施例的另一种固件升级方法的流程图。
在本公开一示例性实施例中,如图4所示,固件升级方法除了步骤S101、步骤S102、步骤S103和步骤S104之外,还包括步骤S108和步骤S109。下面将分别介绍步骤S108和步骤S109。
在步骤S108中,接收云服务端发送的用于校验固件升级包完整性的校验码。
云服务端在将固件升级包的下载地址发送至终端时,还将校验固件升级包完整性的校验码发送至终端。其中,校验码与固件升级包是一一对应的。
在步骤S109中,基于校验码,对下载的固件升级包的完整性进行校验,并在校验通过时基于固件升级包进行固件升级。
校验码可以是MD5校验码,通过校验码,用以校验传输并下载至终端的固件升级包的完整性。若校验通过,则表示传输并下载的固件升级包完整,此时,终端可以基于下载的固件升级包对相应的固件进行固件升级。
图5是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图。
在本公开一示例性实施例中,如图5所示,固件升级方法除了步骤S101、步骤S102、步骤S103、步骤S104、步骤S108和步骤S109之外,还包括步骤S110。下面将介绍步骤S110。
在步骤S110中,在对下载的固件升级包的完整性校验失败时,重新基于下载地址下载固件升级包。
若校验不通过,则表示传输并下载的固件升级包不完整,此时,终端不可以基于下载的固件升级包对相应的固件进行固件升级,而需要重新基于下载地址下载固件升级包。
在本公开一示例性实施例中,指定数据格式中包括:存储介质分区中固件升级区的标志位、固件的产品序列号、查找到的终端本地的固件的版本号、写入存储介质分区中固件升级区的固件的版本号、写入存储介质分区中固件升级区的固件的起始地址、写入存储介质分区中固件升级区的固件的大小。
其中,存储介质分区中固件升级区的标志位表示,自此位开始,存储介质分区为关于固件升级的分区。通过标志位,可以有效区分出存储介质分区中自何位开始,为关于固件升级的分区,为后续读取关于固件升级包的相关信息提供基础。
可以在存储介质分区的前128byte中依次写入上述的指定数据格式的数据,在存储介质分区的256byte开始写固件升级包对应的升级固件,直到升级固件全部写入为止。
图6是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图。
在本公开一示例性实施例中,如图6所示,本公开的固件升级方法的步骤S107中可以包括步骤S1071、步骤S1072和步骤S1073。下面将分别介绍步骤S1071、步骤S1072和步骤S1073。
在步骤S1071中,按照指定数据格式读取存储介质分区中的数据,并读取本地查找到的固件的产品序列号。
在步骤S1072中,在存储介质分区中数据包含的固件的产品序列号的信息与本地查找到的固件的产品序列号的信息一致时,将存储介质分区中数据写入固件存储区域。
在步骤S1073中,在将存储介质分区中的数据写入固件存储区域成功时,调用机器重启指令进行终端重启,完成固件升级。
在进行固件升级的过程中,为了进一步保证终端欲升级的固件,与下载的固件的匹配性,即防止云服务端发送错误的升级固件包至终端的情况发生,例如,终端欲升级的固件为A公司生产的摄像模组,而云服务端发送了B公司生产的摄像模组的固件升级包。固件升级方法还会判断存储在存储介质分区中的升级固件包的数据信息中的产品序列号,与终端欲升级的固件,即读取本地查找到的固件的产品序列号是否一致。
若一致,则表示云服务端没有发送错误的升级固件包至终端,此时,终端可以基于存储在存储介质分区中升级固件包的数据,将该数据写入固件存储区域,并在数据写入成功后,调用机器重启指令进行终端重启,例如调用machine_restart,完成固件升级。
在将数据写入固件存储区域的过程中,可以利用scsi_execute函数将升级固件包的数据写入固件存储区域。
若不一致,则表示云服务端发送错误的升级固件包至终端,此时,可以再次向云服务端发送查找到的与广播消息相匹配的固件的固件信息,基于云服务端发送的与固件信息相对应的固件升级包的下载地址,下载固件升级包并基于固件升级包进行固件升级。
图7是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图。
在本公开一示例性实施例中,如图7所示,本公开的固件升级方法除了步骤S101、步骤S102、步骤S103、步骤S106和步骤S107之外,还包括步骤S111。
在步骤S111中,在存储介质分区中的数据写入固件存储区域失败时,在电源管理集成电路的寄存器中设置表征升级失败的标志位。
为了防止云服务端发送错误的固件升级包至终端,在固件升级过程中,反复出现终端重启的现象,可以对上一次升级失败的固件做标志,待终端发生重启之前,先去读该标志位,若发现了标记上次升级失败的标志位后,可以直接令终端正常开机重启。
即在存储介质分区中的数据写入固件存储区域失败时,可以在电源管理集成电路(pmic)的寄存器中的QPNP_PON_XVDD_RB_SPARE中的任何一位中作标记。例如可以在QPNP_PON_XVDD_RB_SPARE中第7为标记为1,表示上次升级失败。
若本次升级成功,则可以在QPNP_PON_XVDD_RB_SPARE中第7为标记为0,并调用machine_restart进行终端的重启。
图8是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图。
基于相同的发明构思,如图8所示,固件升级方法应用于云服务端,包括:步骤S201、步骤S202和步骤S203。下面将分别介绍步骤S201、步骤S202和步骤S203。
在步骤S201中,在存在更新的固件时,发送广播消息。
其中,广播消息用于广播更新的固件类型。
在步骤S202中,接收终端发送的与固件类型匹配的固件信息。
在步骤S203中,发送与固件信息相对应的固件升级包至终端。
云服务端仅发送与终端固件相匹配的固件升级包,而对于终端中无需升级的固件的固件升级包,存储在云服务端。通过此种方式,可以有效节约终端的存储介质的空间,提高固件升级的效率。
在本公开一示例性实施例中,固件升级方法还包括:发送与固件信息相对应的固件升级包的下载地址至终端。
在本公开一示例性实施例中,接收终端发送的与固件类型匹配的固件信息包括:以json格式接收终端发送的与固件类型匹配的固件信息。
图9是示出根据本公开的一示例性实施例的又一种固件升级方法的流程图。
在本公开一示例性实施例中,如图9所示,固件升级方法除了步骤S201、步骤S202和步骤S203之外,还包括步骤S204。
在步骤S204中,向终端发送用于校验固件升级包完整性的校验码。
本公开实施例中对于应用于云服务端的固件升级方法中涉及的方法执行过程与应用于终端的固件升级方法类似,故对于应用于云服务端的固件升级方法描述不够详尽的地方,可参阅上述应用于终端的固件升级方法,在此不再详述。
图10是示出根据本公开的一示例性实施例的一种固件升级方法的交互图。
在本公开一示例性实施例中,如图10所示,固件升级方法的交互过程包括如下步骤。
在步骤S301中,云服务端存在更新的固件时,发送广播消息。其中,广播消息用于广播更新的固件类型。
当有更新的固件时,云服务端发送关于更新固件的固件类型的广播消息至各个终端。终端接收云服务端发送的广播消息。
在步骤S302中,终端基于接收到的广播消息,查找与固件类型匹配的固件。
终端在接收到云服务端发送的广播消息后,查找本终端的固件与接收的广播消息中广播的更新的固件的类型是否匹配。
在步骤S303中,终端在查找到与固件类型匹配的固件时,将查找到的固件信息发送至云服务端。
终端可以调用终端本地的ffu_tool查找该终端本地的固件的产品序列号和固件的固件版本号。并通过固件的产品序列号和固件的固件版本号判断查找到的固件的类型是否与云服务端广播的固件的类型相匹配。若匹配,终端可以通过cat底层的节点将查找到的固件的固件信息发送至云服务端。云服务端接收终端发送的固件信息。
在步骤S304中,云服务端查找与固件信息对应的固件升级包。
云服务端接收终端发送的固件信息,并查找与该固件信息相对应的固件升级包。其中,终端发送的固件信息与云服务端中的固件升级包是一一对应的。
云服务端查找到与固件信息对应的固件升级包后可确定固件升级包的下载地址。
在步骤S305中,云服务端发送固件升级包的下载地址至终端。
云服务端基于查找到的与终端发送的固件信息相对应的固件升级包,确定该固件升级包的下载地址。云服务端将下载地址发送至终端,以供终端下载相应的固件升级包。
在步骤S306中,终端基于云服务端发送的固件升级包的下载地址,下载固件升级包。
终端将根据云服务端发送的固件升级包的下载地址,将固件升级包下载至本地。
在步骤S307中,终端基于固件升级包进行固件升级。
终端将固件升级包下载至本地后,将对相应的固件进行固件升级。
图11是示出根据本公开的一示例性实施例的一种固件升级装置的示意图。
基于相同的发明构思,如图11所示,一种固件升级装置,应用于终端,包括:接收广播模块401、发送固件信息模块402和接收固件升级包模块403。下面将分别介绍各模块的情况。
接收广播模块401,用于接收云服务端发送的广播消息,广播消息用于广播更新的固件类型。
发送固件信息模块402,用于将固件类型匹配的固件信息发送至云服务端。
接收固件升级包模块403,用于接收云服务端推送的与固件信息相对应的固件升级包。
在本公开一示例性实施例中,固件升级装置还包括升级模块,用于基于固件升级包的下载地址下载固件升级包,并基于固件升级包进行固件升级。
在本公开一示例性实施例中,升级模块还用于:将固件升级包中包含的数据以指定数据格式写入存储介质分区;检测到终端开机后,读取存储介质分区中的数据,进行固件升级。
在本公开一示例性实施例中,发送固件信息模块用于:终端接收到广播消息后,调用固件升级工具查看存储至终端本地的固件的产品序列号和固件版本号,并将固件的产品序列号和固件版本号发送至云服务端。
在本公开一示例性实施例中,发送固件信息模块用于:将固件类型匹配的固件信息以json格式,发送至云服务端。
在本公开一示例性实施例中,接收固件升级包模块还用于:接收云服务端发送的用于校验固件升级包完整性的校验码;升级模块还用于:基于校验码,对下载的固件升级包的完整性进行校验,并在校验通过时基于固件升级包进行固件升级。
在本公开一示例性实施例中,固件升级装置还包括:下载模块,用于在对下载的固件升级包的完整性校验失败时,重新基于下载地址下载固件升级包。
在本公开一示例性实施例中,指定数据格式中包括:存储介质分区中固件升级区的标志位、固件的产品序列号、查找到的终端本地的固件的版本号、写入存储介质分区中固件升级区的固件的版本号、写入存储介质分区中固件升级区的固件的起始地址、写入存储介质分区中固件升级区的固件的大小。
在本公开一示例性实施例中,升级模块还用于:按照指定数据格式读取存储介质分区中的数据,并读取本地查找到的固件的产品序列号;在存储介质分区中数据包含的固件的产品序列号的信息与本地查找到的固件的产品序列号的信息一致时,将存储介质分区中的数据写入固件存储区域;在将存储介质分区中的数据写入固件存储区域成功时,调用机器重启指令进行终端重启,完成固件升级。
在本公开一示例性实施例中,升级模块还用于:在将存储介质分区中的数据写入固件存储区域失败时,在电源管理集成电路的寄存器中设置表征升级失败的标志位。
图12是示出根据本公开的一示例性实施例的另一种固件升级装置的示意图。
基于相同的发明构思,如图12所示,一种固件升级装置,应用于云服务端,包括:发送广播模块501、接收固件信息模块502、发送固件升级包模块503。下面将分别介绍各模块的情况。
发送广播模块501,在存在更新的固件时,用于发送广播消息,广播消息用于广播更新的固件类型。
接收固件信息模块502,用于接收终端发送的与固件类型匹配的固件信息。
发送固件升级包模块503,用于发送与固件信息相对应的固件升级包至终端。
在本公开一示例性实施例中,发送固件升级包模块503还用于:发送与固件信息相对应的固件升级包的下载地址至终端。
在本公开一示例性实施例中,接收固件信息模块502用于:以json格式接收终端发送的与固件类型匹配的固件信息。
在本公开一示例性实施例中,发送固件升级包模块503还用于:向终端发送用于校验固件升级包完整性的校验码。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图13是一种用于固件升级的装置的框图。其中,图13可以表示用于本公开第一方面所述的固件升级方法的装置的框图,也可以表示用于本公开第二方面所述的固件升级方法的装置的框图。
固件升级的装置可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图13,固件升级的装置可以包括以下一个或多个组件:处理组件1302,存储器1304,电力组件1306,多媒体组件1308,音频组件1310,输入/输出(I/O)的接口1312,传感器组件1314,以及通信组件1316。
处理组件1302通常控制装置的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1302可以包括一个或多个处理器1320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1302可以包括一个或多个模块,便于处理组件1302和其他组件之间的交互。例如,处理组件1302可以包括多媒体模块,以方便多媒体组件1308和处理组件1302之间的交互。
存储器1304被配置为存储各种类型的数据以支持在设备的操作。这些数据的示例包括用于在固件升级的装置上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件1306为装置的各种组件提供电力。电力组件1306可以包括电源管理系统,一个或多个电源,及其他与为装置生成、管理和分配电力相关联的组件。
多媒体组件1308包括在所述固件升级的装置和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1308包括一个前置摄像头和/或后置摄像头。当设备处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1310被配置为输出和/或输入音频信号。例如,音频组件1310包括一个麦克风(MIC),当固件升级的装置处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1304或经由通信组件816发送。在一些实施例中,音频组件1310还包括一个扬声器,用于输出音频信号。
I/O接口1312为处理组件1302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1314包括一个或多个传感器,用于为固件升级的装置提供各个方面的状态评估。例如,传感器组件1314可以检测到设备的打开/关闭状态,组件的相对定位,例如所述组件为固件升级的装置的显示器和小键盘,传感器组件1314还可以检测固件升级的装置或固件升级的装置一个组件的位置改变,用户与固件升级的装置接触的存在或不存在,固件升级的装置方位或加速/减速和固件升级的装置的温度变化。传感器组件1314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1316被配置为便于固件升级的装置和其他设备之间有线或无线方式的通信。固件升级的装置可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,固件升级的装置可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1304,上述指令可由固件升级的装置的处理器1320执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1304,上述指令可由固件升级的装置的处理器1320执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
进一步可以理解的是,本公开中“多个”是指两个或两个以上,其它量词与之类似。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
进一步可以理解的是,本公开实施例中尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
- 固件升级方法、家电、固件升级系统及可读存储介质
- 一种固件升级方法、固件升级装置及固件升级系统