CN110196729B - 应用程序更新方法、设备和装置及存储介质 - Google Patents
应用程序更新方法、设备和装置及存储介质 Download PDFInfo
- Publication number
- CN110196729B CN110196729B CN201811460223.0A CN201811460223A CN110196729B CN 110196729 B CN110196729 B CN 110196729B CN 201811460223 A CN201811460223 A CN 201811460223A CN 110196729 B CN110196729 B CN 110196729B
- Authority
- CN
- China
- Prior art keywords
- target
- area
- application program
- reconfiguration
- update
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Abstract
本发明公开了一种应用程序更新方法、设备和装置及存储介质。其中,该方法包括:获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;响应程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理;在完成固件更新处理后,启动更新后的目标应用程序。本发明解决了相关技术中存在的对应用程序进行更新时更新平滑性差的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种应用程序更新方法、设备和装置及存储介质。
背景技术
为了不断完善应用程序中的功能操作,常常需要对其进行算法更新和版本升级。目前,通常在对现场可编辑门阵列(Field-Programmable Gate Array,简称FPGA)云主机中的应用程序进行更新的过程中,往往是先停止该应用程序的运行过程,然后对该应用程序对应的固件执行更新动作,在完成固件更新动作之后,再对系统重新上电,以便重新加载更新后的应用程序。
然而,上述需要重新上电才能完成的更新方式,不仅不利于自动化更新的效率,而且还会使得云主机中其他业务也被迫中断。也就是说,相关技术提供的应用程序的更新方案存在更新平滑性较差的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种应用程序更新方法、设备和装置及存储介质,以至少解决相关技术中存在的对应用程序进行更新时更新平滑性差的技术问题。
根据本发明实施例的一个方面,提供了一种应用程序更新方法,包括:获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,上述程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;响应上述程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与上述目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;利用上述目标固件区域中的上述目标固件数据,对上述FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域执行固件更新处理;在完成固件更新处理后,启动更新后的上述目标应用程序。
根据本发明实施例的另一方面,还提供了一种应用程序更新设备,包括:通信接口,用于获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,上述程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;更新处理部件,与上述通信接口连接,上述更新处理部件包括静态配置区域和动态配置区域,上述静态配置区域中的更新控制组件用于控制将与上述目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;还用于利用上述目标固件区域中的上述目标固件数据,对上述目标重配置区域执行固件更新处理;还用于在完成固件更新处理后,启动更新后的上述目标应用程序;上述动态配置区域中包括与上述目标应用程序对应的目标重配置区域;通信总线,与上述通信接口和上述更新处理部件连接,用于将上述目标固件数据传输至上述目标固件区域,还用于上述目标固件数据传输至上述目标重配置区域。
根据本发明实施例的又一方面,还提供了一种应用程序更新装置,包括:获取单元,用于获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,上述程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;控制单元,用于响应上述程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与上述目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;更新单元,用于利用上述目标固件区域中的上述目标固件数据,对上述FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域执行固件更新处理;处理单元,用于在完成固件更新处理后,启动更新后的上述目标应用程序。
作为一种可选的实施例,上述装置还包括:解析单元,用于在上述利用上述目标固件区域中的上述目标固件数据,对上述FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域执行固件更新处理之前,通过上述更新控制组件解析上述程序更新请求,以获取上述程序更新请求所指示的更新模式及上述目标应用程序的程序标识;确定单元,用于根据上述更新模式及上述程序标识,从上述动态配置区域对应的重配置区域集中确定出与上述目标应用程序对应的上述目标重配置区域。
作为一种可选的实施例,上述确定单元包括:第一确定模块,用于在上述更新模式指示为替换更新模式的情况下,确定将上述源应用程序替换为上述程序标识所标识的上述目标应用程序;根据上述程序标识在上述重配置区域集中查找第一重配置区域,其中,上述第一重配置区域中存储有用于替换上述源应用程序的上述目标应用程序的功能数据;将上述第一重配置区域确定为上述目标重配置区域;第二确定模块,用于在上述更新模式指示为扩展更新模式的情况下,确定在上述源应用程序的基础上,增加上述程序标识所标识的上述目标应用程序;根据上述程序标识在上述重配置区域集中查找第二重配置区域,其中,上述第二重配置区域中存储有将要增加的上述目标应用程序的功能数据;将上述第二重配置区域确定为上述目标重配置区域。
作为一种可选的实施例,上述确定单元包括:第三确定模块,用于通过上述更新控制组件中的仲裁处理模块,确定上述重配置区域集中与上述目标固件数据对应的上述目标重配置区域所在的区域位置,其中,上述仲裁处理模块用于分别与上述动态配置区域对应的上述重配置区域集中的每个重配置区域进行数据交互。
作为一种可选的实施例,上述控制单元包括:第一写入模块,用于通过上述更新控制组件控制将上述目标固件数据写入内存的目标地址中,并对上述目标地址中的上述目标固件数据进行校验;第二写入模块,用于将通过校验的上述目标固件数据写入硬件存储器中与上述目标应用程序对应的上述目标固件区域,其中,上述硬件存储器用于存储上述业务应用的应用程序。
作为一种可选的实施例,上述第二写入模块包括:写入子模块,用于通过上述更新控制组件中的重配置控制模块,控制将上述目标固件数据写入上述目标固件区域中,其中,上述重配置控制模块用于控制上述目标固件数据按照与上述硬件存储器相匹配的时序传输条件,通过与上述硬件存储器对应的接口写入上述目标固件区域中。
作为一种可选的实施例,上述第一写入模块包括:控制子模块,用于通过上述更新控制组件中的内存访问控制模块,控制将上述目标固件数据写入上述内存的目标地址中;校验子模块,用于通过上述更新控制组件中的校验模块,对上述目标固件数据进行回读校验。
作为一种可选的实施例,还包括:分配单元,用于在上述获取用于请求对业务应用的应用程序进行更新的程序更新请求之前,在上述FPGA中为每个业务应用分配对应的上述动态配置区域;划分单元,用于将上述动态配置区域划分为一个或多个重配置区域,得到上述重配置区域集。
根据本发明实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述应用程序更新方法。
在本发明实施例中,在获取到用于请求对业务应用的应用程序进行更新的程序更新请求之后,通过FPGA的静态配置区域中的更新控制组件,控制将与程序更新请求所指示更新得到的目标应用程序相匹配的待更新的目标固件数据写入目标固件区域,然后,利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理,并在完成固件更新处理后,启动更新后的目标应用程序。也就是说,在本实施例中,将FPGA划分为静态配置区域和动态配置区域,动态配置区域被划分为多个可重配置区域,每个重配置区域与一个应用程序对应。在对业务应用的应用程序进行更新的过程中,在确定对源应用程序进行更新得到的是目标应用程序的情况下,通过静态配置区域中的更新控制组件,来控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域中,然后利用该目标固件区域中的目标固件数据,直接对FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域进行固件更新,而无需对FPGA重新上电,从而避免中断FPGA中其他业务应用的正常运行,以达到改善对应用程序进行更新的更新平滑性的效果。进而解决了相关技术中存在的对应用程序进行更新时更新平滑性差的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的应用程序更新方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的应用程序更新方法的流程示意图;
图3是根据本发明实施例的一种可选的用于实现应用程序更新方法的结构示意图;
图4是根据本发明实施例的另一种可选的用于实现应用程序更新方法的结构示意图;
图5是根据本发明实施例的又一种可选的应用程序更新方法的示意图;
图6是根据本发明实施例的又一种可选的用于实现应用程序更新方法的结构的示意图;
图7是根据本发明实施例的一种可选的应用程序更新方法的替换更新示意图;
图8是根据本发明实施例的一种可选的应用程序更新方法的扩展更新示意图;
图9是根据本发明实施例的又一种可选的用于实现应用程序更新方法的结构的示意图;
图10是根据本发明实施例的一种可选的应用程序更新设备的结构示意图;
图11是根据本发明实施例的一种可选的应用程序更新装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种应用程序更新方法,可选地,作为一种可选的实施方式,上述应用程序更新方法可以但不限于应用于如图1所示的硬件环境中。如图1所示,基于现场可编程门阵列(Field Programmable Gate Array,简称FPGA)环境中的云主机100包括FPGA平台102和软件110,其中FPGA平台102中包括内存104与处理器106,其中,该内存104包括用于存储与每个应用程序对应的待更新的固件数据,处理器106用于根据程序更新请求对所请求的源应用程序进行更新得到目标应用程序。上述FPGA平台102可以但不限于通过总线108与软件110进行数据交互。该软件110中包含有缓存112与数据处理引擎114,缓存112用于临时存储所要交互的数据,数据处理引擎114用于对所要交互的数据进行处理。在获取到用于请求对业务应用的应用程序进行更新的程序更新请求之后,通过FPGA平台102静态配置区域中的更新控制组件,控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域,然后利用该目标固件区域中的目标固件数据,对FPGA平台102中动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理。在完成固件更新处理后,启动更新后的目标应用程序。
需要说明的是,在获取到用于请求对业务应用的应用程序进行更新的程序更新请求之后,通过FPGA的静态配置区域中的更新控制组件,控制将与程序更新请求所指示更新得到的目标应用程序相匹配的待更新的目标固件数据写入目标固件区域,然后,利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理,并在完成固件更新处理后,启动更新后的目标应用程序。也就是说,在本实施例中,将FPGA划分为静态配置区域和动态配置区域,动态配置区域被划分为多个可重配置区域,每个重配置区域与一个应用程序对应。在对业务应用的应用程序进行更新的过程中,在确定对源应用程序进行更新得到的是目标应用程序的情况下,通过静态配置区域中的更新控制组件,来控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域中,然后利用该目标固件区域中的目标固件数据,直接对FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域进行固件更新,而无需对FPGA重新上电,从而避免中断FPGA中其他业务应用的正常运行,以达到改善对应用程序进行更新的更新平滑性的效果。
可选地,上述云主机100可以但不限于为可以运行应用程序等业务的终端,例如手机、平板电脑、笔记本电脑、PC机等设备。上述软件110可以但不限于用于在云主机中对FPGA平台实现控制的功能程序数据包。
可选地,作为一种可选的实施方式,如图2所示,上述应用程序更新方法包括:
S202,获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;
S204,响应程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;
S206,利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理;
S208,在完成固件更新处理后,启动更新后的目标应用程序。
可选地,在本实施例中,上述程序更新方法可以但不限于应用于对基于FPGA实现的业务应用进行应用程序更新的场景中,其中,业务应用可以包括但不限于基因应用。如在基因应用的算法发生更新的情况下,需同时对基因应用的应用程序进行程序更新,则可以采用本实施例提供的程序更新方法,将基因应用的软件侧的更新变化同步至对应的FPGA固件中,以对基因应用的应用程序实现动态更新。
需要说明的是,在本实施例中,将FPGA划分为静态配置区域和动态配置区域,动态配置区域被划分为多个可重配置区域,每个重配置区域与一个应用程序对应。在对业务应用的应用程序进行更新的过程中,在确定对源应用程序进行更新得到的是目标应用程序的情况下,通过静态配置区域中的更新控制组件,来控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域中,然后利用该目标固件区域中的目标固件数据,直接对FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域进行固件更新,而无需对FPGA重新上电,从而避免中断FPGA中其他业务应用的正常运行,以达到改善对应用程序进行更新的更新平滑性的效果。
可选地,在本实施例中,上述FPGA可以但不限于包括静态配置区域和动态配置区域。其中,上述静态配置区域可以包括但不限于:用于控制应用程序更新过程的更新控制组件;在FPGA出厂固件更新后,该静态配置区域不会进行动态更新。上述动态配置区域可以但不限于通过以下方式得到:在获取到程序更新请求之前,在FPGA中为每个业务应用分配对应的动态配置区域;并将动态配置区域划分为一个或多个重配置区域,得到重配置区域集。该重配置区域集中的每个重配置区域与一个应用程序对应。上述对动态配置区域的划分可以但不限于根据业务应用的需求确定。
例如,如图3所示,本实施例中提供的应用程序更新方法可以但不限于应用于如图3所示的结构中。FPGA被划分为动态配置区域302和静态配置区域304;此外,该FPGA还包括内存306和Flash芯片308。其中,上述动态配置区域302被划分为至少两个重配置区域,分别是重配置区域A与重配置区域B。上述静态配置区域304中的更新控制组件包括:PCIe硬核模块3042、内存控制器3044、仲裁处理模块3046和动态更新模块3048。其中,PCIe硬核模块3042,用于控制通信,将待更新的目标固件数据从软件侧通过内存控制器3044写入内存306中。内存控制器3044,用于控制将待更新的目标固件数据存储至内存306中,并进行回读校验。动态更新模块3048,用于控制将目标固件数据写入Flah芯片的目标固件区域中,还用于读取目标固件数据完成程序更新。仲裁处理模块3048,与静态配置区域304中PCIe硬核模块3042、内存控制器3044和动态更新模块3048连接,用于分别与每个重配置区域进行数据交互,以保证各个重配置区域之间相互独立。
进一步,上述动态更新模块3048内的结构可以但不限于如图4所示。动态更新模块3048可以包括但不限于:内存访问控制模块402、校验模块404及重配置控制模块406。其中,上述内存访问控制模块402用于控制与内存控制器3044进行通信,校验模块404用于对目标固件数据进行校验,重配置控制模块406用于控制按照Flash芯片308的接口要求和时序要求,将目标固件数据写入Flash芯片308中。
可选地,在本实施例中,上述程序更新请求中可以但不限于携带有更新对象的对象标识、更新模式,其中,上述更新对象的对象标识可以包括但不限于用于指示更新前的源应用程序的程序标识,及更新后的目标应用程序的程序标识。上述更新模式可以但不限于用于指示将源应用程序更新为目标应用程序的方式。这里更新模式可以包括但不限于以下之一:替换更新模式与扩展更新模式。其中,上述替换更新模式可以但不限于为将源应用程序替换为目标应用程序,以实现对源应用程序的整体更新;上述扩展更新模式可以但不限于为在源应用程序正常运行的情况下,扩展增加目标应用程序,以实现对源应用程序的局部更新。
可选地,在本实施例中,在利用目标固件数据对与目标应用程序对应的目标重配置区域进行固件更新处理之前,可以但不限于:通过更新控制组件解析程序更新请求,以获取程序更新请求所指示的更新模式及目标应用程序的程序标识;根据更新模式及程序标识,从动态配置区域对应的重配置区域集中确定出与目标应用程序对应的目标重配置区域。
例如,结合图3来说明,假设预先划分动态配置区域得到:源应用程序A对应的重配置区域A,目标应用程序B对应的重配置区域B。在更新模式指示为替换更新模式的情况下,确定将源应用程序A替换为目标应用程序B。则根据程序更新请求中所携带的与目标应用程序B的程序标识ID-B,在动态配置区域中的重配置区域集进行查找,如查找到第一重配置区域,即重配置区域B,则将该重配置区域B作为目标重配置区域,执行固件更新处理。
可选地,在本实施例中,在完成固件更新处理后,还可以包括:获取固件更新状态。需要说明的是,在固件更新状态指示更新失败的情况下,可以但不限于重新执行上述程序更新过程,直至固件更新状态指示更新成功。在更新失败的次数达到预定阈值的情况下,确定固件更新故障,并将故障上报软件侧进行分析处理。
具体结合图5所示示例,说明上述程序更新方法,步骤可以如下:
S502,把FPGA划分成静态配置区域和动态配置区域。其中,根据实际业务应用的应用需求,把动态配置区域划分为至少两个重配置区域。按照FPGA厂商提供的动态可重配置流程生成与重配置区域对应的比特流文件,作为更新配置文件。
S504,使用FPGA厂商提供的重配置工具对重配置区域进行固件更新处理。过程如下:
S504-2,获取用于指示对源应用程序进行更新以得到目标应用程序的程序更新请求;
S504-4,通过FPGA的静态配置区域中的更新控制组件,控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域中。其中,更新控制组件的控制包括:通过PCIe硬核模块将待更新的目标固件数据从软件侧写到FPGA对应的内存中,然后完成对内存中的目标固件数据的回读校验工作,再把目标固件数据通过动态更新模块写入Flash芯片的目标固件区域中。
S504-6,启动重配置流程,利用目标固件数据对目标重配置区域执行固件更新处理。可选地,上述Flash芯片可以但不限于为片外Flash芯片。
S504-8,启动更新后的目标应用程序。
S506,将固件更新状态返回给软件侧。如果固件更新状态指示更新失败,则重新执行上述步骤S504,直到更新成功。如果经过若干次更新仍然出现错误或者失败,则上报故障状态给软件侧进行后续处理。
通过本实施例,在本实施例中,将FPGA划分为静态配置区域和动态配置区域,动态配置区域被划分为多个可重配置区域,每个重配置区域与一个应用程序对应。在对业务应用的应用程序进行更新的过程中,在确定对源应用程序进行更新得到的是目标应用程序的情况下,通过静态配置区域中的更新控制组件,来控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域中,然后利用该目标固件区域中的目标固件数据,直接对FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域进行固件更新,而无需对FPGA重新上电,从而避免中断FPGA中其他业务应用的正常运行,以达到改善对应用程序进行更新的更新平滑性的效果。
作为一种可选的方案,在利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理之前,还包括:
S1,通过更新控制组件解析程序更新请求,以获取程序更新请求所指示的更新模式及目标应用程序的程序标识;
S2,根据更新模式及程序标识,从动态配置区域对应的重配置区域集中确定出与目标应用程序对应的目标重配置区域。
可选地,在本实施例中,上述程序更新请求中所解析出的更新模式可以包括但不限于:替换更新模式与扩展更新模式。其中,上述替换更新模式可以但不限于为将源应用程序替换为目标应用程序,以实现对源应用程序的整体更新;上述扩展更新模式可以但不限于为在源应用程序正常运行的情况下,扩展增加目标应用程序,以实现对源应用程序的局部更新。
可选地,在本实施例中,上述用于解析程序更新请求的更新控制组件可以包括但不限于:PCIe硬核模块,用于与软件侧底层驱动进行通信,获取程序更新请求,并解析得到更新模式及目标应用程序的程序标识,从而便于将目标应用程序对应的待更新的目标固件数据,通过内存控制器传输至内存,进而进行数据校验。其中,在本实施例中,该内存可以但不限于为双倍数据率同步动态随机存取存储器(Double Data Synchronous DynamicRandom Access Memory,简称DDR SDRAM),对应的内存控制器可以但不限于为DDR控制器。
需要说明的是,在本实施例中,在更新控制组件中还可以包括但不限于仲裁处理模块,用于连接上述PCIe硬核模块和内存控制器,用于实现数据传输。此外,该仲裁处理模块,还与动态更新模块连接,用于通过动态更新模块,将与目标应用程序对应的待更新的目标固件数据写入Flash芯片与目标应用程序对应的目标固件区域中。还用于通过动态更新模块获取目标固件数据,并利用该目标固件数据对重配置区域进行动态更新。其中,在本实施例中,该Flash芯片可以包括但不限于:出厂固件区域,及与应用程序对应的固件区域。如图6所示,Falsh芯片308中,出厂固件区域S与静态配置区域对应,固件区域A、固件区域B……至固件区域N,分别与动态配置区域中的重配置区域对应。
可选地,在本实施例中,从动态配置区域对应的重配置区域集中确定出与目标应用程序对应的目标重配置区域可以包括以下之一:
1)在更新模式指示为替换更新模式的情况下,确定将源应用程序替换为程序标识所标识的目标应用程序;根据程序标识在动态配置区域的重配置区域集中查找第一重配置区域,其中,第一重配置区域中存储有用于替换源应用程序的目标应用程序的功能数据;将第一重配置区域确定为目标重配置区域;
例如,结合图7所示,假设动态配置区域中包括:源应用程序A对应的重配置区域A,目标应用程序B对应的重配置区域B,目标应用程序C对应的重配置区域C。如步骤S702,解析程序更新请求,获取到更新模式为替换更新模式,即请求对源应用程序A进行替换更新。则停止源应用程序A,并根据程序更新请求中所携带的与目标应用程序B的程序标识ID-B和与目标应用程序C的程序标识ID-C,在动态配置区域中的重配置区域集进行查找,如查找到第一重配置区域为重配置区域B和重配置区域C,则将该重配置区域B和重配置区域C确定为目标重配置区域,然后,对目标重配置区域执行固件更新处理,如步骤S704-S708。最后执行步骤S710启动更新后的目标应用程序,加载与目标应用程序B对应的重配置区域B,和与目标应用程序C对应的重配置区域C中的更新后的应用数据。
2)在更新模式指示为扩展更新模式的情况下,确定在源应用程序的基础上,增加程序标识所标识的目标应用程序;根据程序标识在动态配置区域的重配置区域集中查找第二重配置区域,其中,第二重配置区域中存储有将要增加的目标应用程序的功能数据;将第二重配置区域确定为目标重配置区域。
例如,结合图8所示,假设动态配置区域中包括:源应用程序A对应的重配置区域A,目标应用程序B对应的重配置区域B。如步骤S802,解析程序更新请求,获取到更新模式为扩展更新模式,即请求进行扩展更新。则根据程序更新请求中所携带的与目标应用程序B的程序标识ID-B,在动态配置区域中的重配置区域集进行查找,如查找到第二重配置区域为重配置区域B,则将该重配置区域B确定为目标重配置区域,然后,对目标重配置区域执行固件更新处理,如步骤S804-S806。最后执行步骤S810启动更新后的目标应用程序,加载与目标应用程序B对应的重配置区域B中更新后的应用数据。
可选地,上述程序更新请求中可以但不限于包含有用于指示更新模式的标识。其中,在本实施例中可以但不限于以提前约定的特定字符来指示更新模式。上述特定字符可以但不限于为字母、数字、符号等任意之一或者其组合。例如,以约定字符为例,假设用“1”表示替换更新模式,用“2”表示扩展更新模式。在获取到程序更新请求之后,对程序更新请求进行解析,解析得到字符“1”时,则确定更新模式为替换更新模式,解析得到字符“2”,则确定更新模式为扩展更新模式。
通过本实施例,在获取到程序更新请求之后,解析程序更新请求,并获取程序更新请求所指示的更新模式和目标应用程序的程序标识,以通过该更新模式和程序标识确定目标重配置区域,从而实现准确定位到将要执行固件更新处理的目标重配置区域,以便于快速完成程序更新请求所请求的更新过程,从而实现对应用程序的动态更新,达到提升更新效率的效果。
作为一种可选的方案,从动态配置区域对应的重配置区域集中确定出与目标应用程序对应的目标重配置区域包括:
S1,通过更新控制组件中的仲裁处理模块,确定重配置区域集中与目标固件数据对应的目标重配置区域所在的区域位置,其中,仲裁处理模块用于分别与动态配置区域对应的重配置区域集中的每个重配置区域进行数据交互。
可选地,在本实施例中,上述仲裁处理模块可以但不限于,与更新控制组件中的PCIe硬核模块、内存控制器及动态更新模块连接,用于在PCIe硬核模块、内存控制器及动态更新模块之间传输与目标应用程序对应的目标固件数据,还用于分别与动态配置区域中的重配置区域进行数据交互,从而保证重配置区域之间相互独立。
具体结合图3所示进行说明,PCIe硬核模块3042将获取到软件侧底层驱动发送的待更新的目标固件数据,仲裁处理模块3048将从PCIe硬核模块3042获取到上述目标固件数据,并发送至内存控制器3044,以将其写入内存306中。此外,仲裁处理模块3048还将把目标固件数据通过动态更新模块3048写入Flash芯片308的目标固件区域中。进一步,仲裁处理模块3048还将通过动态更新模块3048获取Flash芯片308的目标固件区域中的目标固件数据,并利用该目标固件数据与确定出的目标重配置区域(假设重配置区域B)进行数据交互,以完成对目标重配置区域的固件更新处理。
通过本申请提供的实施例,更新控制组件中的仲裁处理模块与其他部件均具有连接关系,可以实现在静态配置区域中的实时通信;此外,通过仲裁处理模块分别与动态配置区域中的各个重配置区域进行数据交互,从而实现对重配置区域的动态更新,在保证重配置区域的独立性的情况下,还将实现无需重新上电,就可以完成对重配置区域的固件更新处理,提升应用程序更新的平滑性。
作为一种可选的方案,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域包括:
S1,通过更新控制组件控制将目标固件数据写入内存的目标地址中,并对目标地址中的目标固件数据进行校验;
S2,将通过校验的目标固件数据写入硬件存储器中与目标应用程序对应的目标固件区域,其中,硬件存储器用于存储业务应用的应用程序。
可选地,在本实施例中,该内存可以但不限于为双倍数据率同步动态随机存取存储器(Double Data Synchronous Dynamic Random Access Memory,简称DDR SDRAM)。
可选地,在本实施例中,上述硬件存储器可以但不限于为片外Flash芯片。该Flash芯片可以包括但不限于:与静态配置区域对应的出厂固件区域,及与动态配置区域中各个重配置区域对应的固件区域。
例如,结合图3和图6所示进行说明,假设解析程序更新请求后,确定将源应用程序A替换为目标应用程序B,在动态配置区域中,源应用程序A对应的为重配置区域A,目标应用程序B对应的为重配置区域B。更新控制组件将控制把目标固件数据写入内存的目标地址中,并对目标地址中的目标固件数据进行校验。在更新控制组件对与目标应用程序B对应的目标固件数据完成校验后,将把通过校验的目标固件数据写入Flash芯片308中。如图6所示,在Falsh芯片308中,出厂固件区域S与静态配置区域对应,固件区域A、固件区域B……至固件区域N,分别与动态配置区域中的重配置区域对应。则在本示例中,将把与目标应用程序B对应的目标固件数据,写入与重配置区域B对应的固件区域B中。
通过本实施例,通过更新控制组件控制将目标固件数据写入内存的目标地址中,并对目标地址中的目标固件数据进行校验;然后将通过校验的目标固件数据写入硬件存储器中与目标应用程序对应的目标固件区域,从而实现基于静态配置区域中的更新控制组件校验后的目标固件数据,完成固件更新处理,以避免数据异常导致程序更新失败的问题,进而达到提高程序更新效率的效果。
作为一种可选的方案,将通过校验的目标固件数据写入硬件存储器中与目标应用程序对应的目标固件区域包括:
S1,通过更新控制组件中的重配置控制模块,控制将目标固件数据写入目标固件区域中,其中,重配置控制模块用于控制目标固件数据按照与硬件存储器相匹配的时序传输条件,通过与硬件存储器对应的接口写入目标固件区域中。
可选地,在本实施例中,上述重配置控制模块可以但不限于位于更新控制组件的动态更新模块中。该重配置控制模块可以包括但不限于:重配置实现部件、Flash数据校验部件及Flash控制器。其中,重配置实现部件用于按照FPGA厂商提供的接口、时序传输条件,执行传输操作。Flash数据校验部件用于对目标固件数据执行写入和回读的一致性校验,以保证写入数据的合法性和一致性,进而保证固件更新处理的稳定性和正确性。
具体结合图9所示进行说明,重配置控制模块406通过Flash数据校验部件904对将要写入目标固件区域中的目标固件数据执行写入和回读的一致性校验。在目标固件数据通过校验后,再通过Flash控制器906将目标固件数据写入Flash芯片308中的目标固件区域。其中,上述过程通过重配置实现部件902来控制实现。
通过本实施例,通过重配置模块来控制将目标固件数据写入目标固件区域中,以使得写入过程满足硬件存储器的接口、时序、功能等性能要求,从而避免程序更新出现异常,以保证写入的准确性和有效性。
作为一种可选的方案,通过更新控制组件控制将目标固件数据写入内存的目标地址中,并对目标地址中的目标固件数据进行校验包括:
S1,通过更新控制组件中的内存访问控制模块,控制将目标固件数据写入内存的目标地址中;
S2,通过更新控制组件中的校验模块,对目标固件数据进行回读校验。
可选地,在本实施例中,上述内存访问控制模块和校验模块可以但不限于位于更新控制组件的动态更新模块中。其中,上述内存访问控制模块可以但不限于与更新控制组件中的内存控制器进行通信。上述校验模块用于对目标固件数据执行写入和回读的一致性校验,以保证写入数据的合法性和一致性,进而保证固件更新处理的稳定性和正确性。
通过本实施例,通过对将要写入的目标固件执行多次校验,以保证写入数据的合法性,进而保证程序更新控制的稳定性和正确性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种应用程序更新设备。该设备也可以但不限于应用于如图1所示的硬件环境中,本实施例在此不再赘述。作为一种可选的示例,如图10所示,上述应用程序更新设备包括:
(1)通信接口1002,用于获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;
(2)更新处理部件1004,与通信接口1002连接,更新处理部件包括静态配置区域和动态配置区域,静态配置区域中的更新控制组件用于控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;还用于利用目标固件区域中的目标固件数据,对目标重配置区域执行固件更新处理;还用于在完成固件更新处理后,启动更新后的目标应用程序;动态配置区域中包括与目标应用程序对应的目标重配置区域;
(3)通信总线1006,与通信接口1002和更新处理部件1004连接,用于将目标固件数据传输至目标固件区域,还用于目标固件数据传输至目标重配置区域。
可选地,在本实施例中,上述程序更新设备可以但不限于应用于对基于FPGA实现的业务应用进行应用程序更新的场景中,其中,业务应用可以包括但不限于基因应用。如在基因应用的算法发生更新的情况下,需同时对基因应用的应用程序进行程序更新,则可以采用本实施例提供的程序更新设备,将基因应用的软件侧的更新变化同步至对应的FPGA固件中,以对基因应用的应用程序实现动态更新。
需要说明的是,在本实施例中,如图10所示,将FPGA的更新处理部件1004划分为静态配置区域1008和动态配置区域1010,动态配置区域被划分为多个可重配置区域,每个重配置区域与一个应用程序对应。在对业务应用的应用程序进行更新的过程中,在确定对源应用程序进行更新得到的是目标应用程序的情况下,通过静态配置区域中的更新控制组件1008-2,来控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域中,然后利用该目标固件区域中的目标固件数据,直接对FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域进行固件更新,而无需对FPGA重新上电,从而避免中断FPGA中其他业务应用的正常运行,以达到改善对应用程序进行更新的更新平滑性的效果。
可选地,在本实施例中,上述静态配置区域可以包括但不限于:用于控制应用程序更新过程的更新控制组件;在FPGA出厂固件更新后,该静态配置区域不会进行动态更新。上述动态配置区域可以但不限于通过以下方式得到:在获取到程序更新请求之前,在FPGA中为每个业务应用分配对应的动态配置区域;并将动态配置区域划分为一个或多个重配置区域,得到重配置区域集。该重配置区域集中的每个重配置区域与一个应用程序对应。上述对动态配置区域的划分可以但不限于根据业务应用的需求确定。
可选地,在本实施例中,上述静态配置区域中的更新控制组件可以包括但不限于:仲裁处理模块和动态更新模块。其中,仲裁处理模块,与动态配置区域连接,用于分别与动态配置区域对应的重配置区域集中的每个重配置区域进行数据交互。其中,动态更新模块与仲裁处理模块连接,动态更新模块包括:1)内存访问控制模块,与仲裁处理模块连接,用于控制将目标固件数据写入内存的目标地址中;2)校验模块,与内存访问控制模块连接,用于对目标固件数据进行回读校验;3)重配置模块,与校验模块连接,用于控制目标固件数据按照与硬件存储器相匹配的时序传输条件,通过与硬件存储器对应的接口写入目标固件区域中。
例如,结合图3所示进行说明,本实施例中提供的应用程序更新设备可以但不限于应用于如图3所示的结构中。FPGA被划分为动态配置区域302和静态配置区域304;此外,该FPGA还包括内存306和Flash芯片308。其中,上述动态配置区域302被划分为至少两个重配置区域,分别是重配置区域A与重配置区域B。上述静态配置区域304中的更新控制组件可以包括但不限于:PCIe硬核模块3042、内存控制器3044、仲裁处理模块3046和动态更新模块3048。其中,PCIe硬核模块3042,用于控制通信,将待更新的目标固件数据从软件侧通过内存控制器3044写入内存306中。内存控制器3044,用于控制将待更新的目标固件数据存储至内存306中个,并进行回读校验。动态更新模块3048,用于控制将目标固件数据写入Flah芯片的目标固件区域中,还用于读取目标固件数据完成程序更新。仲裁处理模块3048,与静态配置区域304中PCIe硬核模块3042、内存控制器3044和动态更新模块3048连接,用于分别与每个重配置区域进行数据交互,以保证各个重配置区域之间相互独立。
进一步,上述动态更新模块3048内的结构可以但不限于如图4所示。动态更新模块3048可以包括但不限于:内存访问控制模块402、校验模块404及重配置控制模块406。其中,上述内存访问控制模块402用于控制与内存控制器3044进行通信,校验模块404用于对目标固件数据进行校验,重配置控制模块406用于控制按照Flash芯片308的接口要求和时序要求,将目标固件数据写入Flash芯片308中。
具体结合图3-4、图6及图8所示示例进行说明:假设静态配置区域304中的更新控制组件可以包括但不限于:PCIe硬核模块3042、内存控制器3044、仲裁处理模块3046和动态更新模块3048。该动态更新模块3048可以包括但不限于:内存访问控制模块402、校验模块404及重配置控制模块406。假设动态配置区域302中包括:源应用程序A对应的重配置区域A,目标应用程序B对应的重配置区域B。解析程序更新请求,获取到更新模式为扩展更新模式,即,在源应用程序A的基础上,扩展增加目标应用程序B。Falsh芯片308中的出厂固件区域S与静态配置区域对应,固件区域A、固件区域B……至固件区域N,分别与动态配置区域中的重配置区域对应。
PCIe硬核模块3042从软件侧底层驱动获取待更新的目标固件数据,并通过仲裁处理模块3046将其传输至内存控制器3044。内存控制器3044,用于控制将目标固件数据写入内存306中,并进行回读校验。然后,仲裁处理模块3046通过动态更新模块3048,将把目标固件数据写入Flash芯片308与目标应用程序对应的目标固件区域中。然后仲裁处理模块3046与动态配置区域进行数据交互,以完成固件更新处理:
根据程序更新请求中所携带的与目标应用程序B的程序标识ID-B,在动态配置区域中的重配置区域集进行查找,如查找到重配置区域B为目标重配置区域,则对目标重配置区域执行固件更新处理,然后启动更新后的目标应用程序,加载与目标应用程序B对应的重配置区域B中更新后的应用数据。
需要说明的是,仲裁处理模块3046通过动态更新模块3048,将把目标固件数据写入Flash芯片308与目标应用程序对应的目标固件区域的过程中,动态更新模块3048的处理过程包括:通过内存访问控制模块402与内存控制器3044进行数据交互,并通过校验模块404对目标固件数据进行再次校验,然后通过重配置控制模块406按照与Flash芯片对应的性能要求执行写入操作。
根据本发明实施例的又一个方面,还提供了一种用于实施上述应用程序更新方法的应用程序更新装置,被设置为运行时执行上述任一项方法实施例中的步骤。如图11所示,该装置包括:
1)获取单元1102,用于获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;
2)控制单元1104,用于响应程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;
3)更新单元1106,用于利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理;
4)处理单元1108,用于在完成固件更新处理后,启动更新后的目标应用程序。
可选地,在本实施例中,上述程序更新装置可以但不限于应用于对基于FPGA实现的业务应用进行应用程序更新的场景中,其中,业务应用可以包括但不限于基因应用。如在基因应用的算法发生更新的情况下,需同时对基因应用的应用程序进行程序更新,则可以采用本实施例提供的程序更新装置,将基因应用的软件侧的更新变化同步至对应的FPGA固件中,以对基因应用的应用程序实现动态更新。
需要说明的是,在本实施例中,将FPGA划分为静态配置区域和动态配置区域,动态配置区域被划分为多个可重配置区域,每个重配置区域与一个应用程序对应。在对业务应用的应用程序进行更新的过程中,在确定对源应用程序进行更新得到的是目标应用程序的情况下,通过静态配置区域中的更新控制组件,来控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域中,然后利用该目标固件区域中的目标固件数据,直接对FPGA的动态配置区域中与上述目标应用程序对应的目标重配置区域进行固件更新,而无需对FPGA重新上电,从而避免中断FPGA中其他业务应用的正常运行,以达到改善对应用程序进行更新的更新平滑性的效果。
可选地,在本实施例中,上述装置还包括:解析单元,用于在利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理之前,通过更新控制组件解析程序更新请求,以获取程序更新请求所指示的更新模式及目标应用程序的程序标识;确定单元,用于根据更新模式及程序标识,从动态配置区域对应的重配置区域集中确定出与目标应用程序对应的目标重配置区域。
可选地,在本实施例中,确定单元包括:第一确定模块,用于在更新模式指示为替换更新模式的情况下,确定将源应用程序替换为程序标识所标识的目标应用程序;根据程序标识在重配置区域集中查找第一重配置区域,其中,第一重配置区域中存储有用于替换源应用程序的目标应用程序的功能数据;将第一重配置区域确定为目标重配置区域;第二确定模块,用于在更新模式指示为扩展更新模式的情况下,确定在源应用程序的基础上,增加程序标识所标识的目标应用程序;根据程序标识在重配置区域集中查找第二重配置区域,其中,第二重配置区域中存储有将要增加的目标应用程序的功能数据;将第二重配置区域确定为目标重配置区域。
可选地,在本实施例中,确定单元包括:第三确定模块,用于通过更新控制组件中的仲裁处理模块,确定重配置区域集中与目标固件数据对应的目标重配置区域所在的区域位置,其中,仲裁处理模块用于分别与动态配置区域对应的重配置区域集中的每个重配置区域进行数据交互。
可选地,在本实施例中,控制单元包括:第一写入模块,用于通过更新控制组件控制将目标固件数据写入内存的目标地址中,并对目标地址中的目标固件数据进行校验;第二写入模块,用于将通过校验的目标固件数据写入硬件存储器中与目标应用程序对应的目标固件区域,其中,硬件存储器用于存储业务应用的应用程序。
可选地,在本实施例中,第二写入模块包括:写入子模块,用于通过更新控制组件中的重配置控制模块,控制将目标固件数据写入目标固件区域中,其中,重配置控制模块用于控制目标固件数据按照与硬件存储器相匹配的时序传输条件,通过与硬件存储器对应的接口写入目标固件区域中。
可选地,在本实施例中,第一写入模块包括:控制子模块,用于通过更新控制组件中的内存访问控制模块,控制将目标固件数据写入内存的目标地址中;校验子模块,用于通过更新控制组件中的校验模块,对目标固件数据进行回读校验。
可选地,在本实施例中,上述装置还包括:分配单元,用于在获取用于请求对业务应用的应用程序进行更新的程序更新请求之前,在FPGA中为每个业务应用分配对应的动态配置区域;划分单元,用于将动态配置区域划分为一个或多个重配置区域,得到重配置区域集。
在本实施例中提供的装置,用于实现上述程序更新方法中提供的各个实施例。本实施例中对此不再赘述。
根据本发明的实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;
S2,响应程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与目标应用程序相匹配的待更新的目标固件数据写入目标固件区域;
S3,利用目标固件区域中的目标固件数据,对FPGA的动态配置区域中与目标应用程序对应的目标重配置区域执行固件更新处理;
S4,在完成固件更新处理后,启动更新后的目标应用程序。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (13)
1.一种应用程序更新方法,其特征在于,包括:
获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,所述程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;
响应所述程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与所述目标应用程序相匹配的待更新的目标固件数据写入目标固件区域,其中,所述FPGA被划分为所述静态配置区域和动态配置区域,所述动态配置区域被划分为多个重配置区域,每个所述重配置区域与一个应用程序对应;
利用所述目标固件区域中的所述目标固件数据,对所述动态配置区域中与所述目标应用程序对应的目标重配置区域执行固件更新处理;
在完成固件更新处理后,启动更新后的所述目标应用程序。
2.根据权利要求1所述的方法,其特征在于,在所述利用所述目标固件区域中的所述目标固件数据,对所述动态配置区域中与所述目标应用程序对应的目标重配置区域执行固件更新处理之前,还包括:
通过所述更新控制组件解析所述程序更新请求,以获取所述程序更新请求所指示的更新模式及所述目标应用程序的程序标识;
根据所述更新模式及所述程序标识,从所述动态配置区域对应的重配置区域集中确定出与所述目标应用程序对应的所述目标重配置区域。
3.根据权利要求2所述的方法,其特征在于,所述根据所述更新模式及所述程序标识,从所述动态配置区域对应的重配置区域集中确定出与所述目标应用程序对应的所述目标重配置区域包括:
在所述更新模式指示为替换更新模式的情况下,确定将所述源应用程序替换为所述程序标识所标识的所述目标应用程序;根据所述程序标识在所述重配置区域集中查找第一重配置区域,其中,所述第一重配置区域中存储有用于替换所述源应用程序的所述目标应用程序的功能数据;将所述第一重配置区域确定为所述目标重配置区域;
在所述更新模式指示为扩展更新模式的情况下,确定在所述源应用程序的基础上,增加所述程序标识所标识的所述目标应用程序;根据所述程序标识在所述重配置区域集中查找第二重配置区域,其中,所述第二重配置区域中存储有将要增加的所述目标应用程序的功能数据;将所述第二重配置区域确定为所述目标重配置区域。
4.根据权利要求2所述的方法,其特征在于,所述从所述动态配置区域对应的重配置区域集中确定出与所述目标应用程序对应的所述目标重配置区域包括:
通过所述更新控制组件中的仲裁处理模块,确定所述重配置区域集中与所述目标固件数据对应的所述目标重配置区域所在的区域位置,其中,所述仲裁处理模块用于分别与所述动态配置区域对应的所述重配置区域集中的每个重配置区域进行数据交互。
5.根据权利要求1所述的方法,其特征在于,所述通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与所述目标应用程序相匹配的待更新的目标固件数据写入目标固件区域包括:
通过所述更新控制组件控制将所述目标固件数据写入内存的目标地址中,并对所述目标地址中的所述目标固件数据进行校验;
将通过校验的所述目标固件数据写入硬件存储器中与所述目标应用程序对应的所述目标固件区域,其中,所述硬件存储器用于存储所述业务应用的应用程序。
6.根据权利要求5所述的方法,其特征在于,所述将通过校验的所述目标固件数据写入硬件存储器中与所述目标应用程序对应的所述目标固件区域包括:
通过所述更新控制组件中的重配置控制模块,控制将所述目标固件数据写入所述目标固件区域中,其中,所述重配置控制模块用于控制所述目标固件数据按照与所述硬件存储器相匹配的时序传输条件,通过与所述硬件存储器对应的接口写入所述目标固件区域中。
7.根据权利要求5所述的方法,其特征在于,所述通过所述更新控制组件控制将所述目标固件数据写入内存的目标地址中,并对所述目标地址中的所述目标固件数据进行校验包括:
通过所述更新控制组件中的内存访问控制模块,控制将所述目标固件数据写入所述内存的目标地址中;
通过所述更新控制组件中的校验模块,对所述目标固件数据进行回读校验。
8.根据权利要求2至7中任一项所述的方法,其特征在于,在所述获取用于请求对业务应用的应用程序进行更新的程序更新请求之前,还包括:
在所述FPGA中为每个业务应用分配对应的所述动态配置区域;
将所述动态配置区域划分为一个或多个重配置区域,得到所述重配置区域集。
9.一种应用程序更新设备,其特征在于,包括:
通信接口,用于获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,所述程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;
更新处理部件,与所述通信接口连接,所述更新处理部件包括静态配置区域和动态配置区域,所述静态配置区域中的更新控制组件用于控制将与所述目标应用程序相匹配的待更新的目标固件数据写入目标固件区域,所述动态配置区域被划分为多个重配置区域,每个所述重配置区域与一个应用程序对应;还用于利用所述目标固件区域中的所述目标固件数据,对目标重配置区域执行固件更新处理;还用于在完成固件更新处理后,启动更新后的所述目标应用程序;所述动态配置区域中包括与所述目标应用程序对应的所述目标重配置区域;
通信总线,与所述通信接口和所述更新处理部件连接,用于将所述目标固件数据传输至所述目标固件区域,还用于所述目标固件数据传输至所述目标重配置区域。
10.根据权利要求9所述的设备,其特征在于,所述更新控制组件包括:
仲裁处理模块,与所述动态配置区域连接,用于分别与所述动态配置区域对应的重配置区域集中的每个重配置区域进行数据交互。
11.根据权利要求10所述的设备,其特征在于,所述更新控制组件还包括动态更新模块,与所述仲裁处理模块连接,所述动态更新模块包括:
内存访问控制模块,与所述仲裁处理模块连接,用于控制将所述目标固件数据写入所述内存的目标地址中;
校验模块,与所述内存访问控制模块连接,用于对所述目标固件数据进行回读校验;
重配置模块,与所述校验模块连接,用于控制所述目标固件数据按照与硬件存储器相匹配的时序传输条件,通过与所述硬件存储器对应的接口写入所述目标固件区域中。
12.一种应用程序更新装置,其特征在于,包括:
获取单元,用于获取用于请求对业务应用的应用程序进行更新的程序更新请求,其中,所述程序更新请求用于指示对源应用程序进行更新以得到目标应用程序;
控制单元,用于响应所述程序更新请求,通过现场可编程门阵列FPGA的静态配置区域中的更新控制组件,控制将与所述目标应用程序相匹配的待更新的目标固件数据写入目标固件区域,其中,所述FPGA被划分为所述静态配置区域和动态配置区域,所述动态配置区域被划分为多个重配置区域,每个所述重配置区域与一个应用程序对应;
更新单元,用于利用所述目标固件区域中的所述目标固件数据,对所述动态配置区域中与所述目标应用程序对应的目标重配置区域执行固件更新处理;
处理单元,用于在完成固件更新处理后,启动更新后的所述目标应用程序。
13.一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至8任一项中所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811460223.0A CN110196729B (zh) | 2018-11-30 | 2018-11-30 | 应用程序更新方法、设备和装置及存储介质 |
PCT/CN2019/116449 WO2020108271A1 (zh) | 2018-11-30 | 2019-11-08 | 应用程序更新方法、设备和装置及存储介质 |
US17/169,176 US11726770B2 (en) | 2018-11-30 | 2021-02-05 | Method, device, and apparatus for updating application program, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811460223.0A CN110196729B (zh) | 2018-11-30 | 2018-11-30 | 应用程序更新方法、设备和装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196729A CN110196729A (zh) | 2019-09-03 |
CN110196729B true CN110196729B (zh) | 2022-02-08 |
Family
ID=67751159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811460223.0A Active CN110196729B (zh) | 2018-11-30 | 2018-11-30 | 应用程序更新方法、设备和装置及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11726770B2 (zh) |
CN (1) | CN110196729B (zh) |
WO (1) | WO2020108271A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196729B (zh) | 2018-11-30 | 2022-02-08 | 腾讯科技(深圳)有限公司 | 应用程序更新方法、设备和装置及存储介质 |
US11630696B2 (en) | 2020-03-30 | 2023-04-18 | International Business Machines Corporation | Messaging for a hardware acceleration system |
US11360789B2 (en) * | 2020-07-06 | 2022-06-14 | International Business Machines Corporation | Configuration of hardware devices |
US20220321403A1 (en) * | 2021-04-02 | 2022-10-06 | Nokia Solutions And Networks Oy | Programmable network segmentation for multi-tenant fpgas in cloud infrastructures |
US11863385B2 (en) | 2022-01-21 | 2024-01-02 | International Business Machines Corporation | Optimizing container executions with network-attached hardware components of a composable disaggregated infrastructure |
CN115098146B (zh) * | 2022-07-12 | 2023-04-18 | 深圳市航顺芯片技术研发有限公司 | 一种烧录方法、装置、介质及终端 |
CN116301936B (zh) * | 2023-03-03 | 2023-10-20 | 西安瑞日电子发展有限公司 | 一种fpga配置文件加速固化系统及方法 |
CN116382743B (zh) * | 2023-05-26 | 2023-08-22 | 国网江苏省电力有限公司信息通信分公司 | 基于云网融合技术的运维数据处理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677916A (zh) * | 2013-12-10 | 2014-03-26 | 中国航空工业集团公司第六三一研究所 | 一种基于fpga的在线重配置系统及方法 |
CN104484214A (zh) * | 2014-12-30 | 2015-04-01 | 华中科技大学 | 一种sram型fpga的配置、刷新与程序上注一体化系统 |
CN106843959A (zh) * | 2017-01-18 | 2017-06-13 | 株洲变流技术国家工程研究中心有限公司 | 一种fpga远程更新装置及方法 |
CN107656776A (zh) * | 2017-10-31 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种fpga加速卡的固件更新方法、装置及介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973517B1 (en) * | 2000-08-31 | 2005-12-06 | Hewlett-Packard Development Company, L.P. | Partition formation using microprocessors in a multiprocessor computer system |
US8161227B1 (en) * | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
CN102929577A (zh) * | 2012-10-08 | 2013-02-13 | 上海大学 | 基于块分裂的fpga任务放置维护方法 |
CN104484309B (zh) * | 2014-12-18 | 2017-07-28 | 北京控制工程研究所 | 一种支持部分可重构的航天用SoC的实现方法 |
EP3089035A1 (en) * | 2015-04-30 | 2016-11-02 | Virtual Open Systems | Virtualization manager for reconfigurable hardware accelerators |
US9710254B2 (en) * | 2015-10-28 | 2017-07-18 | International Business Machines Corporation | Replacing an accelerator firmware image without operating system reboot |
US9584130B1 (en) * | 2016-01-11 | 2017-02-28 | Altera Corporation | Partial reconfiguration control interface for integrated circuits |
CN106775869B (zh) * | 2016-12-16 | 2020-08-07 | 四川九洲电器集团有限责任公司 | 一种加载方法及终端设备 |
CN106970778B (zh) * | 2017-03-20 | 2020-06-12 | 中国科学院长春光学精密机械与物理研究所 | 一种基于fpga的嵌入式设备的在线配置方法及系统 |
US10621127B2 (en) * | 2017-03-31 | 2020-04-14 | International Business Machines Corporation | Communication channel for reconfigurable devices |
US10031993B1 (en) * | 2017-06-12 | 2018-07-24 | Intel Corporation | Application store model for dynamic reconfiguration of a field-programmable gate array (FPGA) |
CN108132792B (zh) * | 2017-11-22 | 2020-11-20 | 奕瑞影像科技(太仓)有限公司 | 平板探测器、电子器件、固件加载方法及固件加载系统 |
US11210084B2 (en) * | 2018-03-09 | 2021-12-28 | Samsung Electronics Co., Ltd. | Integrated single FPGA and solid state disk controller |
CN110196729B (zh) * | 2018-11-30 | 2022-02-08 | 腾讯科技(深圳)有限公司 | 应用程序更新方法、设备和装置及存储介质 |
-
2018
- 2018-11-30 CN CN201811460223.0A patent/CN110196729B/zh active Active
-
2019
- 2019-11-08 WO PCT/CN2019/116449 patent/WO2020108271A1/zh active Application Filing
-
2021
- 2021-02-05 US US17/169,176 patent/US11726770B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677916A (zh) * | 2013-12-10 | 2014-03-26 | 中国航空工业集团公司第六三一研究所 | 一种基于fpga的在线重配置系统及方法 |
CN104484214A (zh) * | 2014-12-30 | 2015-04-01 | 华中科技大学 | 一种sram型fpga的配置、刷新与程序上注一体化系统 |
CN106843959A (zh) * | 2017-01-18 | 2017-06-13 | 株洲变流技术国家工程研究中心有限公司 | 一种fpga远程更新装置及方法 |
CN107656776A (zh) * | 2017-10-31 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种fpga加速卡的固件更新方法、装置及介质 |
Non-Patent Citations (1)
Title |
---|
The Design and Implication of multilevel FPGA upgrade online;Xiaohui Wang,etc.;《The Design and Implication of multilevel FPGA upgrade online》;20120813;第2099-2102页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2020108271A1 (zh) | 2020-06-04 |
US11726770B2 (en) | 2023-08-15 |
US20210182052A1 (en) | 2021-06-17 |
CN110196729A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196729B (zh) | 应用程序更新方法、设备和装置及存储介质 | |
US7937455B2 (en) | Methods and systems for modifying nodes in a cluster environment | |
CN103595790B (zh) | 设备远程访问的方法、瘦客户端和虚拟机 | |
CN110673941B (zh) | 多机房中微服务的迁移方法、电子设备及存储介质 | |
CN105450759A (zh) | 一种系统镜像的管理方法和装置 | |
CN104412228A (zh) | 动态迁移协议和群集服务器故障转移协议 | |
US10361995B2 (en) | Management of clustered and replicated systems in dynamic computing environments | |
CN108509215B (zh) | 一种系统软件的更换方法、装置、终端设备及存储介质 | |
CN114244717B (zh) | 虚拟网卡资源的配置方法、装置、计算机设备及介质 | |
US10341181B2 (en) | Method and apparatus to allow dynamic changes of a replica network configuration in distributed systems | |
CN111104201A (zh) | 系统迁移方法和装置、电子设备、存储介质 | |
CN113835644B (zh) | 整机迁移方法、装置、设备及存储介质 | |
US8868793B2 (en) | SAS expander system and method for dynamically allocating SAS addresses to SAS expander devices | |
CN110520844A (zh) | 云管理平台、虚拟机管理方法及其系统 | |
CN106873970A (zh) | 一种操作系统的安装方法和装置 | |
JP2021051532A (ja) | 計算機システム | |
CN107291507B (zh) | 一种虚拟机虚拟硬盘的升级方法及电子设备 | |
US10922505B2 (en) | Radio frequency identification interface for interacting with a printed circuit board | |
CN116028455A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
US20060080399A1 (en) | Remote configuration management for data processing units | |
US10356221B2 (en) | Access to network-based storage resource based on hardware identifier | |
CN105144073A (zh) | 可移除存储设备身份和配置信息 | |
CN109656674B (zh) | 一种计算机设备、虚拟化芯片及数据传输方法 | |
CN107659621B (zh) | 一种raid控制卡配置方法及装置 | |
US8676943B1 (en) | Document based fleet management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |