用于软件版本升级的方法及装置与流程

文档序号:12550401阅读:240来源:国知局
用于软件版本升级的方法及装置与流程

本发明涉及网络通讯技术,具体涉及一种用于软件版本升级的方法以及用于软件版本升级的装置。



背景技术:

随着智能移动电话、平板电脑以及智能车辆中的智能驾驶系统等智能电子设备的普及,智能电子设备中安装的应用等软件也日渐丰富。

安装于智能电子设备中的软件通常会存在版本升级需求,如智能电子设备中已安装的固件以及应用等软件由于需要消除Bug或者增加新功能等因素,而需要智能电子设备通过OTA(Over-The-Air,空中下载)技术从相应的服务器处下载新版本的固件或者相应应用的差分升级包或者全量升级包,智能电子设备在成功下载了新版本的升级包后,通过执行升级包的安装操作,实现智能电子设备中的固件或者相应应用的版本升级。

发明人在实现本发明过程中发现:在软件版本升级过程中,通常需要网络侧的不同部门的工作人员之间进行协作配合,如软件部门的工作人员与OTA管理服务器部门的工作人员之间的协作配合等,这不但会提高软件版本升级的人工成本,而且还会存在由于人为错误而导致的升级包异常等问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于软件版本升级的方法及装置。

依据本发明的其中一个方面,提供了一种用于软件版本升级的方法,该方法包括:在检测到源码管理服务器接收到用户提交的源码文件以及源码配置信息的情况下,将所述源码文件以及源码配置信息传输给编译服务器;在检测到所述编译服务器从源码管理服务器处获取到所述源码文件以及源码配置信息的情况下,对所述源码文件进行编译形成当前编译文件,在编译成功后,在所述源码配置信息中增加本次编译信息形成当前编译配置信息,并将所述当前编译配置信息提交给空中下载OTA管理服务器;在检测到OTA管理服务器根据所述当前编译配置信息确定生成软件升级包的情况下,根据从编译服务器处获取的当前编译文件以及相应的历史编译文件生成软件升级包。

可选的,上述用于软件版本升级的方法,其中,所述将所述源码文件以及源码配置信息传输给编译服务器的步骤包括:通过源码管理服务器向编译服务器发送编译通知,所述编译通知包括:源码文件以及源码配置信息的统一资源定位符URL;在检测到所述编译服务器接收到所述编译通知的情况下,根据所述编译通知中的URL从源码管理服务器处下载所述源码文件以及源码配置信息。

可选的,上述用于软件版本升级的方法,其中,所述源码配置信息包括:表示源码文件所针对的车辆中的元部件的信息、源码文件所对应的软件版本号以及表示源码文件为测试版/正式版源码文件的信息。

可选的,上述用于软件版本升级的方法,其中,所述本次编译信息包括:本次编译时间、执行本次编译操作的编译服务器信息以及针对所述元部件对应源码文件的编译顺序号。

可选的,上述用于软件版本升级的方法,其中,所述在检测到OTA管理服务器根据所述当前编译配置信息确定生成软件升级包的情况下,根据从编译服务器处获取当前编译文件以及相应的历史编译文件生成软件升级包的步骤包括:根据当前编译配置信息从配置信息集合中获取至少一个历史编译配置信息,并显示所述当前编译配置信息以及各历史编译配置信息;根据用户基于所述显示的信息而选择的历史编译配置信息从编译服务器处获取当前编译文件以及相应的历史编译文件,并根据获取到的编译文件生成差分升级包。

可选的,上述用于软件版本升级的方法,其中,所述在检测到OTA管理服务器根据所述当前编译配置信息确定生成软件升级包的情况下,根据从编译服务器处获取当前编译文件以及相应的历史编译文件生成软件升级包的步骤还包括:在检测到成功生成所述差分升级包的信息的情况下,通知测试服务器对所述差分升级包进行测试。

可选的,上述用于软件版本升级的方法,其中,所述在检测到OTA管理服务器根据所述当前编译配置信息确定生成软件升级包的情况下,根据从编译服务器处获取当前编译文件以及相应的历史编译文件生成软件升级包的步骤还包括:在检测到所述OTA管理服务器接收到来自测试服务器的差分升级包测试失败的信息的情况下,显示生成全量升级包的提示信息,并在接收到用户基于所述提示信息选择生成全量升级包的情况下,从编译服务器处请求当前编译文件以及用于生成全量升级包的历史编译文件,并根据所述当前编译文件以及历史编译文件生成全量升级包。

依据本发明的另一个方面,提供了一种用于软件版本升级的装置,所述装置包括:源码提交模块,用于在检测到源码管理服务器接收到用户提交的源码文件以及源码配置信息的情况下,将所述源码文件以及源码配置信息传输给编译服务器;编译模块,用于在检测到所述编译服务器从源码管理服务器处获取到所述源码文件以及源码配置信息的情况下,对所述源码文件进行编译形成当前编译文件,在编译成功后,在所述源码配置信息中增加本次编译信息形成当前编译配置信息,并将所述当前编译配置信息提交给空中下载OTA管理服务器;生成升级包模块,用于在检测到OTA管理服务器根据所述当前编译配置信息确定生成软件升级包的情况下,根据从编译服务器处获取的当前编译文件以及相应的历史编译文件生成软件升级包。

