CN112540785A - 一种存储装置的固件升级方法、控制设备及存储装置 - Google Patents
一种存储装置的固件升级方法、控制设备及存储装置 Download PDFInfo
- Publication number
- CN112540785A CN112540785A CN202011289132.2A CN202011289132A CN112540785A CN 112540785 A CN112540785 A CN 112540785A CN 202011289132 A CN202011289132 A CN 202011289132A CN 112540785 A CN112540785 A CN 112540785A
- Authority
- CN
- China
- Prior art keywords
- storage device
- firmware
- reset
- controller
- register
- 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
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000004044 response Effects 0.000 claims abstract description 56
- 238000004891 communication Methods 0.000 claims abstract description 54
- 230000004913 activation Effects 0.000 claims abstract description 48
- 238000002360 preparation method Methods 0.000 claims abstract description 40
- 238000004590 computer program Methods 0.000 claims description 17
- 239000007787 solid Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000003213 activating effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种存储装置的固件升级方法、控制设备及存储装置,该方法包括:向存储装置发送固件激活指令,以使存储装置进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活;在接收到应答信息后,向存储装置发送复位指令,以使存储装置复位;在存储装置固件升级完成后,建立与存储装置的通信连接。通过这样的方式,能够在线完成存储装置的固件升级,而无需重新上断电。
Description
技术领域
本申请涉及移动存储硬盘领域,特别涉及一种存储装置的固件升级方法、控制设备及存储装置。
背景技术
随着计算机技术的发展,市场上出现了固态硬盘(Solid State Drives,SSD),固态硬盘在出厂时,其内部芯片默认搭载着厂商开发的固件程序,以满足客户端相关驱动程序对固态硬盘的读写访问。但是,在实际使用过程中,有时需要对固态硬盘的固件程序进行升级操作,将固态硬盘的固件程序升级到新版本,以修复旧版本固件中存在的相关bug、优化固件性能或满足新的功能新需求等,能够为固态硬盘带来性能上的提升或是添加新的功能,因此固件升级是很有必要的。
在传统的升级方法中,固态硬盘的固件升级需要停止当前业务,在主机一端通过升级工具将固件下载到固态硬盘的指定位置,进一步需要通过重启主机的方式或者是热插拔等方式使得固态硬盘断电并重新上电,以加载新升级的固件,而固态硬盘的断电会导致当前业务的中断,这在很多服务器等特殊场合是不允许的,同时操作起来也很麻烦,给业务处理带来不便。
发明内容
为了解决上述问题,本申请提供一种存储装置的固件升级方法、控制设备及存储装置,能够在线完成存储装置的固件升级,而无需重新上断电。
为解决上述技术问题,本申请采用的一个技术方案是提供一种存储装置的固件升级方法,该方法包括:向存储装置发送固件激活指令,以使存储装置进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活;在接收到应答信息后,向存储装置发送复位指令,以使存储装置复位;在存储装置固件升级完成后,建立与存储装置的通信连接。
其中,向存储装置发送固件激活指令之前,还包括:向存储装置发送新固件,以使存储装置存储新固件。
其中,在接收到应答信息后,向存储装置发送复位指令,以使存储装置复位,包括:在接收到应答信息后,将存储装置的控制器配置寄存器的使能字段清0,以使存储装置复位并将存储装置的控制器状态寄存器的准备字段清0;其中,应答信息在完成命令队列的状态域中进行反馈;将存储装置的控制器配置寄存器的使能字段置1,以使存储装置加载新固件。
其中,将存储装置的控制器配置寄存器的使能字段清0,以使存储装置复位并将存储装置的控制器状态寄存器的准备字段清0之后,还包括:暂停与存储装置的通信。
其中,在存储装置固件升级完成后,建立与存储装置的通信连接,包括:在检测到存储装置的控制器状态寄存器的准备字段置1时,建立与存储装置的通信连接;其中,存储装置在新固件初始化操作完成后将存储装置的控制器状态寄存器的准备字段置1。
其中,建立与存储装置的通信连接,包括:发送管理命令以重新创建读写通信队列,建立与存储装置的通信连接。
其中,初始化操作的次数小于两次。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种控制设备,该控制设备包括控制单元以及存储单元,存储单元用于存储计算机程序,计算机程序在被控制单元执行时,用于实现上述的存储装置的固件升级方法。
为解决上述技术问题,本申请采用的又一个技术方案是:提供一种存储装置的固件升级方法,该方法包括:接收固件激活指令,以进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活;接收复位指令以进行存储装置复位;在存储装置固件升级完成后,建立与控制设备的通信连接。
其中,接收固件激活指令之前,还包括:接收并存储新固件。
其中,接收复位指令以进行存储装置复位,包括:接收复位指令,将控制器配置寄存器的使能字段清0以进行存储装置复位,并将控制器状态寄存器的准备字段清0;将控制器配置寄存器的使能字段置1,以加载新固件。
其中,在存储装置固件升级完成后,建立与控制设备的通信连接,包括:将控制器状态寄存器的准备字段置1,并建立与控制设备的通信连接;其中,存储装置在新固件初始化操作完成后将控制器状态寄存器的准备字段置1。
其中,将控制器状态寄存器的准备字段清0与将控制器状态寄存器的准备字段置1之间的时间差,小于控制器功能寄存器上报的超时时间。
其中,应答信息在完成队列命令的状态域中进行反馈。
为解决上述技术问题,本申请采用的再一个技术方案是:提供一种存储装置,该控制设备包括控制单元以及存储单元,存储单元用于存储计算机程序,计算机程序在被控制单元执行时,用于实现上述的存储装置的固件升级方法。
本申请实施例的有益效果是:区别于现有技术,本申请提供的一种存储装置的固件升级方法,通过向存储装置发送固件激活指令,以使存储装置进行激活前的准备,并在准备完成后向控制设备反馈应答消息,该应答消息则用于表示存储装置将在下一次复位时对新固件进行激活,而控制设备在接收到应答消息后,则向存储装置发送复位指令,以使存储装置复位,最后在存储装置升级完成后,建立与存储装置的通信连接。通过这样的方式,能够利用存储装置反馈的应答消息,使得控制设备在向存储装置发送复位指令后,能够在线完成存储装置的固件升级,而无需重新上断电,提高了工作效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的存储装置的固件升级方法一实施例的流程示意图;
图2是本申请提供的存储装置的固件升级方法另一实施例的流程示意图;
图3是本申请提供的存储装置的固件升级方法又一实施例的流程示意图;
图4是本申请提供的存储装置的固件升级方法再一实施例的流程示意图;
图5是本申请提供的控制设备一实施例的结构示意图;
图6是本申请提供的存储装置一实施例的结构示意图;
图7是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
固态硬盘是一种由固态电子存储芯片阵列而制成的计算机外部存储设备,与常规硬盘相比,固态硬盘以其读写速度快、工作噪音低、工作温度范围广、防震性能好、重量轻以及功耗低等特点,广泛应用于便携式及嵌入式计算机,特别是工业控制计算机中,并有逐渐取代常规硬盘的趋势。本申请发明人经长期研究发现,固态硬盘虽然存在诸多特点,但是在升级使用中仍存在些许不足,例如固态硬盘在固件升级时需要重新上断电的问题仍未得到很好解决。基于此,本申请发明人提出以下多个实施例:
参阅图1,图1是本申请提供的存储装置的固件升级方法一实施例的流程示意图,本实施例的方法应用于控制设备,方法具体包括:
步骤11:向存储装置发送固件激活指令,以使存储装置进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活。
可以理解的,控制设备与存储装置之间可以通过多种方式相耦合,包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(UniversalSerial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等。本实施例中,控制设备和存储装置之间则主要是基于NVME协议进行通信,以实现后续存储装置固件升级的方法。
其中,控制设备可以是能够通过上述方式与存储装置进行通信的信息处理设备,例如个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。
其中,存储装置由存储单元和控制单元组成,控制单元又由多个CPU(CentralProcessing Unit,中央处理器)和辅助硬件单元组成。在此对CPU和辅助硬件单元的数量均不作具体限定,应由本领域技术人员根据实际情况作出相应的设定。
其中,固件激活指令是由控制设备发送标准管理命令(admin命令)FirmwareActive,以此来触发存储装置激活新固件,也即是发送固件激活指令。
在本实施例中,控制设备在发送固件激活指令后,存储装置则会响应该固件激活指令,关闭一些空闲处理(如平衡磨损、垃圾回收等)为激活固件做准备,在存储装置的空闲处理准备完成后即可向控制设备一端反馈应答消息,该应答消息则是存储装置在应答Firmware Active的CQ(CompletionQueue,完成命令队列)的状态域中通过标准协议对控制设备进行反馈,用于表示存储装置将在下一次复位时对新固件进行激活。
步骤12:在接收到应答信息后,向存储装置发送复位指令,以使存储装置复位。
可以理解,存储装置进行固件升级的动作通常需要在上断电重启复位之后开始执行,而在本实施例中,由于存储装置在复位升级前已经告知控制设备,新固件将在下一次复位后被加载/激活,此时,控制设备便会暂停下发所有命令而唯一向存储装置发送复位指令,以使存储装置可以直接于在线状态进行复位,而无需重新进行上断电的复位动作,能够实现存储装置在不断电情况下的升级操作,保证了事项处理的连续性。
步骤13:控制设备在存储装置升级完成后,建立与存储装置的通信连接。
在存储装置升级完成后,控制设备即可重新进行通信初始化,以重新开始与存储装置建立通信连接,进行正常交互。
区别于现有技术,本申请提供的一种存储装置的固件升级方法,通过向存储装置发送固件激活指令,以使存储装置进行激活前的准备,并在准备完成后向控制设备反馈应答消息,该应答消息则用于表示存储装置将在下一次复位时对新固件进行激活,而控制设备在接收到应答消息后,则向存储装置发送复位指令,以使存储装置复位,最后在存储装置升级完成后,建立与存储装置的通信连接。通过这样的方式,能够利用存储装置反馈的应答消息,使得控制设备在向存储装置发送复位指令后,能够在线完成存储装置的固件升级,而无需重新上断电,提高了工作效率。
参阅图2,图2是本申请提供的存储装置的固件升级方法另一实施例的流程示意图,本实施例应用于控制设备,方法具体包括:
步骤21:向存储装置发送新固件,以使存储装置存储新固件。
其中,新固件是由控制设备使用升级工具通过标准管理命令(admin命令)Firmware Image Download实现发送,利用升级工具将新固件依次分包下载至存储装置,存储装置再将新固件写进掉电保护芯片中进行存储。
其中,Firmware Image Download分包大小不能超过最大上报值,且需要4字节对齐,否则下载数据包会出现异常。
在一种实际场景中,芯片内提供了多个固件槽,例如固件槽1、固件槽2、固件槽3、固件槽4等,分别用来存储相同或不同的固件。当存储装置接收到新固件时,可以根据控制设备的指令将新固件存储到指定的固件槽中,当存储装置的固件槽中存储有多个固件时,可以根据指令指定固件槽加载对应固件槽内的新固件。可选地,为了提高可靠性,可以将同一份新固件同时保存写入多个固件槽内,以使得当出现一个或多个固件槽的发生故障情况时,依然能够从其他固件槽中获得需要运行的有效新固件。
进一步地,向存储装置发送新固件后,存储装置还可以对新固件的完整性进行判断,可以利用包括CRC校验(Cyclic Redundancy Check,循环冗余校验码)、奇偶校验法以及累加和校验法等对新固件执行算法计算得到一个结果,再将该结果与控制设备下载时进行计算得到的结果进行比较,若结果一致则表明新固件完整,可存储装置可以将其进行存储。
在步骤21之前,还可以通过将存储装置的当前固件的固件版本,与存储于控制设备所对应的升级服务器中的新固件进行版本比对,从而确定是否需要对存储装置进行固件升级,如果两者不同,则说明该存储装置需要进行固件升级,进而向存储装置发送新固件;如果两者相同,则说明该存储装置无需进行固件升级。
步骤22:向存储装置发送固件激活指令,以使存储装置进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活。
其中,固件激活指令是控制设备用于指示存储装置下一次复位时所使用的固件槽,也即是具体激活哪一个新固件以进行固件升级。例如固件槽1和固件槽2中存储了不同的新固件,通过固件激活指令的指示,存储装置即可选择需要使用的固件槽所对应的新固件,以用于在后续进行固件升级。
在本实施例中,存储装置在接收到控制设备发送的固件激活指令后,会为进行新固件激活做准备,通过关闭其本身的一些空闲处理(如平衡磨损、垃圾回收等),以使存储装置处于空闲状态,在此之后,存储装置在应答Firmware Active的完成命令队列的状态域中通过标准协议进行反馈,用于表示存储装置将在下一次复位时对新固件进行激活。
需要说明的是,不是所有NVME存储驱动都支持该应答方式,目前只发现windows10自带驱动支持该握手协议,其他开源驱动(例如marvel)提供的驱动就不支持此方式(当存储装置在完成命令队列的状态域置上对应的激活方式时,控制设备一端无法产生复位行为)。
步骤23:在接收到应答信息后,将存储装置的控制器配置寄存器的使能字段清0,以使存储装置复位并将存储装置的控制器状态寄存器的准备字段清0。
当控制设备通过完成命令队列的状态域接收到存储装置反馈的应答信息后,立刻发出指令以将存储装置的控制器配置(Controller Configuration,CC)寄存器的使能字段清0,也即是CC.EN(Controller Configuration Enable)=0,指的是把CC寄存器里的EN段清零,表示控制设备暂停与存储装置的所有命令通信,以使存储装置产生复位,进一步,使得存储装置将自己的控制器状态(Controller Status,CSTS)寄存器的准备字段清0,也即是CSTS.RDY(Controller Status Ready)=0,指的是把CSTS寄存器里的RDY段清0,用于表示存储装置的状态是否就绪。
在本实施例中,控制设备在存储装置反馈的应答消息的指示下,暂停与存储装置之间所有的命令通信,而唯一下发指令复位存储装置,以使得存储装置可以直接于在线状态进行固件升级,而无需重新进行上断电的复位动作,能够实现存储装置在不断电情况下的升级操作,保证了事项处理的连续性。
其中,在控制设备将存储装置的CC.EN寄存器清0以触发存储装置产生复位时,存储装置需要立即将CSTS.RDY寄存器清0,由于控制设备会很快使能CC.EN寄存器,并且查询CSTS.RDY寄存器的状态,如果CSTS.RDY寄存器清0不及时则会导致存储装置尚未准备充分,而控制设备一端却已经开启了新的队列创建,而最终导致升级失败。
步骤24:将存储装置的控制器配置寄存器的使能字段置1,以使存储装置加载新固件。
其中,由于存储装置的控制器配置寄存器的使能字段由0变1之后,存储装置会产生一个中断,假设该中断发生在新固件加载的盲区(代码reboot的盲区),也即是中断没开启的时候,此时存储装置将会出现异常,基于此,本实施例中使存储装置加载新固件的动作,也即是reboot代码的动作,需要在控制设备将存储装置的控制器配置寄存器的使能字段置1之后才能进行,否则会影响升级过程。
进一步地,将存储装置的控制器配置寄存器的使能字段置1后,存储装置即可做与控制设备能够进行通信的准备,并立刻进行固件跳转,也即是对新固件进行加载,并进行新固件与通信关联的初始化操作,包括PCIE和NVME等初始化操作,例如通过报文确定PCIE层通讯属性,以及存储装置和控制设备之间寄存器的映射关系等,又例如初始化NVME相关的寄存器ASQ(Admin Submission Queue Base Address,管理命令队列基地址)、ACQ(AdminCompletion Queue Base Address,完成管理命令队列基地址)、AQA(Admin QueueAttributes,管理命令队列属性)等。
其中,在上述存储装置的新固件初始化操作完成后,存储装置即可将控制器状态寄存器的准备字段置1,用于告知控制设备新固件已经完全加载并且已准备就绪,可以进行通信。
其中,上述初始化操作的次数小于两次,也即是不能再次进行,具体为PCIE的物理层初始化的次数不能超过两次,否则PCIE会出现link down,会发生链路断开,所以新固件加载时,在初始化操作阶段,存储装置一定要区分是reboot还是正常上电,否则将导致无法通信。对于区分的方式,可以使用部分特定寄存器用于区分reboot,如果没有此类寄存器,则可以使用特点内存进行状态标识,以区分是正常上电还是reboot。
步骤25:在检测到存储装置的控制器状态寄存器的准备字段置1时,建立与存储装置的通信连接。
控制设备通过查询控制器状态寄存器的状态是否就绪来识别固件升级动作是否完成,或者识别存储装置是否在工作,当控制设备检测到存储装置的控制器状态寄存器的准备字段置1时,即表明存储装置的新固件激活完毕,已完成固件升级,此时控制设备一端可以通过发送管理命令以重新创建读写通信队列,从而建立与存储装置的通信连接。
具体地,控制设备重新进行NVME寄存器配置,例如将admin队列复位,如此admin命令便可重新同步进行寻址通信,然后通过create I/Q CQ(Create I/O Completion Queuecommand,创建数据读写完成命令队列)和create I/O SQ(Create I/O Submission Queuecommand,创建数据读写命令队列)用来创建IO命令队列,以为后续的IO读写命令提供同步取指基地址。
进一步,当控制设备对admin队列复位完成,以及重新创建IO队列之后,即可与存储装置重新进行通信。
需要说明的是,存储装置将控制器状态寄存器的准备字段清0的时间,与将控制器状态寄存器的准备字段置1之间的时间差,小于CAP(Controller Capabilities,控制器功能)寄存器上报的超时时间,也即不能超过CAP.TO(Controller Capabilities Timeout),当控制设备查询控制器状态寄存器的时间过长后会放弃查询,此时将认为存储装置发生异常掉盘。
通过这样的方式,本实施例提供一种存储装置的固件升级方法,当控制设备通过工具下载完新固件至存储装置并发送固件激活指令后,存储装置通过响应固件激活指令的相应状态域,以告知控制设备新固件将会在下一次复位后被加载,如此控制设备的驱动便会暂停下发所有命令而去复位存储装置,之后重新和存储装置进行握手创建新的通信队列,以此便可以解决以往存储装置固件升级中所存在的需要重新上断电或强制跳转的问题。
参阅图3,图3是本申请提供的存储装置的固件升级方法又一实施例的流程示意图,本实施例的方法应用于存储装置,方法具体包括:
步骤31:接收固件激活指令,以进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活。
存储装置在接收固件激活指令后,对该指令进行响应,通过关闭一些空闲处理为激活固件做准备,在空闲处理准备完成后即可在应答Firmware Active的CQ的状态域中通过标准协议向控制设备一端反馈应答信息,用于表示存储装置将在下一次复位时对新固件进行激活。
步骤32:接收复位指令以进行存储装置复位。
控制设备在接收到应答信息后,由于控制设备已经知晓存储装置的下一步动作,此时控制设备将暂停下发所有命令通信,而唯一向存储装置发送复位指令,存储装置可以在复位指令的指示下直接于在线状态进行复位,因此,在控制设备的复位指令下,存储装置能够在不断电情况下进行固件升级,保证了事项处理的连续性。
步骤33:在存储装置固件升级完成后,建立与控制设备的通信连接。
在存储装置升级完成后,控制设备即可重新进行通信初始化,以重新开始与存储装置建立通信连接,进行正常交互。
参阅图4,图4是本申请提供的存储装置的固件升级方法再一实施例的流程示意图,本实施例的方法应用于存储装置,方法具体包括:
步骤41:接收并存储新固件。
其中,新固件是由控制设备使用升级工具通过标准管理命令(admin命令)Firmware Image Download实现发送,利用升级工具将新固件依次分包下载至存储装置,存储装置再将新固件写进掉电保护芯片中进行存储。
其中,Firmware Image Download分包大小不能超过最大上报值,且需要4字节对齐,否则下载数据包会出现异常。
步骤42:接收固件激活指令,以进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活。
在本实施例中,存储装置在接收到控制设备发送的固件激活指令后,会为进行新固件激活做准备,通过关闭其本身的一些空闲处理(如平衡磨损、垃圾回收等),以使得自身处于空闲状态,在此之后,存储装置在应答Firmware Active的完成命令队列的状态域中通过标准协议进行反馈,用于表示存储装置将在下一次复位时对新固件进行激活。
需要说明的是,不是所有NVME存储驱动都支持该应答方式,目前只发现windows10自带驱动支持该握手协议,其他开源驱动(例如marvel)提供的驱动就不支持此方式(当存储装置在完成命令队列的状态域置上对应的激活方式时,控制设备一端无法产生复位行为)。
步骤43:接收复位指令,将控制器配置寄存器的使能字段清0以进行存储装置复位,并将控制器状态寄存器的准备字段清0。
接收到控制设备发送的复位指令后,存储装置即可将控制器配置寄存器的使能字段清0以触发复位,此时控制设备将会被暂停与存储装置之间的所有命令通信;存储装置进一步将控制器状态寄存器的准备字段清零,用于表示存储器的状态是否就绪。
在本实施例中,由于控制设备在接收到应答消息后,暂停了与存储装置之间的所有命令通信,此时存储装置唯一能够接收复位指令,存储装置可以在复位指令的指示下直接于在线状态进行复位,而无需重新进行上断电的复位动作,能够实现存储装置在不断电情况下的升级操作,保证了事项处理的连续性。
其中,在控制设备将存储装置的CC.EN寄存器清0以触发存储装置产生复位时,存储装置需要立即将CSTS.RDY寄存器清0,由于控制设备会很快使能CC.EN寄存器,并且查询CSTS.RDY寄存器的状态,如果CSTS.RDY寄存器清0不及时则会导致存储装置尚未准备充分,而控制设备一端却已经开启了新的队列创建,而最终导致升级失败。
步骤44:将控制器配置寄存器的使能字段置1,以加载新固件。
其中,由于存储装置的控制器配置寄存器的使能字段由0变1之后,存储装置会产生一个中断,假设该中断发生在新固件加载的盲区(代码reboot的盲区),也即是中断没开启的时候,此时存储装置将会出现异常,基于此,本实施例中存储装置加载新固件的动作,也即是reboot代码的动作,需要在控制器配置寄存器的使能字段置1之后才能进行,否则会影响升级过程。
其中,上述初始化操作的次数小于两次,也即是不能再次进行初始化具体为PCIE的物理层初始化的次数不能超过两次,否则PCIE会出现link down,也即是会发生链路断开,所以新固件加载时,在初始化操作阶段,存储装置一定要区分是reboot还是正常上电,否则将导致无法通信。对于区分的方式,可以使用部分特定寄存器用于区分reboot,如果没有此类寄存器,则可以使用特点内存进行状态标识,以区分是正常上电还是reboot。
步骤45:将控制器状态寄存器的准备字段置1,并建立与控制设备的通信连接。
其中,CSTS.RDY=1即表示存储装置的新固件激活完毕,已完成固件升级,控制设备对控制器状态寄存器的查询通常是间断的,只要查询到存储装置的控制器状态寄存器的准备字段变化为1,即可确认存储装置升级完成。进一步通过控制设备一端发送的管理命令以重新创建的读写通信队列,与控制设备一端建立通信连接。
需要说明的是,存储装置将控制器状态寄存器的准备字段清0的时间,与将控制器状态寄存器的准备字段置1之间的时间差,小于CAP(Controller Capabilities,控制器功能)寄存器上报的超时时间,也即不能超过CAP.TO(Controller Capabilities Timeout),当控制设备查询控制器状态寄存器的时间过长后会放弃查询,此时将认为存储装置发生异常掉盘。
通过这样的方式,本实施例提供一种存储装置的固件升级方法,当存储装置接收到控制设备发送的新固件以及固件激活指令后,通过响应固件激活指令的相应状态域,告知控制设备新固件将会在下一次复位后被加载,之后存储装置和控制设备重新进行握手而创建新的通讯队列,以此便可以解决以往存储装置固件升级中所存在的需要重新上断电或强制跳转的问题。
参阅图5,图5是本申请提供的控制设备一实施例的结构示意图,本实施例的控制设备50包括控制单元51和存储单元52,控制单元51与存储单元52耦接,其中,存储单元52用于存储控制单元51执行的计算机程序,控制单元51用于执行计算机程序以实现如下方法步骤:
向存储装置发送固件激活指令,以使存储装置进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活;在接收到应答信息后,向存储装置发送复位指令,以使存储装置复位;在存储装置固件升级完成后,建立与存储装置的通信连接。
需要说明的是,本实施例的控制设备50是基于上述任一方法实施例的一实体终端,其实施原理和步骤类似,在此不再赘述。因此,计算机程序在被控制单元51执行时,还可以实现上述任一实施例中的其他方法步骤,在此不再赘述。
参阅图6,图6是本申请提供的存储装置一实施例的结构示意图,本实施例的存储装置60包括控制单元61和存储单元62,控制单元61与存储单元62耦接,其中,存储单元62用于存储控制单元61执行的计算机程序,控制单元61用于执行计算机程序以实现如下方法步骤:
接收固件激活指令,以进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活;接收复位指令以进行存储装置复位;在存储装置固件升级完成后,建立与控制设备的通信连接。
需要说明的是,本实施例的存储装置60是基于上述任一方法实施例的一实体终端,其实施原理和步骤类似,在此不再赘述。因此,计算机程序在被控制单元61执行时,还可以实现上述任一实施例中的其他方法步骤,在此不再赘述。
参阅图7,图7是本申请提供的计算机可读存储介质一实施例的结构示意图,本实施例的计算机可读存储介质70用于存储计算机程序71,计算机程序71在被控制单元执行时,用以实现如下方法步骤:
向存储装置发送固件激活指令,以使存储装置进行激活前准备,并在准备完成后向控制设备反馈应答信息,应答信息用于表示存储装置将在下一次复位时对新固件进行激活;在接收到应答信息后,向存储装置发送复位指令,以使存储装置复位;在存储装置固件升级完成后,建立与存储装置的通信连接。
需要说明的是,本实施例的计算机程序71所执行的方法步骤是基于上述方法实施例的,其实施原理和步骤类似。因此,计算机程序71在被控制单元执行时,还可以实现上述任一实施例中的其他方法步骤,在此不再赘述。
本申请的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是根据本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (15)
1.一种存储装置的固件升级方法,其特征在于,所述方法应用于控制设备,所述方法包括:
向存储装置发送固件激活指令,以使所述存储装置进行激活前准备,并在准备完成后向所述控制设备反馈应答信息,所述应答信息用于表示所述存储装置将在下一次复位时对新固件进行激活;
在接收到所述应答信息后,向所述存储装置发送复位指令,以使所述存储装置复位;
在所述存储装置固件升级完成后,建立与所述存储装置的通信连接。
2.根据权利要求1所述的方法,其特征在于,
所述向存储装置发送固件激活指令之前,还包括:
向所述存储装置发送所述新固件,以使所述存储装置存储所述新固件。
3.根据权利要求1所述的方法,其特征在于,
所述在接收到所述应答信息后,向所述存储装置发送复位指令,以使所述存储装置复位,包括:
在接收到所述应答信息后,将所述存储装置的控制器配置寄存器的使能字段清0,以使所述存储装置复位并将所述存储装置的控制器状态寄存器的准备字段清0;其中,所述应答信息在完成命令队列的状态域中进行反馈;
将所述存储装置的控制器配置寄存器的使能字段置1,以使所述存储装置加载所述新固件。
4.根据权利要求3所述的方法,其特征在于,
所述将所述存储装置的控制器配置寄存器的使能字段清0,以使所述存储装置复位并将所述存储装置的控制器状态寄存器的准备字段清0之后,还包括:
暂停与所述存储装置的通信。
5.根据权利要求1所述的方法,其特征在于,
所述在所述存储装置固件升级完成后,建立与所述存储装置的通信连接,包括:
在检测到所述存储装置的控制器状态寄存器的准备字段置1时,建立与所述存储装置的通信连接;其中,所述存储装置在所述新固件初始化操作完成后将所述存储装置的控制器状态寄存器的准备字段置1。
6.根据权利要求5所述的方法,其特征在于,
所述建立与所述存储装置的通信连接,包括:
发送管理命令以重新创建读写通信队列,建立与所述存储装置的通信连接。
7.根据权利要求5所述的方法,其特征在于,
所述初始化操作的次数小于两次。
8.一种控制设备,其特征在于,包括控制单元以及存储单元,其中,所述存储单元用于存储计算机程序,所述计算机程序在被所述控制单元执行时,用于实现如权利要求1-7任一项所述的存储装置的固件升级方法。
9.一种存储装置的固件升级方法,其特征在于,所述方法应用于存储装置,所述方法包括:
接收固件激活指令,以进行激活前准备,并在准备完成后向控制设备反馈应答信息,所述应答信息用于表示所述存储装置将在下一次复位时对新固件进行激活;
接收复位指令以进行所述存储装置复位;
在所述存储装置固件升级完成后,建立与所述控制设备的通信连接。
10.根据权利要求9所述的方法,其特征在于,
所述接收固件激活指令之前,还包括:
接收并存储所述新固件。
11.根据权利要求9所述的方法,其特征在于,
所述接收复位指令以进行所述存储装置复位,包括:
接收复位指令,将控制器配置寄存器的使能字段清0以进行所述存储装置复位,并将控制器状态寄存器的准备字段清0;
将所述控制器配置寄存器的使能字段置1,以加载所述新固件。
12.根据权利要求9所述的方法,其特征在于,
所述在所述存储装置固件升级完成后,建立与所述控制设备的通信连接,包括:
将所述控制器状态寄存器的准备字段置1,并建立与所述控制设备的通信连接;其中,所述存储装置在所述新固件初始化操作完成后将所述控制器状态寄存器的准备字段置1。
13.根据权利要求12所述的方法,其特征在于,
将所述控制器状态寄存器的准备字段清0与将所述控制器状态寄存器的准备字段置1之间的时间差,小于控制器功能寄存器上报的超时时间。
14.根据权利要求9所述的方法,其特征在于,
所述应答信息在完成队列命令的状态域中进行反馈。
15.一种存储装置,其特征在于,包括控制单元以及存储单元,其中,所述存储单元用于存储计算机程序,所述计算机程序在被所述控制单元执行时,用于实现如权利要求9-14任一项所述的存储装置的固件升级方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011289132.2A CN112540785A (zh) | 2020-11-17 | 2020-11-17 | 一种存储装置的固件升级方法、控制设备及存储装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011289132.2A CN112540785A (zh) | 2020-11-17 | 2020-11-17 | 一种存储装置的固件升级方法、控制设备及存储装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112540785A true CN112540785A (zh) | 2021-03-23 |
Family
ID=75014189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011289132.2A Pending CN112540785A (zh) | 2020-11-17 | 2020-11-17 | 一种存储装置的固件升级方法、控制设备及存储装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540785A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080473A (zh) * | 2022-06-29 | 2022-09-20 | 海光信息技术股份有限公司 | 一种多芯片互连系统及基于其的安全启动方法 |
CN115794173A (zh) * | 2023-01-09 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 固态硬盘的在线升级方法、装置、电子设备及存储介质 |
CN116932009A (zh) * | 2023-09-13 | 2023-10-24 | 合肥康芯威存储技术有限公司 | 一种存储器件的现场固件升级方法、装置及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015051647A1 (zh) * | 2013-10-10 | 2015-04-16 | 中兴通讯股份有限公司 | 一种固件的升级方法和系统、上位机和光模块 |
CN108170368A (zh) * | 2016-12-07 | 2018-06-15 | 北京忆恒创源科技有限公司 | 在线升级固件的方法及系统 |
CN108762797A (zh) * | 2018-05-30 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种ssd固件在线更新方法、系统及ssd |
-
2020
- 2020-11-17 CN CN202011289132.2A patent/CN112540785A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015051647A1 (zh) * | 2013-10-10 | 2015-04-16 | 中兴通讯股份有限公司 | 一种固件的升级方法和系统、上位机和光模块 |
CN108170368A (zh) * | 2016-12-07 | 2018-06-15 | 北京忆恒创源科技有限公司 | 在线升级固件的方法及系统 |
CN108762797A (zh) * | 2018-05-30 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种ssd固件在线更新方法、系统及ssd |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080473A (zh) * | 2022-06-29 | 2022-09-20 | 海光信息技术股份有限公司 | 一种多芯片互连系统及基于其的安全启动方法 |
CN115080473B (zh) * | 2022-06-29 | 2023-11-21 | 海光信息技术股份有限公司 | 一种多芯片互连系统及基于其的安全启动方法 |
CN115794173A (zh) * | 2023-01-09 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 固态硬盘的在线升级方法、装置、电子设备及存储介质 |
CN116932009A (zh) * | 2023-09-13 | 2023-10-24 | 合肥康芯威存储技术有限公司 | 一种存储器件的现场固件升级方法、装置及介质 |
CN116932009B (zh) * | 2023-09-13 | 2024-01-23 | 合肥康芯威存储技术有限公司 | 一种存储器件的现场固件升级方法、装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112540785A (zh) | 一种存储装置的固件升级方法、控制设备及存储装置 | |
US10353779B2 (en) | Systems and methods for detection of firmware image corruption and initiation of recovery | |
US7043664B1 (en) | Firmware recovery | |
US9563442B2 (en) | Baseboard management controller and method of loading firmware | |
US8185759B1 (en) | Methods and systems for interfacing bus powered devices with host devices providing limited power levels | |
US20070006021A1 (en) | Reliability of diskless network-bootable computers using non-volatile memory cache | |
US9063816B2 (en) | Method and apparatus for updating firmware on a storage device | |
JP6067771B2 (ja) | ネットワークインターフェースコントローラ情報の帯域外取得 | |
TWI778811B (zh) | 升級方法,電腦系統和遠端升級設備 | |
US8996730B1 (en) | System and method to restore maximum payload size in a network adapter | |
TW201933093A (zh) | 電子裝置與其韌體更新方法 | |
EP2798428B1 (en) | Apparatus and method for managing operation of a mobile device | |
WO2021136200A1 (zh) | 引导程序的加载方法、存储介质及嵌入式终端 | |
WO2012100498A1 (zh) | 一种usb设备的端口切换方法和系统 | |
CN104503814A (zh) | 一种usb3.0数据采集模块自动下载固件程序的方法 | |
CN107145198B (zh) | 一种提升服务器对硬盘兼容能力的方法及其主板 | |
WO2022104530A1 (zh) | 一种存储装置的固件升级方法、控制设备及存储装置 | |
CN108153548A (zh) | 一种emmc固件升级方法和装置 | |
TWI764454B (zh) | 韌體損壞恢復技術 | |
JP2015060411A (ja) | 情報処理装置のファームウェア更新方法 | |
CN115794153A (zh) | 一种固件升级方法及相关设备 | |
EP2562649B1 (en) | Method for repairing communication abnormality between data card and host | |
CN115407941A (zh) | 一种vmd功能启动方法及其相关组件 | |
CN117931246B (zh) | 一种升级ec固件的方法、装置、电子设备及存储介质 | |
CN116450224A (zh) | 基于清除cmos的数据的恢复方法及装置、系统 |
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 |