CN115113905A - 固件升级方法和固件升级装置 - Google Patents

固件升级方法和固件升级装置 Download PDF

Info

Publication number
CN115113905A
CN115113905A CN202211037919.9A CN202211037919A CN115113905A CN 115113905 A CN115113905 A CN 115113905A CN 202211037919 A CN202211037919 A CN 202211037919A CN 115113905 A CN115113905 A CN 115113905A
Authority
CN
China
Prior art keywords
firmware
upgrade
upgrading
command
layer
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
Application number
CN202211037919.9A
Other languages
English (en)
Inventor
马少阳
罗建洪
权大国
熊方舟
张精义
张钰勃
杨上山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202211037919.9A priority Critical patent/CN115113905A/zh
Publication of CN115113905A publication Critical patent/CN115113905A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种固件升级方法和固件升级装置,涉及数据通信技术领域。所述固件升级方法包括:在根据第一升级命令执行的固件升级失败的情况下,根据下层发送的上报消息确定系统中能够正常运行的最高层级;向下层中的所述最高层级以下的一个层级发送与所述一个层级对应的第二升级命令。由此,能够根据固件升级失败后设备所处的异常场景采用对应的异常处理策略恢复固件或继续升级,从而减少在采用相同方式再次升级时可能出现的升级失败的情况,也能够在升级失败导致设备死机时,提供恢复固件或继续升级的手段。

Description