可选的,上述用于软件版本升级的装置,其中,所述源码提交模块具体包括:通知子模块:用于通过源码管理服务器向编译服务器发送编译通知,所述编译通知包括:源码文件以及源码配置信息的统一资源定位符URL;下载子模块,用于在检测到所述编译服务器接收到所述编译通知的情况下,根据所述编译通知中的URL从源码管理服务器处下载所述源码文件以及源码配置信息。

可选的,上述用于软件版本升级的装置,其中,所述源码配置信息包括:表示源码文件所针对的车辆中的元部件的信息、源码文件所对应的软件版本号以及表示源码文件为测试版/正式版源码文件的信息。

可选的,上述用于软件版本升级的装置,其中,所述本次编译信息包括:本次编译时间、执行本次编译操作的编译服务器信息以及针对所述元部件对应源码文件的编译顺序号。

可选的,上述用于软件版本升级的装置,其中,所述生成升级包模块具体包括:显示子模块,用于根据当前编译配置信息从配置信息集合中获取至少一个历史编译配置信息,并显示所述当前编译配置信息以及各历史编译配置信息;生成差分升级包子模块,用于根据用户基于所述显示的信息而选择的历史编译配置信息从编译服务器处获取当前编译文件以及相应的历史编译文件,并根据获取到的编译文件生成差分升级包。

可选的,上述用于软件版本升级的装置,其中,所述生成升级包模块还包括:测试请求子模块,用于在检测到成功生成所述差分升级包的信息的情况下,通知测试服务器对所述差分升级包进行测试。

可选的,上述用于软件版本升级的装置,其中,所述生成升级包模块还包括:生成全量升级包子模块,用于在检测到所述OTA管理服务器接收到来自测试服务器的差分升级包测试失败的信息的情况下,触发显示子模块显示生成全量升级包的提示信息,并在接收到用户基于所述提示信息选择生成全量升级包的情况下,从编译服务器处请求当前编译文件以及用于生成全量升级包的历史编译文件,并根据所述当前编译文件以及历史编译文件生成全量升级包。

本发明提供的用于软件版本升级的方法及装置至少具有下列优点和有益效果:本发明通过检测可以自动发现用户向源码管理服务器提交了源码文件以及源码配置信息,并可以自动将源码文件以及源码配置信息由源码管理服务器提供给编译服务器;本发明在检测到编译服务器从源码管理服务器处获取到所述源码文件以及源码配置信息的情况下,通过运行脚本中的编译命令等方式可以实现对源码文件自行编译的操作;通过在源码配置信息增加本次编译信息而生成当前编译配置信息,在后续的生成软件升级包的过程中,可以充分了解各编译文件的情况,从而可以通过OTA管理服务器有针对性的基于当前编译文件以及相应的历史编译文件生成新版本的软件升级包;从而本发明可以有效避免软件版本升级需要不同部门的工作人员之间进行协作配合的现象,进而可以有效避免由于软件版本升级过程中的人为错误而导致的升级包异常的现象。由此可知,本发明提供的技术方案降低了软件版本升级的人工成本,并提高了软件升级包的可靠性。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。本实施例的附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明一个实施例的用于软件版本升级的方法的流程图;

图2为本发明一个实施例的OTA固件升级的方法的流程图;

图3为本发明一个实施例的用于软件版本升级的装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本发明公开的示例性实施例,然而应当理解,可以以各种形式实现本发明公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明的技术方案,并且能够将本发明公开的范围完整的传达给本领域的技术人员。

下面为本发明的一个用于软件版本升级的方法的实施例。

本实施例的用于软件版本升级的方法通常应用于对智能电子设备中的软件进行升级,尤其适用于对智能移动电话、智能车辆的车载电子系统以及平板电脑等移动智能电子设备中的软件进行升级。

本实施例的软件可以为固件,也可以为智能电子设备中安装的APP等应用。本实施例中的固件(Firmware)通常是指负责智能电子设备中的基础且底层工作的软件/程序,即固件是使硬件设备得以正常运行的程序代码。本实施例的固件可以具体为智能电子设备的操作系统,如智能移动电话的固件可以为智能移动电话的操作系统,车载电子系统的固件可以车载电子系统的操作系统等。本实施例的固件也可以为智能电子设备中的某硬件的驱动程序,如本实施例的固件可以为车辆中的仪表系统、ADAS(Advanced Driver Assistance Systems,先进的驾驶系统)以及中控设备等的驱动程序。另外,本实施例的固件通常会被写入智能电子设备的EROM(Eraseable Read Only Memory,可擦写只读存储器)或者EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)中。

本实施例的用于软件版本升级的方法的流程如图1所示,且本实施例的该方法主要包括:步骤S100、步骤S110以及步骤S120。下面对本实施例的该方法所包括各步骤分别进行详细说明。

