CN116339786A - 一种启动基线固件升级的方法、装置及设备 - Google Patents

一种启动基线固件升级的方法、装置及设备 Download PDF

Info

Publication number
CN116339786A
CN116339786A CN202310342044.1A CN202310342044A CN116339786A CN 116339786 A CN116339786 A CN 116339786A CN 202310342044 A CN202310342044 A CN 202310342044A CN 116339786 A CN116339786 A CN 116339786A
Authority
CN
China
Prior art keywords
firmware
baseline firmware
baseline
partition
read
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
CN202310342044.1A
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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center 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 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202310342044.1A priority Critical patent/CN116339786A/zh
Publication of CN116339786A publication Critical patent/CN116339786A/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

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

一种启动基线固件升级的方法、装置及设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种启动基线固件升级的方法、装置及设备。
背景技术
固件(FirmWare,FW)是程序启动时连接硬件和操作系统的代码,早期固件芯片一般采用了ROM设计,代码是在生产过程中固化的,用任何手段都无法修改。随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,比如可重复写入的可编程可擦除只读存储器EPROM(Erasable Programmable ROM)、EEPROM(ElectricallyErasable Programmable Read-Only Memory)以及flash,这些芯片可以重复刷写以使固件可以修改和升级。固件是写入特殊应用集成电路(ASIC)或可编程逻辑器件(PLD)之中的闪存或EROM、EPROM中的程序,通俗的理解是“固化的软件”。固件可以应用在非常广泛的电子产品中,从遥控器、计算器到电脑中的键盘、硬盘,甚至工业机器人中都可见到它的身影,比如计算机本身及其外设均存在固件。很多设备可以对固件升级,通过固件升级可以修复错误或安全漏洞,增加设备新功能,提升用户交互体验,优化固件或者设备驱动程序的性能等。
对于大多数嵌入式设备,产品中存在一个较为稳定的基线固件版本,来避免用户进行固件升级失误时,保持一个可用版本进行操作。基线是软件文档或源码(或其它产出物)的一个稳定版本,是进一步开发的基础;基线固件是指烧录在嵌入式设备中稳定版固件。
随着传统HDD传输性能达到瓶颈,HDD盘正在逐步被SSD盘取代,作为主机与SSD盘通讯的NVMe(Non-Volatile Memory Express,非易失性内存主机控制器接口规范)协议使用越来越普遍,支持NVMe标准的固件升级的成为一个必要的需求。NVMe是一个逻辑设备接口规范,基于设备逻辑接口的总线传输协议规范,用于访问通过PCI Express(PCIe)总线附加的非易失性存储器介质。在NVMe协议中,基线固件读取属性是只读权限,只允许用户使用读取操作,不允许用户对文件进行写入操作,固件写入出厂后协议层面便不能再修改。在这种基线固件方案下,如果产品生产烧录完成后,基线固件便不能再更改,在需要在对基线固件变更的场景会给厂商带来巨大人力和资源成本,甚至会产生一些不可逆的事故。
发明内容
有鉴于此,本发明提出了一种启动基线固件升级的方法、装置及设备,其中,本发明提出的一种启动基线固件升级的方法通过建立厂商私有命令,修改基线固件所在分区的协议层面的读写属性,以提供更新基线固件的渠道。针对基线固件进行升级的渠道,对使用者的权限进行了划分以及允许厂商经过用户允许,使用厂商私有命令对基线固件所在分区的读写属性进行修改;针对用户升级固件流程进行了优化,通过客户操作基线固件的转移策略和记录固件加载启动状态供用户追溯场景的方式避免用户在对非基线固件升级时误操作而导致无法进行固件升级。
基于以上目的,本发明的实施例的一个方面提供了一种启动基线固件升级的方法,所述方法包括在服务端执行以下步骤:建立非面向用户公开的厂商私有命令;响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性;指示用户端将待升级版本基线固件加载到所述基线固件所在分区;指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈。
在一些实施例中,所述厂商私有命令至少包括:将读写属性由只读属性修改为可读写属性或者由可读写属性修改为只读属性,以及获取所述操作分区的读写属性。
在一些实施例中,所述方法还包括:响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将所述基线固件所在分区的读写属性恢复为只读属性。
在一些实施例中,所述方法还包括:响应于接收到对基线固件升级的需求,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性修改为只读属性并通知所述用户端。
在一些实施例中,所述方法还包括:响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性恢复为可读写属性。
在一些实施例中,所述方法还包括:判断非基线固件升级所指向的分区是否为所述基线固件所在分区,并基于判断结果确定是否需要将所述非基线固件升级所指向的分区进行转移。
在一些实施例中,所述判断非基线固件升级所指向的分区是否为所述基线固件所在分区,并基于判断结果确定是否需要将所述非基线固件升级所指向的分区进行转移包括:响应于所述非基线固件升级所指向的分区为所述基线固件所在分区,将所述非基线固件升级所指向的分区转移到除所述基线固件所在分区以外的剩余分区的任一空闲分区。
在一些实施例中,所述建立非面向用户公开的厂商私有命令包括:基于NVMe协议的保留字段建立非面向用户公开的厂商私有命令。
在一些实施例中,所述响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性包括:通过修改读写属性的标志位对所述基线固件所在分区的读写属性进行修改。
在一些实施例中,所述指示用户端将待升级版本基线固件加载到所述基线固件所在分区包括:通过向所述用户端下发的FW DownLoad命令将待升级版本基线固件下载到缓存区。FW DownLoad命令是一种NVMe标准命令,用于将固件从缓存区加载到指定分区。
在一些实施例中,所述指示用户端将待升级版本基线固件加载到所述基线固件所在分区还包括:基于所述基线固件所在分区的可读写属性通过向所述用户端下发的FWCommit命令将待升级版本基线固件从所述缓存区加载到所述基线固件所在分区。FWCommit命令也是一种NVMe标准命令,用于将固件从缓存区加载到指定分区。
在一些实施例中,所述指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈包括:指示所述用户端对从所述基线固件所在分区得到的待升级版本基线固件至少进行解密、校验、验签,得到可执行的基线固件。
在一些实施例中,所述指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈包括:指示所述用户端通过bootloader将所述可执行的基线固件加载到对应的运行区启动。其中,bootloader指的是系统启动前引导程序。
在一些实施例中,所述方法还包括:基于固件升级的启动状态和加载状态建立并更新启动状态表,通过读取所述启动状态表得到每次固件升级对应的启动结果。
在一些实施例中,所述指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈还包括:记录所述基线固件本次升级启动的启动状态和加载状态并在所述启动状态表中进行更新;通过读取所述启动状态表的更新结果将所述基线固件本次升级启动结果反馈给所述服务端和/或用户端。
本发明实施例的另一个方面,还提供了一种启动基线固件升级的装置,所述装置包括:第一模块,配置用于建立非面向用户公开的用于对操作分区读写属性修改的厂商私有命令;第二模块,配置用于响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性;第三模块,配置用于指示用户端将待升级版本基线固件加载到所述基线固件所在分区;第四模块,配置用于指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈。
在一些实施例中,所述装置还包括:第五模块,配置用于响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将所述基线固件所在分区的读写属性恢复为只读属性。
在一些实施例中,所述装置还包括:第六模块,配置用于响应于接收到对基线固件升级的需求,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性修改为只读属性并通知所述用户端。
在一些实施例中,所述装置还包括:第七模块,配置用于响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性恢复为可读写属性。
在一些实施例中,所述装置还包括:第八模块,配置用于判断非基线固件升级所指向的分区是否为所述基线固件所在分区,并基于判断结果确定是否需要将所述非基线固件升级所指向的分区进行转移。
本发明实施例的另一方面,还提供一种计算机设备,包括至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行时实现上述任一方法的步骤。
本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上任一方法步骤的计算机程序。
本发明至少具有以下有益效果:本发明提出一种启动基线固件升级的方法、装置及设备,其中,本发明提出的一种启动基线固件升级的方法建立只对厂商公开的私有命令,将厂商和用户的权限进行划分,允许厂商经过用户的同意使用厂商私有命令对基线固件所在分区的读写属性进行修改,对于基线固件存在安全漏洞需要对基线固件进行升级的场景,减少由于基线固件不可读写而只能对基线固件回收重新烧录由此带来的成本问题;对于每一次固件升级进行加载启动流程的状态记录机制,允许厂商/用户回溯多次固件加载启动状态,便于厂商/用户对问题进行定位;通过对非基线固件所指向分区的转移策略减少由于用户误操作而带来的不可升级的问题,修正用户对基线固件的操作,增加基线固件的安全性和用户友好性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的实施例。
图1示出了本发明提供的一种启动基线固件升级的方法的实施例的框图;
图2示出了本发明提供的一种启动基线固件升级的方法的另一实施例的流程示意图;
图3示出了本发明提供的一种启动基线固件升级的装置的实施例的示意图;
图4示出了本发明提供的一种计算机设备的实施例的示意图;
图5示出了本发明提供的一种计算机可读存储介质的实施例的示意图。
具体实施方式
以下描述了本发明的实施例。然而,应该理解,所公开的实施例仅仅是示例,并且其它实施例可以采取各种替代形式。
此外,需要说明的是术语“包括”、“包含”或其任何其它变形旨在涵盖非排他性的包括,以使包含一系列要素的过程、方法、物品或装置不仅包括那些要素,也可以包括未明确列出的或这些过程、方法、物品或装置所固有的要素。
下面将结合附图说明本申请的一个或多个实施例。
基于以上目的,本发明实施例的第一个方面,提出了一种启动基线固件升级的方法的实施例。图1示出的是本发明提供的一种启动基线固件升级的方法的实施例的示意图。如图1所示,本发明实施例的一种启动基线固件升级的方法包括在服务端执行以下步骤:
S1、建立非面向用户公开的用于对操作分区读写属性修改的厂商私有命令;
S2、响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性;
S3、指示用户端将待升级版本基线固件加载到所述基线固件所在分区;
S4、指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈。
根据本发明的若干实施例,所述厂商私有命令至少包括:将读写属性由只读属性修改为可读写属性或者由可读写属性修改为只读属性,以及获取所述操作分区的读写属性。
根据本发明的若干实施例,方法还包括:响应于服务端接收到基线固件升级的本次启动结果,通过厂商私有命令将基线固件所在分区的读写属性恢复为只读属性。
根据本发明的若干实施例,方法还包括:响应于接收到对基线固件升级的需求,通过厂商私有命令将除基线固件所在分区以外的剩余分区的读写属性修改为只读属性并通知用户端。
根据本发明的若干实施例,方法还包括:响应于服务端接收到基线固件升级的本次启动结果,通过厂商私有命令将除基线固件所在分区以外的剩余分区的读写属性恢复为可读写属性。
根据本发明的若干实施例,方法还包括:判断非基线固件升级所指向的分区是否为基线固件所在分区,并基于判断结果确定是否需要将非基线固件升级所指向的分区进行转移。
根据本发明的若干实施例,判断非基线固件升级所指向的分区是否为基线固件所在分区,并基于判断结果确定是否需要将非基线固件升级所指向的分区进行转移包括:响应于非基线固件升级所指向的分区为基线固件所在分区,将非基线固件升级所指向的分区转移到除基线固件所在分区以外的剩余分区的任一空闲分区。
根据本发明的若干实施例,建立非面向用户公开的厂商私有命令包括:基于NVMe协议的保留字段建立非面向用户公开的厂商私有命令。
根据本发明的若干实施例,响应于接收到对基线固件升级的需求,通过厂商私有命令将基线固件所在分区的读写属性修改为可读写属性包括:通过修改读写属性的标志位对基线固件所在分区的读写属性进行修改。
根据本发明的若干实施例,指示用户端将待升级版本基线固件加载到基线固件所在分区包括:通过向用户端下发的FW DownLoad命令将待升级版本基线固件下载到缓存区。FW DownLoad命令是一种NVMe标准命令,用于将固件从缓存区加载到指定分区。
根据本发明的若干实施例,指示用户端将待升级版本基线固件加载到基线固件所在分区还包括:基于基线固件所在分区的可读写属性通过向用户端下发的FW Commit命令将待升级版本基线固件从缓存区加载到基线固件所在分区。FW Commit命令也是一种NVMe标准命令,用于将固件从缓存区加载到指定分区。
根据本发明的若干实施例,指示用户端对基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将基线固件升级的本次启动结果进行反馈包括:指示用户端对从基线固件所在分区得到的待升级版本基线固件至少进行解密、校验、验签,得到可执行的基线固件。
根据本发明的若干实施例,指示用户端对基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将基线固件升级的本次启动结果进行反馈包括:指示用户端通过bootloader将可执行的基线固件加载到对应的运行区启动。其中,bootloader指的是系统启动前引导程序。
根据本发明的若干实施例,方法还包括:基于固件升级的启动状态和加载状态建立并更新启动状态表,通过读取启动状态表得到每次固件升级对应的启动结果。
根据本发明的若干实施例,指示用户端对基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将基线固件升级的本次启动结果进行反馈还包括:记录基线固件本次升级启动的启动状态和加载状态并在启动状态表中进行更新;通过读取启动状态表的更新结果将基线固件本次升级启动结果反馈给服务端和/或用户端。
以下为根据本发明提供的一种启动基线固件升级的方法的另一实施例。对于一些需要对基线固件升级的场景,首先针对基线固件的升级渠道进行设计,包括对使用者层级的划分和对基线固件升级通路的设计。具体地,对使用者层级的划分:基于NVMe(Non-Volatile Memory Express,非易失性内存主机控制器接口规范)协议的命令有公有命令和用户自定义命令,用户命令是指NVMe协议标准支持的NVMe命令以及对用户公开的自定义命令(用户自定义命令是指用户自己定义的命令)。正常情况下这两种命令用户(用户端)和厂商(服务端)均可以看到。通过增加不对用户端暴露的厂商私有命令,进而对服务端和用户端权限进行划分,服务端相比用户端多了能访问厂商私有命令。对基线固件升级通路的设计:通常情况,基线固件一旦烧录后便不可再更改。通过厂商私有命令,提供基线固件所在分区读写属性的修改通路,允许服务端经过用户端的允许,使用厂商私有命令对基线固件所在分区的属性进行修改。
通过对用户端隐藏的厂家私有命令修改基线分区的只读属性,来提供基线固件的在线升级通路,同时在服务端升级固件需要使用用户端升级通路,来保证用户安全需求。图2示出的是本发明提供的一种启动基线固件升级的方法的另一实施例的流程示意图。如图2所示:
(1)通过厂商私有命令修改基线固件所在分区的只读属性(Read Only,RO)为可读写属性(Read Write,RW),其他分区的属性为只读状态RO,避免服务端误操作,具体的读写属性设置方式可以通过设置相关标志位来控制。
(2)服务端通过用户端使用的FW Download命令将待升级版本的基线固件下载到固件的缓存区(FW Buffer),对于待升级版本的基线固件的下载可以分为多次进行。FWDownLoad命令是一种NVMe标准命令,用于将固件从缓存区加载到指定分区。由于命令需经过用户端下发,因此用户端可以根据自身需求进行必要的防护,在允许服务端操作时透传厂商私有命令。
(3)服务端通过用户端使用的FW Commit命令将下载到固件缓存区的待升级版本的基线固件包加载到基线固件所在分区(Slot-1),根据(1)中将Slot-1的读写属性修改为可读写属性RW,而将Slot2-7的读写属性修改为只读属性RO,也就是说,只允许服务端操作基线固件所在分区Slot-1而不可操作除基线固件所在分区外的剩余分区Slot2-7。FWCommit命令也是一种NVMe标准命令,用于将固件从缓存区加载到指定分区。由于命令需经过用户端下发,因此用户端可以根据自身需求进行必要的防护,在允许服务端操作时透传厂商私有命令。
(4)加载到基线固件所在分区的待升级版本的基线固件不能直接使用,固件一般通过加密、签名等操作进行保护。因此需要通过bootloader在基线固件加载到运行区前对其进行验签、校验、解密等操作将其转化为可执行的基线固件。其中,bootloader指的是系统启动前引导程序。
(5)bootloader将待升级版本的基线固件加载到运行区后,通过基线固件本身判断自身启动状态。
(6)通过记录固件加载启动状态的启动状态表将每次基线固件升级启动时的加载启动状态在启动状态表中进行更新,通过记载多次加载启动状态可以为用户端提供在基线固件升级出现问题时进行问题回溯,其中记录的容量由用户需求和资源进行权衡设置。
(7)向用户端/服务端返回本次基线固件升级的结果。
(8)以上步骤进行完成后,通过厂商私有命令将基线固件所在分区的属性由可读写属性恢复为只读属性,并将除基线固件所在分区以外的剩余分区的属性由只读属性修改为可读写属性,同时重复步骤(4)-(7)恢复基线固件的原始版本。
同时,在对非基线固件升级时,会存在将该非基线固件升级所指向的分区误指向为基线固件所在分区的误指向的情况,在误操作的情况下将不能再继续进行固件升级,此时阻止对基线固件操作,并为其选择一个除基线固件所在分区以外的可读写属性的分区极性升级操作。具体地,服务端通过用户下方的FW Commit命令开始将下载到固件缓存区的固件包加载到指定分区,此时需要判断指定分区是否为基线固件所在分区,如果是基线固件所在分区,将该非基线固件升级所指向的分区转移到除基线固件所在分区以外的剩余分区的任一空闲分区,同时将实际转移的分区通知用户端,以实现误操作时仍能进行固件升级操作,增加系统灵活性;如果除基线固件所在分区以外的剩余分区中无空闲分区,则无法进行升级。
本发明的实施例的第二个方面,提出了一种启动基线固件升级的装置。图3示出的是本发明提供的一种启动基线固件升级的装置的实施例的示意图。如图3所示,本发明提供的一种启动基线固件升级的装置包括:第一模块011,配置用于建立非面向用户公开的厂商私有命令;第二模块012,配置用于响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性;第三模块013,配置用于指示用户端将待升级版本基线固件加载到所述基线固件所在分区;第四模块014,配置用于指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈。
根据本发明的若干实施例,装置还包括:第五模块,配置用于响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将所述基线固件所在分区的读写属性恢复为只读属性。
根据本发明的若干实施例,装置还包括:第六模块,配置用于响应于接收到对基线固件升级的需求,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性修改为只读属性并通知所述用户端。
根据本发明的若干实施例,装置还包括:第七模块,配置用于响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性恢复为可读写属性。
根据本发明的若干实施例,装置还包括:第八模块,配置用于判断非基线固件升级所指向的分区是否为所述基线固件所在分区,并基于判断结果确定是否需要将所述非基线固件升级所指向的分区进行转移。
基于以上目的,本发明实施例的第三个方面,提出了一种计算机设备,图4示出的是本发明提供的一种计算机设备的实施例的示意图。如图4所示,本发明提供的一种计算机设备的实施例,包括以下模块:至少一个处理器021;以及存储器022,存储器022存储有可在处理器021上运行的计算机指令023,该计算机指令023由处理器021执行时实现如上所述的方法的步骤。
本发明还提供了一种计算机可读存储介质。图5示出的是本发明提供的一种计算机可读存储介质的实施例的示意图。如图5所示,计算机可读存储介质031存储有被处理器执行时执行如上所述的方法的步骤的计算机程序032。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,设置系统参数的方法的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由处理器执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被处理器执行时,执行本发明实施例公开的方法中限定的上述功能。
此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
在一个或多个示例性设计中,功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、D0L或诸如红外线、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (17)

1.一种启动基线固件升级的方法,其特征在于,包括在服务端执行以下步骤:
建立非面向用户公开的用于对操作分区读写属性修改的厂商私有命令;
响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性;
指示用户端将待升级版本基线固件加载到所述基线固件所在分区;
指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈。
2.根据权利要求1所述的方法,其特征在于,所述厂商私有命令至少包括:
将读写属性由只读属性修改为可读写属性或者由可读写属性修改为只读属性,以及获取所述操作分区的读写属性。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将所述基线固件所在分区的读写属性恢复为只读属性。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于接收到对基线固件升级的需求,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性修改为只读属性并通知所述用户端。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
响应于所述服务端接收到所述基线固件升级的本次启动结果,通过所述厂商私有命令将除所述基线固件所在分区以外的剩余分区的读写属性恢复为可读写属性。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断非基线固件升级所指向的分区是否为所述基线固件所在分区,并基于判断结果确定是否需要将所述非基线固件升级所指向的分区进行转移。
7.根据权利要求6所述的方法,其特征在于,所述判断非基线固件升级所指向的分区是否为所述基线固件所在分区,并基于判断结果确定是否需要将所述非基线固件升级所指向的分区进行转移包括:
响应于所述非基线固件升级所指向的分区为所述基线固件所在分区,将所述非基线固件升级所指向的分区转移到除所述基线固件所在分区以外的剩余分区的任一空闲分区。
8.根据权利要求1所述的方法,其特征在于,所述建立非面向用户公开的厂商私有命令包括:
基于NVMe协议的保留字段建立非面向用户公开的厂商私有命令。
9.根据权利要求1所述的方法,其特征在于,所述响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性包括:
通过修改读写属性的标志位对所述基线固件所在分区的读写属性进行修改。
10.根据权利要求1所述的方法,其特征在于,所述指示用户端将待升级版本基线固件加载到所述基线固件所在分区包括:
通过向所述用户端下发的FW DownLoad命令将待升级版本基线固件下载到缓存区。
11.根据权利要求10所述的方法,其特征在于,所述指示用户端将待升级版本基线固件加载到所述基线固件所在分区还包括:
基于所述基线固件所在分区的可读写属性通过向所述用户端下发的FW Commit命令将待升级版本基线固件从所述缓存区加载到所述基线固件所在分区。
12.根据权利要求1所述的方法,其特征在于,所述指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈包括:
指示所述用户端对从所述基线固件所在分区得到的待升级版本基线固件至少进行解密、校验、验签,得到可执行的基线固件。
13.根据权利要求12所述的方法,其特征在于,所述指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈包括:
指示所述用户端通过bootloader将所述可执行的基线固件加载到对应的运行区启动。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于固件升级的启动状态和加载状态建立并更新启动状态表,通过读取所述启动状态表得到每次固件升级对应的启动结果。
15.根据权利要求14所述的方法,其特征在于,所述指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈还包括:
记录所述基线固件本次升级启动的启动状态和加载状态并在所述启动状态表中进行更新;
通过读取所述启动状态表的更新结果将所述基线固件本次升级启动结果反馈给所述服务端和/或用户端。
16.一种启动基线固件升级的装置,其特征在于,所述装置包括:
第一模块,配置用于建立非面向用户公开的用于对操作分区读写属性修改的厂商私有命令;
第二模块,配置用于响应于接收到对基线固件升级的需求,通过所述厂商私有命令将基线固件所在分区的读写属性修改为可读写属性;
第三模块,配置用于指示用户端将待升级版本基线固件加载到所述基线固件所在分区;
第四模块,配置用于指示所述用户端对所述基线固件所在分区的待升级版本基线固件进行预处理后加载到对应的运行区启动,并将所述基线固件升级的本次启动结果进行反馈。
17.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-15任意一项所述方法的步骤。
CN202310342044.1A 2023-03-29 2023-03-29 一种启动基线固件升级的方法、装置及设备 Pending CN116339786A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310342044.1A CN116339786A (zh) 2023-03-29 2023-03-29 一种启动基线固件升级的方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310342044.1A CN116339786A (zh) 2023-03-29 2023-03-29 一种启动基线固件升级的方法、装置及设备