固件升级方法和固件升级装置
技术领域
本发明涉及数据通信技术领域,尤其涉及一种固件升级方法和固件升级装置。
背景技术
硬件设备中通常包括固件(firmware),固件一般决定了硬件设备的功能及性能。通常通过升级或更新固件的方式对设备的功能或性能进行升级或更新。
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
发明内容
发明人发现,如果固件升级失败后设备能够继续升级,现有技术通常采用与前次升级同样的方式再次升级;如果固件升级失败后设备死机或卡死,也就是俗称的设备“变砖”,现有技术对该情况下的设备失去了继续升级的手段,通常只能将设备的可擦可编程只读存储器(EPROM)或闪存(flash)从电路板上拆下后重新烧写数据。但是,一方面,采用同样的方式再次升级有可能会再次失败或者导致设备“变砖”,即采用相同方式再次升级出现升级失败的概率较大。而将EPROM 或flash从电路板上拆下后重新烧写数据存在维修周期过长、客户体验不佳、维修成本较高等问题;此外,如果在批量生产过程中出现升级失败后设备“变砖”的情况,将导致生产周期加长,成本上升的问题。
本发明实施例提供一种固件升级方法和固件升级装置,能够根据固件升级失败后设备所处的异常场景采用对应的异常处理策略恢复固件或继续升级,从而减少在采用相同方式再次升级时可能出现的升级失败的情况。
根据本发明的一个实施例,提供一种固件升级方法,所述方法包括:
在根据第一升级命令执行的固件升级失败的情况下,根据下层发送的上报消息确定系统中能够正常运行的最高层级;
向所述下层中的所述最高层级以下的一个层级发送与所述一个层级对应的第二升级命令。
根据本发明的一个实施例,提供一种固件升级方法,所述方法包括:
在根据接收到的第一升级命令执行的固件升级失败的情况下,发送上报消息;
检测上层下发的第二升级命令对应的层级;
按照检测出的所述层级执行所述第二升级命令。
根据本发明的一个实施例,提供一种固件升级装置,所述固件升级装置包括:
确定单元,其在根据第一升级命令执行的固件升级失败的情况下,根据下层发送的上报消息确定系统中能够正常运行的最高层级;以及
发送单元,其向所述下层中的所述最高层级以下的一个层级发送与所述一个层级对应的第二升级命令。
根据本发明的一个实施例,提供一种固件升级装置,所述固件升级装置包括:
发送单元,其在根据接收到的第一升级命令执行的固件升级失败的情况下,发送上报消息;
检测单元,其检测上层下发的第二升级命令对应的层级;以及
执行单元,其按照检测出的所述层级执行所述第二升级命令。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述方法
本发明实施例的有益效果之一在于,在前一次固件升级失败后确定系统中能够正常运行的最高层级,在能够正常运行的最高层级或该最高层级以下的层级采用对应的异常处理策略恢复固件或继续升级,从而减少在采用相同方式再次升级时可能出现的升级失败的情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明第一方面的实施例的固件升级方法的一个示意图。
图2是本发明第一方面的实施例的固件升级方法的另一个示意图。
图3是本发明第一方面的实施例的固件升级方法的又一个示意图。
图4是本发明第一方面的实施例的固件升级方法的一个流程图。
图5是本发明第一方面的实施例的固件升级方法的又一个示意图。
图6是本发明第一方面的实施例的固件升级方法的又一个示意图。
图7是本发明第二方面的实施例的固件升级方法的一个示意图。
图8是本发明第二方面的实施例的固件升级方法的另一个示意图。
图9是本发明第二方面的实施例的固件升级方法的又一个示意图。
图10是本发明第二方面的实施例的固件升级方法的又一个示意图。
图11是本发明第二方面的实施例的固件升级方法的又一个示意图。
图12是本发明第二方面的实施例的固件升级方法的一个流程图。
图13是本发明第三方面的实施例的固件升级装置的一个示意图。
图14是本发明第四方面的实施例的固件升级装置的一个示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
第一方面的实施例
本发明第一方面的实施例提供一种固件升级方法。图1是本发明第一方面的实施例的固件升级方法的一个示意图。
如图1所示,方法100可以包括:
步骤101:在根据第一升级命令执行的固件升级失败的情况下,根据下层发送的上报消息确定系统中能够正常运行的最高层级;
步骤103:向下层中的所述最高层级以下的一个层级发送与所述一个层级对应的第二升级命令。
由此,能够通过下层发送的上报消息确定下层中能够正常运行的最高层级,从而能够在该最高层级或该最高层级以下的一个层级继续进行固件升级。
在步骤101中,“系统”可以表示由硬件和软件构成的一个能够执行特定功能的整体,在本发明实施例中,“系统”可以指图形处理设备的系统、计算机系统或服务器系统,其中,图形处理设备例如为显卡、或者图形处理器卡等。本发明实施例中,为了方便说明,有时也用“设备”指代“系统”,本领域技术人员应知晓“系统”或者“设备”在本领域的普通含义。
此外,在步骤103中还可以包括控制输出装置输出提示用户可以再次进行固件升级的信息,输出装置例如可以是显示器,也可以是扬声器,例如可以控制显示器显示“可以再次升级,请确认是否再次升级”的信息,也可以控制扬声器播放“可以再次升级,请确认是否再次升级”的声音,本发明实施例对此不作限制,可以根据实际情况选择合适的输出装置。
此外,步骤103中使用了“第二升级命令”描述向下层发送的命令,但本发明实施例对“第二升级命令”是否为继续升级固件的命令不作限制,也就是说,下层在接收到第二升级命令时,可以选择继续升级固件,也可以选择仅恢复固件,例如,可以将固件恢复到最近可用的版本,也可以选择恢复固件并继续升级固件。本发明实施例对此不作限制,可以根据实际需要或用户选择进行设定,具体可以参考相关技术。
在至少一个实施例中,方法100还可以包括在检测到用户选择了再次进行固件升级的信息后,向下层中的上述最高层级以下的一个层级发送与该层级对应的第二升级命令。
此外,步骤103中的“最高层级以下的一个层级”包括最高层级本身,下面类似的描述以此类推。
本发明实施例的固件升级方法例如可以用于升级图像处理器(GraphicsProcessing Unit,GPU)的固件。例如,本发明实施例的固件升级方法可以用于嵌入式系统内的固件的升级,可以将嵌入式系统从下层到上层划分为硬件层、驱动层、操作系统层、应用层。步骤101中的“系统”例如为嵌入式系统,也可以为其他的操作系统,本发明实施例对此不做限定;步骤101中的“下层”例如可以是应用层以下的操作系统层、硬件层、驱动层等。此外,也可以按照启动的时间上的先后顺序区分上层和下层,先启动的层相对于后启动的层被称为“下层”,与之相对的,后启动的层相对于先启动的层被称为“上层”。
方法100可以是运行在应用层上的应用程序,例如,方法100可以是提供给用户的升级工具应用程序。但本发明实施例不限于此,方法100也可以是运行在驱动层上的驱动程序等。
下面为了方便说明,以方法100运行在应用层为例进行说明,但本领域技术人员应知晓,本发明并不以此为限制。
例如,在步骤101中,用户在利用升级工具应用程序对GPU的固件进行升级时,如果在第一次升级失败的情况下,升级工具应用程序能够根据硬件层、驱动层、操作系统层等各层级上报的消息判断系统中能够运行的最高层级。例如,在确定出能够运行的最高层级为操作系统层的情况下,例如为实时操作系统(real time operation system,简称“rtos”)层,在步骤103中,可以向rtos层以下的一个层级发送再一次升级的命令,即,可以发送与rtos层对应的第二升级命令,以在rtos层进行再次升级或者恢复,也可以向相对于rtos层靠下的某一个层级发送对应的第二升级命令,例如,向引导加载程序(BootLoader)层发送第二升级命令,以在BootLoader层进行再次升级或者恢复。
以下,为了方便描述,有时以rtos层为例对与操作系统层的相关方法或操作进行说明,但本发明实施例对此不作限制,一方面,本发明实施例的操作系统还可以是其他操作系统,例如,分时操作系统、批处理操作系统、网络操作系统、分布式操作系统等;另一方面,本发明实施例的操作系统层可以是操作系统所在的层,也可以是其他与操作系统的功能类似的程序指令集所在的层,具体可以参考相关技术。
在至少一个实施例中,步骤101中的上报消息可以是第一上报消息,方法100还可以包括:在根据第一升级命令执行的固件升级失败的情况下接收下层发送的第一上报消息。
图2是本发明第一方面的实施例的固件升级方法的另一个示意图。
在至少一个实施例中,上报消息可以是第二上报消息,如图2所示,方法200可以包括:
步骤201:在根据第一升级命令执行的固件升级失败,且没有接收到下层发送的上报消息的情况下,向下层发送诊断命令;
步骤203:接收下层发送的应答所述诊断命令的第二上报消息。
由此,可以通过诊断命令诊断当前系统所处的异常场景。
例如,在第一次升级失败后硬件层、驱动层、操作系统层等没有正常上报第一上报消息的情况下,应用层并不能判断当前的设备或系统中能够正常运行的最高层级是哪一层,那么可以通过向下层发送诊断命令,通过接收下层响应该诊断命令的消息判断正常运行的最高层级。
此外,在步骤201中,还可以包括控制输出装置输出提示用户可以下发诊断命令进行诊断的信息,例如可以控制显示器显示“请下发诊断命令”等信息,也可以控制扬声器播放“请下发诊断命令”的声音;在检测到用户选择了下发诊断命令的信息后,向下层发送诊断命令。
图3是本发明第一方面的实施例的固件升级方法的又一个示意图。
在至少一个实施例中,如图3所示,方法300可以包括:
步骤301:在根据第一升级命令执行的固件升级失败,没有接收到下层发送的上报消息且不能下发所述诊断命令的情况下,控制输出装置输出提示用户重新启动所述系统的信息。
由此,在前一次升级失败而导致设备或系统卡死或者应用程序卡死而不能继续下发指令或消息时,向用户提示相应的消息,能够指导用户按照指定操作完成异常处理操作,提升用户体验。
在至少一个实施例中,上报消息可以是第三上报消息,方法300还可以包括:
步骤303:接收在重新启动所述系统时下层发送的所述第三上报消息。
在至少一个实施例中,在确定出能够正常运行的最高层级为操作系统层的情况下,向操作系统层以下的一个层级发送所述第二升级命令,所述操作系统层为能够执行任务调度和文件读写功能的程序指令集合。例如最高层级为rtos的情况下,可以向rtos发送所述第二升级命令。由此,能够在rtos层继续进行固件升级;也可以向比rtos更低的层发送第二升级命令,例如,向引导加载程序(BootLoader)层发送第二升级命令。
此外,操作系统层还可以是自定义的程序指令集合,例如,自定义一个能够完成任务调度、文件读写等功能的程序指令集合来替代操作系统执行固件升级,该自定义的程序指令集合可以与操作系统并行运行,也可以替代操作系统的全部或部分功能而运行。在确定出能够正常运行的最高层级为该自定义的程序指令集合的情况下,可以向该自定义的程序指令集合发送第二升级命令,也可以向比该自定义的程序指令集合更低的层发送第二升级命令,例如,向BootLoader层发送第二升级命令。
在至少一个实施例中,在确定出能够正常运行的最高层级为引导程序层的情况下,向引导程序层以下的一个层级发送所述第二升级命令,所述引导程序层为能够初始化硬件和建立内存空间映射的引导加载程序的集合。由此,能够在引导程序层继续进行固件升级。
在至少一个实施例中,在所述引导程序层具有多个层级的情况下,确定能够加载的引导程序层的最高层级,向所述引导程序层的最高层级以下的一个层级发送所述第二升级命令。例如,在BootLoader具有多个层级的情况下,确定能够加载的BootLoader的最高层级,可以向最高层级的BootLoader发送所述第二升级命令,也可以向相对于最高层级的BootLoader来说位于下层的BootLoader发送第二升级命令。
在至少一个实施例中,在确定不能正常进入引导程序层的情况下,发送表示就地执行(executed in place,XIP)升级命令的第二升级命令。由此,能够通过XIP模式逃生,从而可以继续进行固件升级。
此外,还可以在确定不能正常进入BootLoader的情况下,控制输出装置输出提示用户激活XIP模式的信息,例如,控制显示器显示“请激活XIP模式”的信息;在检测到用户选择了激活XIP模式的情况下,发送第二升级命令。此外,可以通过软件方式激活XIP模式,也可以通过硬件方式激活XIP模式,具体可以参考相关技术,本发明实施例对此不作限制。
图4是本发明第一方面的实施例的固件升级方法的一个流程图。
下面以图4所示的流程图为例对本发明实施例的固件升级方法进行说明,但本发明实施例不限于此,本领域技术人员应知晓,固件升级方法的流程可以不需要按照图4所示的顺序执行,图4所示的各操作的顺序可以按照实际需要进行调整,固件升级方法的流程也可以不包括图4所示的全部操作,也可以包括图4没有示出的其他操作,具体包括哪些操作可以根据实际需要进行设定,本发明实施例对此不作限制。
在至少一个实施例中,如图4所示,流程400可以包括:
操作401:下发第一升级命令,例如,下发进行第一次固件升级的命令;
操作402,判断升级是否成功,“是”的情况下结束该流程,“否”的情况下进入操作403;
操作403:判断是否接收到下层发送的第一上报消息,该第一上报消息可以是表示升级失败的报告消息,也可以是返回错误参数的返回消息,也可以是返回错误原因的返回消息等,本发明实施例对第一上报消息的消息类型和消息内容不作限制;“是”的情况下进入操作407,“否”的情况下进入操作404;
操作404:判断是否能够下发诊断命令,该诊断命令可以用来诊断系统当前处于哪种异常场景,“是”的情况下进入操作405,“否”的情况下进入操作407;
操作405:下发诊断命令;
操作406:判断是否接收到响应诊断命令的第二上报消息,该第二上报消息可以是表示当前层能够正常工作的响应消息,也可以是表示下层不能正常工作的响应消息等,本发明实施例对第二上报消息的消息类型和消息内容不作限制;“是”的情况下进入操作409,“否”的情况下返回操作404;
操作407:提示用户重启系统,即,控制输出设备输出提示用户重新启动系统的信息,例如,控制显示器显示“请重启GPU卡”、或者控制显示器显示“请拔下GPU卡后重新插上GPU卡”、或者控制显示器显示“请对GPU卡完成上下电操作”等信息,以提示用户完成GPU卡重启操作;或者,也可以代替操作407,而执行下发重启命令控制高速串行计算机扩展总线标准(peripheral component interconnect express,简称 “pcie”)总线以重启GPU卡的操作。
操作408:判断是否接收到第三上报消息,该第三上报消息可以是系统重启时向上层发送的报告消息,在“是”的情况下进入操作409,在“否”的情况下返回操作407;
操作409:确定最高层级,即,通过第一上报消息或第二上报消息或第三上报消息确定系统能够正常运行的最高层级,例如,rtos层、驱动层、硬件层等;
操作410:根据在操作407中确定出的最高层级下发对应的第二升级命令,例如,向下层中的所述最高层级以下的一个层级下发在对应的层级进行第二次固件升级的命令,进而结束流程。
由此,能够在前一次执行固件升级失败的情况下,根据系统的当前状态恢复固件或再次升级,从而减少在按照与前次相同的升级方式升级时可能出现的升级失败的情况。
在至少一个实施例中,操作401中的第一升级命令与操作410中的第二升级命令是在不同的时间发送的命令,例如,第一升级命令在时间顺序中比第二升级命令靠前。也就是说,第一升级命令可以是第一次固件升级的命令,第二升级命令可以是在第一次固件升级失败后发送的第二次固件升级的命令。但本发明实施例不限于此,第一升级命令也可以是某一次固件升级的命令,第二升级命令是在第一升级命令升级失败后发送的升级命令,例如,在一次固件升级失败后,通过下层的上报消息检测出系统能够运行的最高层级是操作系统层,例如rtos层时,向rtos发送第一升级命令,在rtos层根据第一升级命令升级失败的情况下,再次通过下层的上报消息检测出系统能够运行的最高层级,例如,当前的最高层级是BootLoader层,向BootLoader层发送第二升级命令;此外,也可以是在一次固件升级失败后,通过下层的上报消息检测出系统能够运行的最高层级是操作系统层,例如rtos层时,向比rtos层靠下的下层发送第一升级命令,例如,向BootLoader层发送第一升级命令,在BootLoader层根据第一升级命令升级失败的情况下,再次通过下层的上报消息检测出系统能够运行的最高层级,例如当前的最高层级是BootLoader层,向BootLoader层发送第二升级命令。
在至少一个实施例中,在固件升级的过程中,可以循环上述流程400。例如,在第一次固件升级失败的情况下,检测当前系统的最高层级,如果检测出的最高层级是rtos层的情况下,向rtos层或rtos层的下层发送第二升级命令;如果检测出的最高层级是BootLoader的情况下,向BootLoader发送第二升级命令;如果检测出不能进入BootLoader的情况下,提示用户开启XIP模式,并在开启了XIP模式的情况下,发送通过XIP升级的第二升级命令;然后在相应层级根据第二升级命令恢复固件或继续升级;但是当继续升级再次失败的情况下,可以回到操作402,即,再次根据上报消息判断当前系统能够正常运行的最高层级,继续执行固件升级操作,例如,可以一直循环操作,也可以在循环了预定次数后仍然不能成功升级的情况下,控制输出设备显示提示用户升级失败的信息,例如,显示提示用户不能继续升级的信息,或者还可以显示提示用户前往指定修理地点进行维修的信息等。本发明实施例对此不作限制,可以根据用户需要或实际情况进行设定。
此外,在操作402中,在判断升级成功的情况下,还可以下发重启命令,以使系统重新启动,在重新启动的过程中,利用升级后的固件启动系统。
此外,在操作404中,异常场景例如可以是MGBL场景、ZSBL场景或者XIP场景,MGBL场景例如为系统仅能够成功加载到第二级BootLoader的场景,ZSBL场景例如为系统仅能够成功加载到第一级BootLoader的场景,XIP场景例如为系统不能进入BootLoader,用户选择进入了XIP模式的场景。但本发明实施例不限于此,还可以根据系统中的其他层级设置对应的其他场景。
图5是本发明第一方面的实施例的固件升级方法的又一个示意图。
在至少一个实施例中,如图5所示,方法500可以包括:
步骤501:控制输出装置输出升级过程中的信息,例如,可以控制显示器或扬声器输出升级进度信息、异常信息等,本发明实施例对输出装置输出的具体信息不作限定,可以根据实际情况设定。
此外,方法500还可以包括以下步骤:下发询问当前的升级进度的消息,接收与该消息对应的升级进度的信息;或者还可以包括接收下层主动返回的处理升级包的当前进度信息,由此,用户能够获知整个升级过程的进度,提升用户体验。
在至少一个实施例中,如图5所示,方法500还可以包括:
步骤503:当检测到在升级过程中出现业务拥塞时,控制输出装置对显示的图像数据进行平滑处理。例如,当热升级或者升级过程中出现短暂业务拥塞等情况导致显示画面不连续时,可以向显示器下发针对显示画面进行平滑处理的控制信号,显示器根据该控制信号对显示画面进行平滑处理,以减少出现突兀闪烁等显示异常;也可以从当前程序以软件形式切换到CPU进行图形计算以进行平滑处理。此外,本发明实施例对平滑处理的具体方法不作限定,可以参考相关技术。
此外,还可以使用以下步骤替换步骤503,例如,在检测到在所述升级过程中出现业务拥塞等情况时,向驱动层发送平滑处理命令,通过驱动层执行显示画面的平滑处理操作,具体操作本发明实施例不作限制,可以参考相关技术。
图6是本发明第一方面的实施例的固件升级方法的又一个示意图。
在至少一个实施例中,如图6所示,方法600可以包括:
步骤601:校验升级包的合法性和/或完整性;和/或
步骤605:检测所述升级包是否与产品配套表匹配;和/或
步骤607:检查所述系统的硬件是否支持所述升级包;
步骤609:备份当前固件;
步骤611:下发所述第一升级命令;和/或
步骤613:下发所述升级包或者所述升级包对应的全局内存地址信息。
由此,在进行固件升级之前,对升级包进行检验确保升级包匹配当前产品或系统。此外,在固件升级之前备份当前固件,如果升级失败,可以确保存储有能够安全回滚的可用固件。
在步骤601中,校验升级包的合法性例如,可以校验升级包内是否包含病毒程序等、升级包是否可被识别等,校验升级包的完整性例如,可以校验升级包内的固件是否完整,升级包是否包含了对应的产品识别信息和/或硬件信息等。
在步骤605中,在包含一系列产品的情况下,可以预先存储产品配套表或者联网查询产品配套表,可以在对固件升级时,检测升级包是否符合产品配套表设计准则。此外,在步骤605中,还可以包括备份当前产品配套表,以便于在安全回滚时同时回滚产品配套表。
在步骤607中,在产品迭代次数较多时,硬件的配置可能会发生变化,在进行升级之前,进行硬件支持的检查,能够避免由于硬件不支持导致升级失败。
在步骤601至步骤607中的任意一个步骤中,如果出现检验不通过的情况下,还可以上报对应的错误信息。
此外,本领域技术人员能够知晓,在进行固件升级之前,步骤601至步骤607可以不都包含,即,可以根据实际需要进行选择,本发明实施例对此不作限制。
此外,在步骤611和步骤613中,可以在接收到第二升级命令后直接接收升级包;也可以在接收到第二升级命令后,接收升级包的全局内存地址信息,根据该全局内存地址查找升级包存储的位置,然后获取升级包;还可以是第二升级命令中已经携带了升级包数据或者携带了升级包的全局内存地址信息,在接收到第二升级命令的情况下,同时接收了升级包数据或同时接收了升级包的全域内存地址信息。
在至少一个实施例中,如图6所示,方法600还可以包括:
步骤615:在根据所述第一升级命令或所述第二升级命令执行的固件升级失败的情况下,控制输出提示用户选择回滚命令的信息。其中,回滚命令表示将固件恢复到执行所述第一升级命令前的状态的命令或者将固件恢复到用户选择的状态的命令。
由此,在升级失败的情况下,可以通过安全回滚将固件恢复到最近的可用版本,也可以根据用户需要恢复到其他版本。
在步骤615中,可以控制输出设备显示提示用户下发回滚命令的信息和/或显示提示用户选择希望回滚到固件的版本,在接收到用户选择了下发回滚命令的信息后,可以下发回滚命令,在接收到用户选择了一个固件的版本的情况下,下发根据选择出的固件版本进行回滚的回滚命令。由此,可以将安全回滚设置为升级失败情况下的固定策略,也可以将安全回滚设置为用户可选择的策略,从而提升用户体验。
此外,本发明实施例的回滚命令是指示下层执行安全回滚操作的命令,安全回滚操作例如可以是将进行升级前预先备份的固件或者提前存储在安全区域的稳定版本的固件恢复到升级失败的区域(下面有时简称为“失败区”),也可以将预先备份的产品配套表或者提前存储在安全区域的产品配套表恢复到失败区,重新启动系统,在重新启动时,选择恢复后的失败区作为启动区域,从而利用恢复的固件启动系统,从而实现安全回滚。安全回滚操作还可以是其他的回滚操作,具体可以参考相关技术,本发明实施例对此不作限制。
在至少一个实施例中,如图6所示,方法600还可以包括:
步骤603:根据所述升级包检查执行固件升级所需的升级环境,控制输出提示用户准备所述升级环境的信息。
例如,在步骤603中可以检查是否需要在升级完成后冷启动设备,在需要冷启动的情况下,在步骤603中控制输出设备输出提示用户需要升级完成后冷启动设备的信息,例如,控制显示器显示“请在升级完成后上下电重新启动设备”。但本发明实施例不限于此,例如,在步骤603中还可以检查升级过程中是否需要关闭某些应用程序,例如是否需要关闭杀毒软件等,在需要关闭某些应用程序的情况下,控制输出设备显示提示用户关闭对应的应用程序的信息;或者,在步骤603中,也可以根据升级包检查是否包含升级建议,在包含升级建议的情况下,还可以控制输出设备显示对应的升级建议的信息。
根据第一方面的实施例,在前一次固件升级失败后确定系统中能够正常运行的最高层级,在能够正常运行的最高层级或该最高层级以下的层级采用对应的异常处理策略恢复固件或继续升级,从而减少在采用相同方式再次升级时可能出现的升级失败的情况。此外,还可以在升级失败导致设备死机的情况下,提供恢复固件或继续升级的手段,通过多种软操作的方式恢复设备,尽量避免重新烧写flash的情况出现,从而在客户侧能够提升客户体验,在生产侧降低生产成本。
第二方面的实施例
本发明第二方面的实施例提供一种固件升级方法。该固件升级方法可应用于图形处理器侧,例如,该固件升级方法可用于安装有GPU的卡件。
图7是本发明第二方面的实施例的固件升级方法的一个示意图。
如图7所示,方法700可以包括:
步骤701:在根据接收到的第一升级命令执行的固件升级失败的情况下,发送上报消息;
步骤705:检测上层下发的第二升级命令对应的层级;
步骤707:按照检测出的所述层级执行所述第二升级命令。
由此,在前次固件升级失败的情况下,通过在系统能够正常运行的层级恢复固件或再次进行固件升级,能够减少在采用相同方式再次升级时可能出现的升级失败的情况。
在至少一个实施例中,如图7所示,方法700可以还包括:
步骤703:接收第二升级命令。
在至少一个实施例中,上报消息可以是第一上报消息,在步骤701中,在根据接收到的第一升级命令执行的固件升级失败时可以发送所述第一上报消息,在步骤703中,接收上层下发的与所述第一上报消息对应的第二升级命令。
在至少一个实施例中,上报消息可以是第二上报消息,如图7所示,方法700可以还包括:
步骤709:接收上层下发的诊断命令;
在步骤701中,在根据接收到的第一升级命令执行的固件升级失败,且接收到上层下发的诊断命令的情况下,发送响应所述诊断命令的第二上报消息,在步骤703中,接收上层下发的与所述第二上报消息对应的第二升级命令。其中,该第二上报消息可以是响应诊断命令的回复消息,例如,可以是表示当前层能够正常工作的响应消息,也可以是表示下层不能正常工作的响应消息等。
在至少一个实施例中,上报消息可以是第三上报消息,如图7所示,方法700还可以包括:
步骤711:在检测到上电重新启动系统的情况下,发送第三上报消息。
例如,当固件升级失败导致系统卡死或者宕机,用户可以通过上电重启的方式重新启动系统,在重新启动系统时,当前层可以向上层发送上报消息表示当前层运行正常,由此,上层可以通过层层上报的上报消息确定能够正常运行的最高层级。
图8是本发明第二方面的实施例的固件升级方法的另一个示意图。
在至少一个实施例中,如图8所示,方法800可以包括:
步骤801:在检测出的所述层级为操作系统层的情况下,根据所述第二升级命令从有效区获得固件,其中,所述操作系统层为能够执行任务调度和文件读写功能的程序指令集合;
步骤803:将获得的所述固件恢复到非有效区。
由此,能够在操作系统层将固件恢复到稳定版本或有效版本。
在发明实施例中,将当前运行操作系统的分区称为“有效区”,将其他没有运行操作系统的分区称为“非有效区”。
此外,如图8所示,方法800还可以包括:
步骤805:根据获取到的升级包升级非有效区的固件。
步骤805可以代替步骤801和步骤803,也就是说,在能够运行操作系统层的情况下,可以直接将升级包内的固件写入非有效区,之后重新启动操作系统层时,引导从写入固件后的非有效区启动操作系统层,即,利用升级包内的固件启动操作系统层,由此,能够在操作系统层继续执行固件升级。
在步骤801中,例如,如果在前一次固件升级失败时,操作系统例如rtos还能正常运行,那么说明至少有效区内的固件是正常的,用户可以通过升级工具向rtos发送继续升级的命令,利用升级包内的固件对非有效区进行升级。但本发明实施例不限于此,如果在前一次固件升级失败时,操作系统层能正常运行,可以不向操作系统层发送继续升级的命令,而将利用有效区的固件自动恢复非有效区的固件,从而完成固件恢复的操作。在完成固件恢复的操作后可以等待用户的后续指令,也可以结束进程。
在步骤803中,操作系统例如rtos也可以将前一次固件升级时预先备份的固件恢复到备区,也可以将预先备份的能够稳定运行的某一版本的固件恢复到备区,本发明实施例对此不作限制。
图9是本发明第二方面的实施例的固件升级方法的又一个示意图。
在至少一个实施例中,如图9所示,方法900可以包括:
步骤901:在检测到上电重新启动系统时,检测是否能够从主区启动操作系统层;
步骤903:在不能从所述主区启动操作系统层的情况下,使用备区的固件替代主区的固件启动操作系统;
步骤905:在利用所述备区的固件成功重启操作系统层的情况下,获得所述备区的固件;
步骤907:将获得的所述固件恢复到所述主区;
由此,能够尝试在操作系统层将固件恢复到稳定版本或有效版本。
此外,如图9所示,方法900还可以包括:
步骤909:在利用所述备区的固件成功重启操作系统层的情况下,根据获取到的升级包升级所述主区的固件。
步骤909可以代替步骤905和步骤907,也就是说,在利用备区的固件能够重启操作系统层的情况下,可以直接将升级包内的固件写入主区以覆盖主区内被破坏的固件,之后重新启动操作系统层时,引导从写入固件后的主区启动操作系统层,即,利用升级包内的固件启动操作系统层,由此,能够尝试在操作系统层继续升级固件,例如,能够尝试在rtos层继续升级固件。换言之,本发明实施例可以实现以下技术效果,当前一次固件升级失败了,可以在操作系统层尝试两次固件恢复或者尝试两次固件继续升级,第一次是在操作系统层能够正常运行时,从有效区获取固件恢复非有效区的固件或者升级非有效区的固件,第二次是在操作系统层卡死,系统上电重启的过程中,尝试利用备区的固件启动操作系统层,继而恢复主区被破坏的固件或者升级主区的固件,因此,本发明实施例能够根据设备所处的实际场景执行相应的策略恢复固件或继续执行固件升级,从而减少在采用与前次相同的升级方式升级时可能出现的升级失败的情况,也能够在升级失败导致设备死机的情况下,提供恢复固件或继续升级的手段。
在步骤901中,在上电重启过程中,一般默认从主区启动系统,如果能从主区启动系统,那么在步骤901后也可以回到方法800的步骤801中继续执行。
在步骤903中,在使用备区的固件再次启动系统时,可以预先检查备区的固件的完整性,如果备区的固件具备完整性,那么可以交换主区和备区,从而尝试从备区启动系统;而如果备区的固件不完整,那么可以上报错误消息,提示用户尝试从操作系统继续升级的方案失败。
在步骤905中,在成功重启操作系统的情况下,之前的备区成为了主区,之前的主区成为了备区,然后继续在当前备区执行固件升级。
在本发明实施例中,“启动或重启操作系统层”可以表示“启动或重启操作系统”,也可以表示“启动或重启具有操作系统的至少一部分功能的程序指令集合”,也就是说,在操作系统层是自定义的一个能够执行任务调度和文件读写功能的程序指令集合的情况下,“启动或重启操作系统层”表示“启动或重启能够执行任务调度和文件读写功能的程序指令集合”。
在至少一个实施例中,如图9所示,方法900还可以包括:
步骤911:在利用所述备区的固件成功重启操作系统层后,接收第二升级命令,获取升级包。
在本发明实施例中,可以在接收到所述第二升级命令的情况下,根据获取到的升级包升级所述主区的固件,获取升级包的方式例如是,可以在接收到第二升级命令后直接接收升级包;可以在接收到第二升级命令后,接收升级包的全局内存地址,根据该地址查找升级包存储的位置,然后获取升级包;还可以是第二升级命令中携带了升级包数据或者携带了升级包的全局内存地址信息,在接收到第二升级命令的情况下,同时接收了升级包数据或同时接收了升级包的全域内存地址信息。
此外,可以在步骤907之后,向上层发送请求消息,请求是否继续升级,例如,上层在接收到该请求消息后,显示提示用户是否继续升级的信息;在上层检测到用户选择了继续升级的信息后,下发指示继续升级的第二升级命令。但本发明实施例对此不作限制,也可以不需要步骤911,即,在通过备区的固件对主区进行恢复后,可以自动执行继续升级的步骤而不需要上层参与。
图10是本发明第二方面的实施例的固件升级方法的又一个示意图。
在至少一个实施例中,如图10所示,方法1000可以包括:
步骤1001:在检测出的层级为引导程序层的情况下,在上电重新启动所述系统时根据引导程序层的引导程序初始化对应的硬件,其中,所述引导程序层为能够初始化硬件、建立内存空间映射的引导加载程序的集合;
步骤1003:根据所述第二升级命令执行固件升级。
由此,能够在引导程序层继续执行固件升级或者固件恢复。
在步骤1001中,可以在上电重启时,通过BootLoader自动进入等待升级的状态,在接收到继续升级的命令后执行步骤1003。此外,还可以在初始化硬件的同时主动上报异常事件。此外,还可以用以下步骤替换步骤1001:在检测到上电重启系统时,提示用户选择是否直接从BootLoader层升级,在检测到用户选择了从BootLoader层升级的情况下,在加载BootLoader时,跳到等待升级的状态。
在至少一个实施例中,例如,在引导程序层具有多个层级的情况下,在步骤1001中,在上电重新启动所述系统时根据能够加载的最高层级以下的一个层级的引导程序初始化所述硬件;然后在步骤1003中根据所述第二升级命令执行固件升级。
例如,在具有两级BootLoader的情况下,在上电重启时,如果能进入第二级BootLoader,那么可以根据第二级BootLoader初始化对应的硬件,可以将该场景记作MGBL场景,也可以根据第一级BootLoader初始化对应的硬件,可以将该场景记作ZSBL场景;如果只能进入第一级BootLoader,那么可以进入ZSBL场景,即,根据第一级BootLoader初始化对应的硬件,也可以请求激活XIP模式。
但本发明实施例不限于此,在具有三级以上BootLoader的情况下,在上电重启时,根据能进入的最高层级的BootLoader初始化对应的硬件,可以在最高层级的BootLoader处继续进行固件升级或固件恢复,也可以在最高层级以下的一个层级继续进行固件升级或固件恢复。
图11是本发明第二方面的实施例的固件升级方法的又一个示意图。
在至少一个实施例中,如图11所示,方法1100还包括:
步骤1101:在不能正常进入引导程序层的情况下,发送请求激活XIP模式的请求消息;
步骤1103:在检测到激活XIP模式的情况下,初始化对应的硬件;
步骤1105:根据所述第二升级命令执行固件升级。
由此,可以通过XIP模式执行逃生方案,降低重新烧写flash的概率。
在步骤1101中,还可以发送驱动异常的上报消息。
在步骤1103中,可以在接收到报告成功激活XIP模式的消息时确定激活了XIP模式,也可以在检测到电路中特定点位的电位上升的情况下确定激活了XIP模式。可以根据实际情况设定相应的检测方法,本发明实施例对此不作限制。
在至少一个实施例中,在步骤1003或步骤1105中,可以根据接收到的升级包执行固件升级。
此外,在根据接收到的升级包执行固件升级前,还可以包括对升级包的完整性进行检查,防止在传输升级包的过程中出现数据丢失而导致升级包不完整,造成升级失败的情况发生。
在至少一个实施例中,如图7所示,方法700还可以包括:
步骤713:接收回滚命令;
步骤715:根据回滚命令利用在根据第一升级命令升级前备份的固件执行安全回滚或者根据用户选择的固件执行回滚操作。
由此,可以在固件升级失败的情况下,通过安全回滚将固件恢复到最近的可用版本或者用户指定的版本,避免设备不能正常工作。
此外,在步骤715中,还可以根据回滚命令回滚预先备份的产品配套表。
图12是本发明第二方面的实施例的固件升级方法的一个流程图。
下面以图12为例对本发明第二方面的实施例的固件升级方法进行说明。但本发明实施例不限于此,本领域技术人员知晓,固件升级方法的流程可以不需要按照图12所示的顺序执行,图12所示的各操作的顺序可以按照实际需要进行调整,固件升级方法的流程也可以不包括图12所示的全部操作,也可以包括图12没有示出的其他操作,具体包括哪些操作可以根据实际需要进行设定,本发明实施例对此不作限制。
在至少一个实施例中,如图12所示,流程1200可以包括:
操作1201:接收第一升级命令,该第一升级命令可以是在本次升级时第一次接收到的升级命令,也可以是在升级过程中的与前一次升级对应的升级命令;
操作1202:判断根据第一升级命令执行固件升级是否成功,“是”的情况下可以结束流程,也可以上报请求重新启动系统的消息,以通过上层下发的重启命令根据升级后的固件启动系统,“否”的情况下进入操作1203;
操作1203:发送第一上报消息,第一上报消息可以是表示升级失败的报告消息,也可以是返回错误参数的返回消息,也可以是返回错误原因的返回消息等,本发明实施例对第一上报消息的消息类型和消息内容不作限制;
操作1204:检测是否上电重新启动系统,例如,如果在前一次升级失败导致系统死机或者识别不到GPU卡件,用户可能会对系统上电重启,或者插拔GPU卡件重启系统,可以通过电路中的特定点的电位的变化确定是否上电重新启动启动。“是”的情况下进入操作1205,“否”的情况下进入操作1206;
操作1205:发送第三上报消息,该第三上报消息可以是系统重启时向上层发送的报告消息;
操作1206:判断是否接收到上层下发的命令,例如,可以通过特殊的命令格式定义各种命令,在检测到接收的消息具有预先定义的命令格式,可以判断为接收的消息是上层下发的命令,还可以通过其他方式判断是否接收到命令,具体可以参考相关技术,本发明实施例对此不作限制。“是”的情况下进入操作1207,“否”的情况下返回操作1204;
操作1207:判断接收到的命令是哪种类型的命令,例如,可以根据预先定义的命令格式读取命令类型所对应的字段的数据,根据读取的数据识别命令的类型,还可以通过其他方式判断命令的类型,具体可以参考相关技术,本发明实施例对此不作限制。在接收到“第二升级命令”的情况下进入操作1208,在接收到“诊断命令”的情况下进入操作1209,在接收到“回滚命令”的情况下进入操作1210;
操作1208:根据接收到的第二升级命令检测系统中能够正常运行的最高层级,在最高层级为“rtos”的情况下,进入操作1211,在最高层级为“bootloader”的情况下,进入操作1212,在最高层级为不能进入bootloader的情况下,进入XIP模式,即进入操作1213;
操作1209:发送第二上报消息,第二上报消息可以是表示当前层能够正常工作的响应消息,也可以是表示下层不能正常工作的响应消息等,本发明实施例对第二上报消息的消息类型和消息内容不作限制;
操作1210:执行回滚操作,本发明实施例对回滚操作不作限定,可以参考相关技术执行;
操作1211:执行在rtos层或其下层升级的操作,在rtos层升级或其下层的操作可以参考对方法800和方法900的说明,此处不再重复说明;
操作1212:执行在bootloader层或其下层升级的操作,在bootloader层或其下层升级的操作可以参考对方法1000的说明,此处不再重复说明;
操作1213:执行在XIP模式下升级的操作,在XIP模式下升级的操作可以参考对方法1100的说明,此处不再重复说明。
根据本发明第二方面的实施例,通过在系统的不同层级恢复固件或执行继续升级的操作,能够减少在采用相同方式再次升级时可能出现的升级失败的情况,也可以在升级失败导致设备死机的情况下,提供多种恢复固件或继续升级的手段。
第三方面的实施例
本发明第三方面的实施例提供一种固件升级装置,由于该装置解决问题的原理与第一方面的实施例的方法类似,因此其具体的实施可以参考第一方面的实施例的方法的实施,内容相同之处不再重复说明。
图13是本发明第三方面的实施例的固件升级装置的一个示意图。如图13所示,固件升级装置1300可以包括:确定单元1301、发送单元1302和接收单元1307,在根据第一升级命令执行的固件升级失败的情况下,确定单元1301根据下层发送的上报消息确定系统中能够正常运行的最高层级;发送单元1302向下层中的所述最高层级以下的一个层级发送与所述一个层级对应的第二升级命令,接收单元1307可以用于接收下层发送的上报消息。
在至少一个实施例中,在根据第一升级命令执行的固件升级失败,且接收单元1307没有接收到下层发送的上报消息的情况下,发送单元1302还可以向下层发送诊断命令;确定单元1301根据接收到的下层发送的应答所述诊断命令的第二上报消息确定所述系统中能够正常运行的最高层级。
在至少一个实施例中,如图13所示,固件升级装置1300还可以包括控制单元1303,在根据第一升级命令执行的固件升级失败,且发送单元1302不能下发所述诊断命令的情况下,控制单元1303可以控制输出设备输出提示用户重新启动所述系统的信息,输出设备例如是显示器或扬声器等。
在至少一个实施例中,确定单元1301还可以根据重新启动所述系统时接收到的下层发送的第三上报消息确定所述系统中能够正常运行的最高层级。
在至少一个实施例中,在确定出能够正常运行的最高层级为操作系统层(例如,rtos层)的情况下,发送单元1302向rtos层以下的一个层级发送所述第二升级命令;或者在确定出能够正常运行的最高层级为引导程序层(例如,BootLoader层)的情况下,发送单元1302向所述BootLoader层以下的一个层级发送所述第二升级命令。
在至少一个实施例中,在所述BootLoader具有多个层级的情况下,确定单元1301还确定能够加载的BootLoader的最高层级,发送单元1302向所述最高层级以下的一个层级的BootLoader发送所述第二升级命令。
在至少一个实施例中,在确定单元1301确定不能正常进入BootLoader的情况下,发送单元1302发送表示就地执行(XIP)升级命令的第二升级命令。
在至少一个实施例中,控制单元1303还可以控制输出升级过程中的信息。
在至少一个实施例中,如图13所示,固件升级装置1300还可以包括平滑单元1304,当检测到在所述升级过程中出现业务拥塞时,平滑单元1304可以控制输出装置对显示的图像数据进行平滑处理。
在至少一个实施例中,如图13所示,固件升级装置1300还可以包括升级准备单元1305,升级准备单元1305校验升级包的合法性和/或完整性,和/或检测所述升级包是否与产品配套表匹配,和/或检查所述系统的硬件是否支持所述升级包,备份当前固件。发送单元1302下发所述第一升级命令,和/或下发所述升级包或者所述升级包对应的全局内存地址信息。
在至少一个实施例中,如图13所示,固件升级装置1300还可以包括回滚单元1306,在根据所述第一升级命令或所述第二升级命令执行的固件升级失败的情况下,控制单元1303可以控制输出提示用户选择回滚命令的信息,所述回滚命令表示将固件恢复到执行所述第一升级命令前的状态的命令或者将固件恢复到用户选择的状态的命令,在检测到用户选择了回滚命令或者选择了希望恢复的固件的版本的情况下,回滚单元1306下发回滚命令。
在至少一个实施例中,升级准备单元1305还可以根据所述升级包检查执行固件升级所需的升级环境,控制单元1303控制输出设备显示提示用户准备所述升级环境的信息。
在至少一个实施例中,固件升级装置1300例如可以包括输出装置,输出装置例如为语音输出装置或显示装置,例如扬声器或显示器,用于在升级过程中输出提示用户的信息。
此外,在本发明实施例中,发送单元1302或回滚单元1306可以通过带内方式发送命令,例如,可以通过高速串行计算机扩展总线标准(peripheral componentinterconnect express,pcie)发送命令,也可以通过带外方式发送命令,例如,可以通过系统管理总线(System Management Bus,SMBus)发送命令,此外,还可以通过进程间通信(Inter-Process Communication,IPC)发送命令,或者通过通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)发送命令,本发明实施例对此不作限制,可以根据实际需要进行设定。
第四方面的实施例
本发明第四方面的实施例提供一种固件升级装置,由于该装置解决问题的原理与第二方面的实施例的方法类似,因此其具体的实施可以参考第二方面的实施例的方法的实施,内容相同之处不再重复说明。
图14是本发明第四方面的实施例的固件升级装置的一个示意图。如图14所示,固件升级装置1400可以包括发送单元1401、第一检测单元1403和执行单元1404。在根据接收到的第一升级命令执行的固件升级失败的情况下,发送单元1401发送上报消息;第一检测单元1403检测上层下发的第二升级命令对应的层级;执行单元1404按照检测出的层级执行所述第二升级命令。
在至少一个实施例中,如图14所示,固件升级装置1400还可以包括接收单元1402,接收单元1402可以接收第二升级命令或诊断命令。
在至少一个实施例中,在接收单元1402接收到所述诊断命令的情况下,发送单元1401发送第二上报消息。
在至少一个实施例中,如图14所示,固件升级装置1400还可以包括第二检测单元1405,第二检测单元1405用于检测是否上电重新启动系统,在第二检测单元1405检测到上电重新启动系统的情况下,发送单元1401发送第三上报消息。
在至少一个实施例中,在第一检测单元1403检测出的层级为操作系统层(例如,rtos层)的情况下,执行单元1404根据所述第二升级命令从主区获得固件,将获得的所述固件恢复到备区,根据接收到的升级包升级所述备区的固件。
在至少一个实施例中,在第二检测单元1405检测到上电重新启动系统时,执行单元1404还检测是否能够从主区启动操作系统层;在不能从所述主区启动操作系统层的情况下,使用备区的固件替代主区的固件启动操作系统层;在利用所述备区的固件成功重启操作系统层的情况下,获得所述备区的固件;将获得的所述固件恢复到所述主区;根据接收到的升级包升级所述主区的固件。
在至少一个实施例中,在将获得的所述固件恢复到所述主区后,在接收单元1402接收到所述第二升级命令的情况下,执行单元1404根据接收到的升级包升级所述主区的固件。
在至少一个实施例中,在第一检测单元1403检测出的层级为能够引导程序层(例如,BootLoader层)的情况下,执行单元1404在上电重新启动所述系统时根据BootLoader初始化与所述BootLoader对应的硬件;根据所述第二升级命令执行固件升级。
在至少一个实施例中,在引导程序层具有多个层级的情况下,例如,在具有多级BootLoader的情况下,第一检测单元1403检测能够加载的最高层级的BootLoader,执行单元1404在上电重新启动所述系统时根据能够加载的最高层级的BootLoader以下的一个层级的BootLoader初始化所述硬件,根据所述第二升级命令执行固件升级。
在至少一个实施例中,在第一检测单元1403检测出不能正常进入引导程序层的情况下,发送单元1401发送请求激活XIP模式的请求消息。
在至少一个实施例中,如图14所示,固件升级装置1400还可以包括第三检测单元1406,第三检测单元1406用于检测是否激活XIP模式,在第三检测单元1406检测到激活XIP模式的情况下,执行单元1404初始化与所述XIP模式对应的硬件,根据所述第二升级命令执行固件升级。
在至少一个实施例中,执行单元1404根据接收到的升级包执行固件升级。
在至少一个实施例中,接收单元1402还接收回滚命令,执行单元1404根据回滚命令利用在根据第一升级命令升级前备份的固件进行安全回滚操作或者根据用户选择的固件执行回滚操作。
此外,在本发明实施例中,发送单元1401可以通过带内方式发送消息,例如,可以通过高速串行计算机扩展总线标准(peripheral component interconnect express,pcie)发送消息,也可以通过带外方式发送消息,例如,可以通过系统管理总线(SystemManagement Bus,SMBus)发送消息,本发明实施例对此不作限制,可以根据实际需要进行设定。
本发明实施例还提供一种计算机设备,包括存储器、图形处理器或处理器及存储在存储器上并可在图形处理器或处理器上运行的计算机程序,所述图形处理器或所述处理器执行所述计算机程序时实现上述固件升级方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述固件升级方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述固件升级方法。
本发明实施例中,在前一次固件升级失败后确定系统中能够正常运行的最高层级,根据能够正常运行的最高层级采用对应的异常处理策略恢复固件或继续升级,从而减少在采用相同方式再次升级时可能出现的升级失败的情况。还可以在升级失败导致设备死机的情况下,提供恢复固件或继续升级的手段。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (30)