图1中,S100、在检测到源码管理服务器接收到用户提交的源码文件以及源码配置信息的情况下,将源码文件以及源码配置信息传输给编译服务器。

作为示例,本实施例中的源码管理服务器是各用户所使用的终端设备与编译服务器之间的桥梁,即各用户编写的源码文件需经由源码管理服务器统一提交给编译服务器;一个具体的例子,用户在完成其针对车辆中的元部件的驱动程序升级的源码文件的编写工作,并对该源码文件设置了源码配置信息(如源码配置文件)之后,可以主动向源码管理服务器提交该源码文件以及源码配置文件,且该提交过程可以具体为向源码管理服务器上传文件的过程。

一个具体的例子,本实施例预先在源码管理服务器处设置了源码管理网址,用户可以通过其终端设备(如计算机等)访问该源码管理网址,本实施例根据终端设备对源码管理服务器中的源码管理网址的访问向终端设备推送源码管理网页,且该网页中设置有源码提交按钮;在该源码提交按钮被用户点击时,本实施例从源码管理服务器向终端设备推送源码提交窗口,且该源码提交窗口中包含能够供用户选择需要提交的文件的文件选择按钮,在该文件选择按钮被用户点击后,可以展现用户所使用的终端设备中的磁盘目录信息以及磁盘目录下的文件夹信息等,用户在选择了终端设备中的相应磁盘的相应存储路径(即文件夹)下的源码文件以及源码配置文件,并点击了确定提交按钮后,本实施例可以将终端设备中的相应存储路径下的源码文件以及源码配置文件上传至源码管理服务器,且该源码文件以及源码配置文件对应有相应的URL(Uniform Resoure Locator,统一资源定位符),从而源码文件以及源码配置文件被成功提交给源码管理服务器,并存储于源码管理服务器的相应存储路径中。

作为示例,本实施例中的源码配置文件中的源码配置信息主要包括:表示源码文件所针对的车辆中的元部件的信息、源码文件所对应的软件版本号(如V1.0.0)以及表示源码文件为测试版源码文件还是正式版源码文件的信息;其中的表示源码文件所针对的车辆的元部件的信息可以具体为:表示仪表系统的信息(如仪表系统的ID或者代码等)、表示ADAS的信息(如ADAS的ID或者代码等)或者表示中控设备的信息(如中控设备的ID或者代码)等;其中的软件版本号可以由版本管理服务器设置,当然,软件版本号也可以由用户手动设置。另外,本实施例还可以在向源码管理服务器成功提交源码文件以及源码配置文件之后,通知版本管理服务器,以便于版本管理服务器可以为下一个用于升级的源码文件形成软件版本号。另外,本实施例中的源码配置信息还可以包括:表示需求方的渠道信息等。

作为示例,本实施例可以在检测到由源码管理服务器向用户的终端设备发送的提交成功信息时,确定出源码管理服务器成功接收到用户提交的源码文件以及源码配置文件。

作为示例,本实施例可以在检测到源码管理服务器成功接收到用户提交的源码文件以及源码配置文件时,及时并主动的向编译服务器推送源码文件以及源码配置文件(如通过调用推送命令从而执行相应的脚本以将码文件以及源码配置文件推送给编译服务器),本实施例也可以先向编译服务器发送编译通知,以通知编译服务器来获取源码文件以及源码配置文件;当然,本实施例也可以在检测到源码管理服务器接收到用户提交的源码文件以及源码配置文件后,在一天的预定时间(如凌晨1时)主动向编译服务器推送源码文件以及源码配置信息或者向编译服务器发送编译通知。另外,本实施例可以在检测到源码管理服务器在预定时间段(如一天)内成功接收到多个用户提交的源码文件以及源码配置文件的情况下,主动的将该预定时间段内成功接收到的所有源码文件以及源码配置文件一起推送给编译服务器或者向编译服务器发送一个编译通知,也可以针对每一次成功接收到的源码文件以及源码配置文件分别向编译服务器发送一个编译通知。

作为示例,本实施例中的编译通知可以包括:获得源码文件以及源码配置文件的方式,如编译通知可以包括:源码文件以及源码配置文件在源码管理服务器中的URL。在针对源码管理服务器在预定时间段内成功接收到的所有源码文件以及源码配置文件向编译服务器发送一个编译通知的情况下,该编译通知中可以包括所有源码文件以及源码配置文件的URL列表。通过利用URL来使编译服务器获取源码文件和源码配置文件,可以使编译服务器获取源码文件和源码配置文件的方式更灵活。

作为示例,本实施例在检测到编译服务器接收到编译通知的情况下,根据该编译通知从源码管理服务器处获取源码文件以及源码配置文件,如根据编译通知中的URL从源码管理服务器处下载源码文件以及源码配置文件。

需要特别说明的是,本实施例中的源码管理服务器、编译服务器以及版本管理服务器均是指逻辑意义上的服务器,也就是说,源码管理服务器、编译服务器以及版本管理服务器可以位于同一台物理设备中,且该物理设备还可以集成设置其他服务器,当然,源码管理服务器、编译服务器以及版本管理服务器器也可以位于不同的物理设备中。

