本公开涉及嵌入式技术领域,尤其涉及一种组件升级方法及终端。
背景技术:
在计算机技术领域,组件为用于实现某种功能的应用。为了满足用户使用需求,终端中安装有多种组件,例如,多媒体播放组件、网页浏览组件、通信组件、传感器组件等。在对这些组件进行管理时,经常会涉及到升级问题。
目前,在对组件进行升级时,终端系统可先从网络上下载组件升级包,进而将组件升级包发送至待升级组件所在的外设模块,外设模块通过运行组件升级包,实现对该组件的升级。然而,由于不同组件与终端系统之间的通信方式是不同的,因此,终端在对不同组件进行升级时,需要采用不同的方式将组件升级包发送至不同的外设模块。
技术实现要素:
为克服相关技术中存在的问题,本公开提供一种组件升级方法及终端。
根据本公开实施例的第一方面,提供一种组件升级方法,所述方法应用于终端中,所述终端包括无线接入模块、升级管理模块、flash模块及多个外设模块,每个外设模块包括至少一个组件和一个flash单元,所述方法包括:
当确定目标外设模块中的目标组件满足升级条件时,所述升级管理模块接收所述无线接入模块发送的目标组件升级包,并将所述目标组件升级包存储在所述flash模块;
当所述目标组件升级包接收完成时,所述升级管理模块从所述flash模块中获取所述目标组件升级包,并将所述目标组件升级包发送至所述目标外设模块;
所述目标外设模块将所述目标组件升级包存储在flash单元的指定分区,并通过运行所述指定分区中的目标组件升级包对所述目标组件进行升级。
在本公开的另一个实施例中,所述方法还包括:
所述升级管理模块向所述无线接入模块发送请求信息报文;
当接收到所述请求信息报文时,所述无线接入模块向所述升级管理模块发送升级查询报文,所述升级查询报文中至少携带所述目标组件升级包的版本号;
当接收到所述升级查询报文时,所述升级管理模块判断所述目标组件是否满足升级条件;
如果所述目标外设模块两端的电压高于预设电压,且所述目标组件的版本号低于所述目标组件升级包的版本号,所述升级管理模块确定所述目标组件满足升级条件。
在本公开的另一个实施例中,所述升级管理模块判断所述目标组件是否满足升级条件之后,还包括:
如果所述目标组件不满足升级条件,所述升级管理模块向所述无线接入模块发送提醒消息,由无线接入模块对用户进行提醒。
在本公开的另一个实施例中,所述终端还包括多媒体模块,所述多媒体模块与所述升级管理模块共用所述flash模块;
所述升级管理模块接收所述无线接入模块发送的目标组件升级包之前,还包括:
所述升级管理模块向所述多媒体模块发送对所述flash模块的使用请求;
当接收到所述使用请求时,所述多媒体模块停止使用所述flash模块,并向所述升级管理模块发送第一响应消息;
当接收到所述第一响应消息时,所述升级管理模块对所述flash模块进行初始化,并执行接收所述无线接入模块发送的目标组件升级包的步骤。
在本公开的另一个实施例中,所述升级管理模块接收所述无线接入模块发送的目标组件升级包,包括:
所述无线接入模块与所述升级管理模块预先确定加密算法和解密算法;
所述无线接入模块使用所述加密算法对所述目标组件升级包进行加密,并向所述升级管理模块发送加密后的目标组件升级包;
所述升级管理模块接收所述加密后的目标组件升级包;
所述将所述目标组件升级包存储在所述flash模块,包括:
所述升级管理模块使用所述解密算法对所述加密后的目标组件升级包进行解密;
所述升级管理模块将解密后的目标组件升级包存储在所述flash模块。
在本公开的另一个实施例中,所述将所述目标组件升级包存储在所述flash模块,包括:
在所述目标组件升级包的接收过程中,所述升级管理模块将已接收字节存储在缓存中,并以页为单位将所述缓存中的字节写入所述flash模块。
在本公开的另一个实施例中,所述以页为单位将所述缓存中的字节写入所述flash模块,包括:
如果未接收字节数为0,所述升级管理模块将所述缓存中的字节与预设数量进行比较;
如果所述缓存中的字节小于所述预设数量,所述升级管理模块将所述缓存中的字节写入所述flash模块中的一页;
如果所述缓存中的字节大于等于所述预设数量,所述升级管理模块将所述缓存中前所述预设数量个字节写入所述flash模块中的一页,并将剩余字节写入所述flash模块中的另一页。
在本公开的另一个实施例中,所述以页为单位将所述缓存中的字节写入所述flash模块,包括:
如果未接收字节数不为0,所述升级管理模块将所述缓存中的字节与预设数量进行比较;
如果所述缓存中的字节小于所述预设数量,所述升级管理模块继续接收所述目标组件升级包,直至接收完成;
如果所述缓存中的字节大于等于所述预设数量,所述升级管理模块将所述缓存中前所述预设数量个字节写入所述flash模块中的一页,并将剩余字节写入所述缓存的起始位置,继续接收所述目标组件升级包,直至接收完成。
在本公开的另一个实施例中,所述升级管理模块从所述flash模块中获取所述目标组件升级包之前,还包括:
当接收到所述无线接入模块发送的结束报文时,所述升级管理模块向所述目标外设模块发送开始数据报文,所述开始数据报文中至少携带所述目标组件升级包的字节长度信息;
当接收到所述开始数据报文时,所述目标外设模块记录所述目标组件升级包的字节长度信息,并向所述升级管理模块发送第二响应信息;
当接收到所述第二响应信息时,所述升级管理模块执行从所述flash模块中获取所述目标组件升级包的操作。
在本公开的另一个实施例中,所述目标外设模块将所述目标组件升级包存储在flash单元的指定分区,包括:
当接收到所述目标组件升级包时,所述目标外设模块根据所述指定分区一页所能容纳的字节数,将所述目标组件升级包存储在flash单元的指定分区。
在本公开的另一个实施例中,所述通过运行所述目标组件升级包对所述目标组件进行升级,包括:
当接收到所述升级管理模块发送的数据结束报文时,所述目标外设模块重新启动,运行所述指定分区中的所述目标组件升级包;
如果所述目标组件升级包成功运行,则所述目标外设模块将升级标识位上的标识设置为升级标识,以完成对所述目标组件的升级。
根据本公开实施例的第二方面,提供一种终端,所述终端包括无线接入模块、升级管理模块、flash模块及多个外设模块,每个外设模块包括至少一个组件和一个flash单元;
所述升级管理模块,用于当确定目标外设模块中的目标组件满足升级条件时,接收所述无线接入模块发送的目标组件升级包,并将所述目标组件升级包存储在所述flash模块;
所述升级管理模块,用于当所述目标组件升级包接收完成时,从所述flash模块中获取所述目标组件升级包,并将所述目标组件升级包发送至所述目标外设模块;
所述目标外设模块,用于将所述目标组件升级包存储在flash单元的指定分区,并通过运行所述指定分区中的目标组件升级包对所述目标组件进行升级。
在本公开的另一个实施例中,所述升级管理模块,还用于向所述无线接入模块发送请求信息报文;
所述无线接入模块,还用于当接收到所述请求信息报文时,向所述升级管理模块发送升级查询报文,所述升级查询报文中至少携带所述目标组件升级包的版本号;
所述升级管理模块,还用于当接收到所述升级查询报文时,判断所述目标组件是否满足升级条件;
所述升级管理模块,还用于当所述目标外设模块两端的电压高于预设电压,且所述目标组件的版本号低于所述目标组件升级包的版本号时,确定所述目标组件满足升级条件。
在本公开的另一个实施例中,所述升级管理模块,还用于当所述目标组件不满足升级条件时,向所述无线接入模块发送提醒消息,由无线接入模块对用户进行提醒。
在本公开的另一个实施例中,所述终端还包括多媒体模块,所述多媒体模块与所述升级管理模块共用所述flash模块;
所述升级管理模块,还用于接收所述无线接入模块发送的目标组件升级包之前,还包括:
所述升级管理模块,还用于向所述多媒体模块发送对所述flash模块的使用请求;
所述多媒体模块,还用于当接收到所述使用请求时,停止使用所述flash模块,并向所述升级管理模块发送第一响应消息;
所述升级管理模块,还用于当接收到所述第一响应消息时,对所述flash模块进行初始化,并接收所述无线接入模块发送的目标组件升级包。
在本公开的另一个实施例中,所述无线接入模块,还用于与所述升级管理模块预先确定加密算法和解密算法;
所述无线接入模块,还用于使用所述加密算法对所述目标组件升级包进行加密,并向所述升级管理模块发送加密后的目标组件升级包;
所述升级管理模块,还用于接收所述加密后的目标组件升级包;
所述升级管理模块,还用于使用所述解密算法对所述加密后的目标组件升级包进行解密;
所述升级管理模块,还用于将解密后的目标组件升级包存储在所述flash模块。
在本公开的另一个实施例中,所述升级管理模块,还用于在所述目标组件升级包的接收过程中,将已接收字节存储在缓存中,并以页为单位将所述缓存中的字节写入所述flash模块。
在本公开的另一个实施例中,所述升级管理模块,还用于当未接收字节数为0时,将所述缓存中的字节与预设数量进行比较;
所述升级管理模块,还用于当所述缓存中的字节小于所述预设数量时,将所述缓存中的字节写入所述flash模块中的一页;
所述升级管理模块,还用于当所述缓存中的字节大于等于所述预设数量时,将所述缓存中前所述预设数量个字节写入所述flash模块中的一页,并将剩余字节写入所述flash模块中的另一页。
在本公开的另一个实施例中,所述升级管理模块,还用于当未接收字节数不为0,将所述缓存中的字节与预设数量进行比较;
所述升级管理模块,还用于当所述缓存中的字节小于所述预设数量时,继续接收所述目标组件升级包,直至接收完成;
所述升级管理模块,还用于当所述缓存中的字节大于等于所述预设数量时,将所述缓存中前所述预设数量个字节写入所述flash模块中的一页,并将剩余字节写入所述缓存的起始位置,继续接收所述目标组件升级包,直至接收完成。
在本公开的另一个实施例中,所述升级管理模块,还用于当接收到所述无线接入模块发送的结束报文时,向所述目标外设模块发送开始数据报文,所述开始数据报文中至少携带所述目标组件升级包的字节长度信息;
所述目标外设模块,还用于当接收到所述开始数据报文时,记录所述目标组件升级包的字节长度信息,并向所述升级管理模块发送第二响应信息;
所述升级管理模块,还用于当接收到所述第二响应信息时,从所述flash模块中获取所述目标组件升级包。
在本公开的另一个实施例中,所述目标外设模块,还用于当接收到所述目标组件升级包,根据所述指定分区一页所能容纳的字节数,将所述目标组件升级包存储在flash单元的指定分区。
在本公开的另一个实施例中,所述目标外设模块,还用于当接收到所述升级管理模块发送的数据结束报文,重新启动,运行所述指定分区中的所述目标组件升级包;
所述目标外设模块,还用于当所述目标组件升级包成功运行时,将升级标识位上的标识设置为升级标识,以完成对所述目标组件的升级。
本公开的实施例提供的技术方案可以包括以下有益效果:
以flash模块作为中介,将目标组件升级包存储到flash模块中,再将flash模块中的目标组件升级包发送至目标外设模块的flash单元进行升级,避免了不同组件带来的升级方式的差异,节省了资源,便于对组件进行统一管理。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种组件升级方法的流程图。
图2是根据一示例性实施例示出的一种组件升级方法的流程图。
图3是根据一示例性实施例示出的一种将目标组件升级包存储在flash模块中的存储过程的示意图。
图4是根据一示例性实施例示出的一种终端的结构示意图。
图5根据一示例性实施例示出的一种用于组件升级的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种组件升级方法的流程图,如图1所示,组件升级方法用于终端中,终端包括无线接入模块、升级管理模块、flash模块及多个外设模块,每个外设模块包括至少一个组件和一个flash单元,组件升级方法包括以下步骤。
在步骤101中,当确定目标外设模块中的目标组件满足升级条件时,升级管理模块接收无线接入模块发送的目标组件升级包,并将目标组件升级包存储在flash模块。
在步骤102中,当目标组件升级包接收完成时,升级管理模块从flash模块中获取目标组件升级包,并将目标组件升级包发送至目标外设模块。
在步骤103中,目标外设模块将目标组件升级包存储在flash单元的指定分区,并通过运行指定分区中的目标组件升级包对目标组件进行升级。
本公开实施例提供的方法,以flash模块作为中介,将目标组件升级包存储到flash模块中,再将flash模块中的目标组件升级包发送至目标外设模块的flash单元进行升级,避免了不同组件带来的升级方式的差异,节省了资源,便于对组件进行统一管理。
在本公开的另一个实施例中,该方法还包括:
升级管理模块向无线接入模块发送请求信息报文;
当接收到请求信息报文时,无线接入模块向升级管理模块发送升级查询报文,升级查询报文中至少携带目标组件升级包的版本号;
当接收到升级查询报文时,升级管理模块判断目标组件是否满足升级条件;
如果目标外设模块两端的电压高于预设电压,且目标组件的版本号低于目标组件升级包的版本号,升级管理模块确定目标组件满足升级条件。
在本公开的另一个实施例中,升级管理模块判断目标组件是否满足升级条件之后,还包括:
如果目标组件不满足升级条件,升级管理模块向无线接入模块发送提醒消息,由无线接入模块对用户进行提醒。
在本公开的另一个实施例中,终端还包括多媒体模块,多媒体模块与升级管理模块共用flash模块;
升级管理模块接收无线接入模块发送的目标组件升级包之前,还包括:
升级管理模块向多媒体模块发送对flash模块的使用请求;
当接收到使用请求时,多媒体模块停止使用flash模块,并向升级管理模块发送第一响应消息;
当接收到第一响应消息时,升级管理模块对flash模块进行初始化,并执行接收无线接入模块发送的目标组件升级包的步骤。
在本公开的另一个实施例中,升级管理模块接收无线接入模块发送的目标组件升级包,包括:
无线接入模块与升级管理模块预先确定加密算法和解密算法;
无线接入模块使用加密算法对目标组件升级包进行加密,并向升级管理模块发送加密后的目标组件升级包;
升级管理模块接收加密后的目标组件升级包;
将目标组件升级包存储在flash模块,包括:
升级管理模块使用解密算法对加密后的目标组件升级包进行解密;
升级管理模块将解密后的目标组件升级包存储在flash模块。
在本公开的另一个实施例中,将目标组件升级包存储在flash模块,包括:
在目标组件升级包的接收过程中,升级管理模块将已接收字节存储在缓存中,并以页为单位将缓存中的字节写入flash模块。
在本公开的另一个实施例中,以页为单位将缓存中的字节写入flash模块,包括:
如果未接收字节数为0,升级管理模块将缓存中的字节与预设数量进行比较;
如果缓存中的字节小于预设数量,升级管理模块将缓存中的字节写入flash模块中的一页;
如果缓存中的字节大于等于预设数量,升级管理模块将缓存中前预设数量个字节写入flash模块中的一页,并将剩余字节写入所述flash模块中的另一页。
在本公开的另一个实施例中,以页为单位将缓存中的字节写入flash模块,包括:
如果未接收字节数不为0,升级管理模块将缓存中的字节与预设数量进行比较;
如果缓存中的字节小于预设数量,升级管理模块继续接收目标组件升级包,直至接收完成;
如果缓存中的字节大于等于预设数量,升级管理模块将缓存中前预设数量个字节写入flash模块中的一页,并将剩余字节写入缓存的起始位置,继续接收目标组件升级包,直至接收完成。
在本公开的另一个实施例中,升级管理模块从flash模块中获取目标组件升级包之前,还包括:
当接收到无线接入模块发送的结束报文时,升级管理模块向目标外设模块发送开始数据报文,开始数据报文中至少携带目标组件升级包的字节长度信息;
当接收到开始数据报文时,目标外设模块记录目标组件升级包的字节长度信息,并向升级管理模块发送第二响应信息;
当接收到第二响应信息时,升级管理模块执行从flash模块中获取目标组件升级包的操作。
在本公开的另一个实施例中,目标外设模块将目标组件升级包存储在flash单元的指定分区,包括:
当接收到目标组件升级包时,目标外设模块根据指定分区一页所能容纳的字节数,将目标组件升级包存储在flash单元的指定分区。
在本公开的另一个实施例中,通过运行目标组件升级包对目标组件进行升级,包括:
当接收到升级管理模块发送的数据结束报文时,目标外设模块重新启动,运行指定分区中的目标组件升级包;
如果目标组件升级包成功运行,则目标外设模块将升级标识位上的标识设置为升级标识,以完成对目标组件的升级。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图2是根据一示例性实施例示出的一种组件升级方法的流程图,如图2所示,组件升级方法用于终端中,终端包括无线接入模块、升级管理模块、flash模块及多个外设模块。
其中,无线接入模块能够从网络上获取不同组件升级包及其信息,该无线接入模块可以为wifi模块、蓝牙模块等等。无线升级管理模块可与无线接入模块、flash模块及多个外设模块相连,负责对管理多个外设模块内组件的升级,该升级管理模块可以为终端内的cpu(centralprocessingunit,中央处理器)、mcu(microcontrollerunit,微控处理单元)等。外设模块用于实现终端的不同功能,该外设模块可以为传感器模块、多媒体模块等,且每个外设模块包括至少一个组件和一个flash单元,外设模块中的组件包括外设模块自身的固件以及各种应用程序等,本实施例所述的升级为对外设模块中的固件的升级,以及对应用程序的语音库、动作库、表情库的数据库的升级。
参见图2,本公开实施例提供的组件升级方法包括以下步骤。
在步骤201中,升级管理模块从多个外设模块中选取一个目标外设模块,并判断目标外设模块中的目标组件是否满足升级条件。
一般低版本的组件相对高版本的组件会存在一些漏洞,这些漏洞会降低终端系统的性能,甚至影响终端正常运行。为了能够修补组件中存在的漏洞,提高系统性能,确保终端顺利运行,需要对每个外设模块中的每个组件进行升级。
在本实施例中,无线接入模块能够接收不同服务器所推送的组件升级通知,以接收到目标外设模块中的目标组件的组件升级通知为例,当接收到目标组件的组件升级通知时,无线接入模块向升级管理模块发送请求信息报文,以触发升级管理模块判断目标外设模块中的目标组件是否满足升级条件,具体判断过程参见步骤2011~2013:
2011、升级管理模块向无线接入模块发送请求信息报文。
其中,请求信息报文中至少携带目标组件标识。
2012、当接收到请求信息报文时,无线接入模块向升级管理模块发送升级查询报文。
其中,升级查询报文中至少携带目标组件升级包的版本号、目标组件标识等等。
2013、当接收到升级查询报文时,升级管理模块判断目标组件是否满足升级条件。
在本实施例中,升级管理模块维护一个外设模块列表,该外设模块列表中存储有每个外设模块及该外设模块所包括的至少一个组件的属性信息,如组件版本号等等。当接收到升级查询报文时,升级管理模块从外设模块列表中获取目标组件的属性信息,根据获取的目标组件的属性信息,查询目标外设模块两端的电压是否高于预设电压,并查询目标组件的版本号是否低于目标组件升级包的版本号。
在本公开的一个实施例中,如果目标外设模块两端的电压高于预设电压,且目标组件的版本号低于目标组件升级包的版本号,升级管理模块确定目标组件满足升级条件,进而通过下述步骤以完成对目标组件的升级。
在本公开的另一个实施例中,如果外设模块两端的电压低于预设电压,或者目标组件的版本号高于目标组件升级包的版本号,升级管理模块确定目标组件不满足升级条件。当确定目标组件不满足升级条件,升级管理模块可向无线接入模块发送提醒消息,由无线接入模块对用户进行提醒。针对目标组件不满足的升级条件,升级管理模块在向无线接入模块发送提醒消息时,还可在提醒消息中携带相应的处理方案,如目标组件因两端的电压值低于预设电压不满足升级条件,则在发送的提醒消息中可提醒用户提高目标外设模块电压等等。
在步骤202中,升级管理模块升级管理模块接收无线接入模块发送的目标组件升级包,并将目标组件升级包存储在flash模块。
除了无线接入模块、升级管理模块、flash模块及多个外设模块外,终端还包括一个多媒体模块,该多媒体模块与升级管理模块共用flash模块,且多媒体模块正常运行的应用程序均存储在flash模块中。一般情况下,由于升级管理模块自身也具有一定的存储空间,升级管理模块并不会使用flash模块,flash模块由多媒体模块使用。
然而,由于目标组件升级包较大,而升级管理模块自身的存储空间有限,且升级管理模块自身的存储空间大部分被内部的操作系统占用,因此,升级管理模块从无线接入模块所接收的目标组件升级包只能存储在flash模块中。为避免多个模块同时使用flash模块产生冲突,当确定目标组件满足升级条件,开始接收无线接入模块发送的目标组件之前,升级管理模块可向多媒体模块发送对flash模块的使用请求,当接收到使用请求时,多媒体模块停止使用flash模块,并向升级管理模块发送第一响应消息,当接收到第一响应消息时,升级管理模块可向无线接入模块发送数据获取请求,以触发无线接入模块发送目标组件升级包。
其中,无线接入模块向升级管理模块发送的目标组件升级包中的数据的格式如表1所示。如表1所示。
表1
其中,目标组件数据包包括报头、类型、子类、多个数据、校验、报尾等。第一个数据项表示固件和数据库均是数据文件。文件名1表示本次升级的对象为固件,文件名中的2…为大于等于2的标号,表示升级的对象为数据库。长度表示升级包大小。对目标组件进行校验采用的方法为异或校验,相应地校验位上为对前面所有字节进行异或校验的结果。
为了提高数据安全性,无线接入模块在进行数据传输之前,可根据本端所支持的加密算法和解密算法,以及升级管理模块所支持的加密算法和解密算法,协商确定本次进行数据传输所使用的加密算法和解密算法。基于所确定的加密算法,无线接入模块使用加密算法对目标组件升级包进行加密,并向升级管理模块发送加密后的目标组件升级包。基于所确定的解密算法,当接收到加密后的目标组件升级包,升级管理模块使用解密算法对加密后的目标组件升级包进行解密,进而将解密后的目标组件升级包存储在flash模块。
受限于无线接入模块自身硬件的限制,无线接入模块每次向升级管理模块传输的有效字节数最多为指定数量个,这样升级管理模块在接收无线接入模块发送的目标组件升级包的过程中,每次最多仅能接收到指定数量个字节。其中,指定数量可以为12个、13个、14个等,本实施例以指定数量为14个为例。
受限于flash模块本身的属性限制,升级管理模块在向flash模块写入数据时需以页为单位进行写入,而flash模块每页最多仅能写入预设数量个字节,因此,为了能够顺利将目标组件升级包成功写入到flash模块,可先将已接收字节存储在缓存中,为确保数据存储的实效性,在对目标组件升级包的接收过程中,升级管理模块还将以页为单位将缓存中的字节写入flash模块。其中,预设数量可以为256个、300个、500个等,本实施例以预设数量为256个为例。
在本实施例中,在对目标组件升级包的接收过程中,升级管理模块以页为单位将缓存中的字节写入flash模块时,根据本次接收后未接收到的字节数是否为0,可分为如下两种情况。其中,本次接收后未接收到的字节数可通过本次接收到的字节数进行初步判断,如果本次接收到的字节数小于14个,可确定本次接收后未接收到的字节数为0,如果本次接收到的字节数大于等于14个,还需将上一次接收后未接收到的字节数减去14,如果等于0,也可确定本次接收后未接收到的字节数为0,如果大于0,则确定本次接收后未接收到的字节数不为0。
第一种情况、本次接收后未接收到的字节数为0。
如果未接收到的字节数为0,说明目标组件升级包中的数据已经全部接收,此时无论将缓存中的字节数是多少,都需要全部写入到flash模块中。由于flash模块每页中最多仅所能写入256个字节,而本次接收后的字节数与缓存中原有字节数之和可能大于等于256,也可能小于256,针对本次接收后的字节数与缓存中原有字节数之和是否大于等于256,升级管理模块在将缓存中的数据写入到flash模块中的方式是不同,因此,升级管理模块需要将缓存中的字节与预设数量进行比较。如果缓存中的字节数小于256个,升级管理模块可将缓存中字节写入flash模块中的一页;如果缓存中的字节数大于等于256,升级管理模块将缓存中前256个字节写入flash模块中的一页,并将剩余字节写入flash中的另一页。
第二种情况、本次接收后未接收到的字节数不为0。
如果未接收字节数不为0,说明目标组件升级包中的数据并未全部接收,此需要继续接收目标组件升级包,直至接收完成。由于flash模块每页中最多仅所能写入256个字节,而本次接收后的字节数与缓存中原有字节数之和可能大于等于256,也可能小于256,针对本次接收后的字节与缓存中原有字节之和是否大于等于256,升级管理模块在将缓存中的数据写入到flash模块中的方式是不同,因此,升级管理模块需要将缓存中的字节与预设数量进行比较。如果缓存中的字节数小于256个,升级管理模块继续接收目标组件升级包,直至接收完成;如果缓存中的字节数大于等于256个,升级管理模块将缓存中前256个字节写入flash模块中的一页,并将剩余字节写入缓存的起始位置,继续接收目标组件升级包,并在每次接收到无线接入模块发送的目标组件升级包中的数据时,判断未接收到的字节数是否为0,进而采用相应的写入方式写入flash模块,直至接收完成。
对于升级管理模块将目标组件升级包存储在flash模块的过程,为了便于理解,下面将以图3为例进行说明。
参见图3,在对目标组件升级包的接收过程中,升级管理模块判断本次接收到的字节数是否大于等于14,如果接收到的字节数小于14,升级管理模块将本次接收到的字节存储在buf(缓存)中,并判断buf中的字节数是否大于等于256,如果buf中的字节数大于等于256,则将buf中的前256个字节写入flash模块中的一页,剩余的字节写入flash模块中的另一页;如果buf中的字节数小于256,则将buf中的字节数写入flash模块中的一页。
如果本次接收到的字节数大于等于14,升级管理模块将本次接收到的字节存储在buf中,并将上一次未接收的字节数减去14,得到本次接收后未接收的字节数。如果本次接收后未接收的字节数为0,升级管理模块判断buf中的字节数是否大于等于256,如果buf中的字节数大于等于256,则将buf中的前256个字节写入flash模块中的一页,将剩余字节写入flash的另一页,如果buf中的字节数小于256,将buf中的字节数写入flash模块中的一页;如果本次接收后未接收的字节数不为0,升级管理模块判断buf中的字节数是否大于等于256,如果buf中的字节数大于等于256,则将buf中的前256个字节写入flash模块中的一页,将剩余的字节写入缓存的起始位置,继续接收目标组件升级包,直至接收完成;如果buf中的字节数小于256,继续接收目标组件升级包,直至接收完成。
在步骤203中,当目标组件升级包接收完成时,升级管理模块从flash模块中获取目标组件升级包,并将目标组件升级包发送至目标外设模块。
当目标组件升级包发送完成,无线接入模块会向升级管理模块发送接收报文,当接收到无线接入模块发送的结束报文时,升级管理模块向目标外设模块发送开始数据报文,该开始数据报文中至少携带目标组件升级包的字节长度信息。当接收到开始数据报文时,目标外设模块记录目标组件升级包的字节长度信息,并向升级管理模块发送第二响应信息,当接收到第二响应信息时,升级管理模块从flash模块中获取目标组件升级包,并将目标组件升级包发送至目标外设模块。由于目标组件升级包中的数据在flash模块中以页为单位进行存储,因此,升级管理模块在从flash模块中获取目标组件升级包时,以页为单进行获取,并以页为单位向目标外设模块进行发送。
在步骤204中,目标外设模块将目标组件升级包存储在flash单元的指定分区,并通过运行指定分区中的目标组件升级包对目标组件进行升级。
在本实施例中,目标外设模块的flash单元至少包括指定分区,该指定分区用于存储接收到的目标组件升级包。通常目标外设模块的flash单元指定分区中一页所能容纳的字节数与flash模块中一页所能容纳的字节数是不同的,因此,在接收到目标组件升级包的过程中,目标外设模块根据指定分区一页所能容纳的字节数,将目标组件升级包存储在flash单元的指定分区。例如,flash模块中一页所能容纳的字节数为256个字节,flash单元的指定分区中一页所能容纳的字节数为500个字节,在接收目标组件升级包的过程中,每当接收到500个字节时,目标外设模块将接收到的字节写入flash单元的指定分区。
当升级管理模块将目标组件升级包中的数据全部发送至目标外设模块,升级管理单元将向目标外设模块发送数据结束报文,当接收到升级管理模块发送的数据结束报文时,目标外设模块进行软复位,重新启动,运行指定分区中的目标组件升级包,如果目标组件升级包成功运行,则目标外设模块将升级标识位上的标识设置为升级标识,以完成对目标组件的升级。
进一步地,当完成对目标组件的升级后,目标外设模块向升级管理模块发送升级成功信息,由升级管理模块将升级成功信息发送至无线接入模块,无线接入模块接收到升级成功信息后,存储目标组件当前的信息,并按照对目标组件的升级方法对其他组件进行升级。当然,如果未完成对目标组件的升级,目标外设模块将向升级管理模块发送升级失败信息,由升级管理模块将升级失败信息发送至无线接入模块,无线接入模块接收到升级失败信息后,再次对目标组件进行升级。
本公开实施例提供的方法,以flash模块作为中介,将目标组件升级包存储到flash模块中,再将flash模块中的目标组件升级包发送至目标外设模块的flash单元进行升级,避免了不同组件带来的升级方式的差异,节省了资源,便于对组件进行统一管理。
图4是根据一示例性实施例示出的一种终端的示意图。参照图4,终端包括无线接入模块401、升级管理模块402、flash模块403及多个外设模块404,每个外设模块404包括至少一个组件4041和一个flash单元4042;其中,目标外设模块为多个外设模块404中的一个;
升级管理模块402,用于当确定目标外设模块402中的目标组件满足升级条件时,接收无线接入模块401发送的目标组件升级包,并将目标组件升级包存储在flash模块403;
升级管理模块402,用于当目标组件升级包接收完成时,从flash模块403中获取目标组件升级包,并将目标组件升级包发送至目标外设模块402;
目标外设模块404,用于将目标组件升级包存储在flash单元的指定分区,并通过运行指定分区中的目标组件升级包对目标组件进行升级。
在本公开的另一个实施例中,升级管理模块402,还用于向无线接入模块发送请求信息报文;
无线接入模块401,还用于当接收到请求信息报文时,向升级管理模块发送升级查询报文,升级查询报文中至少携带目标组件升级包的版本号;
升级管理模块402,还用于当接收到升级查询报文时,判断目标组件是否满足升级条件;
升级管理模块402,还用于当目标外设模块两端的电压高于预设电压,且目标组件的版本号低于目标组件升级包的版本号时,确定目标组件满足升级条件。
在本公开的另一个实施例中,升级管理模块402,还用于当目标组件不满足升级条件时,向无线接入模块401发送提醒消息,由无线接入模块401对用户进行提醒。
在本公开的另一个实施例中,终端还包括多媒体模块,多媒体模块与升级管理模块402共用flash模块403;
升级管理模块402,还用于接收无线接入模块401发送的目标组件升级包之前,还包括:
升级管理模块402,还用于向多媒体模块发送对flash模块403的使用请求;
多媒体模块,还用于当接收到使用请求时,停止使用flash模块,并向升级管理模块发送第一响应消息;
升级管理模块402,还用于当接收到第一响应消息时,对flash模块403进行初始化,并接收无线接入模块401发送的目标组件升级包。
在本公开的另一个实施例中,无线接入模块401,还用于与升级管理模块402预先确定加密算法和解密算法;
无线接入模块401,还用于使用加密算法对目标组件升级包进行加密,并向升级管理模块发送加密后的目标组件升级包;
升级管理模块402,还用于接收加密后的目标组件升级包;
升级管理模块402,还用于使用解密算法对加密后的目标组件升级包进行解密;
升级管理模块402,还用于将解密后的目标组件升级包存储在flash模块。
在本公开的另一个实施例中,升级管理模块402,还用于在目标组件升级包的接收过程中,将已接收字节存储在缓存中,并以页为单位将缓存中的字节写入flash模块403。
在本公开的另一个实施中,升级管理模块402,还用于当未接收字节数为0时,将缓存中的字节与预设数量进行比较;
升级管理模块402,还用于当缓存中的字节小于预设数量时,将缓存中的字节写入flash模块中的一页;
升级管理模块402,还用于当缓存中的字节大于等于预设数量时,将缓存中前预设数量个字节写入flash模块中的一页,并将剩余字节写入所述flash模块中的另一页。
在本公开的另一个实施中,升级管理模块402,还用于当未接收字节数不为0,将缓存中的字节与预设数量进行比较;
升级管理模块402,还用于当缓存中的字节小于预设数量时,继续接收目标组件升级包,直至接收完成;
升级管理模块402,还用于当缓存中的字节大于等于预设数量时,将缓存中前预设数量个字节写入flash模块中的一页,并将剩余字节写入缓存的起始位置,继续接收目标组件升级包,直至接收完成。
在本公开的另一个实施例中,升级管理模块402,还用于当接收到无线接入模块发送的结束报文时,向目标外设模块发送开始数据报文,开始数据报文中至少携带目标组件升级包的字节长度信息;
目标外设模块404,还用于当接收到开始数据报文时,记录目标组件升级包的字节长度信息,并向升级管理模块发送第二响应信息;
升级管理模块402,还用于当接收到第二响应信息时,从flash模块中获取目标组件升级包。
在本公开的另一个实施例中,目标外设模块404,还用于当接收到目标组件升级包,根据指定分区一页所能容纳的字节数,将目标组件升级包存储在flash单元的指定分区。
在本公开的另一个实施例中,目标外设模块404,还用于当接收到升级管理模块发送的数据结束报文,重新启动,运行指定分区中的目标组件升级包;
目标外设模块404,还用于当目标组件升级包成功运行时,将升级标识位上的标识设置为升级标识,以完成对目标组件的升级。
本公开实施例提供的终端,以flash模块作为中介,将目标组件升级包存储到flash模块中,再将flash模块中的目标组件升级包发送至目标外设模块的flash单元进行升级,避免了不同组件带来的升级方式的差异,节省了资源,便于对组件进行统一管理。
关于上述实施例中的终端,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种用于组件升级的装置500的框图。例如,装置500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图5,装置500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(i/o)接口512,传感器组件514,以及通信组件516。
处理组件502通常控制装置500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件502可以包括一个或多个处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理组件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在装置500的操作。这些数据的示例包括用于在装置500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
电源组件506为装置500的各种组件提供电力。电源组件506可以包括电源管理系统,一个或多个电源,及其他与为装置500生成、管理和分配电力相关联的组件。
多媒体组件508包括在所述装置500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当装置500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(mic),当装置500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
i/o接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为装置500提供各个方面的状态评估。例如,传感器组件514可以检测到装置500的打开/关闭状态,组件的相对定位,例如所述组件为装置500的显示器和小键盘,传感器组件514还可以检测装置500或装置500一个组件的位置改变,用户与装置500接触的存在或不存在,装置500方位或加速/减速和装置500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于装置500和其他设备之间有线或无线方式的通信。装置500可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件516经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件516还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
在示例性实施例中,装置500可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由装置500的处理器520执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种组件升级方法。
本公开实施提供的非临时性计算机可读存储介质,以flash模块作为中介,将目标组件升级包存储到flash模块中,再将flash模块中的目标组件升级包发送至目标外设模块的flash单元进行升级,避免了不同组件带来的升级方式的差异,节省了资源,便于对组件进行统一管理。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。