1.一种固件升级方法,其特征在于,所述固件升级方法包括:
在根据第一升级命令执行的固件升级失败的情况下,根据下层发送的上报消息确定系统中能够正常运行的最高层级;
向所述下层中的所述最高层级以下的一个层级发送与所述一个层级对应的第二升级命令。
2.根据权利要求1所述的固件升级方法,其中,
所述上报消息是第一上报消息,
所述固件升级方法还包括:
在根据第一升级命令执行的固件升级失败的情况下接收下层发送的第一上报消息。
3.根据权利要求1所述的固件升级方法,其中,
所述上报消息是第二上报消息,
所述固件升级方法还包括:
在根据第一升级命令执行的固件升级失败,且没有接收到下层发送的上报消息的情况下,向下层发送诊断命令;
接收下层发送的应答所述诊断命令的所述第二上报消息。
4.根据权利要求1所述的固件升级方法,其中,
所述固件升级方法还包括:
在根据第一升级命令执行的固件升级失败,没有接收到下层发送的上报消息且不能下发诊断命令的情况下,控制输出装置输出提示用户重新启动所述系统的信息。
5.根据权利要求4所述的固件升级方法,其中,
所述上报消息是第三上报消息,
所述固件升级方法还包括:
接收在重新启动所述系统时下层发送的所述第三上报消息。
6.根据权利要求1至5中的任一项所述的固件升级方法,其中,
在确定出能够正常运行的最高层级为操作系统层的情况下,向所述操作系统层以下的一个层级发送所述第二升级命令,所述操作系统层为能够执行任务调度和文件读写功能的程序指令集合。
7.根据权利要求1至5中的任一项所述的固件升级方法,其中,
在确定出能够正常运行的最高层级为引导程序层的情况下,向所述引导程序层以下的一个层级发送所述第二升级命令,所述引导程序层为能够初始化硬件和建立内存空间映射的引导加载程序的集合。
8.根据权利要求7所述的固件升级方法,其中,
在所述引导程序层具有多个层级的情况下,确定能够加载的引导程序层的最高层级,向所述引导程序层的最高层级以下的一个层级发送所述第二升级命令。
9.根据权利要求1至5中的任一项所述的固件升级方法,其中,
在确定不能正常进入引导程序层的情况下,发送表示就地执行升级命令的第二升级命令。
10.根据权利要求1至5中的任一项所述的固件升级方法,其中,所述固件升级方法还包括:
当检测到在升级过程中出现业务拥塞时,控制输出装置对显示的图像数据进行平滑处理。
11.根据权利要求1所述的固件升级方法,其中,所述固件升级方法还包括:
校验升级包的合法性和/或完整性;和/或
根据所述升级包检查执行固件升级所需的升级环境,控制输出提示用户准备升级环境的信息;和/或
检测所述升级包是否与产品配套表匹配;和/或
检查所述系统的硬件是否支持所述升级包;
备份当前固件;
下发所述第一升级命令;和/或
下发所述升级包或者所述升级包对应的全局内存地址信息。
12.根据权利要求11所述的固件升级方法,其中,所述固件升级方法还包括:
在根据所述第一升级命令或所述第二升级命令执行的固件升级失败的情况下,控制输出提示用户选择回滚命令的信息,所述回滚命令表示将固件恢复到执行所述第一升级命令前的状态的命令或者将固件恢复到用户选择的状态的命令。
13.一种固件升级方法,其特征在于,所述固件升级方法包括:
在根据接收到的第一升级命令执行的固件升级失败的情况下,发送上报消息;
检测上层下发的第二升级命令对应的层级;
按照检测出的所述层级执行所述第二升级命令。
14.根据权利要求13所述的固件升级方法,其中,
所述上报消息是第一上报消息,
在根据接收到的第一升级命令执行的固件升级失败时发送所述第一上报消息,
所述固件升级方法还包括:
接收上层下发的与所述第一上报消息对应的第二升级命令。
15.根据权利要求13所述的固件升级方法,其中,
所述上报消息是第二上报消息,
所述固件升级方法还包括:
接收上层下发的诊断命令;
发送响应所述诊断命令的所述第二上报消息,
接收上层下发的与所述第二上报消息对应的第二升级命令。
16.根据权利要求13所述的固件升级方法,其中,
所述上报消息是第三上报消息,
所述固件升级方法还包括:
在检测到上电重新启动系统的情况下,发送所述第三上报消息。
17.根据权利要求13至16任一项所述的固件升级方法,其中,所述固件升级方法还包括:
在检测出的所述层级为操作系统层的情况下,根据所述第二升级命令从有效区获得固件,所述操作系统层为能够执行任务调度和文件读写功能的程序指令集合;
并将获得的所述固件恢复到非有效区;或者
根据获取到的升级包升级非有效区的固件。
18.根据权利要求16所述的固件升级方法,其中,所述固件升级方法还包括:
在检测到上电重新启动系统时,检测是否能够从主区启动操作系统层,所述操作系统层为能够执行任务调度和文件读写功能的程序指令集合;
在不能从所述主区启动操作系统层的情况下,使用备区的固件替代主区的固件启动操作系统层;以及
在利用所述备区的固件成功重启操作系统层的情况下,获得所述备区的固件,并将获得的所述固件恢复到所述主区;或者
在利用所述备区的固件成功重启操作系统层的情况下,根据获取到的升级包升级所述主区的固件。
19.根据权利要求18所述的固件升级方法,其中,所述固件升级方法还包括:
在利用所述备区的固件成功重启操作系统层后,接收所述第二升级命令,并获取所述升级包。
20.根据权利要求16所述的固件升级方法,其中,所述固件升级方法还包括:
在检测出的所述层级为引导程序层的情况下,在上电重新启动所述系统时根据引导程序层的引导程序初始化与所述引导程序对应的硬件,所述引导程序层为能够初始化硬件和建立内存空间映射的引导加载程序的集合;
根据所述第二升级命令执行固件升级。
21.根据权利要求20所述的固件升级方法,其中,
在所述引导程序层具有多个层级的情况下,在上电重新启动所述系统时根据能够加载的最高层级以下的一个层级的引导程序初始化所述硬件;
根据所述第二升级命令执行固件升级。
22.根据权利要求16所述的固件升级方法,其中,所述固件升级方法还包括:
在不能正常进入引导程序层的情况下,发送请求激活就地执行模式的请求消息。
23.根据权利要求22所述的固件升级方法,其中,所述固件升级方法还包括:
在检测到激活就地执行模式的情况下,初始化与所述就地执行模式对应的硬件;
根据所述第二升级命令执行固件升级。
24.根据权利要求20、21和23中的任一项所述的固件升级方法,其中,根据所述第二升级命令执行固件升级的步骤包括:
根据获取到的升级包执行固件升级。
25.根据权利要求13所述的固件升级方法,其中,所述固件升级方法还包括:
接收回滚命令;
根据回滚命令利用在根据第一升级命令升级前备份的固件执行安全回滚或者根据用户选择的固件执行回滚操作。
26.一种固件升级装置,其特征在于,所述固件升级装置包括:
确定单元,其在根据第一升级命令执行的固件升级失败的情况下,根据下层发送的上报消息确定系统中能够正常运行的最高层级;以及
发送单元,其向所述下层中的所述最高层级以下的一个层级发送与所述一个层级对应的第二升级命令。
27.一种固件升级装置,其特征在于,所述固件升级装置包括:
发送单元,其在根据接收到的第一升级命令执行的固件升级失败的情况下,发送上报消息;
检测单元,其检测上层下发的第二升级命令对应的层级;以及
执行单元,其按照检测出的所述层级执行所述第二升级命令。
28.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至25任一项所述的方法。
29.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至25任一项所述的方法。
30.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至25任一项所述的方法。
CN202211037919.9A 2022-08-29 2022-08-29 固件升级方法和固件升级装置 Pending CN115113905A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211037919.9A CN115113905A (zh) 2022-08-29 2022-08-29 固件升级方法和固件升级装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211037919.9A CN115113905A (zh) 2022-08-29 2022-08-29 固件升级方法和固件升级装置

