本发明涉及计算机技术领域,特别涉及一种系统固件升级方法及装置。
背景技术:
系统固件一般存储于设备中的电可擦除只读存储器或闪存芯片中,通过对设备中的系统固件进行升级,能够有效改善设备操作系统的性能。
相关技术中,当需要对设备的系统固件进行升级时,可以从服务器中下载与该设备类型相对应的升级包,然后在恢复模式(Recovery)下升级该升级包中的文件,从而实现对系统固件的升级。当出现升级失败的情况时,用户可以从服务器中下载系统刷机包以对该设备进行刷机修复,或者可以直接到售后点对设备进行刷机修复。
但是,采用相关技术中的升级方法对系统固件进行升级后,当出现升级失败的情况时,由于开发人员也无法准确获知升级失败的具体原因,因此无法对该升级包进行有效维护。
技术实现要素:
为了解决相关技术中的问题,本发明提供了一种系统固件升级方法及装置,可以在对系统固件升级的过程中生成升级日志,当升级不成功时,向服务器发送该升级日志,使得开发人员可以根据该升级日志准确获知升级失败的具体原因,以便对升级包进行有效维护。
本发明实施方式的第一方面,提供一种系统固件升级方法,所述方法包括:
根据服务器发送的升级包,对设备中的系统固件进行升级;
在升级的过程中生成升级日志,所述升级日志用于记录所述设备在升级过程中执行的操作;
升级完成后,检测是否升级成功;
当升级不成功时,向所述服务器发送所述升级日志。
本发明实施方式的第二方面,提供一种系统固件升级方法,所述方法包括:
根据设备发送的升级请求,向所述设备发送升级包;
当接收到所述设备发送的针对所述升级包的升级日志时,记录所述设备的标识与所述升级日志的对应关系。
本发明实施方式的第三方面,提供一种系统固件升级装置,所述装置包括:
升级模块,用于根据服务器发送的升级包,对设备中的系统固件进行升级;
生成模块,用于在升级的过程中生成升级日志,所述升级日志用于记录所述设备在升级过程中执行的操作;
检测模块,用于升级完成后,检测是否升级成功;
第一发送模块,用于当升级不成功时,向所述服务器发送所述升级日志。
本发明实施方式的第四方面,提供一种系统固件升级装置,所述装置包括:
发送模块,用于根据设备发送的升级请求,向所述设备发送升级包;
记录模块,用于当接收到所述设备发送的针对所述升级包的升级日志时,记录所述设备的标识与所述升级日志的对应关系。
本发明提供的技术方案带来的有益效果包括:
本发明提供了一种系统固件升级方法及装置,设备根据服务器发送的升级包,对设备中的系统固件进行升级的过程中,可以生成记录有设备在升级过程中所执行的操作的升级日志,当升级不成功时,设备可以向服务器发送该升级日志,使得开发人员可以根据该升级日志准确获知升级失败的具体原因,以便对该升级包进行有效维护。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明一种实施方式的系统固件升级方法的实施环境的示意图;
图2是根据本发明一种实施方式的系统固件包的生成方法的流程图;
图3是根据本发明一种实施方式的系统固件包的生成装置的结构示意图;
图4是根据本发明另一种实施方式的系统固件包的生成装置的结构示意图;
图5是根据本发明又一种实施方式的系统固件包的生成装置的结构示意图;
图6是根据本发明再一种实施方式的系统固件包的生成装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是根据本发明一种实施方式的系统固件升级方法的实施环境的示意图,如图1所示,该实施环境可以包括:服务器01和至少一个设备02。该服务器01可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心。该设备02可以为智能手机、电脑、智能家电设备、多媒体播放器、电子阅读器或者可穿戴式设备等。该服务器01和设备02之间可以通过有线网络或无线网络建立连接,该设备02可以从服务器01中下载升级包,并根据该升级包对系统固件进行升级。
图2是根据本发明一种实施方式的系统固件包的生成方法的流程图,该方法可以应用于图1所示的实施环境中,参考图2,该方法可以包括:
步骤101、服务器根据设备发送的升级请求,向该设备发送升级包。
在本发明实施例中,当需要对设备中的系统固件进行升级时,设备可以可以向服务器发送升级请求,该升级请求中可以携带有待获取的升级包的标识。服务器接收到该升级请求后可以向设备发送对应的升级包,相应的,设备可以启动版本下载模块下载该升级包。
其中,该升级包可以为无线下载(Over the Air,简称为OTA)升级包。该设备中可以安装有OTA客户端,设备可以通过该OTA客户端发送升级请求、接收升级包以及进行其他系统固件升级的相关操作。
步骤102、设备计算该升级包的校验值。
为了便于后期服务器对该升级包进行校验,设备可以在下载完成升级包后,根据预设算法,计算该升级包的校验值。例如,该设备可以采用第五版消息摘要算法(Message DigestAlgorithm,简称为MD5)计算该升级包的MD5值。
步骤103、设备向该服务器发送验证信息,该验证信息包括该校验值。
在本发明实施例中,该校验信息中还可以包括设备的标识,该设备的标识可以为能够唯一标识该设备的字符串。例如,可以为设备的出厂序列号或者该设备的国际移动设备身份码(International Mobile Equipment Identity,简称为IMEI)等。示例的,设备在计算得到升级包的MD5值之后,可以将该设备的IMEI以及计算得到的MD5值发送至服务器。
步骤104、设备根据服务器发送的升级包,对设备中的系统固件进行升级。
在本发明实施例中,设备在对系统固件进行升级之前,还可以先启动签名校验模块对该升级包的数字签名进行校验,如果校验成功,则设备可以重启进入Recovery模式,并根据该升级包对系统固件进行升级。
如果校验失败,则设备可以直接将校验结果反馈给服务器,由运营人员确定该数字签名是否存在问题。如果数字签名存在问题,则运营人员可以将升级包从服务器侧撤下,使用正确的签名文件对该升级包进行签名后再重新发布。
其中,对数字签名进行校验的具体过程可以参考相关技术,本发明实施例对此不作赘述。
步骤105、设备在升级的过程中生成升级日志。
该升级日志用于记录该设备在升级过程中执行的操作。该升级过程可以包括从设备发送升级请求至升级完成的整个过程。由于设备在升级过程中所处的状态不同,比如在发送升级请求和校验信息时为正常启动状态,在对系统固件进行升级时则处于Recovery模式,因此,根据该设备状态的不同,设备生成的该升级日志也有所不同。
具体的,该升级日志主要可以包括两部分:应用层日志和恢复模式日志(Recovery log)。当设备中的OTA客户端检测到升级请求时,即可调用系统中的日志抓取工具抓取应用层日志,例如可以调用logcat工具(安卓系统中的一种命令行工具)抓取应用层日志。为了避免缓存过多无效数据,设备在抓取应用层日志的过程中,还可以通过指定标签(Tag)的方式分析提取出有效日志(即与升级相关的关键信息)并缓存到本地。通过该指定Tag的方式生成应用层日志不仅可以避免占用过多存储空间,还可以提高该升级日志的发送效率。
进一步的,当设备进入到Recovery模式后,设备可以启动日志重定向模块,通过重定向的方式,将设备在Recovery模式下执行的升级操作记录在该Recovery log中,并将该Recovery log保存到缓存区中。
步骤106、设备升级完成后,检测是否升级成功。
在本发明实施例中,设备在Recovery模式下升级完成后,可以检测是否升级成功,并将检测得到的升级结果保存到缓存区的指定文件中。如果检测到升级成功,则设备可以直接将该Recovery log删除;如果检测出升级不成功,则可以保留该Recovery log。
进一步的,设备可以重启并进入到正常启动状态,此时设备可以先检测缓存区是否存在记录有升级结果的指定文件,如果存在,则设备可以启动后台服务监测并解析该升级结果。如果升级不成功,则可以执行步骤107;如果升级成功,则可以执行步骤113和步骤114。
步骤107、当升级不成功时,设备向该服务器发送该升级日志。
当设备重启后检测到升级不成功(即升级失败)时,为了便于开发人员分析升级失败的具体原因,该设备可以向服务器发送存储在缓存区中的升级日志,该升级日志具体可以包括应用层日志和恢复模式日志。此外,当设备成功向服务器发送完成该升级日志后,可以将该升级包、升级日志以及记录有升级结果的文件从本地删除,避免占用过多的存储空间。
需要说明的是,在实际应用中,设备在确定升级失败后,可以定时检测设备的网络连接状态,当在预设时间段(例如五天)内检测到设备处于连网状态时,例如连接到无线保真(Wireless-fidelity;简称为Wi-Fi)网络时,则可以将该升级日志上传至服务器中。如果设备在该预设时间段内,检测到该设备一直处于未连网状态,或者在该预设时间段内,升级日志未上传成功,则设备也可以启动自删除模块,强制删除本地缓存的升级日志以及升级包。
步骤108、当服务器接收到该设备发送的针对该升级包的升级日志时,记录该设备的标识与该升级日志的对应关系。
在本发明实施例中,当服务器接收到设备发送的针对该升级包的升级日志时,可以确定该设备升级失败,为了便于开发人员分析该升级失败的具体原因以及制定相应的处理策略,服务器可以存储该升级日志,并记录该设备的标识与该升级日志的对应关系。
步骤109、当服务器接收到该设备发送的针对该升级包的升级日志时,获取该升级包对应的目标校验值。
进一步的,当服务器根据设备发送的升级日志确定该设备升级失败后,为了验证该升级包是否正确,可以获取该升级包对应的目标校验值。该目标校验值为服务器中预先存储的正确版本的升级包的校验值。
步骤110、服务器判断该验证信息中的校验值与该目标校验值是否相同。
当设备发送的该验证信息中的校验值与该目标校验值不同时,服务器可以执行步骤111;当该验证信息中的校验值与该目标校验值相同时,服务器可以执行步骤112。
步骤111、当该验证信息中的校验值与该目标校验值不同时,生成第一提示信息。
当该验证信息中的校验值与该目标校验值不同时,服务器可以确定当前发布的升级包版本错误,因此可以生成用于提示开发人员对该升级包进行替换的第一提示信息。开发人员看到该第一提示信息后,可以及时撤下问题版本并重新发布正确版本的升级包,以保证相关设备可以下载正确的升级包。
步骤112、当该验证信息中的校验值与该目标校验值相同时,生成第二提示信息。
当该验证信息中的校验值与该目标校验值相同时,服务器可以确定当前发布的升级包的版本无误,升级失败是由其他原因导致的,因此可以生成第二提示信息,该第二提示信息用于提示开发人员对该升级日志进行分析。
进一步的,开发人员可以对服务器中存储的升级日志进行分析,确定是单品问题还是批次问题,并确定差分包(该差分包是指仅包含有新旧版本固件之间的差异数据的升级包)能否解决问题。若差分包可以解决问题,则优先选用制作矫正差分包,次之选择制作完整升级包(该完整升级包中包含有新版本固件中的所有数据)。针对单品或者批次,开发人员可以重新发布矫正升级包(差分包或者完整升级包)并创建升级策略,让这部分设备通过该重新发布的矫正升级包进行系统升级矫正。
具体的,根据该升级日志中记载的设备升级后最终状态的不同,开发人员所采取的处理策略也有所不同。若设备升级失败后系统固件的版本保持不变,则开发人员可以在服务器端生成针对单品或者某一批次设备的升级策略(差分升级策略或者完整升级策略),并根据问题的严重程度,配置为强制升级(即设备自动升级,问题严重时配置)或者将矫正升级包推送给设备,并提示当前版本存在问题,需要立即更新,然后由用户选择性升级。
若设备升级失败后,系统固件版本介于当前版本和目标版本之间,开发人员根据升级日志如果确定是单品问题,则直接根据设备的IMEI号将最新的OTA完整升级包推送给设备进行升级;如果是批次问题,则重新发布新的OTA差分包,并创建升级策略,把该批次存在升级隐患问题但还未执行升级动作的设备强制升级到修正的目标版本。
此外,若设备升级失败且无法开机,则用户可以将情况反馈给售后,售后人员可以通过工具获取保存在本地的升级日志,并手动上传到服务器,用于问题分析及后续改善。
步骤113、当升级成功时,设备删除该升级日志。
在上述步骤106中,当设备检测到升级成功时,为了避免升级日志占用过多存储空间,可以删除该升级日志。具体的,该设备可以在Recovery模式下删除Recovery log,然后在重启后,删除该应用层日志。
步骤114、当升级成功时,设备向该服务器发送删除指令。
进一步的,在上述步骤106中,当设备检测到升级成功时,还可以向服务器发送删除指令,该删除指令用于指示该服务器删除该验证信息。
步骤115、当服务器接收到该设备发送的删除指令时,根据该删除指令,删除该验证信息。
服务器接收到删除指令后,可以确定设备已经升级成功,无需再对该升级包进行校验,因此可以删除该验证信息。例如服务器可以删除该设备的标识以及该升级包的MD5值。
需要说明的是,本发明实施例提供的系统固件升级方法的步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,例如步骤108和步骤109可以同时执行,步骤113和步骤114也可以同时执行。任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
综上所述,本发明实施例提供了一种系统固件升级方法,设备根据服务器发送的升级包,对设备中的系统固件进行升级的过程中,可以生成记录有设备在升级过程中所执行的操作的升级日志,当升级不成功时,设备可以向服务器发送该升级日志,使得开发人员可以能够动态监测升级情况,并根据该升级日志准确获知升级失败的具体原因,以便对该升级包进行有效维护。从而可以有效解决已经出现升级异常的设备的升级问题,同时能够在版本发布错误或者批次生产存在问题时的及时进行补救。另外,通过分析升级日志,能够及时发现升级流程的缺陷,优化升级流程,减少升级失败的概率。
图3是根据本发明一种实施方式的系统固件包的生成装置的结构示意图,该装置可以应用于图1所示的设备02中,参考图3,该装置可以包括:
升级模块201,用于根据服务器发送的升级包,对设备中的系统固件进行升级。
生成模块202,用于在升级的过程中生成升级日志,该升级日志用于记录该设备在升级过程中执行的操作。
检测模块203,用于升级完成后,检测是否升级成功。
第一发送模块204,用于当升级不成功时,向该服务器发送该升级日志。
可选的,参考图4,该装置还可以包括:
计算模块205,用于计算该升级包的校验值。
第二发送模块206,用于向服务器发送验证信息,该验证信息包括该校验值。
删除模块207,用于当升级成功时,删除该升级日志。
第三发送模块208,用于向该服务器发送删除指令,该删除指令用于指示该服务器删除该验证信息。
综上所述,本发明实施例提供了一种系统固件升级装置,设备根据服务器发送的升级包,对设备中的系统固件进行升级的过程中,可以生成记录有设备在升级过程中所执行的操作的升级日志,当升级不成功时,设备可以向服务器发送该升级日志,使得开发人员可以根据该升级日志准确获知升级失败的具体原因,以便对该升级包进行有效维护。
图5是根据本发明一种实施方式的系统固件包的生成装置的结构示意图,该装置可以应用于图1所示的服务器01中,参考图5,该装置可以包括:
发送模块301,用于根据设备发送的升级请求,向该设备发送升级包。
记录模块302,用于当接收到该设备发送的针对该升级包的升级日志时,记录该设备的标识与该升级日志的对应关系。
可选的,参考图6,该装置还可以包括:
接收模块303,用于接收该设备发送的验证信息,该验证信息包括该升级包的校验值。
获取模块304,用于当接收到该设备发送的针对所述升级包的升级日志时,获取该升级包对应的目标校验值。
判断模块305,用于判断该验证信息中的校验值与该目标校验值是否相同。
第一生成模块306,用于当该验证信息中的校验值与该目标校验值不同时,生成第一提示信息,该第一提示信息用于提示开发人员对该升级包进行替换。
第二生成模块307,用于当该验证信息中的校验值与该目标校验值相同时,生成第二提示信息,该第二提示信息用于提示开发人员对该升级日志进行分析。
删除模块308,用于当接收到该设备发送的删除指令时,根据该删除指令,删除该验证信息。
综上所述,本发明实施例提供了一种系统固件升级装置,服务器可以接收并存储设备在升级失败后发送的升级日志,使得开发人员可以根据该升级日志准确获知设备升级失败的具体原因,以便对升级包进行有效维护。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。