CN116360828A - 程序升级方法、装置、设备及计算机可读存储介质 - Google Patents
程序升级方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN116360828A CN116360828A CN202310403825.7A CN202310403825A CN116360828A CN 116360828 A CN116360828 A CN 116360828A CN 202310403825 A CN202310403825 A CN 202310403825A CN 116360828 A CN116360828 A CN 116360828A
- Authority
- CN
- China
- Prior art keywords
- program
- boot loader
- local
- burning
- information
- 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.)
- Pending
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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例涉及程序升级技术领域,公开了一种程序升级方法、装置、设备及计算机可读存储介质,通过在进行程序升级时优先对引导加载程序进行烧录,重启系统后运行烧录至本地的引导加载程序,再通过新的引导加载程序的引导,对用户程序进行烧录,使得引导加载程序烧录时不会被用户程序的烧录步骤抢占处理器资源,烧录速度较快,在引导加载程序烧录完成后再基于引导加载程序的引导来获取用户程序并进行烧录,将程序烧录升级的步骤拆分,减少了引导加载程序烧录的时间,降低了引导加载程序烧录过程中出现故障的概率,使得程序升级过程更加稳定。
Description
技术领域
本申请实施例涉及程序升级技术领域,具体涉及一种程序升级方法、装置、设备及计算机可读存储介质。
背景技术
在当今的各个领域中,许多设备在出厂时就会默认带有内嵌的固件程序,这些程序主要用于驱动控制设备运转,为了保障设备的运转稳定,厂家或是设备的用户往往会在需要时对设备中的程序进行升级。而对固件程序的升级往往分为最核心的引导加载程序和其他功能类程序,若是引导加载程序在程序升级过程中出现故障,则会使得即便其他功能类程序完成了升级,也会由于缺乏引导加载程序的引导而无法启动。
而引导加载程序的故障修复往往较为繁琐,有时候,一些较为精密的设备上的固件出现引导加载程序故障时甚至需要将整个固件返厂维修,严重影响作业效率,难以保证设备进行程序升级时的稳定性。
发明内容
鉴于上述问题,本申请实施例提供了一种程序升级方法、装置、设备及计算机可读存储介质,用于解决设备进行程序升级时稳定性较低的问题。
根据本申请实施例的一个方面,提供了一种程序升级方法,包括:获取引导加载程序;将引导加载程序烧录至本地;重启系统,执行烧录至本地的引导加载程序;基于引导加载程序的引导,从上位机获取用户程序并烧录至本地。
通过在进行程序升级时优先对引导加载程序进行烧录,重启系统后运行烧录至本地的引导加载程序,再通过新的引导加载程序的引导,对用户程序进行烧录,使得引导加载程序烧录时不会被用户程序的烧录步骤抢占处理器资源,烧录速度较快,在引导加载程序烧录完成后再基于引导加载程序的引导来获取用户程序并进行烧录,将程序烧录升级的步骤拆分,减少了引导加载程序烧录的时间,降低了引导加载程序烧录过程中出现故障的概率,使得程序升级过程更加稳定。
在一种可选的方式中,所述获取引导加载程序之前,程序升级方法还包括:从上位机获取与引导加载程序兼容的设备信息;获取自身的设备信息;判断与引导加载程序兼容的设备信息中是否存在自身的设备信息;若是,则执行获取引导加载程序的步骤。通过从上位机获取与引导加载程序兼容的设备信息,并获取自身的设备信息,判断与引导加载程序兼容的设备信息中是否存在自身的设备信息,若存在,便继续执行获取引导加载程序的步骤,可以在获取引导加载程序之前提前对引导加载程序是否与自身设备兼容进行判断,从而避免由于将不兼容的引导加载程序进行烧录而导致设备故障的意外发生,降低了程序升级发生故障的风险。
在一种可选的方式中,获取引导加载程序之后,程序升级方法还包括:确定引导加载程序的版本信息;确定本地的当前引导加载程序的版本信息;判断引导加载程序的版本信息是否与本地的当前引导加载程序的版本信息相同;若否,则执行将引导加载程序烧录至本地的步骤。由于在对设备或固件进行程序升级时,一般是将新版本的程序对旧版本的程序进行覆盖以更新程序,或是将旧版本的程序覆盖新版本的程序以对程序进行版本回滚来避免程序本身的一些兼容性或稳定性问题,若引导加载程序与本地的当前引导加载程序的版本一致,则可以认为这两个程序没有区别,因此也就没必要进行程序升级,在判断版本不一致再执行后续步骤的烧录操作可以避免获取到了不正确的引导加载程序而进行了错误的烧录,有利于程序升级的准确性。
在一种可选的方式中,基于引导加载程序的引导,从上位机获取用户程序并烧录至本地,包括:获取命令信息;将用户程序烧录至本地并替换本地的当前用户程序;判断命令信息中是否包含保留历史配置命令;若是,则将历史配置信息作为用户程序的配置信息。通过判断命令信息中是否包含保留历史配置命令来决定是否保留用户程序的历史配置信息,使得在进行程序升级的过程中,操作人员可以根据实际需要写入命令信息来自主决定是否保留原有的配置信息,使得程序升级更加灵活,操作人员对升级后的程序的适应更快。
在一种可选的方式中,重启系统,执行烧录至本地的引导加载程序之后,程序升级方法还包括:获取命令信息;判断命令信息中是否包含继续烧录命令;若是,则执行基于引导加载程序的引导,从上位机获取用户程序并烧录至本地的步骤。通过判断命令信息中是否包含继续烧录命令,当包含继续烧录命令时才执行对用户程序进行烧录的步骤,可以使得对用户程序进行烧录的步骤能够被控制,操作人员通过更改命令信息对烧录步骤进行控制,可以使得烧录流程更加灵活可控,便利了操作人员操作。
在一种可选的方式中,基于引导加载程序的引导,从上位机获取用户程序并烧录至本地之后,程序升级方法还包括:删除命令信息中包含的继续烧录命令。当命令信息为某种配置文件时,操作人员在命令信息中写入了继续烧录命令后,引导加载程序每次运行时都将执行一遍对用户程序的烧录,而实际情况中只需要进行一次用户程序的烧录,因此为了避免引导加载程序进行多次无意义的用户程序烧录,占用处理器资源,在对用户程序进行烧录完毕后对命令信息中包含的继续烧录命令进行删除,使得本申请实施例提供的程序升级方法的运行不会陷入死循环,不易浪费处理器资源。
在一种可选的方式中,将引导加载程序烧录至本地之前,程序升级方法还包括:确定位于本地的每一个运行中程序的资源占用量;依据资源占用量由小到大对运行中程序进行排序;计算位于本地的全部运行中程序的资源占用量之和;判断本地的全部运行中程序的资源占用量之和是否大于或等于预设阈值;若是,则将排序中第一个运行中程序停止,并跳转至确定位于本地的每一个运行中程序的资源占用量的步骤。通过在本地的全部运行中程序的资源占用量之和大于或等于预设阈值时,将排序中的第一个运行中程序停止,并再次重复上述步骤,使得当系统资源负载较大时可以将其余程序停止,避免运行中程序占用过多资源影响程序升级进程,同时,通过对运行中程序以资源占用量由小到大的方式排序,并在资源占用量之和大于或等于预设阈值时停止排序中的第一个运行中程序,可以使得一些占用资源较大的、重要性较高的程序能够被较后停止,优先停止占用资源较小的程序,使得系统运转的稳定性不会受到过大影响,不易出现由于停止了重要程序导致系统崩溃的意外。
在一种可选的方式中,获取引导加载程序之后,程序升级方法还包括:对引导加载程序进行文件完整性计算,得到本地文件完整性信息;获取引导加载程序的标准文件完整性信息;判断本地文件完整性信息是否与标准文件完整性信息一致;若是,则执行将引导加载程序烧录至本地的步骤。通过对引导加载程序进行完整性验证,在完整性信息与标准文件完整性信息一致时再执行后续烧录步骤,可以避免由于传输或获取时产生的故障导致引导加载程序文件不完整使得程序升级时出错,降低了故障概率。
根据本申请实施例的另一方面,提供了一种程序升级装置,包括:第一获取模块、第一烧录模块、重启模块和第二烧录模块。第一获取模块用于获取引导加载程序;第一烧录模块用于将引导加载程序烧录至本地;重启模块用于重启系统,执行烧录至本地的引导加载程序;第二烧录模块,用于基于引导加载程序的引导,从上位机获取用户程序并烧录至本地。
根据本申请实施例的另一方面,提供了一种程序升级设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;存储器用于存放至少一程序,程序使处理器执行如上任意一项的程序升级方法的操作。
根据本申请实施例的又一方面,提供了一种计算机可读存储介质,存储介质中存储有可执行指令,可执行指令使程序升级设备执行如上任意一项的程序升级方法的操作。
上述说明仅是本申请实施例技术方案的概述,为了能够更清楚了解本申请实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本申请实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
附图仅用于示出实施方式,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例提供的程序升级方法的流程示意图;
图2为本申请步骤110之前的步骤的流程示意图;
图3为本申请步骤110之后的步骤的流程示意图;
图4为本申请步骤140的子步骤的流程示意图;
图5为本申请步骤130之后的步骤的流程示意图;
图6为本申请步骤140之后的步骤的流程示意图;
图7为本申请步骤120之前的步骤的流程示意图;
图8为本申请步骤110之后的步骤的流程示意图;
图9为本申请实施例提供的程序升级装置的模块化结构示意图;
图10为本申请实施例提供的程序升级设备的模块化结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。
本申请发明人注意到,现在常见的程序升级方法往往将整个系统或设备固件中的所有程序共同进行升级,若引导加载程序在升级过程中由于设备断电等意外导致升级不成功,将会使得设备固件或系统无法正常启动,这种情况下进行对设备固件或系统维护修复较为困难,耗时耗力,因此,迫切需要研发一种程序升级方法来提高程序升级的成功率。
本申请发明人发现,现有的程序升级方法在进行设备固件程序升级时往往不会考虑到对引导加载程序的优先升级,而是将引导加载程序和其他用户程序同时进行升级,以这种方式进行升级时,处理器需要同时处理引导加载程序的烧录和用户程序的烧录,在一些处理器资源较为紧缺,或是处于作业状态的设备上则可能导致引导加载程序的烧录速度降低,较长的烧录时间也将变相增加在烧录过程中设备断电或是出现其他意外使得烧录中断的风险,引导加载程序烧录不成功的几率较大。
基于此,发明人经过研究,设计了一种程序升级方法,通过先对引导加载程序进行烧录,在重启系统后再通过烧录完成的引导加载程序的引导,从上位机获取用户程序并烧录至本地,使得设备在进行较为重要的引导加载程序的烧录时资源较为集中,不会由于同时进行引导加载程序和用户程序的烧录导致拖慢引导加载程序烧录进度,使得引导加载程序烧录速度更快,烧录速度更短,进而能够降低在引导加载程序进行烧录的过程中出现意外情况的概率。
本申请实施例公开的程序升级方法可以但不限于用于对设备固件程序进行升级,还可以应用于对其他任何需要进行程序升级的场景,在本申请实施例中,以用于对设备固件程序进行升级为例进行说明。
图1示出了本申请实施例提供的程序升级方法的流程图,该方法由程序升级设备执行,程序升级设备例如可以是计算机、服务器等。如图1所示,该方法包括以下步骤:
步骤110:获取引导加载程序。
本步骤中,引导加载程序指的是固件程序中,在操作系统内核运行之前运行的程序,承担初始化硬件设备、建立内存空间映射图等功能,用于调整系统的软硬件环境至一个合适的状态,以便系统或设备启动时操作系统内核能够在正确的环境中启动,在一些设备或操作系统中,引导加载程序还承担引导其他主要程序启动的作用,引导加载程序例如服务器BMC(Baseboard Management Controller,基板管理控制器)中的U-boot(UniversalBoot Loader,通用引导加载程序),在固件程序中,引导加载程序也可以为固件中最核心的操作系统,例如主板的BIOS(Basic Input Output System,基本输入输出系统)。
其中,引导加载程序的获取途径可以通过连接协议从远程服务器中获取,例如与TFTP服务器建立通讯连接并获取存储在TFTP服务器上的引导加载程序,还可以通过外接设备获取设备存储中的引导加载程序,获取的引导加载程序根据实际作业需要可以存储在本地设备缓存中或存储空间中,本申请实施例对引导加载程序的获取方式、获取途径及存储方式不作特殊限定。
步骤120:将引导加载程序烧录至本地。
烧录在以往的定义中也叫刻录,指的是将想要的数据通过刻录机等工具刻制进光盘、烧录卡等介质中,而在另一广义的概念中,烧录指的是将程序导入至目标固件或设备中,以使目标固件或设备能够通过程序按照设计的功能执行操作的完整动作,也可以指对目标固件或设备中原有的程序进行覆写,即对程序进行替换升级。
其中,本地指的是将被进行程序升级的设备或固件,可以为某个单一元件或是多个元件组成的设备整体,可以理解的是,本地必须包含至少一个实体的硬件以使得其能够作为承载程序的媒介。
步骤130:重启系统,执行烧录至本地的引导加载程序。
本步骤中,系统指的是位于本地的程序,例如本地的设备上搭载的操作系统。
步骤140:基于引导加载程序的引导,从上位机获取用户程序并烧录至本地。
本步骤中,基于引导加载程序的引导,从上位机获取用户程序并烧录至本地指的是,例如,以引导加载程序为BMC软件下的U-boot为例,U-boot建立与上位机的通讯连接,从上位机中下载用户程序并写入本地存储空间的特定区域中,若本地存储空间的特定区域中已经存在程序,则将用户程序覆盖该已经存在的程序,以实现对本地的用户程序进行升级的效果。
更具体地,例如,位于本地的程序存储于固件中的地址1到地址4的存储区域,则U-boot对地址1到地址4的存储区域进行擦除,再将用户程序存储至擦除后的地址1到地址4的存储区域中。
通过上述步骤110至步骤140,在进行程序升级时优先对引导加载程序进行烧录,重启系统后运行烧录至本地的引导加载程序,再通过新的引导加载程序的引导,对用户程序进行烧录,使得引导加载程序烧录时不会被用户程序的烧录步骤抢占处理器资源,烧录速度较快,在引导加载程序烧录完成后再基于引导加载程序的引导来获取用户程序并进行烧录,将程序烧录升级的步骤拆分,减少了引导加载程序烧录的时间,降低了引导加载程序烧录过程中出现故障的概率,使得程序升级过程更加稳定。
请参阅图2,图2为本申请步骤110之前的步骤的流程示意图。如图2所示,在本申请的一些实施例中,步骤110之前,程序升级方法还包括:
步骤1101:从上位机获取与引导加载程序兼容的设备信息。
在步骤1101中,与引导加载程序兼容的设备信息可以为多个以列表方式体现的信息,例如获取到一个表,表中列出了多个可与引导加载程序兼容的设备信息。其中,设备信息可以为设备或固件的型号、厂家或规格参数信息。
步骤1102:获取自身的设备信息。
在步骤1102中,自身的设备信息指的是本地设备或固件的型号、厂家或规格参数信息。需要说明的是,自身的设备信息应当与步骤1101中获取到的与引导加载程序兼容的设备信息属于同一类别的信息,例如,与引导加载程序兼容的设备信息为设备型号信息,则本步骤中获取到的自身的设备信息也应当为设备型号信息,若与引导加载程序兼容的设备信息为规格信息,则本步骤中获取到的自身的设备信息也应当为规格信息。
其中,在某些情况下,不同类别的信息可能可以建立联系,例如市面上某一型号的设备仅存在一种规格,则通过获取该设备的型号信息也即能得到规格信息。
步骤1103:判断与引导加载程序兼容的设备信息中是否存在自身的设备信息;
若判断为是,则执行步骤110的步骤。
通过从上位机获取与引导加载程序兼容的设备信息,并获取自身的设备信息,判断与引导加载程序兼容的设备信息中是否存在自身的设备信息,若存在,便继续执行步骤110的步骤,可以在获取引导加载程序之前提前对引导加载程序是否与自身设备兼容进行判断,从而避免由于将不兼容的引导加载程序进行烧录而导致设备故障的意外发生,降低了程序升级发生故障的风险。
请参阅图3,图3为本申请步骤110之后的步骤的流程示意图。如图3所示,在本申请的一些实施例中,步骤110之后,程序升级方法还包括:
步骤1110:确定引导加载程序的版本信息。
步骤1120:确定本地的当前引导加载程序的版本信息。
一般情况下,某个程序的版本号或版本信息往往附带在程序本身编码的页头或页尾中,即附带在程序本身中,因此,在步骤1110和步骤1120中,确定版本信息的方式可以为,查找引导加载程序和本地的当前引导加载程序本身中自带的版本号,或是从程序的来源,例如开发商提供的版本标识页中获取引导加载程序或本地的当前引导加载程序的版本信息。根据实际情况也可以有多种不同的版本信息确认方法,本申请实施例对确定版本信息的具体方式及手段不作特殊限定。
步骤1130:判断引导加载程序的版本信息是否与本地的当前引导加载程序的版本信息相同;
若判断为否,则执行步骤120的步骤。
由于在对设备或固件进行程序升级时,一般是将新版本的程序对旧版本的程序进行覆盖以更新程序,或是将旧版本的程序覆盖新版本的程序以对程序进行版本回滚来避免程序本身的一些兼容性或稳定性问题,若引导加载程序与本地的当前引导加载程序的版本一致,则可以认为这两个程序没有区别,因此也就没必要进行程序升级,在判断版本不一致再执行后续步骤的烧录操作可以避免获取到了不正确的引导加载程序而进行了错误的烧录,有利于程序升级的准确性。
请参阅图4,图4为本申请步骤140的子步骤的流程示意图。如图4所示,在本申请的一些实施例中,步骤140包括:
步骤141:获取命令信息。
本步骤中,命令信息指的是获取操作人员预先设定的命令配置,命令信息的表现形式可以为配置文件或命令行,根据实际作业情况,命令信息可能有多种不同的表现形式,只需要能够用于使程序依据命令信息执行特定操作即可。
步骤142:将用户程序烧录至本地并替换本地的当前用户程序。
本步骤中,可以将用户程序用任意文件存储系统对文件进行处理的方式覆盖本地的当前用户程序。
步骤143:判断命令信息中是否包含保留历史配置命令;
若判断为是,则执行以下步骤:
步骤144:将历史配置信息作为用户程序的配置信息。
在步骤143至步骤144中,配置信息和历史配置信息指的是用户程序在使用过程中由操作人员设定的自定义配置,例如用户程序中的某项功能是否关闭等,也可以为用户程序在使用过程中产生的历史缓存信息,例如对操作人员历史操作的记录等。
通过判断命令信息中是否包含保留历史配置命令来决定是否保留用户程序的历史配置信息,使得在进行程序升级的过程中,操作人员可以根据实际需要写入命令信息来自主决定是否保留原有的配置信息,使得程序升级更加灵活,操作人员对升级后的程序的适应更快。
请参阅图5和图6,图5为本申请步骤130之后的步骤的流程示意图,图6为本申请步骤140之后的步骤的流程示意图。如图5所示,在本申请的一些实施例中,步骤130之后,程序升级方法还包括:
步骤1310:获取命令信息。
步骤1320:判断命令信息中是否包含继续烧录命令;
若判断为是,则执行步骤140的步骤。
在步骤1310至步骤1320中,通过判断命令信息中是否包含继续烧录命令,当包含继续烧录命令时才执行步骤140中对用户程序进行烧录的步骤,可以使得对用户程序进行烧录的步骤能够被控制,操作人员通过更改命令信息对烧录步骤进行控制,可以使得烧录流程更加灵活可控,便利了操作人员操作。
如图6所示,步骤140之后,程序升级方法还包括:
步骤1410:删除命令信息中包含的继续烧录命令。
当命令信息为某种配置文件时,操作人员在命令信息中写入了继续烧录命令后,引导加载程序每次运行时都将执行一遍对用户程序的烧录,而实际情况中只需要进行一次用户程序的烧录,因此为了避免引导加载程序进行多次无意义的用户程序烧录,占用处理器资源,在对用户程序进行烧录完毕后对命令信息中包含的继续烧录命令进行删除,使得本申请实施例提供的程序升级方法的运行不会陷入死循环,不易浪费处理器资源。
请参阅图7,图7为本申请步骤120之前的步骤的流程示意图。如图7所示,在本申请的一些实施例中,步骤120之前,程序升级方法还包括:
步骤1201:确定位于本地的每一个运行中程序的资源占用量。
本步骤中,对运行中程序的资源占用量进行确定的方式有多种,例如通过系统中自带的资源监控组件确定资源占用量,其中,资源占用量的体现方式可以为百分比形式,或是千兆赫形式。
步骤1202:依据资源占用量由小到大对运行中程序进行排序。
步骤1203:计算位于本地的全部运行中程序的资源占用量之和。
本步骤中,
步骤1204:判断本地的全部运行中程序的资源占用量之和是否大于或等于预设阈值;
若判断为是,则执行以下步骤:
步骤1205:将排序中的第一个运行中程序停止,并跳转至步骤1201。
若判断为否,则执行步骤120。
在步骤1202至步骤1205中,通过在本地的全部运行中程序的资源占用量之和大于或等于预设阈值时,将步骤1202中得到的排序中的第一个运行中程序停止,并再次重复上述步骤,使得当系统资源负载较大时可以将其余程序停止,避免运行中程序占用过多资源影响程序升级进程,同时,通过对运行中程序以资源占用量由小到大的方式排序,并在资源占用量之和大于或等于预设阈值时停止排序中的第一个运行中程序,可以使得一些占用资源较大的、重要性较高的程序能够被较后停止,优先停止占用资源较小的程序,使得系统运转的稳定性不会受到过大影响,不易出现由于停止了重要程序导致系统崩溃的意外。
请参阅图8,图8为本申请步骤110之后的步骤的流程示意图。如图8所示,在本申请的一些实施例中,步骤110之后,程序升级方法还包括:
步骤1140:对引导加载程序进行文件完整性计算,得到本地文件完整性信息。
本步骤中,对引导加载程序进行文件完整性计算的方式有多种,例如MD5、SHA1、SHA256等校验算法,通过这类校验算法对引导加载程序进行文件完整性计算后,将得到一串能够体现引导加载程序的文件信息的特征值,即本地文件完整性信息。
步骤1150:获取引导加载程序的标准文件完整性信息。
本步骤中,对引导加载程序的标准文件完整性信息的获取方式可以为从引导加载程序的来源处获取预先生成的标准文件完整性信息,用于与已经获取的引导加载程序进行对比以验证完整性。
步骤1160:判断本地文件完整性信息是否与标准文件完整性信息一致;
若判断为是,则执行步骤120。
通过对引导加载程序进行完整性验证,在完整性信息与标准文件完整性信息一致时再执行后续烧录步骤,可以避免由于传输或获取时产生的故障导致引导加载程序文件不完整使得程序升级时出错,降低了故障概率。
图9示出了本申请实施例提供的程序升级装置900的模块化结构示意图。如图9所示,该程序升级装置900包括:第一获取模块901、第一烧录模块902、重启模块903和第二烧录模块904。第一获取模块901用于获取引导加载程序;第一烧录模块902用于将引导加载程序烧录至本地;重启模块903用于重启系统,执行烧录至本地的引导加载程序;第二烧录模块904用于基于引导加载程序的引导,从上位机获取用户程序并烧录至本地。
在一些实施例中,程序升级装置900进一步包括第二获取模块、第三获取模块、第一判断模块和第一处理模块。第二获取模块用于从上位机获取与引导加载程序兼容的设备信息;第三获取模块用于获取自身的设备信息;第一判断模块用于判断与引导加载程序兼容的设备信息中是否存在自身的设备信息;第一处理模块用于在与引导加载程序兼容的设备信息中存在自身的设备信息时,控制第一获取模块901执行获取引导加载程序的步骤。
在一些实施例中,程序升级装置900进一步包括第一确定模块、第二确定模块、第二判断模块和第二处理模块。第一确定模块用于确定引导加载程序的版本信息;第二确定模块用于确定本地的当前引导加载程序的版本信息;第二判断模块用于判断引导加载程序的版本信息是否与本地的当前引导加载程序的版本信息相同;第二处理模块用于在引导加载程序的版本信息与本地的当前引导加载程序的版本信息不相同时,控制第一烧录模块902执行将引导加载程序烧录至本地的步骤。
在一些实施例中,第二烧录模块904进一步包括:获取单元、烧录单元、判断单元和处理单元。获取单元用于获取命令信息;烧录单元用于将用户程序烧录至本地并替换本地的当前用户程序;判断单元用于判断命令信息中是否包含保留历史配置命令;处理单元用于在命令信息中包含保留历史配置命令时,将历史配置信息作为用户程序的配置信息。
在一些实施例中,程序升级装置900进一步包括第三获取模块、第三判断模块和第三处理模块。第三获取模块用于获取命令信息;第三判断模块用于判断命令信息中是否包含继续烧录命令;第三处理模块用于在命令信息中包含继续烧录命令时,控制第二烧录模块904执行基于引导加载程序的引导,从上位机获取用户程序并烧录至本地的步骤。
在一些实施例中,程序升级装置900进一步包括命令删除模块。命令删除模块用于删除命令信息中包含的继续烧录命令。
在一些实施例中,程序升级装置900进一步包括第三确定模块、排序模块、计算模块、第四判断模块、第四处理模块和第五处理模块。第三确定模块用于确定位于本地的每一个运行中程序的资源占用量;排序模块用于依据资源占用量由小到大对运行中程序进行排序;计算模块用于计算位于本地的全部运行中程序的资源占用量之和;第四判断模块用于判断本地的全部运行中程序的资源占用量的之和是否大于或等于预设阈值;第四处理模块用于在本地的全部运行中程序的资源占用量之和大于或等于预设阈值时,将排序中的第一个运行中程序停止,并跳转至确定位于本地的每一个运行中程序的资源占用量的步骤;第五处理模块用于在本地的全部运行中程序的资源占用量之和小于预设阈值时,控制第一烧录模块902执行将引导加载程序烧录至本地的步骤。
在一些实施例中,程序升级装置900进一步包括完整性计算模块、第四获取模块、第五判断模块和第六处理模块。完整性计算模块用于对引导加载程序进行文件完整性计算,得到本地文件完整性信息;第四获取模块用于获取引导加载程序的标准文件完整性信息;第五判断模块用于判断本地文件完整性信息是否与标准文件完整性信息一致;第六处理模块用于在本地文件完整性信息与标准文件完整性信息一致时,控制第一烧录模块902执行将引导加载程序烧录至本地的步骤。
根据本申请实施例的另一个方面,提供一种程序升级设备。具体请参阅图10,图10示出了本申请实施例提供的程序升级设备的模块化结构示意图,本申请具体实施例并不对程序升级设备的具体实现做限定。
如图10所示,该程序升级设备可以包括:处理器1002、存储器1006、通信接口1004和通信总线1008。
其中,处理器1002、存储器1006和通信接口1004通过通信总线1008完成相互间的通信。存储器1006用于存放至少一程序1010,程序1010使处理器1002执行如上述程序升级方法实施例中的相关步骤。
具体地,程序1010可以包括程序代码,该程序代码包括计算机可执行指令。
处理器1002可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。程序升级设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器1006,用于存储程序1010。存储器1006可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序1010具体可以被处理器1002调用使程序升级设备执行以下操作:获取引导加载程序;将引导加载程序烧录至本地;重启系统,执行烧录至本地的引导加载程序;基于引导加载程序的引导,从上位机获取用户程序并烧录至本地。
本申请实施例还提供了一种计算机可读存储介质,存储介质中存储有可执行指令,可执行指令在程序升级设备上运行时,使得程序升级设备执行上述任一实施例中的程序升级方法。
可执行指令具体可以用于使得程序升级设备执行以下操作:获取引导加载程序;将引导加载程序烧录至本地;重启系统,执行烧录至本地的引导加载程序;基于引导加载程序的引导,从上位机获取用户程序并烧录至本地。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本申请实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请实施例的各个特征有时被一起分组到单个实施例、附图、或者对其的描述中。
本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离范围的情况下可设计出替换实施例。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (10)
1.一种程序升级方法,其特征在于,包括:
获取引导加载程序;
将所述引导加载程序烧录至本地;
重启系统,执行烧录至本地的引导加载程序;
基于所述引导加载程序的引导,从上位机获取用户程序并烧录至本地。
2.根据权利要求1所述的程序升级方法,其特征在于,所述获取引导加载程序之前,所述程序升级方法还包括:
从所述上位机获取与引导加载程序兼容的设备信息;
获取自身的设备信息;
判断所述与引导加载程序兼容的设备信息中是否存在所述自身的设备信息;
若是,则执行所述获取引导加载程序的步骤。
3.根据权利要求1所述的程序升级方法,其特征在于,所述获取引导加载程序之后,所述程序升级方法还包括:
确定引导加载程序的版本信息;
确定本地的当前引导加载程序的版本信息;
判断所述引导加载程序的版本信息是否与所述本地的当前引导加载程序的版本信息相同;
若否,则执行所述将所述引导加载程序烧录至本地的步骤。
4.根据权利要求1所述的程序升级方法,其特征在于,所述基于所述引导加载程序的引导,从上位机获取用户程序并烧录至本地,包括:
获取命令信息;
将所述用户程序烧录至本地并替换所述本地的当前用户程序;
判断所述命令信息中是否包含保留历史配置命令;
若是,则将所述历史配置信息作为所述用户程序的配置信息。
5.根据权利要求1所述的程序升级方法,其特征在于,所述重启系统,执行烧录至本地的引导加载程序之后,所述程序升级方法还包括:
获取命令信息;
判断所述命令信息中是否包含继续烧录命令;
若是,则执行所述基于所述引导加载程序的引导,从上位机获取用户程序并烧录至本地的步骤;
所述基于所述引导加载程序的引导,从上位机获取用户程序并烧录至本地之后,所述程序升级方法还包括:
删除所述命令信息中包含的所述继续烧录命令。
6.根据权利要求1所述的程序升级方法,其特征在于,所述将所述引导加载程序烧录至本地之前,所述程序升级方法还包括:
确定位于本地的每一个运行中程序的资源占用量;
依据资源占用量由小到大对运行中程序进行排序;
计算位于本地的全部运行中程序的资源占用量之和;
判断所述本地的全部运行中程序的资源占用量之和是否大于或等于预设阈值;
若是,则将排序中的第一个运行中程序停止,并跳转至所述确定位于本地的每一个运行中程序的资源占用量的步骤;
若否,则执行所述将所述引导加载程序烧录至本地的步骤。
7.根据权利要求1-6任意一项所述的程序升级方法,其特征在于,所述获取引导加载程序之后,所述程序升级方法还包括:
对所述引导加载程序进行文件完整性计算,得到本地文件完整性信息;
获取所述引导加载程序的标准文件完整性信息;
判断所述本地文件完整性信息是否与所述标准文件完整性信息一致;
若是,则执行所述将所述引导加载程序烧录至本地的步骤。
8.一种程序升级装置,其特征在于,包括:
第一获取模块,用于获取引导加载程序;
第一烧录模块,用于将所述引导加载程序烧录至本地;
重启模块,用于重启系统,执行烧录至本地的引导加载程序;
第二烧录模块,用于基于所述引导加载程序的引导,从上位机获取用户程序并烧录至本地。
9.一种程序升级设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一程序,所述程序使所述处理器执行如权利要求1-7任意一项所述的程序升级方法的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有可执行指令,所述可执行指令在程序升级设备上运行时,使得程序升级设备执行如权利要求1-7任意一项所述的程序升级方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310403825.7A CN116360828A (zh) | 2023-04-12 | 2023-04-12 | 程序升级方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310403825.7A CN116360828A (zh) | 2023-04-12 | 2023-04-12 | 程序升级方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116360828A true CN116360828A (zh) | 2023-06-30 |
Family
ID=86908255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310403825.7A Pending CN116360828A (zh) | 2023-04-12 | 2023-04-12 | 程序升级方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116360828A (zh) |
-
2023
- 2023-04-12 CN CN202310403825.7A patent/CN116360828A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6089064B2 (ja) | ソフトウェア・コンポーネントを更新するための方法、コンピュータ・システムおよびメモリ装置 | |
CN106909362B (zh) | Bmc固件生成的方法和装置、bmc系统启动的方法和装置 | |
KR20140109401A (ko) | 장치의 초기화 동안 펌웨어의 백업 | |
CN105760191A (zh) | 嵌入式系统设备程序烧写量产方法 | |
US9672047B1 (en) | Systems and methods for accessing a bootable partition on a serial peripheral interface device | |
CN112015447B (zh) | 电子设备的系统更新方法及装置、电子设备及存储介质 | |
CN106598637B (zh) | 节点内的部件的选择性加载方法 | |
CN102053848A (zh) | Linux操作系统的自动安装方法 | |
US8726258B2 (en) | Supporting multiple hardware components in UEFI | |
CN114756290A (zh) | 一种操作系统安装方法、设备及可读存储介质 | |
TWI464583B (zh) | 取得觸發功能之指令的方法 | |
US20130097412A1 (en) | Performing A Boot Sequence In A Multi-Processor System | |
KR101968272B1 (ko) | 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 | |
CN117130672A (zh) | 服务器启动流程控制方法、系统、终端及存储介质 | |
CN110825421A (zh) | 一种固件升级方法、系统及可读存储介质 | |
CN116360828A (zh) | 程序升级方法、装置、设备及计算机可读存储介质 | |
CN113377425B (zh) | Bmc固件生成方法和装置、bmc启动方法和装置及存储介质 | |
US11354109B1 (en) | Firmware updates using updated firmware files in a dedicated firmware volume | |
WO2008048581A1 (en) | A processing device operation initialization system | |
CN104636574A (zh) | 终端设备升级方法及终端设备 | |
CN113791874A (zh) | 虚拟机引导的配置方法、装置、计算机设备和存储介质 | |
CN115617489B (zh) | 操作系统迁移方法、迁移应用及迁移应用部署方法 | |
WO2023184309A1 (en) | Apparatus, device, method, and computer program for a computer system | |
CN111176735B (zh) | 一种心电图机启动加速方法 | |
CN118092989A (zh) | 一种存储器的固件升级方法、系统、设备及介质 |
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 |