S110、在检测到编译服务器从源码管理服务器处获取到源码文件以及源码配置信息的情况下,对源码文件进行编译形成当前编译文件,在编译成功后,在源码配置信息中增加本次编译信息形成当前编译配置信息,并将当前编译配置信息提交给OTA管理服务器。

作为示例,本实施例可以在检测到由源码管理服务器向编译服务器发送的下载成功的响应信息时,确定出编译服务器从源码管理服务器处成功获取到源码文件以及源码配置文件。本实施例可以在确定出编译服务器从源码管理服务器处成功获取到源码文件以及源码配置文件时,及时的对源码文件执行编译操作,也可以在一天的预定时间(如凌晨1时)对源码文件执行编译操作。

作为示例,本实施例可以通过调用相应的编译命令来对源码文件执行编译操作,一个具体的例子,针对QNX系统(Quick UNIX系统),在将源码文件编译为IMAGE文件的情况下,可以通过调用下述编译命令来对源码文件执行编译操作:

mksysimage.bat–vvvvvvv-o"%WORKSPACE%\image\%BUILD_NUMBER%"jacinto6evm.external

其中,mksysimage.bat为QNX系统中的用于形成IMAGE文件的编译命令名;-vvvvvvv为编译命令参数;%WORKSPACE%\image\表示编译形成的IMAGE文件的存储路径;%BUILD_NUMBER%为针对元部件(如车辆的仪表系统或者中控系统等)对应源码文件的编译顺序号(如针对仪表系统的第100次编译),且该顺序号是由编译服务器自动生成的;jacinto6evm.external表示与CPU相关的参数。

利用上述编译命令生成的IMAGE文件可以包括:Base.img、Data.img以及Boot.img等。本实施例不限制编译命令的具体表现形式以及调用编译命令所生成的当前编译文件的具体表现形式。

作为示例,本实施例可以在源码配置文件中增加本次编译信息,从而使源码配置文件形成当前编译配置文件,且本次编译信息可以具体包括:本次编译时间(如调用编译命令的时间或者编译成功的时间)、执行本次编译操作的编译服务器信息(如编译服务器名称或者编译服务器ID等)以及本次编译顺序号等。另外,本实施例最终形成的软件升级包的版本号可以由源码文件所对应的软件版本号(如V1.0.1)、表示源码文件所针对的车辆中的元部件的信息(如元部件ID)以及编译时间等信息形成。

作为示例,本实施例在检测到编译命令成功执行完成(即成功生成当前编译文件)的情况下,通常会先将由本次编译信息和源码配置文件形成的当前编译配置文件提交给OTA管理服务器;如本实施例可以在监测到编译命令成功执行完成时,通过调用推送命令以执行相应的脚本从而使当前编译配置文件提交给OTA管理服务器,上述用于向OTA管理服务器推送当前编译配置文件的推送命令的一个具体例子如下:

python push_compile_os_cmd.py"dashboard"1.0.1-0163-D-1610100346;

其中,python为调用的推送命令,push_compile_os_cmd.py为用于实现源码配置文件推送的脚本,该脚本可以对1.0.1-0163-D-1610100346进行相应的处理(如格式调整等),从而使当前编译配置信息(如软件版本信息等)推送到OTA管理服务器,且1.0.1为软件版本号,0163为本次编译顺序号(如针对车辆的仪表系统的第163次编译),D表示debug模式,1610100346表示本次编译时间。

作为示例,本实施例也可以采用其他方式将当前编译文件提交给OTA管理服务器,如本实施例可以在检测到编译命令成功执行完成时,及时向OTA管理服务器发送版本升级通知,以通知OTA管理服务器来获取当前编译配置文件;当然,本实施例也可以在检测到编译服务器在预定时间段内获取到的所有源码文件均成功编译完成后,在一天的预定时间(如凌晨1时)向OTA管理服务器发送版本升级通知。另外,本实施例可以针对每一个当前编译文件向OTA管理服务器发送一个版本升级通知,也可以针对在预定时间段内成功编译的所有当前编译文件向OTA管理服务器发送一个版本升级通知。上述版本升级通知可以包括:获得当前编译配置文件的方式,如版本升级通知可以包括:当前编译配置信息的URL。在针对源码管理服务器在预定时间段内成功编译的所有当前编译文件以及当前编译配置文件向OTA管理服务器发送一个版本升级通知的情况下,该版本升级通知中应包括所有当前编译配置文件的URL列表。

作为示例,本实施例应将当前编译文件以及当前编译配置信息存储于本地的软件版本集合中,且在本次软件版本升级的方法结束后,当前编译文件成为历史编译文件,而当前编译配置信息成为历史编译配置文件。

S120、在检测到OTA管理服务器根据当前编译配置信息确定生成软件升级包的情况下,根据从编译服务器处获取的当前编译文件以及相应的历史编译文件生成软件升级包。