Publications (1)

Publication Number Publication Date
CN115113905A true CN115113905A (zh) 2022-09-27

Family

ID=83335943

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211037919.9A Pending CN115113905A (zh) 2022-08-29 2022-08-29 固件升级方法和固件升级装置

Country Status (1)

Country Link
CN (1) CN115113905A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115495275B (zh) * 2022-11-16 2023-03-24 合肥康芯威存储技术有限公司 一种存储系统及其控制方法
CN117170696A (zh) * 2023-11-02 2023-12-05 佛山市钒音科技有限公司 一种空调器的ota升级方法及系统
TWI839278B (zh) * 2023-02-01 2024-04-11 大陸商雅特力科技(重慶)有限公司 用來於電子裝置中進行韌體更新的方法以及具備韌體更新功能的微控制單元

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206970B1 (en) * 2002-02-07 2007-04-17 Network Appliance, Inc. System and method for diagnostics execution and data capture in a storage system using nonvolatile memory
CN107465539A (zh) * 2017-07-25 2017-12-12 北京康得新创科技股份有限公司 固件的升级方法、终端及固件的升级系统
CN110489143A (zh) * 2019-07-18 2019-11-22 南京依维柯汽车有限公司 新能源汽车上的fota固件远程升级系统及其方法
CN111817874A (zh) * 2020-05-22 2020-10-23 中国电力科学研究院有限公司 一种电力物联终端设备的远程维护系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7206970B1 (en) * 2002-02-07 2007-04-17 Network Appliance, Inc. System and method for diagnostics execution and data capture in a storage system using nonvolatile memory
CN107465539A (zh) * 2017-07-25 2017-12-12 北京康得新创科技股份有限公司 固件的升级方法、终端及固件的升级系统
CN110489143A (zh) * 2019-07-18 2019-11-22 南京依维柯汽车有限公司 新能源汽车上的fota固件远程升级系统及其方法
CN111817874A (zh) * 2020-05-22 2020-10-23 中国电力科学研究院有限公司 一种电力物联终端设备的远程维护系统及方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115495275B (zh) * 2022-11-16 2023-03-24 合肥康芯威存储技术有限公司 一种存储系统及其控制方法
TWI839278B (zh) * 2023-02-01 2024-04-11 大陸商雅特力科技(重慶)有限公司 用來於電子裝置中進行韌體更新的方法以及具備韌體更新功能的微控制單元
CN117170696A (zh) * 2023-11-02 2023-12-05 佛山市钒音科技有限公司 一种空调器的ota升级方法及系统
CN117170696B (zh) * 2023-11-02 2024-03-12 佛山市钒音科技有限公司 一种空调器的ota升级方法及系统

