应用程序升级方法及装置与流程

文档序号:15312193发布日期:2018-08-31 22:07阅读:206来源:国知局
本发明涉及计算机
技术领域
,尤其涉及一种应用程序升级方法及装置。
背景技术
:目前,嵌入式系统的应用越来越广泛,由于嵌入式系统具有体积小,性能强、功耗低、可靠性高以及面向工业应用的突出特征,已经广泛应用与军事国防、消费电子、网络通讯、工业控制等各个领域。嵌入式系统在线升级是许多产品必备的一个功能。根据编程接口的不同,目前主要有jtag、uart、can、spi等多种方式。虽然编程接口有所不同,但是升级原理类似,都是通过外部触发条件,使微控制器芯片脱离常规应用程序的执行流程,跳转到某个固定的位置执行bootloader程序,擦除flash,通过相应的通信协议接收升级数据,将该升级数据烧写到芯片的flash存放区域。应用程序在线升级方式是最常见的一种在线升级方式,现有技术中,主要有两种主流应用程序升级方案。一种是利用第三方软件ctoprog,结合芯片的片上bootloader完成应用程序升级,这种方式由于需要配置芯片引脚,完成bootloader方式选择,升级不灵活;另一种是用户自己开发bootloader,功能类似于片上bootloader,这种方式可以不用配置芯片管脚,根据上位机协议进行boot模式选择。但采用该两种方式进行升级的过程中,若一旦升级失败,则无法再次进行应用程序在线升级,而必须使用jtag进行软件烧写,降低了嵌入式系统的稳定性和可靠性。技术实现要素:本发明提供一种应用程序升级方法及装置,以提高嵌入式系统的稳定性和可靠性。本发明实施例提供一种应用程序升级方法,包括:获取操作指令;根据所述操作指令获取标志位信息,所述标志位信息用于指示所述应用程序的升级结果;根据所述标志位信息确定是否对所述应用程序执行升级操作。在本发明一实施例中,所述操作指令为上电指令;所述根据所述标志位信息确定是否对所述应用程序执行升级操作,包括:若所述标志位信息为第一信息,则确定对所述应用程序执行升级操作,所述第一信息为所述应用程序升级失败。在本发明一实施例中,还包括:若所述标志位信息为第二信息,则确定初始化所述应用程序,所述第二信息为所述应用程序升级成功。在本发明一实施例中,所述操作指令为升级指令,所述升级指令中包含目标版本信息;所述根据所述标志位信息确定是否对所述应用程序执行升级操作,包括:若所述标志位信息为第一信息,则确定对所述应用程序执行升级操作,所述第一信息中包含升级版本信息,所述目标版本信息与所述升级版本信息一致,所述第一信息指示所述升级版本信息对应的应用程序升级失败。在本发明一实施例中,还包括:若所述标志位信息为第二信息,则确定初始化所述应用程序,所述第二信息中包含升级版本信息,所述目标版本信息与所述升级版本信息一致,所述第二信息指示所述升级版本信息对应的应用程序升级成功。在本发明一实施例中,还包括:若所述标志位信息为第三信息,则确定对所述应用程序执行升级操作,将所述应用程序升级至所述目标版本信息对应的应用程序,所述第三信息中包含升级版本信息,所述目标版本信息高于所述升级版本信息,所述第三信息指示所述升级版本信息对应的应用程序升级失败。本发明实施例还提供一种应用程序升级装置,包括:获取模块,用于获取操作指令;所述获取模块,还用于根据所述操作指令获取标志位信息,所述标志位信息用于指示所述应用程序的升级结果;确定模块,用于根据所述标志位信息确定是否对所述应用程序执行升级操作。在本发明一实施例中,所述操作指令为上电指令;所述确定模块,具体用于若所述标志位信息为第一信息,则确定对所述应用程序执行升级操作,所述第一信息为所述应用程序升级失败。在本发明一实施例中,所述确定模块,还具体用于若所述标志位信息为第二信息,则确定初始化所述应用程序,所述第二信息为所述应用程序升级成功。在本发明一实施例中,所述操作指令为升级指令,所述升级指令中包含目标版本信息;所述确定模块,具体用于若所述标志位信息为第一信息,则确定对所述应用程序执行升级操作,所述第一信息中包含升级版本信息,所述目标版本信息与所述升级版本信息一致,所述第一信息指示所述升级版本信息对应的应用程序升级失败。在本发明一实施例中,所述确定模块,还具体用于若所述标志位信息为第二信息,则确定初始化所述应用程序,所述第二信息中包含升级版本信息,所述目标版本信息与所述升级版本信息一致,所述第二信息指示所述升级版本信息对应的应用程序升级成功。在本发明一实施例中,所述确定模块,还具体用于若所述标志位信息为第三信息,则确定对所述应用程序执行升级操作,将所述应用程序升级至所述目标版本信息对应的应用程序,所述第三信息中包含升级版本信息,所述目标版本信息高于所述升级版本信息,所述第三信息指示所述升级版本信息对应的应用程序升级失败。本发明实施例提供的应用程序升级方法及装置,通过先获取操作指令,再根据操作指令获取标志位信息,以便根据该标志位信息确定是否对应用程序执行升级操作,可以避免在升级过程中由于升级失败导致的嵌入式系统的稳定性和可靠性的问题,从而提高了嵌入式系统的稳定性和可靠性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种应用程序升级方法的流程示意图;图2为本发明实施例提供的一种应用程序升级原理的示意图;图3为本发明实施例提供的一种程序数据块传输过程的示意图;图4为本发明实施例提供的一种bootloader升级程序的流程图;图5为本发明实施例提供的一种根据标志位信息确定是否执行升级操作的流程示意图;图6为本发明实施例提供的一种应用程序升级装置的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。图1为本发明实施例提供的一种应用程序升级方法的流程示意图,该应用程序升级方法可以由应用程序升级装置执行,示例的,该应用程序升级装置可以独立设置,也可以集成在处理器中。请参见图1所示,当然,本发明实施例只是以图1为例进行说明,但并不代表本发明仅局限于此。该应用程序升级方法可以包括:s101、获取操作指令。示例的,该操作指令可以为上电指令,也可以为升级指令,在此,对于操作指令具体是指什么,本发明不做进一步地限制。s102、根据操作指令获取标志位信息。其中,标志位信息用于指示应用程序的升级结果。示例的,在本发明实施例中,通过获取该标志位信息,其目的在于:可以通过该标志位信息确定应用程序的升级结果,是升级成功还是升级失败。因此,该标志位信息可以为指示应用程序升级成功的信息,也可以为指示应用程序升级失败的信息,在此,对于标志位信息具体是指什么,本发明不做进一步地限制。s103、根据标志位信息确定是否对应用程序执行升级操作。示例的,若标志位信息指示的应用程序的升级结果为升级成功,则确定对该应用程序不执行升级操作,若标志位信息指示的应用程序的升级结果为升级失败,则确定对该应用程序执行升级操作,以便获取到升级后的应用程序,可以避免在升级过程中由于升级失败导致的嵌入式系统的稳定性和可靠性的问题,从而提高了嵌入式系统的稳定性和可靠性。本发明实施例提供的应用程序升级方法,通过先获取操作指令,再根据操作指令获取标志位信息,以便根据该标志位信息确定是否对应用程序执行升级操作,可以避免在升级过程中由于升级失败导致的嵌入式系统的稳定性和可靠性的问题,从而提高了嵌入式系统的稳定性和可靠性。基于图1对应的实施例,在图1对应的实施例的基础上,进一步地,本发明实施例还提供了的另一种应用程序升级方法,应用于电子设备,该应用程序升级方法还可以包括:可选的,当操作指令为上电指令时,则s103根据标志位信息确定是否对应用程序执行升级操作,可以通过以下两种可能的方式实现。在第一种可能的实现方式中:若标志位信息为第一信息,则确定对应用程序执行升级操作,第一信息为应用程序升级失败。在第二种可能的实现方式中:若所述标志位信息为第二信息,则确定初始化所述应用程序,所述第二信息为所述应用程序升级成功。在本发明实施例中,升级原理可以参见图2所示,图2为本发明实施例提供的一种应用程序升级原理的示意图,嵌入式系统上电复位后,根据该上电指令获取标志位信息,入口地址为0x33fff6,判断该标识位信息,如果标志位为第一信息0x9a9b,则表示上次应用程序升级失败,系统跳转至bootloader升级程序区,入口地址为0x338000,等待再次升级指令;如果标志位为第二信息0x9a9d,表示上次应用程序升级成功,入口地址为0x33000,嵌入式系统自动跳转到应用程序正常初始化运行。bootloader升级程序存放至flash扇区a,应用程序存放在flash扇区b、c、d、e、f、g、h。当然,在本发明实施例中,只是以入口地址分别为0x33fff6、0x338000及0x33000,标志位分别为0x9a9b及0x9a9d为例进行说明,但并不代表本发明仅局限于此。示例的,在第一种可能的实现方式中,在对应用程序执行升级操作的过程中,可以通过上位机图形用户界面(graphicaluserinterface,简称gui)与嵌入式系统的数字信号处理(digitalsignalprocessing,简称dsp)进行通信,完成升级命令与程序数据块的传输。为了完成稳定可靠的通信,可以通过在线升级通信协议,请参见图3所示,图3为本发明实施例提供的一种程序数据块传输过程的示意图。具体的,在程序数据块传输过程中,上位机向dsp发送升级指令;示例的,在本发明实施例中,升级指令可以为0xaabb,当然,本发明实施例只是以升级指令为0xaabb为例进行说明,但并不代表本发明仅局限于此。dsp接收到升级指令后,判断升级指令是否为预设升级指令;示例的,预设指令也可以为0xaabb。若否,则继续接收上位机发送的升级指令;若是,则向上位机回复确认应答信号,上位机收到dsp的应答信号后,开始进行程序数据块发送;dsp接收程序数据块并计算校验和;若正确,则烧写flash,并向上位机发送该确认应答信号,若不正确,则向上位机发送否定应答信号;循环执行,直至所有的程序数据块发送完为止,上位机向dsp发送终止符;示例的,在本发明实施例中,终止符可以为0x5a5b,当然,本发明实施例只是以终止符为0x5a5b为例进行说明,但并不代表本发明仅局限于此,若该终止符为预设终止符,则进行软件复位,示例的,预设终止符也可以为0x5a5b。需要说明的是,在本发明实施例中,通过上位机与嵌入式系统的dsp进行通信之前,上位机需要先进行串口配置,文件的读取与解析,命令按钮以及相关的指示灯。其中,文件的读取与解析为上位机设计的关键部分,以便生成应用程序升级时所需的hex文件,并将该hex文件解析成一个个固定格式的数据块,示例的,其数据块的格式可以参见如下表1所示:表1地址长度数据库校验和32bits16bits1-244bits16bits启动上位机后,将dsp连接至上位机串口,可以通过点击updatecmd按钮,向dsp发送升级指令,当dsp接收到该升级指令后,会回发确认应答信号,readyupdate信号灯显示绿色。接着,点击hexselect按钮,浏览相应的hex文件,选择需要擦除flash扇区,然后点击program按钮,updateprocess进度条会显示升级进度。升级完毕,programcomplete指示灯显示绿色。示例的,在第二种可能的实现方式中,若第二信息为应用程序升级成功,说明此时该应用程序处于已经升级后的状态,因此,在接收到上电指令后,就可以直接初始化所述应用程序,而无需再次对该应用程序执行升级操作,从而节省了升级时间,提高了应用程序的利用率。在实际应用过程中,以应用程序由版本3.0升级到版本3.1为例进行说明,若应用程序在升级到版本3.1的过程中,突然发生掉电,从而使得应用程序不完整,通过本发明的技术方案,当再次上电之后,就可以根据该上电指令获取标志位信息,若标志位信息为第一信息,则说明掉电之前,应用程序由版本3.0到版本3.1升级失败,此时,可以通过上位机重新执行版本3.1升级的操作,直到该版本3.1升级成功之后,再对该应用程序进行初始化,从而避免在版本3.1升级失败的情况下,直接进入到该应用程序中,进而提高了嵌入式系统稳定性和可靠性。若标志位信息为第二信息,则说明掉电之前,应用程序由版本3.0到版本3.1升级成功,此时,可以直接对该应用程序进行初始化,而无需再次对该应用程序执行版本3.1升级操作,从而节省了再次升级时间,提高了应用程序的利用率。基于图1对应的实施例,在图1对应的实施例的基础上,进一步地,本发明实施例还提供的另一种应用程序升级方法,应用于电子设备,该应用程序升级方法还可以包括:可选的,操作指令为升级指令,升级指令中包含目标版本信息;则s103根据标志位信息确定是否对应用程序执行升级操作,可以通过以下可能的三种方式实现。在本发明实施例中,bootloader升级程序包含串口通信功能和flashapi功能,请参见图4所示,图4为本发明实施例提供的一种bootloader升级程序的流程图。当应用程序接收到上位机发送的升级指令时,会停止当前应用程序的执行,跳转至bootloader升级程序的code_start入口开始执行,在bootloader升级程序的主函数中,会重新初始化系统,包括系统时钟、flash、sharedram,uart等模块,并擦除应用程序flash扇区,回送应答给上位机gui,表示应用程序扇区擦除完毕,可接收升级代码进行更新。然后进入一个主循环,在这个主循环中根据预先设定的通信协议,数据格式,通过串口接收并校验每一个数据块的数据,然后再将该数据块编程到相应的地址上,再回送一个应答给gui表示这个数据块已经编程完毕,可以发送下一个数据块。最后上位机发送一个结束符表示升级数据块发送完毕,bootloader升级程序会跳出主循环,接着软件复位子系统。在第一种可能的实现方式中:若标志位信息为第一信息,则确定对应用程序执行升级操作,第一信息中包含升级版本信息,目标版本信息与升级版本信息一致,第一信息指示升级版本信息对应的应用程序升级失败。示例的,在嵌入式系统boottoflash的入口地址处,通过查询判断升级flagptr指向地址中存放的标志位信息,从而确定是跳转到应用程序还是跳转进bootloader升级程序进行应用程序重新升级。以flagptr初始地址为0x33ff80,请参见图5所示,图5为本发明实施例提供的一种根据标志位信息确定是否执行升级操作的流程示意图。嵌入式系统每一次在跳转至bootloader升级程序或者用户应用程序之前,均需要对获取到的标志位信息进行判断,如果flagptr地址存放至标志值为0xffff,则表示系统未进行过升级,直接跳转至用户应用程序;如果flagptr存放至不是0xffff,则通过对标志位信息进行预处理,例如,可以对标志位信息进行自减及自加处理,flagptr地址减1,再进行判断,直到flagptr指向地址存放值为0xffff,然后flagptr地址值加1,若此时flagptr地址存放值为第一信息0x9a9b,则表示上次程序升级失败,跳转至bootloader升级程序等待再次进行升级,如果flagptr地址存放值为第二信息0x9a9d,则上表示上次程序升级成功,程序跳转至用户应用程序处执行。在实际应用过程中,以第一次应用程序由版本3.0升级到版本3.1为例进行说明,其中,目标版本信息为版本3.1,在接收到升级指令之后,用户需要停止当前的操作,根据该升级指令获取标志位信息,若该标志位信息为包含升级版本信息3.1的第一信息,则说明第一次应用程序由版本3.0到版本3.1升级失败,此时,可以通过上位机重新执行第二次版本3.1升级的操作,即目标版本信息与第一信息包含的升级版本信息一致,直到该版本3.1升级成功之后,再对该应用程序进行初始化,从而避免在版本3.1升级失败的情况下,直接进入到该应用程序中,进而提高了嵌入式系统稳定性和可靠性。需要说明的是,执行升级操作的过程可以参见图3所示,在此,本发明不再进行赘述。在第二种可能的实现方式中:若标志位信息为第二信息,则确定初始化应用程序,第二信息中包含升级版本信息,目标版本信息与升级版本信息一致,第二信息指示升级版本信息对应的应用程序升级成功。在实际应用过程中,以第一次应用程序由版本3.0升级到版本3.1为例进行说明,其中,目标版本信息为版本3.1,在接收到升级指令之后,用户需要停止当前的操作,根据该升级指令获取标志位信息,若该标志位信息为包含升级版本信息3.1的第二信息,则说明第一次应用程序由版本3.0到版本3.1升级成功,此时,可以直接对该应用程序进行初始化,而无需再次对该应用程序执行版本3.1升级操作,从而节省了再次升级时间,提高了应用程序的利用率。在第三种可能的实现方式中:若标志位信息为第三信息,则确定对应用程序执行升级操作,将应用程序升级至目标版本信息对应的应用程序,第三信息中包含升级版本信息,目标版本信息高于升级版本信息,第三信息指示升级版本信息对应的应用程序升级失败。在实际应用过程中,以第一次应用程序由版本3.0升级到版本3.1为例进行说明,其中,目标版本信息为版本3.2,在接收到升级指令之后,用户需要停止当前的操作,根据该升级指令获取标志位信息,若该标志位信息为包含升级版本信息3.1的第一信息,则说明第一次应用程序由版本3.0到版本3.1升级失败,此时,可以通过上位机直接执行版本3.2升级的操作,即目标版本信息高于第一信息包含的升级版本信息,直接将版本3.0升级到版本3.2,在版本3.2升级成功之后,再对该应用程序进行初始化,进入到该应用程序中,进而提高了嵌入式系统稳定性和可靠性。需要说明的是,执行升级操作的过程可以参见图3所示,在此,本发明不再进行赘述。图6为本发明实施例提供的一种应用程序升级装置60的结构示意图,当然,本发明实施例只是以图6为例进行说明,但并不代表本发明仅局限于此。请参见图6所示,该应用程序升级装置60可以包括:获取模块601,用于获取操作指令。获取模块601,还用于根据操作指令获取标志位信息,标志位信息用于指示应用程序的升级结果。确定模块602,用于根据标志位信息确定是否对应用程序执行升级操作。可选的,操作指令为上电指令。确定模块602,具体用于若标志位信息为第一信息,则确定对应用程序执行升级操作,第一信息为应用程序升级失败。可选的,确定模块602,还具体用于若标志位信息为第二信息,则确定初始化应用程序,第二信息为应用程序升级成功。可选的,操作指令为升级指令,升级指令中包含目标版本信息。确定模块602,具体用于若标志位信息为第一信息,则确定对应用程序执行升级操作,第一信息中包含升级版本信息,目标版本信息与升级版本信息一致,第一信息指示升级版本信息对应的应用程序升级失败。可选的,确定模块602,还具体用于若标志位信息为第二信息,则确定初始化应用程序,第二信息中包含升级版本信息,目标版本信息与升级版本信息一致,第二信息指示升级版本信息对应的应用程序升级成功。可选的,确定模块602,还具体用于若标志位信息为第三信息,则确定对应用程序执行升级操作,将应用程序升级至目标版本信息对应的应用程序,第三信息中包含升级版本信息,目标版本信息高于升级版本信息,第三信息指示升级版本信息对应的应用程序升级失败。本发明实施例所示的应用程序升级装置60,可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1