作为示例,本实施例中的OTA管理服务器可以接收到编译服务器主动推送来的当前编译配置文件,OTA管理服务器也可以接收到版本升级通知;在接收到版本升级通知的情况下,本实施例可以根据版本升级通知从编译服务器处获取当前编译配置文件,如根据版本升级通知中的URL从编译服务器处下载当前编译配置文件。

需要特别说明的是,本实施例中的OTA管理服务器是指逻辑意义上的服务器,如OTA管理服务器可以与源码管理服务器和/或编译服务器和/或版本管理服务器位于同一台物理设备中,且该物理设备中还可以集成设置其他服务器,当然,OTA管理服务器也可以与源码管理服务器、编译服务器以及版本管理服务器位于不同的物理设备中。

作为示例,本实施例可以在检测到OTA管理服务器从编译服务器处成功获取到当前编译配置文件的情况下,对当前编译配置文件进行解析,以判断当前编译文件所具有的特征,如当前编译文件所针对的车辆的元部件、本次编译时间、当前编译文件属于测试版编译文件还是正式版编译文件以及软件版本号等等,并根据当前编译文件所具有的特征判断是否针对当前编译文件执行生成差分升级包的操作,在判断出需要针对当前编译文件执行生成差分升级包的操作时,可以从编译服务器处获取相应的历史配置文件并显示,如获取针对车辆中的同一元部件的所有历史编译配置文件,以便于用户可以选择确定生成本次软件升级的差分升级包的编译文件。

作为示例,本实施例可以根据用户的选择向编译服务器请求获取当前编译文件以及与当前编译文件生成差分升级包的历史编译文件,并针对请求获得的当前编译文件和历史编译文件调用相应的命令,以生成差分升级包,生成差分升级包的一个命令的具体例子如下:

Diffimg V1.0.0update.bin old_version_path new_version_path

其中的Diffimg为生成差分升级包的命令,V1.0.0为历史编译文件的软件版本号,update.bin为本次生成的差分升级包,version_path为历史编译文件在OTA管理服务器中的存储路径,new_version_path为当前编译文件的存储路径。

作为示例,本实施例可以在检测到成功生成差分升级包的信息时,通知测试服务器对当前生成的差分升级包进行测试,并在检测到OTA管理服务器接收到来自测试服务器的差分升级包测试成功的信息的情况下,如果该差分升级包为正式版差分升级包,则本实施例可以执行后续向客户端发布版本升级信息的操作,如将该差分升级包提交给下载服务器等,以便于由下载服务器向各客户端推送差分升级信息等;而如果该差分升级包为测试版差分升级包,则本实施例不需要执行后续向客户端发布版本升级信息的操作。

作为示例,本实施例可以在检测到未成功生成差分升级包的信息的情况下,可以显示生成全量升级包的提示信息,在用户基于该提示信息而选择生成全量升级包时,可以向编译服务器请求获得用于生成权利升级包的当前编译文件以及所有历史编译文件,并通过调用相应的命令生成全量升级包,如通过调用相应的命令针对编译服务器传输来的当前编译文件以及历史编译文件生成全量升级包。另外,本实施例可以在检测到成功生成全量升级包的信息的情况下,通知测试服务器对当前生成的全量升级包进行测试,并在检测到OTA管理服务器接收到来自测试服务器的全量升级包测试成功的信息的情况下,如果该全量升级包为正式版全量升级包,则本实施例可以执行后续向客户端发布版本升级信息的操作,如将该全量升级包提交给下载服务器,以便于由下载服务器向各客户端推送全量升级信息等;而如果该全量升级包为测试版全量升级包,则本实施例不需要执行后续向客户端发布版本升级信息的操作。

在一个实施例中,包含有本发明的用于软件版本升级的方法的OTA固件升级方法的流程如图2所示。

图2中,S200、在接收到用户提交的源码文件以及源码配置文件后,通过调用相应的编译命令对源码按文件进行编译,形成当前编译文件,并在源码配置文件中增加本次编译信息,使源码配置文件形成当前编译配置文件。

S210、生成新的固件版本信息,并将该新的固件版本信息提交给版本管理服务器。

S220、网络侧(如OTA管理服务器)显示当前编译配置文件以及历史编译配置信息,以便于用户选择与当前编译文件一起生成固件差分升级包的历史编译文件。

S230、网络侧(如OTA管理服务器)根据用户的选择生成固件差分升级包之后,请求测试服务器对固件差分升级包进行测试,在接收到测试服务器返回的测试成功的信息后,将该固件差分升级包提交给下载管理服务器,由下载管理服务器向各客户端分别推送固件版本升级通知。

S240、客户端在根据该通知下载固件差分升级包,并执行安装固件差分升级包的操作,如果在成功安装该固件差分升级包,则到步骤S250;如果在下载以及安装过程中出现下载失败或者校验失败或者安装失败等现象,则到步骤S260。

S250、向下载管理服务器返回OTA固件升级成功的信息。

S260、向下载管理服务器返回OTA固件升级失败的信息。

本实施例大量的减少了固件升级工作量,提高了OTA固件升级的自动化程度以及可靠性,并降低了OTA固件升级的网络侧管理成本。