Publications (1)

Publication Number Publication Date
CN116339786A true CN116339786A (zh) 2023-06-27

Family

ID=86892804

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310342044.1A Pending CN116339786A (zh) 2023-03-29 2023-03-29 一种启动基线固件升级的方法、装置及设备

Country Status (1)

Country Link
CN (1) CN116339786A (zh)

Similar Documents

Publication Publication Date Title
CN103559052B (zh) 固件更新的设备与方法
US8539471B2 (en) Updating firmware of an electronic device
CN102023908B (zh) 一种引导程序备份方法及装置
US10162625B2 (en) Vehicle control storage methods and systems
JP6585072B2 (ja) 不揮発性メモリ又はセキュア素子へのデータの読み込みを安全に行うこと
CN100570558C (zh) 一种芯片固件升级方法
CN109062598A (zh) 一种安全的ota升级方法及系统
CN105637521B (zh) 一种数据处理方法及智能终端
CN111562934B (zh) 一种基于热补丁的软件系统升级方法、终端及存储介质
CN110543369A (zh) 一种安卓系统存储空间结构的构建方法、装置及其构建结构
EP2887221A1 (en) Device for processing information and working method thereof
CN103714287A (zh) 一种获取临时Root权限的方法及装置
CN110597542A (zh) 软件自动ota升级方法及装置、电子设备
CN105159716A (zh) 一种存储器件初始化方法和电子设备
CN113805965B (zh) 一种外部插件安装的方法、装置、设备及可读介质
CN110764486B (zh) 车载控制器的运行方法、装置、车载控制器及存储介质
WO2016082450A1 (zh) 一种用户终端的升级方法和用户终端
CN106933604B (zh) 一种系统升级方法及装置
CN116339786A (zh) 一种启动基线固件升级的方法、装置及设备
CN114995852A (zh) 一种设备升级方法、设备及计算机可读存储介质
JP5419123B2 (ja) 電子機器システム及びファームウェアの更新方法
CN113885926A (zh) 一种基于安全芯片的操作系统在线升级方法
CN109428936B (zh) App的升级方法、装置、系统、电子设备及存储介质
CN113553090B (zh) 客户端应用程序的更新控制方法及装置
US20220413873A1 (en) Electronic apparatus and operation method thereof having elastic boot file allocation mechanism

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