Similar Documents

Publication Publication Date Title
CN115113905A (zh) 固件升级方法和固件升级装置
JP5575338B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
KR101427755B1 (ko) Usb를 이용한 펌웨어 업그레이드 장치 및 방법
EP2192516A1 (en) Method for upgrading antivirus software and terminal and system thereof
WO2007045133A1 (fr) Systeme informatique et procede pouvant realiser une verification d’integrite
CN106775674B (zh) 一种基于通用引导加载程序的设备及其启动方法
TWI743709B (zh) 可後台升級韌體的系統及後台升級韌體方法
US6205561B1 (en) Tracking and managing failure-susceptible operations in a computer system
CN110780942A (zh) 系统启动方法、装置、节点设备及计算机可读存储介质
CN113760332A (zh) 软件升级方法和电子设备
TW202131170A (zh) 韌體損壞恢復技術
TW202223655A (zh) 可自我監視及恢復作業系統運作的電腦系統及方法
CN114115958A (zh) 程序启动方法及终端设备
US7360074B2 (en) Method for remote flashing of a bios memory in a data processing system
CN114265603A (zh) 基于不对称分区的系统升级方法、装置和电子设备
KR102274668B1 (ko) 차량용 avn 시스템의 소프트웨어 업데이트 제어 장치 및 방법
CN114237722B (zh) 一种系统的启动方法、装置、设备及工程车辆
US20090138865A1 (en) Performing an operating system upgrade without multiple system interruptions
CN113377425B (zh) Bmc固件生成方法和装置、bmc启动方法和装置及存储介质
CN114741119A (zh) 系统的启动方法、装置、计算机设备和存储介质
CN112817642A (zh) X86平台使用固件自动切换启动efi操作系统的方法、装置
CN110647343A (zh) 一种OpenPower服务器及其系统部署方法
CN111338667A (zh) 一种应用程序app的升级方法与升级装置
CN118349290B (zh) 双存储芯片的启动升级系统、方法、设备、介质和产品
EP2449463A1 (en) A method, apparatus and computer program for loading files during a boot- up process

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