下面为本发明的用于软件版本升级的装置的一个实施例。

本实施例的用于软件版本升级的装置通常应用于对智能电子设备中的软件进行升级,尤其适用于对智能移动电话、智能车辆的车载电子系统以及平板电脑等移动智能电子设备中的软件进行升级。

本实施例的用于软件版本升级的装置的结构如图3所示,且该装置主要包括:源码提交模块300、编译模块310以及生成升级包模块320;其中的源码提交模块300包括:通知子模块以及下载子模块;其中的生成升级包模块320包括:显示子模块、生成差分升级包子模块、测试请求子模块以及生成全量升级包子模块。下面对本实施例的装置所包括各模块分别进行详细说明。

源码提交模块300主要用于在检测到源码管理服务器接收到用户提交的源码文件以及源码配置信息的情况下,将源码文件以及源码配置信息传输给编译服务器;源码提交模块300中的通知子模块可以设置于源码管理服务器中,且主要用于通过源码管理服务器向编译服务器发送编译通知,且该编译通知包括:源码文件以及源码配置信息的统一资源定位符URL;源码提交模块300中的下载子模块可以设置于编译服务器中,且主要用于在检测到编译服务器接收到编译通知的情况下,根据编译通知中的URL从源码管理服务器处下载源码文件以及源码配置信息。

作为示例,各用户编写的源码文件可以经由源码提交模块300统一提交给编译服务器;一个具体的例子,用户在完成其针对车辆中的元部件的驱动程序升级的源码文件的编写工作,并对该源码文件设置了源码配置信息(如源码配置文件)之后,可以主动向源码管理服务器中的源码提交模块300提交该源码文件以及源码配置文件,且该提交过程可以具体为向源码管理服务器中的源码提交模块300上传文件的过程。

一个具体的例子,本实施例的源码管理服务器处的源码提交模块300设置有源码管理网址,用户可以通过其终端设备(如计算机等)访问该源码管理网址,源码提交模块300根据终端设备对源码管理服务器中的源码管理网址的访问向终端设备推送源码管理网页,且源码提交模块300在该网页中设置了源码提交按钮;在该源码提交按钮被用户点击时,源码提交模块300从源码管理服务器向终端设备推送源码提交窗口,且源码提交模块300在该源码提交窗口中设置有能够供用户选择需要提交的文件的文件选择按钮,在该文件选择按钮被用户点击后,可以展现用户所使用的终端设备中的磁盘目录信息以及磁盘目录下的文件夹信息等,用户在选择了终端设备中的相应磁盘的相应存储路径(即文件夹)下的源码文件以及源码配置文件,并点击了确定提交按钮后,终端设备中的相应存储路径下的源码文件以及源码配置文件被上传至源码管理服务器,且该源码文件以及源码配置文件对应有相应的URL,从而源码文件以及源码配置文件被成功提交给源码管理服务器,并存储于源码管理服务器的相应存储路径中。

作为示例,本实施例中的源码配置文件中的源码配置信息主要包括:表示源码文件所针对的车辆中的元部件的信息、源码文件所对应的软件版本号(如V1.0.0)以及表示源码文件为测试版源码文件还是正式版源码文件的信息;其中的表示源码文件所针对的车辆的元部件的信息可以具体为:表示仪表系统的信息(如仪表系统的ID或者代码等)、表示ADAS的信息(如ADAS的ID或者代码等)或者表示中控设备的信息(如中控设备的ID或者代码)等;其中的软件版本号可以由版本管理服务器设置,当然,软件版本号也可以由用户手动设置。另外,本实施例还可以在向源码管理服务器成功提交源码文件以及源码配置文件之后,通知版本管理服务器,以便于版本管理服务器可以为下一个用于升级的源码文件形成软件版本号。

作为示例,源码提交模块300可以在检测到由源码管理服务器向用户的终端设备发送的提交成功信息时,确定出源码管理服务器成功接收到用户提交的源码文件以及源码配置文件。

作为示例,源码提交模块300可以在检测到源码管理服务器成功接收到用户提交的源码文件以及源码配置文件时,及时并主动的向编译服务器推送源码文件以及源码配置文件(如通过调用推送命令从而执行相应的脚本以将码文件以及源码配置文件推送给编译服务器),源码提交模块300(如通知子模块)也可以先向编译服务器发送编译通知,以通知编译服务器(如下载子模块)来获取源码文件以及源码配置文件;当然,源码提交模块300(如通知子模块)也可以在检测到源码管理服务器接收到用户提交的源码文件以及源码配置文件后,在一天的预定时间(如凌晨1时)主动向编译服务器推送源码文件以及源码配置信息或者向编译服务器发送编译通知。另外,源码提交模块300(如通知子模块)可以在检测到源码管理服务器在预定时间段(如一天)内成功接收到多个用户提交的源码文件以及源码配置文件的情况下,主动的将该预定时间段内成功接收到的所有源码文件以及源码配置文件一起推送给编译服务器或者向编译服务器发送一个编译通知,源码提交模块300(如通知子模块)也可以针对每一次成功接收到的源码文件以及源码配置文件分别向编译服务器发送一个编译通知。

