一种多并发固件升级方法、系统、计算机设备及存储介质与流程
未命名
07-26
阅读:128
评论:0
1.本发明涉及固件升级技术领域,特别是涉及一种多并发固件升级方法、系统、计算机设备及存储介质。
背景技术:
2.随着嵌入式产品的迭代升级,对应的固件设备也需要不断的升级更新。现有的固件升级方法大都是先选中需要升级的固件,将对应的固件升级包上传到某个升级系统中,再对该类型设备固件进行升级。然而,该固件升级方法存在如下问题,难以有效应对实际应用需求:1)对于批量更新不同固件版本的升级场景,应用极其麻烦,需要一个个手动进行升级,无法并发执行,效率低下;2)对于新增不同类型固件的升级场景,需要用户端(比如web前端,或者其他用户接口)和后端升级系统同时新增新类型固件升级的开发工作,不仅耗费大量人力成本,而且可扩展性差,不易维护。
技术实现要素:
3.本发明的目的是提供一种多并发固件升级方法,通过统一用户接口支持并发升级不同类型固件设备,并基于面向对象设计思想管理不同类型固件升级流程,解决了现有固件升级的应用缺陷,提高不同类型固件并发升级效率的同时,有效降低模块间耦合性,具保证较强的扩展性和易维护性。
4.为了实现上述目的,有必要针对上述技术问题,提供一种多并发固件升级方法、系统、设备及介质。
5.第一方面,本发明实施例提供了一种多并发固件升级方法,所述方法包括以下步骤:
6.响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的多并发固件升级包;所述多并发固件升级包包括若干个固件升级文件包和对应的升级配置文件;
7.将所述多并发固件升级包进行解压,并根据各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象;
8.通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,以使各个固件升级类对象根据所述固件版本对象生成信号执行多并发升级任务,并发送对应的固件升级执行结果信号;
9.响应于各个固件升级执行结果信号,获取对应的固件升级执行结果,并根据所述固件升级执行结果进行相应的升级提示。
10.进一步地,所述预设文件传输协议包括https协议、ftp协议或scp协议。
11.进一步地,所述多并发固件升级包的生成步骤包括:
12.根据固件升级需求,确定待升级固件,并获取各个待升级固件的升级类型;
13.根据各个待升级固件的升级类型,获取对应升级流程所需的固件升级文件包,并
设置对应的升级配置文件;
14.将各个固件升级文件包和对应的升级配置文件进行打包压缩,得到所述多并发固件升级包。
15.进一步地,所述升级类型包括固件类升级或命令升级。
16.进一步地,所述根据各个待升级固件的升级类型,获取对应升级流程所需的固件升级文件包的步骤包括:
17.当所述升级类型为固件类升级时,获取对应升级流程所需的固件升级文件,并打包生成固件升级文件包;
18.当所述升级类型为命令升级时,获取对应的固件升级文件和固件升级工具,并打包生成固件升级文件包。
19.进一步地,所述固件版本对象包括固件版本号、固件类型、固件升级类型、升级验证信息和固件升级文件包路径;
20.所述根据所述各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象的步骤包括:
21.根据各个升级配置文件,得到对应待升级固件的固件版本号、固件升级类型和升级验证信息;
22.将各个待升级固件的固件升级文件包存储于预设的固件升级文件包路径,并通过进程共享方式,生成对应的固件版本对象。
23.进一步地,所述进程间通信包括基于消息队列的进程间通信、基于dbus信号的进程间通信、或基于socket的进程间通信。
24.进一步地,所述各个固件升级类对象根据所述固件版本对象生成信号执行多并发升级任务,并发送对应的固件升级执行结果信号的步骤包括:
25.响应于所述固件版本对象生成信号,各个固件升级类对象遍历各个固件版本对象,并根据对应的固件类型判断是否需要执行自身固件升级;
26.若是,则根据对应固件版本对象的固件版本号、升级验证信息和固件升级类型进行安全升级校验,并在校验通过后,根据对应的固件升级文件包路径获取固件升级文件包执行升级任务,以及在确定升级成功或失败时,发送对应的固件升级执行结果信号;
27.若否,则直接抛弃信号,继续睡眠等待新的固件版本对象生成信号。
28.进一步地,所述通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象的步骤包括:
29.将所述固件版本对象生成信号广播至各个固件升级类对象,并开启等待固件升级执行结果定时任务,以及在超过预设等待时长时,删除所有固件版本对象及对应的临时文件。
30.进一步地,所述根据所述固件升级执行结果进行相应的升级提示的步骤包括:
31.判断所述固件升级执行结果是否为升级成功,若是,则提示对应的固件版本升级成功,并删除对应的固件版本对象及临时文件,反之,则提示对应的固件版本升级失败。
32.第二方面,本发明实施例提供了一种多并发固件升级系统,所述系统包括:
33.用户接口模块,用于响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的多并发固件升级包,并将所述多并发固件升级包进行解压,以及根据各个固
件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象;所述多并发固件升级包包括若干个固件升级文件包和对应的升级配置文件;
34.所述用户接口模块,还用于通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,并根据各个固件升级类对象返回的固件升级执行结果信号,获取对应的固件升级执行结果,以及根据所述固件升级执行结果进行相应的升级提示;
35.固件类升级模块,用于管理预设的各个固件升级类对象,使得各个固件升级类对象根据接收的固件版本对象生成信号执行多并发升级任务,并返回对应的固件升级执行结果信号。
36.第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
37.第四方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
38.上述本技术提供了一种多并发固件升级方法、系统、计算机设备及存储介质,通过所述方法,实现了响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的包括若干个固件升级文件包和对应的升级配置文件的多并发固件升级包后,将多并发固件升级包进行解压,并根据各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象,再通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,以使各个固件升级类对象根据固件版本对象生成信号执行多并发升级任务,发送对应的固件升级执行结果信号,并响应于各个固件升级执行结果信号,获取对应的固件升级执行结果,根据固件升级执行结果进行相应的升级提示的技术方案。与现有技术相比,该多并发固件升级方法,通过统一用户接口支持并发升级不同类型固件设备,提高不同类型固件并发升级效率的同时,基于面向对象设计思想管理不同类型固件升级流程,有效降低模块间耦合性,且保证较强的扩展性和易维护性。
附图说明
39.图1是本发明实施例中多并发固件升级方法的流程示意图;
40.图2是本发明实施例中基于bmc的并发固件升级方法流程示意图;
41.图3是本发明实施例中多并发固件升级系统的结构示意图;
42.图4是本发明实施例中计算机设备的内部结构图。
具体实施方式
43.为了使本技术的目的、技术方案和有益效果更加清楚明白,下面结合附图及实施例,对本发明作进一步详细说明,显然,以下所描述的实施例是本发明实施例的一部分,仅用于说明本发明,但不用来限制本发明的范围。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.本发明提供的多并发固件升级方法是一种支持多种不同类型固件批量并发升级,且易于扩展和维护的固件升级方案,可应用于基板管理控制器bmc(baseboard management controller)或其他嵌入式产品的固件设备升级管理。下述实施例将以基于bmc的多并发固
件升级场景为例对本发明的多并发固件升级方法进行详细说明。
45.在一个实施例中,如图1所示,提供了一种多并发固件升级方法,包括以下步骤:
46.s11、响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的多并发固件升级包;所述多并发固件升级包包括若干个固件升级文件包和对应的升级配置文件;
47.其中,升级配置文件config里面有标识固件升级文件包的version(版本)、type(固件类型)、以及升级安全相关的验证信息等等;对应的,多并发固件升级包为firmwares.tar文件,具体内容根据实际升级需求确定。比如,若只需要对bmc单个固件进行升级,则多并发固件升级包就仅包括该bmc固件的固件升级文件包和升级配置文件(固件类型为bmc);再如,若同时需要对bmc、pnor(process nor))、psu(power supply)和cpld(complex programmable logic device)等多个多个固件进行升级,则多并发固件升级包会同时包括bmc、pnor、psu和cpld等多个固件的固件升级文件包和升级配置文件(固件类型分别为对应的bmc、pnor和psu);需要说明的是,升级配置文件中version(版本)和升级安全相关的验证信息为常规固件升级所使用的配置信息,此处不再详述。
48.在实际应用中,考虑到节约成本或便于操作的限制,不同固件的优选升级方式可能不同。基于此,为了在支持多个不同固件并发升级功能的同时,还能满足不同固件选择不同升级方式的需求,本实施例优选地支持使用不同升级方式的不同类型固件的并发升级,且仅需按照不同升级类型的升级文件需求完成并发固件升级包的打包即可;具体的,所述多并发固件升级包的生成步骤包括:
49.根据固件升级需求,确定待升级固件,并获取各个待升级固件的升级类型;
50.根据各个待升级固件的升级类型,获取对应升级流程所需的固件升级文件包,并设置对应的升级配置文件;其中,升级类型原则上可以统一设为通过预设的固件升级类对象执行相应升级的固件类升级方式,但为了给用户端提供更友好的升级支持,本实施例优选地,将升级类型设为包括固件类升级和命令升级中的至少一种,当仅存在单个固件升级时,升级类型可选择固件类升级或命令升级,而对于多个不同类型固件并发升级时,不同类型的固件可根据实际需求选择合适的升级方式,就会同时存在固件类升级与命令升级并存的情况;需要说明的是,升级配置文件除了包括前述的version(版本)、type(固件类型)、以及升级安全相关的验证信息外,还可将对应的升级类型写入其中,用于后续生成固件版本对象使用;
51.固件类升级可理解为是通过根据不同类型的固件升级流程开发的固件升级类对象,基于对应的固件升级文件包依次执行固件升级步骤的方式,而命令升级可理解为是通过某些固定的升级命令结合对应的升级工具完成固件升级的方式;对应的,固件升级使用不同的升级类型需要提供不同内容的固件升级文件包,具体的,所述根据各个待升级固件的升级类型,获取对应升级流程所需的固件升级文件包的步骤包括:
52.当所述升级类型为固件类升级时,获取对应升级流程所需的固件升级文件,并打包生成固件升级文件包;当所述升级类型为命令升级时,获取对应的固件升级文件和固件升级工具,并打包生成固件升级文件包,比如,主机host的pnor升级类型为命令升级,则需要将对应的pflash工具进行打包;psu升级类型为命令升级,则需要将不同厂家提供的升级工具psutils进行打包;
53.将各个固件升级文件包和对应的升级配置文件进行打包压缩,得到所述多并发固件升级包。
54.本实施例通过支持固件类升级,实现不同类型固件的并发升级,提高升级效率的基础上,还支持命令升级,通过提供不同升级类型供用户端选择的方式,便于用户端操作使用的同时,还能最大限度的避免额外的开发人力投入,有效节约人力成本。
55.用户端通过上述方法步骤生成多并发固件升级包后,就可发送对应的多并发固件升级请求,并通过预设文件传输协议将多并发固件升级包传送至需要执行固件升级的系统,如bmc或其他的嵌入式产品。即,预设文件传输协议可理解为需要执行固件升级的系统与用户端通信,以获取多并发固件升级包的接口协议,包括https协议、ftp协议或scp协议等任一可实现文件传输功能的协议,在实际应用中根据应用需求选取即可,具有较好的开发便利性,且能有效保证多并发固件升级包的可靠传输,此处不作具体限制。
56.s12、将所述多并发固件升级包进行解压,并根据各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象;其中,固件版本对象与多并发固件升级包中打包的不同类型的固件升级文件包对应,即对于多个不同类型固件设备并发升级的场景,会基于对多并发固件升级包解压得到的不同固件升级文件包和升级配置文件生成对应的多个固件版本对象。
57.为了在满足采用面向对象思想管理不同类固件升级的基础上,保证不同类型固件升级的可靠性和有效性,本实施例优选地,将固件版本对象设为包括固件版本号、固件类型、固件升级类型、升级验证信息和固件升级文件包路径,其中,固件类型用于各个固件升级类对象判别自身是否需要执行版本升级,固件版本号、固件升级类型和升级验证信息用于对待执行固件升级进行安全升级验证,且固件升级文件包路径用于提供固件升级所需固件升级文件包的获取路径。具体的,所述根据所述各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象的步骤包括:
58.根据各个升级配置文件,得到对应待升级固件的固件版本号、固件升级类型和升级验证信息;
59.将各个待升级固件的固件升级文件包存储于预设的固件升级文件包路径,并通过进程共享方式,生成对应的固件版本对象;其中,进程共享可通过使用dbus对象或其他共享内存方式来实现;dbus是一种高级的进程间通信机制,且dbus对象是使用该dbus通信机制时封装的匹配器或回调函数,可实现进程间数据共享;共享内存是一种最高效的进程间的通信方式,通过在内核中设置一块供多个进程交换信息的内存区,由需要访问的进程将内存区映射到自己的私有地址空间的方式,基于互斥锁或信号量等同步机制实现多个进程均可直接读写内核的这一内存区,而不需要进行数据拷贝的效果;即,使用dbus对象或共享内存均是能实现固件版本对象的多进程共享,便于各个固件升级类对象能够获取所需的固件升级文件包执行对应的固件升级任务;具体如何使用dbus对象或共享内存技术的详细方法参考现有技术实现即可,此处不再赘述。
60.本实施例通过进程共享方式,将各个固件升级文件包和对应的升级配置文件转换为对应的进程共享的固件版本对象,不仅通过采用面向对象思想管理各个不同类型固件升级类对象来区别不同硬件链路,实现代码的解耦合,使其扩展性更强,层次更鲜明,更容易维护和新增,而且为了固件升级类对象执行对应升级任务提供了可靠的技术支持。
61.s13、通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,以使各个固件升级类对象根据所述固件版本对象生成信号执行多并发升级任务,并发送对应的固件升级执行结果信号;其中,进程间通信机制可根据实际应用需求自行确定,本实施例优选的采用基于消息队列的进程间通信、基于dbus信号的进程间通信、或基于socket的进程间通信实现固件版本对象生成信号的通知机制。
62.基于消息队列的进程间通信可理解为采用链表实现由系统内核维护的消息队列,通过一个进程将消息加到消息队列的尾端,另一个进程从消息队列中读取消息的方式实现的进程间通信机制;基于dbus信号的进程间通信可理解为通过接收方进程预先向总线注册感兴趣的消息类型,当dbus总线接收到对应信号消息类型的消息时,将该消息转发至接收方进程的进程间通信机制;基于socket的进程间通信可理解为基于本地socket的编程接口实现,支持「字节流」和「数据报」两种协议的同一主机上的进程间通信机制;需要说明的是,上述各种进程间通信机制均可实现本方案所需的固件版本对象生成信号广播效果,可结合实际应用需求选取任一方式,参考现有技术实现即可;基于上述成熟的进程间通信机制,既能提升开发效率,又能有效保证固件版本对象生成信号传输至预设的各个固件升级类对象的可靠性,为基于固件升级类对象的固件升级任务成功执行提供可靠保障。
63.原则上通过上述方法将固件版本对象生成信号广播至预设的各个固件升级类对象,只需等待各个固件升级类对象返回的固件升级执行结果信号即可。但,考虑到实际应用中会不可避免的出现因进程间通信不畅导致固件版本对象生成信号或固件升级执行结果信号发送失败,或固件升级失败的情况,使得固件升级相关文件一直占用磁盘,造成不必要的资源浪费,本实施例优选地,在将固件版本对象生成信号广播至预设的各个固件升级类对象的同时,开启相应的计时任务,以避免长时间未收到固件升级响应;具体的,所述通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象的步骤包括:
64.将所述固件版本对象生成信号广播至各个固件升级类对象,并开启等待固件升级执行结果定时任务,以及在超过预设等待时长时,删除所有固件版本对象及对应的临时文件;其中,预设等待时长可根据实际需求或经验值设置,此处不作具体限制;对应的,等待固件升级执行结果定时任务在预设等待时长超时后,需要删除的临时文件理解为是解压多并发固件升级包得到的各个固件升级文件包和对应的升级配置文件。
65.固件升级类对象如前所述,为预先根据嵌入式产品所涉及的不同类型固件的升级方式所开发的,以根据接收到的固件版本对象生成信号正确执行对应升级任务的对象,包括与升级方式对应的固件类升级对象itemupdate和命令类升级对象commandupdater,可根据实际产品应用需求针对性开发设置。固件升级类对象平时处于睡眠中,在接收到新的固件版本对象产生的系统信号时,会根据固件版本对象的type属性(固件类型)来确定是否为自身的固件升级需求,进而确定是否需要执行升级任务;具体的,所述各个固件升级类对象根据所述固件版本对象生成信号执行多并发升级任务,并发送对应的固件升级执行结果信号的步骤包括:
66.响应于所述固件版本对象生成信号,各个固件升级类对象遍历各个固件版本对象,并根据对应的固件类型判断是否需要执行自身固件升级;
67.若是,则根据对应固件版本对象的固件版本号、升级验证信息和固件升级类型进行安全升级校验,并在校验通过后,根据对应的固件升级文件包路径获取固件升级文件包
执行升级任务,以及在确定升级成功或失败时,发送对应的固件升级执行结果信号;需要说明是,对于命令类升级对象处理流程而言,需要根据固件升级文件包路径同时获取固件升级文件和对应的固件升级工具才能执行对应的升级命令;
68.若否,则直接抛弃信号,继续睡眠等待新的固件版本对象生成信号。
69.本实施例中各固件升级类对象基于面向对象管理思想和固件版本对象通知机制,有效区别不同硬件链路,实现代码逻辑解耦,便于维护和扩展的同时,不仅可以实现多个不同类型固件设备的同步升级操作,极大的提高固件升级效率,有效满足批发升级不同设备固件的应用需求,而且对于一个新类型固件升级任务而言,只需要在后端设计开发对应的固件升级类对象时投入人力(若支持命令升级,甚至无需人力投入),可有效节约人力成本。
70.s14、响应于各个固件升级执行结果信号,获取对应的固件升级执行结果,并根据所述固件升级执行结果进行相应的升级提示;其中,固件升级执行结果包括升级失败和升级成功,两种不同的升级结果所需用户的处理方式并不相同;为了在保证固件升级正常执行的基础上,进一步提升用户体验,便于用户及时了解不同固件的升级结果作出针对性维护,本实施例优选地,在识别固件升级执行结果后,作出针对性提示;具体的,所述根据所述固件升级执行结果进行相应的升级提示的步骤包括:
71.判断所述固件升级执行结果是否为升级成功,若是,则提示对应的固件版本升级成功,并删除对应的固件版本对象及临时文件,反之,则提示对应的固件版本升级失败;需要说明的是,此处的提示可以通过管理升级系统的屏幕显示,或者通过相应通信机制反馈给用户端,此处不作具体限制;
72.本实施例采用固件升级类对象反馈对应升级执行结果信号机制,可保证在所有模块的升级完成后,及时清除对应的临时tar和固件版本对象firmware_version,可避免后续多次升级导致升级固件对磁盘空间的累积占用。
73.参考上述方法步骤即可实现不同嵌入式产品的多并发固件类升级任务,为了便于对上述方案实施过程的系统理解,此处以应用于通过bmc管理固件升级的应用场景为例进行说明,若需要通过bmc接收用户端发送的同时包括bmc、pnor和某一固件command升级的多并发固件升级任务,则在用户端根据相应的升级需求准备好所需多并发固件升级包firmwares.tar后,即可发送firmwares升级请求,bmc基板管理控制器的用户统一接口user_firmwares_updater接收到该多并发固件升级请求后,就会对firmwares.tar解压生成一个或多个固件版本(firmware_version)对象广播给包括bmc固件升级类对象、pnor固件升级类对象和command固件升级类对象的不同固件升级类对象并开启等待超时任务,由其根据固件版本对象的固件类型判断是否需要执行自身升级任务,若是根据对应的升级流程执行即可,并在升级任务执行完成后,发送对应的单个固件升级结果(结束)信号;用户统一接口在收到各个固件升级执行结果信号后,删除对应的固件版本对象和对应固件升级文件,直至收到所有固件升级执行结果信号或等待定时任务超时后,将所有固件版本对象和对应固件升级文件全部删除,结束当前多并发固件升级任务,具体处理流程示意图参见图2。
74.本技术实施例不仅通过统一用户接口和支持不同升级类型的方式实现了新增不同类型固件需求时,只需要新增固件升级类对象即可支持该类设备的固件升级,减少用户端的开发投入,有效节约了人力成本,而且通过引入固件版本对象通知机制,实现多个不同
类型固件设备并发升级,极大提高了固件升级效率,还通过采用面向对象思想管理升级对象机制,区分不同硬件链路,实现代码逻辑解耦,层次更鲜明,有效增强扩展性和易维护性(便于新增升级任务),具有较高的实用价值。
75.需要说明的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。
76.在一个实施例中,如图3所示,提供了一种多并发固件升级系统,所述系统包括:
77.用户接口模块1,用于响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的多并发固件升级包,并将所述多并发固件升级包进行解压,以及根据各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象;所述多并发固件升级包包括若干个固件升级文件包和对应的升级配置文件;所述固件版本对象包括固件版本号、固件类型、固件升级类型、升级验证信息和固件升级文件包路径;
78.所述用户接口模块1,还用于通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,并根据各个固件升级类对象返回的固件升级执行结果信号,获取对应的固件升级执行结果,以及根据所述固件升级执行结果进行相应的升级提示;
79.固件类升级模块2,用于管理预设的各个固件升级类对象,使得各个固件升级类对象根据接收的固件版本对象生成信号执行多并发升级任务,并返回对应的固件升级执行结果信号。
80.关于一种多并发固件升级系统的具体限定可以参见上文中对于一种多并发固件升级方法的限定,对应的技术效果也可等同得到,在此不再赘述。上述一种多并发固件升级系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
81.图4示出一个实施例中计算机设备的内部结构图,该计算机设备具体可以是终端或服务器。如图4所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示器和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种多并发固件升级方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
82.本领域普通技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有同的部件布置。
83.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法的步骤。
84.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
85.综上,本发明实施例提供的一种多并发固件升级方法、系统、设备及介质,其多并发固件升级方法实现了响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的包括若干个固件升级文件包和对应的升级配置文件的多并发固件升级包后,将多并发固件升级包进行解压,并根据各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象,再通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,以使各个固件升级类对象根据固件版本对象生成信号执行多并发升级任务,发送对应的固件升级执行结果信号,并响应于各个固件升级执行结果信号,获取对应的固件升级执行结果,根据固件升级执行结果进行相应的升级提示的技术方案,该多并发固件升级方法,通过统一用户接口支持并发升级不同类型固件设备,提高不同类型固件并发升级效率的同时,基于面向对象设计思想管理不同类型固件升级流程,有效降低模块间耦合性,且保证较强的扩展性和易维护性。
86.本说明书中的各个实施例均采用递进的方式描述,各个实施例直接相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
87.以上所述实施例仅表达了本技术的几种优选实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本技术的保护范围。因此,本技术专利的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种多并发固件升级方法,其特征在于,所述方法包括以下步骤:响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的多并发固件升级包;所述多并发固件升级包包括若干个固件升级文件包和对应的升级配置文件;将所述多并发固件升级包进行解压,并根据各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象;通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,以使各个固件升级类对象根据所述固件版本对象生成信号执行多并发升级任务,并发送对应的固件升级执行结果信号;响应于各个固件升级执行结果信号,获取对应的固件升级执行结果,并根据所述固件升级执行结果进行相应的升级提示。2.如权利要求1所述的多并发固件升级方法,其特征在于,所述预设文件传输协议包括https协议、ftp协议或scp协议。3.如权利要求1所述的多并发固件升级方法,其特征在于,所述多并发固件升级包的生成步骤包括:根据固件升级需求,确定待升级固件,并获取各个待升级固件的升级类型;根据各个待升级固件的升级类型,获取对应升级流程所需的固件升级文件包,并设置对应的升级配置文件;将各个固件升级文件包和对应的升级配置文件进行打包压缩,得到所述多并发固件升级包。4.如权利要求3所述的多并发固件升级方法,其特征在于,所述升级类型包括固件类升级或命令升级。5.如权利要求4所述的多并发固件升级方法,其特征在于,所述根据各个待升级固件的升级类型,获取对应升级流程所需的固件升级文件包的步骤包括:当所述升级类型为固件类升级时,获取对应升级流程所需的固件升级文件,并打包生成固件升级文件包;当所述升级类型为命令升级时,获取对应的固件升级文件和固件升级工具,并打包生成固件升级文件包。6.如权利要求1所述的多并发固件升级方法,其特征在于,所述固件版本对象包括固件版本号、固件类型、固件升级类型、升级验证信息和固件升级文件包路径;所述根据所述各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象的步骤包括:根据各个升级配置文件,得到对应待升级固件的固件版本号、固件类型、固件升级类型和升级验证信息;将各个待升级固件的固件升级文件包存储于预设的固件升级文件包路径,并通过进程共享方式,生成对应的固件版本对象。7.如权利要求1所述的多并发固件升级方法,其特征在于,所述进程间通信包括基于消息队列的进程间通信、基于dbus信号的进程间通信、或基于socket的进程间通信。8.如权利要求1所述的多并发固件升级方法,其特征在于,所述各个固件升级类对象根据所述固件版本对象生成信号执行多并发升级任务,并发送对应的固件升级执行结果信号
的步骤包括:响应于所述固件版本对象生成信号,各个固件升级类对象遍历各个固件版本对象,并根据对应的固件类型判断是否需要执行自身固件升级;若是,则根据对应固件版本对象的固件版本号、升级验证信息和固件升级类型进行安全升级校验,并在校验通过后,根据对应的固件升级文件包路径获取固件升级文件包执行升级任务,以及在确定升级成功或失败时,发送对应的固件升级执行结果信号;若否,则直接抛弃信号,继续睡眠等待新的固件版本对象生成信号。9.如权利要求1所述的多并发固件升级方法,其特征在于,所述通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象的步骤包括:将所述固件版本对象生成信号广播至各个固件升级类对象,并开启等待固件升级执行结果定时任务,以及在超过预设等待时长时,删除所有固件版本对象及对应的临时文件。10.如权利要求1所述的多并发固件升级方法,其特征在于,所述根据所述固件升级执行结果进行相应的升级提示的步骤包括:判断所述固件升级执行结果是否为升级成功,若是,则提示对应的固件版本升级成功,并删除对应的固件版本对象及临时文件,反之,则提示对应的固件版本升级失败。11.一种多并发固件升级系统,其特征在于,所述系统包括:用户接口模块,用于响应于用户端的多并发固件升级请求,根据预设文件传输协议,获取对应的多并发固件升级包,并将所述多并发固件升级包进行解压,以及根据各个固件升级文件包和对应的升级配置文件,生成若干个进程共享的固件版本对象;所述多并发固件升级包包括若干个固件升级文件包和对应的升级配置文件;所述用户接口模块,还用于通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,并根据各个固件升级类对象返回的固件升级执行结果信号,获取对应的固件升级执行结果,以及根据所述固件升级执行结果进行相应的升级提示;固件类升级模块,用于管理预设的各个固件升级类对象,使得各个固件升级类对象根据接收的固件版本对象生成信号执行多并发升级任务,并返回对应的固件升级执行结果信号。12.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一所述方法的步骤。13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一所述方法的步骤。
技术总结
本发明提供了一种多并发固件升级方法、系统、计算机设备与存储介质,所述方法包括:响应于用户端的多并发固件升级请求,根据预设文件传输协议获取对应的多并发固件升级包;将多并发固件升级包进行解压,并生成若干个进程共享的固件版本对象;通过进程间通信将固件版本对象生成信号广播至预设的各个固件升级类对象,以使各个固件升级类对象执行多并发升级任务,并发送对应的固件升级执行结果信号;响应于各个固件升级执行结果信号,根据固件升级执行结果进行相应的升级提示。本发明通过统一用户接口支持不同固件并发升级,提高升级效率的同时,基于面向对象设计思想管理不同固件升级流程,有效降低模块间耦合性,具保证较强的扩展性和易维护性。性和易维护性。性和易维护性。
技术研发人员:林俊钦 姚博钧 朱子健
受保护的技术使用者:上海合芯数字科技有限公司
技术研发日:2023.04.24
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
