CN114741094A - 一种固件更新方法、设备及数据系统 - Google Patents
一种固件更新方法、设备及数据系统 Download PDFInfo
- Publication number
- CN114741094A CN114741094A CN202210153211.3A CN202210153211A CN114741094A CN 114741094 A CN114741094 A CN 114741094A CN 202210153211 A CN202210153211 A CN 202210153211A CN 114741094 A CN114741094 A CN 114741094A
- Authority
- CN
- China
- Prior art keywords
- firmware
- pci
- configuration space
- capability
- memory
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
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)
- Stored Programmes (AREA)
Abstract
本发明实施例公开一种固件更新方法、设备及数据系统。其中,所述固件更新方法应用于第一设备,所述第一设备包含用于为所述第一设备配置功能的至少一个PCI配置空间,方法具体包括:在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;基于所述固件更新能力更新第一固件到所述第一设备。
Description
技术领域
本发明涉及存储器技术领域,尤其涉及一种固件更新方法、设备及数据系统。
背景技术
存储器领域,存储器系统中可以设置一个或者多个通信接口与主机中的一个或者多个组件进行通信,目前应用比较广泛的接口可以为外部设备互联扩展(PCIe,PeripheralComponent Interconnect express)接口。随着PCIe接口功能的不断完善,存储器系统中对应的固件(Firmware)也需对应的升级。然而,目前使用的升级方式受限于厂商提供的工具,实现固件升级比较复杂,不利于实际测试及运维人员的使用。
发明内容
有鉴于此,本发明实施例提供一种固件更新方法、设备及数据系统,提供一种方便快捷地固件更新方式,以在无需驱动工具的情况下方便快捷地实现PCIe类型的设备中固件的升级。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面,本发明提供一种固件更新方法,应用于具有至少一个外部设备互联PCI配置空间的第一设备,所述方法包括:
在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;
基于所述固件更新能力更新第一固件到所述第一设备。
第二方面,本发明还提供一种第一设备,所述第一设备包含处理器和至少一个外部设备互联PCI配置空间,其中;
所述处理器被配置为:在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;基于所述固件更新能力更新第一固件到所述第一设备。
第三方面,本发明实施例还提供一种数据系统,
所述数据系统包含主机和第一设备;其中,所述第一设备包含至少一个外部设备互联PCI配置空间,通过以下接口至少之一:PCI接口、PCI-X接口、PCIe接口与所述主机进行通信;
所述主机,向所述第一设备发送配置请求;
所述第一设备,通过第一接口接收所述配置请求,并基于所述配置请求在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;所述第一接口为PCI接口、PCI-X接口、PCIe接口之一;
所述主机,向所述第一设备发送包含与第一固件相关的数据的一个或多个写入命令;
所述第一设备,通过所述第一接口接收所述一个或多个写入命令,并将所述与所述第一固件相关的数据写入所述固件更新能力对应的第一数据结构相应的位置;在接收到更新命令,基于所述更新命令更新所述第一固件到所述第一设备。
本发明实施例提供一种固件更新方法、设备及数据系统。其中,所述固件更新方法应用于具有至少一个PCI配置空间的第一设备,方法包括:在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;基于所述固件更新能力更新第一固件到所述第一设备。本发明提供的固件更新方法及设备,通过在第一设备的PCI配置空间定义新的固件更新能力,以此固件更新能力实现第一固件的更新,能够在无需驱动工具的情况下方便快捷地实现固件的升级,而且对于具有PCI配置空间的不同类型设备均可以采用本发明提供的固件更新方法,具有一定的普适性。
附图说明
在不一定按比例绘制的附图中,相同的标号可以描述不同视图中的类似组件。具有不同字母后缀的相同数字可表示类似组件的不同实例。附图以实例而非限制的方式一般性地说明了本文档中讨论的各种实施例。
图1为本发明实施例提供的数据系统的结构示意图;
图2为本发明实施例提供的存储器件的结构示意图;
图3为本发明实施例提供的单块三维存储器阵列的一个实例性方案的一部分的透视图;
图4为本发明实施例提供的存储单元的阵列结构示意图;
图5A至图5C为本发明实施例提供的具有PCIe接口的数据系统的通信拓扑结构示意图;
图6为本发明实施例提供的具有PCIe接口的分层结构示意图;
图7A和图7B为本发明实施例提供的配置空间的示意图;
图8为本发明实施例提供的固件更新方法的流程示意图;
图9本发明实施例提供的配置空间中各种能力之间的关系示意图一;
图10为本发明实施例提供的配置空间中各种能力之间的关系示意图二;
图11为本发明实施例提供的对第一设备进行固件更新流程示意图一;
图12为本发明实施例提供的对第一设备进行固件更新流程示意图二;
图13为本发明实施例提供的第一设备的结构示意图。
具体实施方式
以下参照附图更详细地描述本发明的各个实施例。可以通过不同地配置或布置本发明实施例中的元件和特征以形成可作为任何所公开的实施例的变形的其它实施例。因此,本发明实施例不限于在本文中阐述的实施例。相反,提供所描述的实施例以使得本发明实施例是彻底和完整的,并且将本发明实施例的范围充分传达给本发明实施例所属技术领域的技术人员。应当注意的是,对“实施例”、“另一实施例”等的引用不一定表示仅一个实施例,并且对任何这样的短语的不同引用不一定针对相同的实施例。应当理解的是,尽管在本文中可以使用术语“第一”、“第二”、“第三”等来标识各种元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另一个具有相同或者相似名称的元件区分开。因此,在不脱离本发明实施例的精神和范围的情况下,在一个实施例中的第一元件在另一实施例中也可以称为第二或三元件。
附图不一定按照比例绘制,并且在某些情况下,可以放大比例以清楚地示出实施例的特征。当元件称为连接或联接至另一个元件时,应该理解的是,前者可以直接连接或联接后者,或者可以经由二者之间的一个或多个中间元件电连接或电联接至后者。此外,还应当理解的是,当元件被称为在两元件“之间”时,该元件可以是两个元件之间唯一元件,或者也可以存在一个或多个中间元件。
在本文中所使用术语仅出于描述特定实施例的目的,并且不旨在限制本发明。如本文中所使用的单数形式旨在包括复数形式,除非上下文另外明确指出。除非另外说明或者从上下文可以清楚地理解为单数形式,否者在本发明实施例和所附权利要求书中使用的冠词“一”和/或“一个”统称应该解释为表示“一个或多个”。应当进一步理解的是,本发明实施例中使用的术语“包括”、“包括有”、“包含”和“包含有”指定存在所述元件并且不排除存在或附加一个或更多其它元件。本发明实施例所使用的术语“和/或”包括一个或者多个相关联的所列项目的任意和所有组合。除非另外定义,否则本发明实施例使用的包括技术和科学技术的所有术语具有与本发明所属领域的普通技术人员鉴于本发明实施例而通常理解的相同含义。应当进一步理解的是,除非本发明实施例明确定义,否则诸如在常用词典中定义的属于应解释为具有与其在本发明实施例和相关技术的环境中的含义一致的含义,而不应以理想化或过于形式化的方式解释。
在以下描述中,阐述了许多具体细节以提供对本发明的透彻理解,可以在没有某些或者所有这些具体细节的情况下实践本发明。在其它情况下,没有详细描述公知的处理结构和/或处理,以免不必要地模糊本发明。还应当理解的是,在某些情况下,除非另外特别之处,否则对相关领域的技术人员显而易见的是,关于一个实施例描述的特征或元件可以被单独使用或者与另一实施例的其它特征或元件组合使用。在下文中,参考附图详细描述本发明的各个实施例。以下描述集中在细节上以促进对本发明的实施例的理解。可能省略了众所周知的技术细节,以免模糊本发明实施例的特征和方面。
本发明实施例涉及一种主机能够方便、快捷的更新存储器系统固件的方法、设备及数据系统。其主要思想可以描述为:在包含存储器系统的设备或者其他设备具有配置空间时,利用配置空间配置固件更新能力,然后利用该固件更新能力将需要新的固件更新到包含存储器系统的设备或者其他设备中。
下面结合附图及具体实施例对本发明实施例作进一步详细的说明。
图1为本发明实施例提供的数据系统的结构示意图。在该数据系统100中可以包括主机101和一个或多个第一设备102;所述主机101通过通信接口与所述一个或多个第一设备102通信。所述一个或多个第一设备102中的部分第一设备可以包含存储器系统200。所述主机101和/或所述存储器系统200可以包含在各种产品,比如,物联网(IoT)器件,如冰箱或者其他设备、传感器、电动机、移动通信器件、汽车、无人驾驶等,用于支持产品的处理、通信或者控制。
存储器系统200可以包括存储器控制器1021和一个或多个存储器件1022,某一存储器件1022,如图2所示,包含多个单独存储器管芯堆叠的存储器阵列1022-1和耦合到存储器阵列1022-1的外围的控制电路1022-2,其中,所述存储器阵列1022-1可以如二维或三维(3D)进行堆叠,比如,二维或三维(3D)的NAND管芯的堆叠,一种可实施结构如图3所示。图3示出本发明实施例提供的单块三维存储器阵列的一个实例性方案的一部分的透视图。
需要说明的是,存储器件1022中的存储器阵列1022-1具有多个存储块,其示例性的结构如图4所示,存储器阵列被分成BLOCK1-BLOCKT具有多个存储块的存储器阵列,其中T为正整数,并且一般为较大的数。每个存储块包含一组NAND串,该一组NAND串被经由位线BL0-BLM-1和一组公共字线WL0-WLN-1访问,其中,M、N均是大于1整数。NAND串的一个端子经由顶部选择栅极SGD(由顶部选择栅极线SGDL控制)连接至对应的位线,另一端经由底部选择栅极SGS(由底部选择栅极线SGSL控制)连接至源极线。每个存储块被分成多个页面。在一些实施例中,存储块是常规的擦除单元,页面是常规的编程的单位。在另一些实施例中,也可以使用擦除、编程的其他单位。在实例中,图4示出的存储器阵列中的存储单元物理结构不限制本发明的范围。
在本发明中,图4示出的存储器阵列可以以3D QLC结构布置,需要说明的是,其他的结构布置不限制本发明的范围。
图3所示的是其中某任一块。参考图3,存储块30包含堆叠在衬底(未示出)之上且平行于衬底表面的多个层,图3示出了四个层上的四个字线(WL),不妨将其记为WL0至WL3。存储块30还布置有多个与字线垂直的通孔。一个字线与一个通孔的交叉点形成一个存储器单元,因此也可以将一个通孔称之为存储器单元串。本领域技术人员应该理解的是,存储块30的字线的数量和存储器单元串的数量不限于特定的值,比如,存储块30可以包括64字线,64个字线与一个存储器单元串交叉形成沿着存储器单元串的64个存储单元。再比如,存储块30包括存储器单元串的数量可以是以十万、百万甚至更大的数量级计算,一个字线上包括其与例如几百万个存储器单元串交叉而形成的几百万个存储器单元。存储块30中的存储器单元可以是单级存储器单元或者多级存储器单元,其中,单级存储器单元可以是能够存储1个比特(bit)的单级单元(SLC);多级存储器单元可以是能够存储2个bit的多级单元(MLC),能够存储3个bit的三级单元(TLC),能够存储4个bit的四级单元(QLC),能够存储5个bit的五级单元(PLC)。如图3所示,存储块30还包括位线(BL)、位线选择器(BLS,也可以称之为顶部选择栅极线SGDL)、源极线(SL)、源极选择线(SLS,也可称之为底部选择栅极线SGSL),这些电路线和字线(WL)一起可以实现对存储块30中任何存储器单元的寻址。
在一些实施例中,如图2所示的存储器件,所述存储器件1022还包括读/写电路、行解码器以及列解码器。在一些实施例中,在存储器阵列1022-1的相对侧上以对称的方式实现各种外围电路对存储器阵列1022-1的访问,以使在每侧上的访问先和电路的密度减少一半。读/写电路包括多个感测块SB,用于对存储器阵列1022-1的页面并行地进行读取或者编程。存储器阵列1022-1可通过字线经由行解码器以及位线经由列解码器寻址。在一些实施例中,存储器阵列1022-1、控制电路1022-2、读/写电路、行解码器以及列解码器可以被制造在芯片上,其中图2的虚线框也可以代表芯片。并且通过信号线1022-3在存储器控制器1021和芯片之间传送。图2还示出了虚设存储区DMX和DMY中布置多个虚设单元、虚设字线和虚设位线(未示出),如图2所示虚设存储器DMX1-DMX2以及DMY1-DMY2沿存储器阵列1022-1的侧面设置,用于存储器系统完成后进行读/写测试。
控制电路1022-2被配置为与读/写电路协作以对存储器阵列1022-1执行存储操作。控制电路包括状态机、片上地址解码器和功率控制模块,其中,状态机被配置为提供存储操作的芯片级控制;片上地址解码器被配置为在主机或存储器系统的控制器使用的地址到行解码器以及列解码器使用的硬件地址之间提供地址接口。功率控制模块被配置为在每次存储操作器件控制提供给字线和位线的功率和电压。
对于存储器阵列来说,在3D架构半导体存储器技术中,堆叠竖直结构,从而增加层、物理页的数目,以此增加存储器系统的密度。在一种实施例中,存储器系统200可以为主机101的离散存储器或存储器组件。在另一些实施例中,存储器系统200还可以为集成电路的一部分,如,芯片上系统(SOC,System on Chip)的一部分。此时,存储器系统200与主机101的一个或多个组件堆叠或以其他方式组装在一起。
在图1的数据系统100中,主机101可以包括主机处理器和主机RAM,其中,所述主机RAM可以包括DRAM、SDRAM或任何其它合适的易失性或者非易失性存储器件。所述存储器系统200上可以设置一个或者多个通信接口,与主机101中的一个或者多个组件进行通信。所说的一个或者多个通信接口可以为串行高级技术附接(SATA)接口、高速外围组件互连(PCIe)接口、PCI接口、PCI-X接口、通用串行总线(USB)接口、通用快闪存储(UFS)接口、eMMCTM接口等等。
其中,PCIe接口是目前比较常用的,其是串行总线,与SATA的单通道不同,PCIe连接可以通过增加通道数扩展带宽,弹性十足。通道越多,速度越快但其成本越高,占用空间越多,更耗电。PCIe接口是从PCI接口技术发展过来的,但比PCI接口、PCI-X接口快,原因在于PCIe在物理传输上,与PCI、PCI-X有着本质的区别:随着数据传输速率要求越来越高,由于总线时钟频率的限制,PCIe的串行传输数据,要比PCI、PCI-X的并行传输数据快。在一些实施例中,在一个数据系统100中,各种具有PCIe接口的设备(后述称之为PCIe设备)可以采用树形拓扑结构来与主机101进行通信,具体如图5A所示,整个各种具有PCIe接口的设备形成的拓扑结构(后述称之为PCIe拓扑结构)可以是一个树形结构。Root Complex(RC)是树的根,它是数据系统100中的主机处理器(可以由CPU实现)的代言,与整个数据系统100的其他部分通信,比如,CPU通过他访问主机RAM(内存),通过RC访问PCIe拓扑结构中的如其他第一设备102等等。RC内部很复杂,总结来说,RC实现的功能可以是一条内部PCIe总线,以及通过若干PCIe bridge扩展出一些PCIe端口(port),具体如图5B所示。
如图5C所示,在PCIe拓扑结构中的Switch扩展了PCIe端口。靠近RC的端口称之为上游端口(Upstream Port),分出来的端口,均称之为下游端口(Downstream Port)。一个Switch只有一个上游端口,可以扩展出若干个下游端口。下游端口可以直接连接终端(EndPoint),比如,PCIe设备;再比如,第一设备102。下游端口还可以连接Switch扩展出更多的端口,比如图5C中的EP1、EP2、EP3等。
在一些实施例中,PCIe设备可以分层实现,如图6所示,其定义了三层:事务层(Transaction Layer)、数据链路层(Data Link Layer)以及物理层(Physical Layer,包括逻辑子模块和电气子模块),每层职能不同,但为上层服务。PCIe的数据传输均是以数据包(Packet)的形式传输的,每层数据包具有固定格式。在一些实施例中,PCIe拓扑结构中的每一个Endpoint和每一个Switch均需实现前述三层。
在PCIe拓扑结构中,每一个PCIe设备(比如前述的Endpoint和Switch)都有这样一段空间,主机101可以通过读取该空间获得与其耦合的PCIe设备的一些信息,也可以通过该空间配置与其耦合的PCIe设备,这段空间可以称之为PCIe的配置空间,也即本发明实施例所说的PCI配置空间的一种具体实现形式。该配置空间是协议规定好的,哪个地方放置什么内容,都是有定义的。该配置空间在PCI和PCI-X时代就有,其结构可以如图7A所示。进入到PCIe时代后,其结构可以图7B所示。整个配置空间可以是一系列的寄存器的集合,由两部分组成:64-Byte的Header和192-Byte的能力(Capability)数据结构(PCI和PCI-X时代的结构);在PCIe时代,配置空间的结构,除上述外还包括:3840-Byte的Capability数据结构。其中,Capability可以是指这个PCIe设备在某一功能(Function)下所具有的能力。具体具有什么能力可以通过在64-Byte的Header配置。
在一些实施例中,每一个PCIe设备至少都有一个配置空间,因一个PCIe设备可能具有多个功能,比如,既能当硬盘又能当网卡,每一个功能对应一个配置空间。在另一些实施例中,每一个功能对应的配置空间可以包含一个或多个Capability。
图1中的数据系统100,其工作原理如下:存储器控制器1021可从主机101接收指令,与所述存储器件1022进行通信,如存储器控制器1021通过执行写入或者擦除指令将数据传送到所述存储器件1022中的一个或多个存储器单元、平面、子块、块或页中;或者存储器控制器1021通过执行读取指令将数据传送给主机101。在硬件上,所述存储器控制器1021可包括一或多个控制器单元、电路或组件,被配置为控制跨越所述存储器件1022的访问且提供主机101与所述存储器系统200之间的转换层。存储器控制器1021还可包括一个或多个输入/输出(I/O)电路、线或接口以将数据传送到所述存储器件1022,或者从所述存储器件1022中传输数据。存储器控制器1021还可包括存储器管理单元和阵列控制单元。
所述存储器管理单元可包括电路硬件或固件,比如与各种存储器管理功能相关联的多个组件或集成电路。为了描述本发明的技术方案,将NAND存储器为例进行上下文描述实例存储器操作或管理功能。本领域技术人员应该知道,其他形式的非易失性存储器可具有类似的存储器操作或管理功能。其中,NAND存储器的管理功能可包括磨损均衡,如垃圾收集或回收、错误检测或纠错、块引退或者一个或多个其它存储器管理功能。所述存储器管理单元可将主机101的指令处理成所述存储器系统200可识别的命令,比如,将从主机101接收到的指令解析或者格式化成与所述存储器件1022的操作相关的命令等;或者所述存储器管理单元还可生成用于所述阵列控制单元或者所述存储器系统200的一个或多个其他组件的器件命令,如,实现各种存储器管理功能的命令。
所述存储器管理单元可被配置为包含一组管理表,该一组管理表用于维护与所述存储器系统200的一个或多个组件关联的各种信息,如,与耦合到所述存储器控制器1021的存储器阵列,或者一个或多个存储器单元相关的各种信息,比如,所述管理表可包含耦合到存储器控制器1021上的存储器单元一个或多个块的块年龄、块擦除计数、错误历史或一个或多个错误计数等信息。其中,错误计数可以包括操作错误计数、读位错误计数等。在一些实施例中,在检测到的错误计数高于一定阈值的情况下,位错误则是不可纠正的位错误。在一些实施例中,管理表可维护可校正或不可校正位错误的计数等。
管理表还可以包含一个或多个L2P表,其包含一个或多个使用逻辑地址与所述存储器件1022的存储器阵列处对的物理地址相关联的L2P指针。在一些实施例中,管理表可以包含未加密L2P表和/或加密L2P表。未加密L2P表可以包括指示未加密逻辑地址和未加密物理地址的L2P指针;加密L2P表可以包含加密物理地址和未加密逻辑地址的加密L2P指针。在实际应用过程中,所述管理表可以在所述存储器管理单元处示出,也即所述管理表可以存储在存储器控制器1021的RAM。在另一些实施例中,所述管理表还可以存储在所述存储器件1022中的存储器阵列中。在使用时,所述存储器管理单元可从存储器控制器1021的RAM读取缓存的部分或全部管理表;也可以从所述存储器件1022中的存储器阵列读取所述管理表。
所述阵列控制单元可以包含电路系统或组件,被配置成控制完成以下相关的存储器操作,比如,所述阵列控制单元控制将数据写入到耦合在所述存储器控制器1021的存储器系统200中的一个或多个存储器单元,从所述一个或多个存储器单元读取数据,或擦除所述一个或多个存储器单元。所述阵列控制单元可接收到所述主机101发送的命令,或所述存储器管理单元内部生成的主机命令,主机命令可以为与耗损均衡、错误检测或校正等关联的命令。
所述阵列控制单元还可包括错误校正码(ECC)组件,其可包含用于检测或校正与以下相关错误的ECC引擎或其他电路系统,其中相关错误可以为将数据写入到耦合在所述存储器控制器1021的存储器系统200中的一个或多个存储器单元或从所述一个或多个存储器单元读取数据过程中可能出现的错误。存储器控制器1021被配置为有效检测与各种操作或数据存储相关的错误事件,所说错误事件,比如,位错误、操作错误等等,并从所述错误事件中恢复,同时维持在主机101与存储器系统200之间传输数据的完整性,或者维持所存储数据的完整性,比如可以使用冗余RAID存储等,可以移除,如引退发生故障的存储器资源,如,存储器单元、存储器阵列、页、块等,用于防止未来的错误。
在图1的数据系统100中,存储器控制器1021还包括加解密单元,所说的加解密单元被配置为对数据执行密码操作,如本发明描述的对未加密物理地址进行加密,以及对加密物理地址进行解密。在一些实施例中,加解密单元可用硬件、软件或者软硬件结合的方式组合实现,比如,加解密单元可以包含在存储器控制器1021的处理器或者类似硬件组件处执行的指令。在一些实施例中,加解密单元可以包括用于执行密码操作的转用硬件。
所述存储器件1022中的存储器阵列可以包括例如布置在一或多个器件、一或多个平面、一或多个子块、一或多个块、一或多个页等中的若干存储器单元。作为一个实例,48GBTLC NAND存储器系统可以包括每页18592字节(B)的数据(16384+2208字节)、每块1536页、每平面548块、以及每器件4个或更多个平面。作为另一实例,32GB MLC存储器系统(每单元存储两位数据(即,4个可编程状态))可以包括每页18592字节(B)的数据(16384+2208字节)、每块1024页、每平面548块和每器件4个平面,但与对应的TLC存储系统相比,所需的写入时间减少了一半,编程/擦除(P/E)周期增加了两倍。其它实例可以包括其它数目或布置。在一些实例中,存储器系统或其一部分可选择性地以SLC模式或以需要的MLC模式(例如TLC、QLC等)操作。
所述存储器件1022中的存储器阵列包括一或多个物理地址位置。物理地址位置是所述存储器件1022中的存储器阵列上与物理地址唯一地相关联的位置。在操作中,数据通常以页为单位写入存储器系统200或从其读取,且以块为单位擦除。然而,可根据需要对较大或较小组的存储器单元执行一或多个存储器操作(例如,读取、写入、擦除等)。因此,在一些实例中,物理地址位置包括多于或少于一页。存储器系统200的数据传送大小通常被称作页,而主机的数据传送大小通常被称作扇区。
尽管一页数据可以包括数个字节的用户数据(例如,包括数个数据扇区的数据有效负载)及其对应元数据,但所述页的大小通常仅指用于存储用户数据的字节的数目。作为实例,页大小为4KB的数据页可以包括4KB用户数据(例如,呈现扇区大小为512B的8个扇区)以及与用户数据相对应的数个字节(例如,32B、54B、224B等)的元数据,诸如完整性数据(例如,错误检测或修正代码数据)、地址数据(例如,逻辑地址数据等)或与用户数据相关联的其它元数据。用于存储元数据等的物理地址位置可以被称为超供应物理地址位置。
不同类型的存储器单元或所述存储器件1022可以提供不同的页大小,或者可能需要与其关联的不同数量的元数据。例如,不同的存储器系统类型可具有不同的位错误率,其可导致确保数据页的完整性所必需的不同量的元数据(例如,具有较高位错误率的存储器系统可比具有较低位错误率的存储器系统需要更多字节的错误校正码数据)。例如,多级单元(MLC)NAND快闪器件可具有比对应单级单元(SLC)NAND快闪器件高的位错误率。因而,MLC器件可以比对应的SLC器件需要更多的元数据字节用于错误数据。
图1示出的数据系统100中的第一设备102在开发使用中经常需要更新固件。在实际使用过程中,第一设备102可能是不同类型的PCIe设备,如前述的硬盘、网卡等等;根据第一设备在PCIe拓扑结构中所处位置不同,第一设备102还有可能是Endpoint、Switch等等;第一设备也可能是不同开发商提供给的PCIe设备。本领域技术人员应该知道的是,不同类型的PCIe设备具有自己定义的固件更新方式以及可能需要应用不同的驱动工具完成固件更新。在一些实施例中,PCIe设备的固件更新方式可以包括:第一种,带内更新,在存储的空间内,由调试员通过电脑配置,比如,非易失性内存主机控制器接口规范(NVMHCIS,NonVolatile Memory Host Controller Interface Specification),或简称NVM Express(NVMe)类型的PCIe设备,其可以通过NVMe标准中的命令(Command)、供应商特有的(VU,Vender Unique)等方式更新设备中的固件。第二种,带外更新,利用PCIe设备的外部接口从主机上获取要更新的固件,这些接口比如系统管理总线(SMBus,System Management Bus)接口,再比如通用异步收发传输器(UART,Universal Asynchronous Receiver/Transmitter)接口,通过将主机与PCIe设备中的印制电路板(PCB,Printed Circ uitBoard)上的Boot引脚连接,将主机上获取要更新的固件传输给PCIe设备,以实现PCIe设备的固件更新。第三种,采用调试仪器,比如,联合测试工作组(JTAG,Joint Test ActionGroup)一种国际标准测试协议,主要用于芯片内部测试;再比如,增强型联合测试工作组(EJTAG,Enhanced Joint Test Action Group)一种在JTAG基础上扩展而定的规范,为一种硬件/软件子系统,在处理器内部实现一套基于硬件的调试特性,用于支持片上调试。
上述三种固件更新方式中,对于带内更新方式,带内更新操作的前提是保证数据系统100的应用层协议的可用。本领域技术人员应该知道的是,不同的PCIe设备对应的应用层可能不一样,那么,对于设备固件更新时,所使用的方式和驱动工具也是各种各样的,比如,NVMe类型的PCIe设备、网卡(Ethernet Card)类型的PCIe设备、图像处理单元(GPU,Graphics Processing Unit)类型的PCIe设备等固件更新的方式都是不一样的。这就解释了,在某种类型的PCIe设备(如,NVMe协议下的固态硬盘(SSD,Solid State Disk))在固件更新之前,需要将NVMe SSD设置在只读存储器(ROM,Read-Only Memory)模式,并且在该ROM模式下,会运行一个协议栈去为固件更新作准备。在这种ROM模式下,不同PCIe设备对应不同的应用层协议,会需要不同的驱动,进而需要与驱动相匹配的工具以配合驱动完成对PCIe设备的固件更新。上述三种固件更新方式,面对不同的PCIe设备,固件更新繁琐、成本较高,不具有普适性。
基于此,为了解决上述技术问题,如图8所示,其示出本发明实施例提供一种固件更新方法的流程示意图。在图8中,所述方法应用于具有至少一个PCI配置空间的某一第一设备,具体方法流程可以包括:
S801:在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;
S802:基于所述固件更新能力更新第一固件到所述第一设备。
需要说明的是,这里所说的第一设备可以为前述描述的具有PCIe接口、PCI接口、PCI-X接口至少之一任何设备。由于现已经进入PCIe时代,在没有特别说明的情况下,本发明所描述的以下实施例均是以第一设备为具有PCIe接口的各种设备为例来说明本发明的构思。
这里,基于前述对PCIe设备的描述,第一设备可以对应一个或多个功能,每一个功能对应一个配置空间,每一个功能又可以对应一个或多种Capabilitiy,因此,第一设备可以具有至少一个用于为自身配置功能的配置空间。对于某一功能对应的配置空间中各种Capability与Header之间的关联关系可以如图9所示。在图9中仅以具有三种能力为例进行说明,其中,Header、Capability_1、Capability_2、Capability_3依次连接形成链表。
作为一种可选的实施方式,对于S801来说可以包括:
在所述第一PCI配置空间定义所述固件更新能力对应的第一数据结构;
基于所述第一数据结构将所述固件更新能力添加到第一能力链表,形成第二能力链表,使得所述第一PCI配置空间中配置有所述固件更新能力;其中,所述第一能力链表为所述第一PCI配置空间中已有能力形成的链表。
这里,所述第一PCI配置空间为所述至少一个PCI配置空间之一。在一些实施例中,若所述第一设备具有多个功能时,所述第一PCI配置空间依据用户需要更新所述第一设备中的特定功能而定,比如,若所述第一设备具有前述的硬盘和网卡功能,若用户想要对硬盘功能的固件进行更新,那么,所述第一PCI配置空间就应该选择硬盘功能对应的配置空间。也就是,这里描述的是,在所述第一设备中的第一PCI配置空间中已经能够实现的能力链表中添加自定义的新能力,以形成新的能力链表,以使所述第一设备能够实现新的能力。在所述新的能力是本发明实施例所描述的固件更新能力时,一种可选的配置流程具体来讲可以包括以下几步:
首先,在所述第一PCI配置空间中定义所述固件更新能力对应的第一数据结构。一种可选的第一数据结构如下表1所示。该第一数据结构可以包括基本信息域、命令信息域、回执信息域和数据信息域,其中,所述基本信息域可以包括指针信息、该固件更新能力所属类型的标识信息、第一数据结构的长度信息、该固件更新能力的版本信息以及该固件更新能力在所属类型下的身份(Identity)标识信息等等。
表1
基本信息域 | 命令信息域 | 回执信息域 | 数据信息域 |
在一些实施例中,所述指针信息用于指向下一能力,用于表明所述固件更新能力在能力链表中所处位置。
在一些实施例中,该固件更新能力所属类型可以包括两种类型:一类可以为标准协议能力;一类为扩展能力。标准协议能力为协议中规定的能力;扩展能力为根据不同的功能、设备或开发商而扩展的在标准协议能力之外的能力。
在一些实施例中,所述类型标识信息就可以用于表明所述固件更新能力是为所述第一设备中扩展功能,还是为所述第一设备中的标准协议能力,比如,若标识0xB表示为开发商提供的扩展功能,那么,在所述固件更新能力的第一数据结构中所属类型的标识信息就为0xB。
在一些实施例中,在一个设备中,属于相同类型的能力可能会包含多于一个,比如,第一设备中属于扩展能力有三个,对于如何区分这三种能力呢,也就是依据这个身份(Identity)标识信息进行区分。该Identity标识信息可以是字符、数字等任何主机能够识别的标识。
在一些实施例中,命令信息域、回执信息域和数据信息域分别可以是固件更新能力中放置主机与第一设备交互的一些命令、这些命令执行情况的回执以及数据相关的信息。其中,所述命令可以是指本发明实施例中实现固件更新的一些命令,比如数据写入命令、更新命令等。所述数据相关的信息可以包括第一固件、第一固件的长度以及放置所述第一固件地址的偏移等。需要说明的是,由于前述已经描述,配置空间可以由一系列的寄存器实现,那么,这里第一数据结构中的命令信息域、回执信息域和数据信息域中的信息可以是缓存在相应的寄存器中的。在一些实施例中,所述数据信息域还可以划分为:偏移子域、数据子域、长度子域,分别用于放置第一固件的数据地址偏移、第一固件以及第一固件的数据长度。
其次,获得已有能力和已有能力形成的第一能力链表,所述第一能力链表为所述第一PCI配置空间中已有能力形成的链表。
然后,基于所述第一数据结构将所述固件更新能力添加到第一能力链表,形成第二能力链表,一种做法可以是将第一能力链表中的处于最后的一个能力的指针信息设置成指向所述固件更新能力,以此使得所述第一PCI配置空间中配置有所述固件更新能力。也可以根据需要添加到第一能力链表中任两个能力之间,也即根据需要重新构建第二能力链表。
举例来说,如前图9所示的PCIe设备的某一配置空间已经配置有三种能力,在该配置空间中配置固件更新能力,配置后PCIe设备中该配置空间的各种能力之间的关联关系如图10所示。其中,Header、Capability_1、Capability_2、Capability_3、固件更新能力(FWupdate Capability)依次连接形成链表,也即第二能力链表。
基于前述配置完成后,所述第一设备具有固件更新能力,在此情况下,在一些实施例中,对于S802,可以包括:
接收包含与所述第一固件相关的数据的一个或多个写入命令;
将所述与所述第一固件相关的数据写入所述第一数据结构相应的位置;
在接收到更新命令,基于所述更新命令更新第一固件到所述第一设备相应的存储区域。
需要说明的是,所述与所述第一固件相关的数据可以包括所述第一固件的长度、所述第一固件本身、放置所述第一固件地址的偏移。这里所说的写入所述第一数据结构相应的位置也即前述的第一数据结构中的数据信息域。在一些实施例中,数据信息域可以由一组寄存器实现。在这种情况下,也就是将与所述第一固件相关的数据写入到相应的寄存器内,以等待更新命令的到来,将所述第一固件更新到所述第一设备的指定位置(存储区域)。也即,后续所述在接收到更新命令,基于所述更新命令更新第一固件到所述第一设备相应的存储区域。
应该知道的是,PCIe类型的设备具有事务层、数据链路层以及物理层三层结构,主机与PCIe类型的设备之间、PCIe类型的设备与PCIe类型的设备之间,数据传输采用的是Packet形式进行,事务层根据上层(软件层或应用层)请求(Request)的类型,目的地址和其他相关属性,把请求打包,产生事务层数据包(TLP,Transaction Layer Packet),然后这些TLP经历数据链路层、物理层最终到达目标设备。对于PCIe类型的设备,其具有不同的空间,内存空间(或者称之为地址空间)、IO空间、配置空间,其中地址空间可以为PCIe类型的设备进行大数据量数据读写用的。对于不同空间的访问,TLP的类型不同。对于配置空间的访问,采用的是Cofiguration TLP;对于内存空间的访问,采用的是Menory TLP;对于IO空间的访问,采用的是IO TLP。本发明实施例提供的固件更新方法是将第一固件写入配置空间定义的固件更新能力中,因此,本发明实施例采用的是Cofiguration TLP将与第一固件相关的数据、更新命令、回执放置到固件更新能力的第一数据结构的相应位置。
需要说明的是,目前,一个TLP最大载重是4KB,数据长度大于4KB的话,就需要分几个TLP传输。也就是说,在所述与所述第一固件相关的数据长度大于4KB时,就需要分几个TLP传输。也即:需要一个或多个写入命令才能将与所述第一固件相关的数据写入到所述固件更新能力对应的存储区域(寄存器)。
需要说明的是,只有全部的与所述第一固件相关的数据传输完成后,主机才会发送更新命令。在所述第一设备接收到更新命令时,基于所述更新命令更新第一固件到所述第一设备相应的存储区域。具体的可以为:在接收到更新命令后,读取前述数据信息域存储的第一固件,将所述第一固件更新到指定的存储区域,比如,存储器阵列或存储器控制器的RAM。
应该理解的是,前述的写入命令或更新命令均是与第一设备耦合的主机通过操作系统发送的,具体来说,主机通过操作系统中的setPCI命令与这个第一设备中的固件更新能力进行交互的,在数据传输过程中,是通过Cofiguration TLP数据包的形式传输到第一设备,换句话说,用户是通过setPCI命令编写前述的写入或更新命令,该写入或更新命令在传输过程中是以Cofiguration TLP数据包的形式达到第一设备的。
在一些实施例中,所述方法还包括:
接收读取命令,基于所述读取命令反馈用于表示所述第一固件更新成功的标识,以指示所述第一固件更新完成。
需要说明的是,这里是在完成更新后,反馈给主机一个指示完成第一固件更新完成的标识,因配置空间的访问通常由主机发起,这里指示所述第一固件更新完成的标识可以是存储在第一数据结构中回执信息域中,由主机读取。
在另一些实施例中,所述方法还包括:
接收携带有激活方式的激活命令;基于所述激活命令中的所述激活方式激活所述第一固件。
需要说明的是,这里激活命令的传输方式与前述相似,这里不再详细描述。所述激活方式可以由用户自己定义,比如,所述激活方式可以为立即激活;还可以为下次PCIe设备上电后激活等等。
为了理解本发明实施例提供的固件更新方法,在固件更新能力配置后,第一设备的固件更新流程具体可以参考图11所示。
在图11中,所述固件更新流程具体如下:
1.主机向PCIe设备发送更新固件:
a.向固件更新能力的第一数据结构的数据信息域中的数据子域写入本次更新的第一固件的数据内容;
b.向数据信息域中的偏移子域写入本次更新的第一固件的数据地址偏移;
c.向数据信息域中的长度子域写入本次更新的第一固件的数据长度;
2.同1,直到所有与第一固件相关的数据更新完成为止;
d.向命令信息域写入更新命令;
e.读取回执域,直到读取到更新命令执行成功为止;
3.向PCIe设备发送激活命令:
f.向数据信息域写入激活方式;
g.向命令域写入激活命令;
h.读取回执域,直到读取到激活命令执行成功为止。
需要说明的是,这里第1步描述的过程也即前述的接收包含与所述第一固件相关的数据的一个或多个写入命令;将所述与所述第一固件相关的数据写入所述第一数据结构相应的位置这一步骤的具体的一种实现流程(步骤a、b、c)。第2步描述的过程也即前述在接收到更新命令,基于所述更新命令更新第一固件到所述第一设备相应的存储区域这一步骤的具体的一种实现流程(步骤d),以及接收读取命令,基于所述读取命令反馈用于表示所述第一固件更新成功的标识,以指示所述第一固件更新完成这一步骤的具体的一种实现流程(步骤e)。第3步描述的过程也即前述的接收携带有激活方式的激活命令;基于所述激活命令中的所述激活方式激活所述第一固件这一步骤的具体的一种实现流程(步骤g、h)。应该理解的是,在一般情况下,第1步在第二2步之前执行,以先完成固件的传输,再实现固件的更新。第3步的执行,并不是紧跟第1、2步执行的,可以在需要的激活的时候再执行。
前述在第一PCI配置空间配置固件更新能力的操作可以仅在PCIe设备执行首次固件更新,后续的固件更新可以直接实现该固件更新能力,为此,在一些实施例中,所述在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力之前,所述方法还包括:
利用自身耦合的主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力。
在一些实施例中,所述利用自身耦合的主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力,可以包括:
接收查看命令;基于所述操作系统执行所述查看命令,获得所述第一设备包含的所述至少一个PCI配置空间的配置信息;基于所述配置信息判断所述第一PCI配置空间中是否配置有所述固件更新能力。
需要说明的是,所说的查看命令可以是指PCIe协议标准中的命令lsPCI,该命令lsPCI是显示数据系统中的所有的PCIe设备的信息,使用lsPCI-x/-xxx/-xxxx命令格式,以x16进制信息显示PCI设备的配置空间;-xxx显示部分读配置空间会crash的设备;-xxxx显示PCI-x2.0或者PCI-e总线扩展的配置空间。在本发明实施例中,利用lsPCI-x/-xxx/-xxxx命令在所述第一设备耦合的操作系统中执行,以显示所述第一设备的配置空间,从而确定所述至少一个PCI配置空间的配置信息,进而基于所述配置信息判断所述第一PCI配置空间中是否配置有所述固件更新能力。所述的操作系统可以为Linux等操作系统。
在一些实施例中,所述方法包括:
在判定所述第一PCI配置空间中未配置有所述固件更新能力,按照前述的方式进行配置;且在配置后,基于所述固件更新能力更新第一固件到所述第一设备。
在一些实施例中,所述方法还包括:
在判定所述第一PCI配置空间中已配置有所述固件更新能力,直接基于所述固件更新能力更新第一固件到所述第一设备。
为了更直观的理解上述描述的内容,可以参考图12所示的固件更新流程示意图。在图12中,所包含的固件更新流程如下:
第一步,数据系统100启动;
这里可以是上电启动。
第二步,系统的操作系统检测第一设备是否有固件更新能力Capability;
这里可以是操作系统在运行时,主机向第一设备发送lsPCI-x/-xxx/-xxxx命令,以显示第一设备的配置空间,从显示的配置空间中查看所述第一设备是否具备固件更新能力;若有,主机则会显示该固件更新能力;若没有则不会显示该固件更新能力。
第三步,用户发现更新固件能力;
这里是指在第一设备有更新固件能力时,用于可以观看到该更新固件能力。
第四步,用户需要时,在没有驱动的情况下更新固件。
需要说明的是,具体的更新步骤前述已经详细描述,这里不再赘述。
第五步,按需要重启第一设备激活新的固件。
需要说明的是,这里描述的是一种可选的激活方式,具体如何激活在前述也已经详细描述,在此不再赘述。
在一些实施例中,所述第一设备包含以下接口至少之一:PCI接口、PCI-X接口、PCIe接口。
需要说明的是,PCI接口、PCI-X接口、PCIe接口类型的设备具有配置空间,因此,所述第一设备包含以下接口至少之一:PCI接口、PCI-X接口、PCIe接。
在一些实施例中,若所述第一设备具有多个功能,若需要每一个功能进行固件更新,需在每一个功能对应的配置空间中配置固件更新能力,以备后续对每一个功能进行固件升级。
本发明实施例提供的固件更新方法,通过在第一设备的配置空间定义新的固件更新能力,以此固件更新能力实现第一固件的更新,能够在无需驱动工具的情况下方便快捷地实现固件的升级,而且对于具有配置空间的不同类型设备均可以采用本发明提供的固件更新方法,具有一定的普适性。
与前述相同的发明构思,如图13示,本发明还提供一种第一设备130,所述第一设备包含处理器1301和至少一个PCI配置空间1302,其中;
所述处理器被配置为:在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;基于所述固件更新能力更新第一固件到所述第一设备。
需要说明的是,这里的处理器是指第一设备中的处理器。与主机处理的类型可以相同,也可以不同。它们是应用在不同结构的处理器。
在一些实施例中,所述在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力,包括:
在所述第一PCI配置空间定义所述固件更新能力对应的第一数据结构;
基于所述第一数据结构将所述固件更新能力添加到第一能力链表,形成第二能力链表,使得所述第一PCI配置空间中配置有所述固件更新能力;
其中,所述第一能力链表为所述第一PCI配置空间中已有能力形成的链表。
在一些实施例中,所述基于所述固件更新能力更新第一固件到所述第一设备,包括:
接收包含与所述第一固件相关的数据的一个或多个写入命令;
将所述与所述第一固件相关的数据写入所述第一数据结构相应的位置;
在接收到更新命令,基于所述更新命令更新第一固件到所述第一设备相应的存储区域。
在一些实施例中,所述处理器还被配置为:接收读取命令,基于所述读取命令反馈用于表示所述第一固件更新成功的标识,以指示所述第一固件更新完成。
在一些实施例中,所述处理器还被配置为:接收携带有激活方式的激活命令;基于所述激活命令中的所述激活方式激活所述第一固件。
在一些实施例中,所述第一设备耦合在某一主机上;在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力之前,所述处理器还被配置为:利用自身耦合的所述主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力。
在一些实施例中,所述利用自身耦合的所述主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力,包括:
接收查看命令;基于所述操作系统执行所述查看命令,获得所述第一设备包含的所述至少一个PCI配置空间的配置信息;基于所述配置信息判断所述第一PCI配置空间中是否配置有所述固件更新能力。
在一些实施例中,所述处理器被配置为:在判定所述第一PCI配置空间中已配置有所述固件更新能力,直接基于所述固件更新能力更新第一固件到所述第一设备。
在一些实施例中,所述第一设备与耦合的主机通信通过以下接口至少之一:PCI接口、PCI-X接口、PCIe接口。
在一些实施例中,所述第一设备为存储终端;或,所述第一设备为转换桥SwitchBridge。
在一些实施例中,所述存储终端包含存储器系统;其中所述存储器系统包括一个或多个存储器件;以及耦合在所述一个或多个存储器件上用于控制所述一个或多个存储器件的存储器控制器。
需要说明的是,存储器控制器为处理器中的一种形式,也即在存储终端中处理器为存储器控制器。
在一些实施例中,所述存储器件包括:存储器阵列,所述存储器阵列包含多个存储块;以及耦合在所述存储器阵列上用于控制所述存储器阵列的控制电路。
在一些实施例中,所述存储器阵列为三维NAND存储器阵列。
需要说明的是,该第一设备与前述的固件更新方法属于同一发明构思,该第一设备在处理固件更新时采用前述的方法,因此这里出现的名词在前述均以详细解释,在此同样适用,不再一一赘述。
基于与前述同样的发明构思,本发明实施例还提供一种数据系统,所述数据系统包含主机和第一设备;其中,所述第一设备包含用于为所述第一设备配置功能的至少一个PCI配置空间,通过以下接口至少之一:PCI接口、PCI-X接口、PCIe接口与所述主机进行通信;
所述主机,向所述第一设备发送配置请求;
所述第一设备,通过第一接口接收所述配置请求,并基于所述配置请求在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;所述第一接口为PCI接口、PCI-X接口、PCIe接口之一;
所述主机向所述第一设备发送包含与第一固件相关的数据的一个或多个写入命令;
所述第一设备,通过所述第一接口接收所述一个或多个写入命令,并将所述与所述第一固件相关的数据写入所述固件更新能力对应的第一数据结构相应的位置;在接收到更新命令,基于所述更新命令更新所述第一固件到所述第一设备。
需要说明的是,这里的配置请求即为前述的TLP格式的数据包。
在一些实施例中,所述主机,向所述第一设备发送携带有激活方式的激活命令;
所述第一设备,通过所述第一接口接收携带有激活方式的激活命令;基于所述激活命令中的所述激活方式激活所述第一固件。
在一些实施例中,所述第一设备为存储终端;或,所述第一设备为转换桥。
在一些实施例中,所述存储终端包含存储器系统;其中所述存储器系统包括一个或多个存储器件;以及耦合在所述一个或多个存储器件上用于控制所述一个或多个存储器件的存储器控制器。
在一些实施例中,所述存储器件包括:存储器阵列,所述存储器阵列包含多个存储块;以及耦合在所述存储器阵列上用于控制所述存储器阵列的控制电路。
在一些实施例中,所述存储器阵列为三维NAND存储器阵列。
需要说明的是,该数据系统包含前述的第一设备,因此,二者具有相同的技术特征,该数据系统中出现的名词在前述的对第一设备的描述中均以详细解释,在此同样适用,不再一一赘述。
以上描述旨在是说明性的,而不是限制性的。例如,上述实例(或其一或多个方面)可以彼此组合使用。可使用其它实施例,诸如所属领域的普通技术人员在阅读以上描述时可使用的。应当理解,它将不用于解释或限制权利要求的范围或含义。此外,在以上详细描述中,可将各种特征组合在一起以简化本发明。这不应当被解释为意味着未经要求保护的公开特征对于任何权利要求是必不可少的。相反,公开主题可在于少于特定公开实施例的所有特征。因此,随附权利要求由此被并入详细说明中,其中每一权利要求独立地作为单独的实施例,并且预期这些实施例可以以各种组合或置换而彼此组合。本发明的范围应当参考随附权利要求以及这些权利要求所赋予的等同物的全部范围来确定。
Claims (20)
1.一种固件更新方法,其特征在于,应用于具有至少一个外部设备互联PCI配置空间的第一设备,所述方法包括:
在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;
基于所述固件更新能力更新第一固件到所述第一设备。
2.根据权利要求1所述的方法,其特征在于,所述在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力,包括:
在所述第一PCI配置空间定义所述固件更新能力对应的第一数据结构;
基于所述第一数据结构将所述固件更新能力添加到第一能力链表,形成第二能力链表,使得所述第一PCI配置空间中配置有所述固件更新能力;其中,所述第一能力链表为所述第一PCI配置空间中已有能力形成的链表。
3.根据权利要求2所述的方法,其特征在于,所述基于所述固件更新能力更新第一固件到所述第一设备,包括:
接收包含与所述第一固件相关的数据的一个或多个写入命令;
将所述与所述第一固件相关的数据写入所述第一数据结构相应的位置;
在接收到更新命令,基于所述更新命令更新第一固件到所述第一设备相应的存储区域。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收读取命令,基于所述读取命令反馈用于表示所述第一固件更新成功的标识,以指示所述第一固件更新完成。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收携带有激活方式的激活命令;基于所述激活命令中的所述激活方式激活所述第一固件。
6.根据权利要求1所述的方法,其特征在于,所述在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力之前,所述方法还包括:
利用自身耦合的主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力。
7.根据权利要求6所述的方法,其特征在于,所述利用自身耦合的主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力,包括:
接收查看命令;基于所述操作系统执行所述查看命令,获得所述第一设备包含的所述至少一个PCI配置空间的配置信息;基于所述配置信息判断所述第一PCI配置空间中是否配置有所述固件更新能力。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在判定所述第一PCI配置空间中已配置有所述固件更新能力,直接基于所述固件更新能力更新第一固件到所述第一设备。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述第一设备包含以下接口至少之一:PCI接口、PCI-X接口、PCIe接口。
10.一种第一设备,其特征在于,所述第一设备包含处理器和至少一个外部设备互联PCI配置空间,其中;
所述处理器被配置为:在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;基于所述固件更新能力更新第一固件到所述第一设备。
11.根据权利要求10所述的第一设备,其特征在于,所述处理器还被配置为:接收携带有激活方式的激活命令;基于所述激活命令中的所述激活方式激活所述第一固件。
12.根据权利要求10所述的第一设备,其特征在于,所述第一设备耦合在某一主机上;在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力之前,所述处理器还被配置为:利用自身耦合的所述主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力。
13.根据权利要求12所述的第一设备,其特征在于,所述利用自身耦合的所述主机中的操作系统检测所述第一PCI配置空间中是否配置有所述固件更新能力,包括:
接收查看命令;基于所述操作系统执行所述查看命令,获得所述第一设备包含的所述至少一个PCI配置空间的配置信息;基于所述配置信息判断所述第一PCI配置空间中是否配置有所述固件更新能力。
14.根据权利要求13所述的第一设备,其特征在于,所述处理器被配置为:在判定所述第一PCI配置空间中已配置有所述固件更新能力,直接基于所述固件更新能力更新第一固件到所述第一设备。
15.根据权利要求10至14任一项所述的第一设备,其特征在于,所述第一设备还包括以下接口至少之一:PCI接口、PCI-X接口、PCIe接口,用于使所述第一设备与耦合的主机通信。
16.根据权利要求15所述的第一设备,其特征在于,所述第一设备为存储终端;或,所述第一设备为转换桥。
17.根据权利要求16所述的第一设备,其特征在于,所述存储终端包含存储器系统;其中所述存储器系统包括一个或多个存储器件;以及耦合在所述一个或多个存储器件上用于控制所述一个或多个存储器件的存储器控制器。
18.根据权利要求17所述的第一设备,其特征在于,所述存储器件包括:存储器阵列,所述存储器阵列包含多个存储块;以及耦合在所述存储器阵列上用于控制所述存储器阵列的控制电路。
19.根据权利要求18所述的第一设备,其特征在于,所述存储器阵列为三维NAND存储器阵列。
20.一种数据系统,其特征在于,所述数据系统包含主机和第一设备;其中,所述第一设备包含至少一个外部设备互联PCI配置空间,通过以下接口至少之一:PCI接口、PCI-X接口、PCIe接口与所述主机进行通信;
所述主机,向所述第一设备发送配置请求;
所述第一设备,通过第一接口接收所述配置请求,并基于所述配置请求在所述至少一个PCI配置空间中的第一PCI配置空间配置固件更新能力;所述第一接口为PCI接口、PCI-X接口、PCIe接口之一;
所述主机,向所述第一设备发送包含与第一固件相关的数据的一个或多个写入命令;
所述第一设备,通过所述第一接口接收所述一个或多个写入命令,并将所述与所述第一固件相关的数据写入所述固件更新能力对应的第一数据结构相应的位置;在接收到更新命令,基于所述更新命令更新所述第一固件到所述第一设备。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153211.3A CN114741094A (zh) | 2022-02-18 | 2022-02-18 | 一种固件更新方法、设备及数据系统 |
TW111149849A TWI844212B (zh) | 2022-02-18 | 2022-12-25 | 韌體更新方法、裝置及資料系統 |
US18/090,241 US20230266963A1 (en) | 2022-02-18 | 2022-12-28 | Firmware updating method, apparatus and data system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153211.3A CN114741094A (zh) | 2022-02-18 | 2022-02-18 | 一种固件更新方法、设备及数据系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114741094A true CN114741094A (zh) | 2022-07-12 |
Family
ID=82275396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210153211.3A Pending CN114741094A (zh) | 2022-02-18 | 2022-02-18 | 一种固件更新方法、设备及数据系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230266963A1 (zh) |
CN (1) | CN114741094A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117707436B (zh) * | 2024-02-05 | 2024-05-03 | 苏州元脑智能科技有限公司 | 固件模式切换方法、装置、电子设备和存储介质 |
-
2022
- 2022-02-18 CN CN202210153211.3A patent/CN114741094A/zh active Pending
- 2022-12-28 US US18/090,241 patent/US20230266963A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230266963A1 (en) | 2023-08-24 |
TW202334807A (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106681931B (zh) | 数据储存设备及其操作方法 | |
CN107168886B (zh) | 数据存储装置及其操作方法 | |
US11532372B2 (en) | Remote SSD debug via host/serial interface and method of executing the same | |
CN108932107B (zh) | 数据存储装置及其操作方法 | |
US11487669B2 (en) | Memory system for storing data of log-structured merge tree structure and data processing system including the same | |
CN109800187B (zh) | 被配置为更新现场可编程门阵列的存储设备及其操作方法 | |
CN102782660A (zh) | 芯片使能的虚拟化 | |
CN113741798A (zh) | 数据存储装置及其操作方法 | |
CN110362423B (zh) | 优化恢复性能的数据存储装置、操作方法以及存储系统 | |
CN110389907B (zh) | 电子装置 | |
CN109582483B (zh) | 数据存储装置及其操作方法 | |
KR20190032104A (ko) | 비휘발성 메모리 장치, 비휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법 | |
KR20190006677A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11782638B2 (en) | Storage device with improved read latency and operating method thereof | |
CN110931075A (zh) | 可重新配置的模拟系统和测试存储装置的固件的方法 | |
US20230266963A1 (en) | Firmware updating method, apparatus and data system | |
KR102474937B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20190060429A (ko) | 메모리 시스템 및 이의 동작 방법 | |
CN112905107A (zh) | 数据存储装置及其操作方法 | |
KR102469098B1 (ko) | 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치 | |
CN111177041A (zh) | 支持新能力的可配置集成电路 | |
US11720276B2 (en) | Memory system and controller for managing write status | |
CN110874335A (zh) | 数据存储装置、其操作方法以及具有该装置的存储系统 | |
CN113515466B (zh) | 用于多内核之间动态逻辑块地址分布的系统和方法 | |
US11281590B2 (en) | Controller, operating method thereof and storage device including the same |
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 |