作为示例,本实施例中的编译通知可以包括:获得源码文件以及源码配置文件的方式,如编译通知可以包括:源码文件以及源码配置文件在源码管理服务器中的URL。在针对源码管理服务器在预定时间段内成功接收到的所有源码文件以及源码配置文件向编译服务器发送一个编译通知的情况下,源码提交模块300(如通知子模块)下发的编译通知中可以包括所有源码文件以及源码配置文件的URL列表。

作为示例,源码提交模块300(如下载子模块)在检测到编译服务器接收到编译通知的情况下,根据该编译通知从源码管理服务器处获取源码文件以及源码配置文件,如源码提交模块300(如下载子模块)根据编译通知中的URL从源码管理服务器处下载源码文件以及源码配置文件。

需要特别说明的是,虽然本实施例中的通知子模块设置于源码管理服务器中,而下载子模块设置于编译服务器中,但是,通知子模块和下载子模块可以位于同一台物理设备中,当然,通知子模块和下载子模块也可以位于不同的物理设备中。

编译模块310主要用于在检测到编译服务器从源码管理服务器处获取到源码文件以及源码配置信息的情况下,对源码文件进行编译形成当前编译文件,在编译成功后,在源码配置信息中增加本次编译信息形成当前编译配置信息,并将当前编译配置信息提交给空中下载OTA管理服务器。

作为示例,编译模块310可以在检测到由源码管理服务器向编译服务器发送的下载成功的响应信息时,确定出编译服务器从源码管理服务器处成功获取到源码文件以及源码配置文件。编译模块310可以在确定出编译服务器从源码管理服务器处成功获取到源码文件以及源码配置文件时,及时的对源码文件执行编译操作,编译模块310也可以在一天的预定时间(如凌晨1时)对源码文件执行编译操作。

作为示例,编译模块310可以通过调用相应的编译命令来对源码文件执行编译操作,一个具体的例子,针对QNX系统(Quick UNIX系统),在将源码文件编译为IMAGE文件的情况下,编译模块310可以通过调用上述方法实施例中记载的编译命令来对源码文件执行编译操作,在此不再重复说明。

编译模块310利用上述编译命令生成的IMAGE文件可以包括:Base.img、Data.img以及Boot.img等。本实施例不限制编译模块310所调用的编译命令的具体表现形式以及调用编译命令所生成的当前编译文件的具体表现形式。

作为示例,编译模块310可以在源码配置文件中增加本次编译信息,从而使源码配置文件形成当前编译配置文件,且本次编译信息可以具体包括:本次编译时间(如调用编译命令的时间或者编译成功的时间)、执行本次编译操作的编译服务器信息(如编译服务器名称或者编译服务器ID等)以及本次编译顺序号等。

作为示例,编译模块310在检测到编译命令成功执行完成(即成功生成当前编译文件)的情况下,通常会先将由本次编译信息和源码配置文件形成的当前编译配置文件提交给OTA管理服务器;如编译模块310可以在监测到编译命令成功执行完成时,通过调用推送命令以执行相应的脚本从而使当前编译配置文件提交给OTA管理服务器,上述用于向OTA管理服务器推送当前编译配置文件的推送命令的一个具体例子如上述方法实施例中的描述,在此不再重复说明。

作为示例,编译模块310可以采用其他方式将当前编译文件提交给OTA管理服务器,如编译模块310可以在检测到编译命令成功执行完成时,及时向OTA管理服务器发送版本升级通知,以通知OTA管理服务器来获取当前编译配置文件;当然,编译模块310也可以在检测到编译服务器在预定时间段内获取到的所有源码文件均成功编译完成后,在一天的预定时间(如凌晨1时)向OTA管理服务器发送版本升级通知。另外,编译模块310可以针对每一个当前编译文件向OTA管理服务器发送一个版本升级通知,也可以针对在预定时间段内成功编译的所有当前编译文件向OTA管理服务器发送一个版本升级通知。上述版本升级通知可以包括:获得当前编译配置文件的方式,如版本升级通知可以包括:当前编译配置信息的URL。在编译模块310针对源码管理服务器在预定时间段内成功编译的所有当前编译文件以及当前编译配置文件向OTA管理服务器发送一个版本升级通知的情况下,编译模块310应使该版本升级通知中包括所有当前编译配置文件的URL列表。

作为示例,编译模块310应将当前编译文件以及当前编译配置信息存储于编译服务器本地的软件版本集合中,且在本次软件版本升级的过程结束后,本地存储的当前编译文件成为历史编译文件,而当前编译配置信息成为历史编译配置文件。

生成升级包模块320主要用于在检测到OTA管理服务器根据当前编译配置信息确定生成软件升级包的情况下,根据从编译服务器处获取的当前编译文件以及相应的历史编译文件生成软件升级包。生成升级包模块320中的显示子模块主要用于根据当前编译配置信息从配置信息集合中获取至少一个历史编译配置信息,并显示当前编译配置信息以及各历史编译配置信息。生成升级包模块320中的生成差分升级包子模块主要用于根据用户基于显示的信息而选择的历史编译配置信息从编译服务器处获取当前编译文件以及相应的历史编译文件,并根据获取到的编译文件生成差分升级包。生成升级包模块320中的测试请求子模块主要用于在检测到成功生成差分升级包的信息的情况下,通知测试服务器对差分升级包进行测试。生成升级包模块320中的生成全量升级包子模块主要用于在检测到OTA管理服务器接收到来自测试服务器的差分升级包测试失败的信息的情况下,触发显示子模块显示生成全量升级包的提示信息,并在接收到用户基于提示信息选择生成全量升级包的情况下,从编译服务器处请求当前编译文件以及用于生成全量升级包的历史编译文件,并根据请求获得的当前编译文件以及历史编译文件生成全量升级包。

作为示例,生成升级包模块320可以检测到OTA管理服务器接收到编译服务器主动推送来的当前编译配置文件,生成升级包模块320也可以检测到OTA管理服务器接收到版本升级通知,在检测到OTA管理服务器接收到版本升级通知的情况下,生成升级包模块320可以根据版本升级通知从编译服务器处获取当前编译配置文件,如生成升级包模块320根据版本升级通知中的URL从编译服务器处下载当前编译配置文件。

需要特别说明的是,虽然本生成升级包模块320设置于OTA管理服务器中,然而,生成升级包模块320可以与装置中其他模块设置于同一台物理设备中,当然,生成升级包模块320也可以与装置中的其他模块位于不同的物理设备中。

作为示例,生成升级包模块320可以在检测到OTA管理服务器从编译服务器处成功获取到当前编译配置文件的情况下,对当前编译配置文件进行解析,以判断当前编译文件所具有的特征,如当前编译文件所针对的车辆的元部件、本次编译时间、当前编译文件属于测试版编译文件还是正式版编译文件以及软件版本号等等,并根据当前编译文件所具有的特征判断是否针对当前编译文件执行生成差分升级包的操作,在判断出需要针对当前编译文件执行生成差分升级包的操作时,生成升级包模块320可以从编译服务器处获取相应的历史配置文件,并由显示子模块显示,如获取针对车辆中的同一元部件的所有历史编译配置文件,以便于用户可以基于显示子模块显示的内容确定生成本次软件升级的差分升级包的编译文件。

作为示例,生成升级包模块320(如生成差分升级包子模块)可以根据用户的选择向编译服务器请求获取当前编译文件以及与当前编译文件生成差分升级包的历史编译文件,并针对请求获得的当前编译文件和历史编译文件调用相应的命令,以生成差分升级包,生成差分升级包子模块所使用的生成差分升级包的一个命令的具体例子如上述方法实施例中的描述,在此不再重复说明。

作为示例,生成升级包模块320(如测试请求子模块)可以在检测到成功生成差分升级包的信息时,通知测试服务器对当前生成的差分升级包进行测试,并在检测到OTA管理服务器接收到来自测试服务器的差分升级包测试成功的信息的情况下,如果该差分升级包为正式版差分升级包,则生成升级包模块320可以执行后续向客户端发布版本升级信息的操作,如生成升级包模块320(如测试请求子模块)将该差分升级包提交给下载服务器等,以便于由下载服务器向各客户端推送差分升级信息等;而如果该差分升级包为测试版差分升级包,则生成升级包模块320(如测试请求子模块)不需要执行后续向客户端发布版本升级信息的操作。

作为示例,生成升级包模块320(如生成全量升级包子模块)可以在检测到未成功生成差分升级包的信息的情况下,可以使显示子模块显示生成全量升级包的提示信息,在用户基于该提示信息而选择生成全量升级包时,生成升级包模块320(如生成全量升级包子模块)可以向编译服务器请求获得用于生成权利升级包的当前编译文件以及所有历史编译文件,并通过调用相应的命令生成全量升级包,如生成升级包模块320(如生成全量升级包子模块)通过调用相应的命令针对编译服务器传输来的当前编译文件以及历史编译文件生成全量升级包。另外,生成升级包模块320(如测试请求子模块)可以在检测到成功生成全量升级包的信息的情况下,通知测试服务器对当前生成的全量升级包进行测试,生成升级包模块320(如生成全量升级包子模块)在检测到OTA管理服务器接收到来自测试服务器的全量升级包测试成功的信息的情况下,如果该全量升级包为正式版全量升级包,则可以执行后续向客户端发布版本升级信息的操作,如生成升级包模块320(如生成全量升级包子模块)将该全量升级包提交给下载服务器,以便于由下载服务器向各客户端推送全量升级信息等;而如果该全量升级包为测试版全量升级包,则生成升级包模块320(如生成全量升级包子模块)不需要执行后续向客户端发布版本升级信息的操作。

在此提供的算法以及显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如本发明的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例终端设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在本发明的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于软件版本升级的方法及装置中的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(如计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网的网站上下载得到,也可以在载体信号上提供,或者以任何其他形式提供。

应该注意的是,上述实施例是对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或者步骤等。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1