TWI844212B - 韌體更新方法、裝置及資料系統 - Google Patents
韌體更新方法、裝置及資料系統 Download PDFInfo
- Publication number
- TWI844212B TWI844212B TW111149849A TW111149849A TWI844212B TW I844212 B TWI844212 B TW I844212B TW 111149849 A TW111149849 A TW 111149849A TW 111149849 A TW111149849 A TW 111149849A TW I844212 B TWI844212 B TW I844212B
- Authority
- TW
- Taiwan
- Prior art keywords
- firmware update
- capability
- firmware
- configuration space
- pci
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 230000015654 memory Effects 0.000 claims description 169
- 230000004913 activation Effects 0.000 claims description 37
- 230000003213 activating effect Effects 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 32
- 238000007726 management method Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 10
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 238000012937 correction Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 3
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101000739175 Trichosanthes anguina Seed lectin Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 1
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 1
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 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
-
- 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,Peripheral Component 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配置空間的不同類型裝置均可以採用本發明提供的韌體更新方法,具有一定的普適性。
30:儲存塊
100:資料系統
101:主機
102:第一裝置
130:第一裝置
200:記憶體系統
1021:記憶體控制器
1022:記憶體裝置
1022-1:記憶體陣列
1022-2:控制電路
1022-3:訊號線
1301:處理器
1302:PCI配置空間
S801、S802:步驟
BL0~BLM-1:位元線
SGDL:頂部選擇閘線
WL0~WLN-1:字元線
在不一定按比例繪製的圖式中,相同的元件符號可以描述不同視圖中的類似組件。具有不同字母後綴的相同數字可表示類似組件的不同實例。圖式以實例而非限制的方式一般性地說明了本文檔中討論的各種實施例。
圖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)介面、eMMC介面等等。
其中,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中的主機處理器(可以由處理器(Central Processing Unit,CPU)實現)的代言,與整個資料系統100的其他部分通訊,比如,CPU透過他存取主機RAM(記憶體),透過RC存取PCIe拓撲結構中的如其他第一裝置102等等。RC內部很複雜,總結來說,RC實現的功能可以是一條內部PCIe匯流排,以及透過若干PCIe橋接器(bridge)擴展出一些PCIe連接埠(port),具體如圖5B所示。
如圖5C所示,在PCIe拓撲結構中的交換器(Switch)擴展了PCIe連接埠。靠近RC的連接埠稱之為上游連接埠(Upstream Port),分出來的連接埠,均稱之為下游連接埠(Downstream Port)。一個交換器只有一個上游連接埠,可以擴展出若干個下游連接埠。下游連接埠可以直接連接終端(EndPoint),比如,PCIe裝置;再比如,第一裝置102。下游連接埠還可以連接交換器擴展出更多的連接埠,比如圖5C中的EP1、EP2、EP3等。
在一些實施例中,PCIe裝置可以分層實現,如圖6所示,其定義了三層:事務層(Transaction Layer)、資料鏈路層(Data Link Layer)以及物理層(Physical Layer,包括邏輯子模組和電氣子模組),每層職能不同,但為上層服務。PCIe的資料傳輸均是以封包(Packet)的形式傳輸的,每層封包具有固定格式。在一些實施例中,PCIe拓撲結構中的每一個Endpoint和每一個交換器均需實現前述三層。
在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)可以是指這個PCIe裝置在某一功能(Function)下所具有的能力。具體具有什麼能力可以透過在64-Byte的標頭配置。
在一些實施例中,每一個PCIe裝置至少都有一個配置空間,因一個PCIe裝置可能具有多個功能,比如,既能當硬碟又能當網卡,每一個功能對應
一個配置空間。在另一些實施例中,每一個功能對應的配置空間可以包含一個或多個能力。
圖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中的記憶體陣列可以包括例如佈置在一或多個器件、一或多個平面、一或多個子塊、一或多個塊、一或多個頁等中的若干記憶胞。作為一個實例,48GB TLC 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,Non Volatile 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 Circuit Board)上的Boot引腳連接,將主機上獲取要更新的韌體傳輸給PCIe裝置,以實現PCIe裝置的韌體更新。第三種,採用調試儀器,比如,聯合測試工作組(JTAG,Joint Test Action Group),一種國際標準測試協定,主要用於晶片內部測試;再比如,增強型聯合測試工作組(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,因此,第一裝置可以具有至少一個用於為自身配置功能的配置空間。對於某一功能對應的配置空間中各種能力與標頭之間的關聯關係可以如圖9所示。在圖9中僅以具有三種能力為例進行說明,其中,標頭、能力_1、能力_2、能力_3依次連接形成鏈表。
作為一種可選的實施方式,對於S801來說可以包括:在所述第一PCI配置空間定義所述韌體更新能力對應的第一資料結構;基於所述第一資料結構將所述韌體更新能力添加到第一能力鏈表,形成第二能力鏈表,使得所述第一PCI配置空間中配置有所述韌體更新能力;其中,所述第一能力鏈表為所述第一PCI配置空間中已有能力形成的鏈表。
這裡,所述第一PCI配置空間為所述至少一個PCI配置空間之一。在一些實施例中,若所述第一裝置具有多個功能時,所述第一PCI配置空間依據用戶需要更新所述第一裝置中的特定功能而定,比如,若所述第一裝置具有前述的硬碟和網卡功能,若用戶想要對硬碟功能的韌體進行更新,那麼,所述
第一PCI配置空間就應該選擇硬碟功能對應的配置空間。也就是,這裡描述的是,在所述第一裝置中的第一PCI配置空間中已經能夠實現的能力鏈表中添加自定義的新能力,以形成新的能力鏈表,以使所述第一裝置能夠實現新的能力。在所述新的能力是本發明實施例所描述的韌體更新能力時,一種可選的配置流程具體來講可以包括以下幾步:首先,在所述第一PCI配置空間中定義所述韌體更新能力對應的第一資料結構。一種可選的第一資料結構如下表1所示。該第一資料結構可以包括基本資訊域、命令資訊域、回執資訊域和資料資訊域,其中,所述基本資訊域可以包括指標資訊、該韌體更新能力所屬類型的標識資訊、第一資料結構的長度資訊、該韌體更新能力的版本資訊以及該韌體更新能力在所屬類型下的身份(Identity)標識資訊等等。
在一些實施例中,所述指標資訊用於指向下一能力,用於表明所述韌體更新能力在能力鏈表中所處位置。
在一些實施例中,該韌體更新能力所屬類型可以包括兩種類型:一類可以為標準協定能力;一類為擴展能力。標準協定能力為協定中規定的能力;擴展能力為根據不同的功能、裝置或開發商而擴展的在標準協定能力之外的能力。
在一些實施例中,所述類型標識資訊就可以用於表明所述韌體更新能力是為所述第一裝置中擴展功能,還是為所述第一裝置中的標準協定能力,比如,若標識0xB表示為開發商提供的擴展功能,那麼,在所述韌體更新能力的第一資料結構中所屬類型的標識資訊就為0xB。
在一些實施例中,在一個裝置中,屬相同類型的能力可能會包含多於一個,比如,第一裝置中屬擴展能力有三個,對於如何區分這三種能力呢,
也就是依據這個身份(Identity)標識資訊進行區分。該Identity標識資訊可以是字符、數字等任何主機能夠識別的標識。
在一些實施例中,命令資訊域、回執資訊域和資料資訊域分別可以是韌體更新能力中放置主機與第一裝置交互的一些命令、這些命令執行情況的回執以及資料相關的資訊。其中,所述命令可以是指本發明實施例中實現韌體更新的一些命令,比如資料寫入命令、更新命令等。所述資料相關的資訊可以包括第一韌體、第一韌體的長度以及放置所述第一韌體地址的偏移等。需要說明的是,由於前述已經描述,配置空間可以由一系列的暫存器實現,那麼,這裡第一資料結構中的命令資訊域、回執資訊域和資料資訊域中的資訊可以是緩存在相應的暫存器中的。在一些實施例中,所述資料資訊域還可以劃分為:偏移子域、資料子域、長度子域,分別用於放置第一韌體的資料地址偏移、第一韌體以及第一韌體的資料長度。
其次,獲得已有能力和已有能力形成的第一能力鏈表,所述第一能力鏈表為所述第一PCI配置空間中已有能力形成的鏈表。
然後,基於所述第一資料結構將所述韌體更新能力添加到第一能力鏈表,形成第二能力鏈表,一種做法可以是將第一能力鏈表中的處於最後的一個能力的指標資訊設置成指向所述韌體更新能力,以此使得所述第一PCI配置空間中配置有所述韌體更新能力。也可以根據需要添加到第一能力鏈表中任兩個能力之間,也即根據需要重新構建第二能力鏈表。
舉例來說,如前圖9所示的PCIe裝置的某一配置空間已經配置有三種能力,在該配置空間中配置韌體更新能力,配置後PCIe裝置中該配置空間的各種能力之間的關聯關係如圖10所示。其中,標頭、能力_1、能力_2、能力_3、韌體更新能力(FW update 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介面。
在一些實施例中,所述第一裝置為儲存終端;或,所述第一裝置為交換橋接器(Switch Bridge)。
在一些實施例中,所述儲存終端包含記憶體系統;其中所述記憶體系統包括一個或多個記憶體裝置;以及耦接在所述一個或多個記憶體裝置上用於控制所述一個或多個記憶體裝置的記憶體控制器。
需要說明的是,記憶體控制器為處理器中的一種形式,也即在儲存終端中處理器為記憶體控制器。
在一些實施例中,所述記憶體裝置包括:記憶體陣列,所述記憶體陣列包含多個儲存塊;以及耦接在所述記憶體陣列上用於控制所述記憶體陣列的控制電路。
在一些實施例中,所述記憶體陣列為三維NAND記憶體陣列。
需要說明的是,該第一裝置與前述的韌體更新方法屬同一發明構思,該第一裝置在處理韌體更新時採用前述的方法,因此這裡出現的名詞在前述均以詳細解釋,在此同樣適用,不再一一贅述。
基於與前述同樣的發明構思,本發明實施例還提供一種資料系統,所述資料系統包含主機和第一裝置;其中,所述第一裝置包含用於為所述第一裝置配置功能的至少一個PCI配置空間,透過以下介面至少之一:PCI介面、PCI-X介面、PCIe介面與所述主機進行通訊;所述主機,向所述第一裝置發送配置請求;所述第一裝置,透過第一介面接收所述配置請求,並基於所述配置請求在所述至少一個PCI配置空間中的第一PCI配置空間配置韌體更新能力;所述第一介面為PCI介面、PCI-X介面、PCIe介面之一;所述主機向所述第一裝置發送包含與第一韌體相關的資料的一個或多個寫入命令;
所述第一裝置,透過所述第一介面接收所述一個或多個寫入命令,並將所述與所述第一韌體相關的資料寫入所述韌體更新能力對應的第一資料結構相應的位置;在接收到更新命令,基於所述更新命令更新所述第一韌體到所述第一裝置。
需要說明的是,這裡的配置請求即為前述的TLP格式的封包。
在一些實施例中,所述主機,向所述第一裝置發送攜帶有激活方式的激活命令;所述第一裝置,透過所述第一介面接收攜帶有激活方式的激活命令;基於所述激活命令中的所述激活方式激活所述第一韌體。
在一些實施例中,所述第一裝置為儲存終端;或,所述第一裝置為轉換橋。
在一些實施例中,所述儲存終端包含記憶體系統;其中所述記憶體系統包括一個或多個記憶體裝置;以及耦接在所述一個或多個記憶體裝置上用於控制所述一個或多個記憶體裝置的記憶體控制器。
在一些實施例中,所述記憶體裝置包括:記憶體陣列,所述記憶體陣列包含多個儲存塊;以及耦接在所述記憶體陣列上用於控制所述記憶體陣列的控制電路。
在一些實施例中,所述記憶體陣列為三維NAND記憶體陣列。
需要說明的是,該資料系統包含前述的第一裝置,因此,二者具有相同的技術特徵,該資料系統中出現的名詞在前述的對第一裝置的描述中均以詳細解釋,在此同樣適用,不再一一贅述。
以上描述旨在是說明性的,而不是限制性的。例如,上述實例(或其一或多個方面)可以彼此組合使用。可使用其它實施例,諸如所屬技術領域具有通常知識者在閱讀以上描述時可使用的。應當理解,它將不用於解釋或限制請求項的範圍或含義。此外,在以上詳細描述中,可將各種特徵組合在一起以簡化本發明。這不應當被解釋為意味著未經要求保護的公開特徵對於任何請
求項是必不可少的。相反,公開的主題可在於少於特定公開實施例的所有特徵。因此,隨附申請專利範圍由此被併入詳細說明中,其中每一請求項獨立地作為單獨的實施例,並且預期這些實施例可以以各種組合或置換而彼此組合。本發明的範圍應當參考隨附請求項以及這些請求項所賦予的等同物的全部範圍來確定。
S801、S802:步驟
Claims (19)
- 一種韌體更新方法,應用於具有至少一個外部裝置互連PCI配置空間的第一裝置,所述方法包括:在所述至少一個PCI配置空間中的第一PCI配置空間配置韌體更新能力,其包括:在所述第一PCI配置空間定義所述韌體更新能力對應的第一資料結構;基於所述第一資料結構將所述韌體更新能力添加到第一能力鏈表,形成第二能力鏈表,使得所述第一PCI配置空間中配置有所述韌體更新能力;其中,所述第一能力鏈表為所述第一PCI配置空間中已有能力形成的鏈表;及基於所述韌體更新能力更新第一韌體到所述第一裝置。
- 根據請求項1所述的方法,其中,所述基於所述韌體更新能力更新第一韌體到所述第一裝置,包括:接收包含與所述第一韌體相關的資料的一個或多個寫入命令;將所述與所述第一韌體相關的資料寫入所述第一資料結構相應的位置;在接收到更新命令,基於所述更新命令更新第一韌體到所述第一裝置相應的儲存區域。
- 根據請求項2所述的方法,還包括:接收讀取命令,基於所述讀取命令反饋用於表示所述第一韌體更新成功的標識,以指示所述第一韌體更新完成。
- 根據請求項1所述的方法,還包括:接收攜帶有激活方式的激活命令;基於所述激活命令中的所述激活方式激活所述第一韌體。
- 根據請求項1所述的方法,其中,所述在所述至少一個PCI配置空間中的第一PCI配置空間配置韌體更新能力之前,所述方法還包括: 利用自身耦接的主機中的操作系統檢測所述第一PCI配置空間中是否配置有所述韌體更新能力。
- 根據請求項5所述的方法,其中,所述利用自身耦接的主機中的操作系統檢測所述第一PCI配置空間中是否配置有所述韌體更新能力,包括:接收查看命令;基於所述操作系統執行所述查看命令,獲得所述第一裝置包含的所述至少一個PCI配置空間的配置資訊;基於所述配置資訊判斷所述第一PCI配置空間中是否配置有所述韌體更新能力。
- 根據請求項6所述的方法,還包括:在判定所述第一PCI配置空間中已配置有所述韌體更新能力,直接基於所述韌體更新能力更新第一韌體到所述第一裝置。
- 根據請求項1至7任一項所述的方法,其中,所述第一裝置包含以下介面至少之一:PCI介面、PCI-X介面、PCIe介面。
- 一種韌體更新裝置,所述韌體更新裝置包含處理器和至少一個外部裝置互連PCI配置空間,其中;所述處理器被配置為:在所述至少一個PCI配置空間中的第一PCI配置空間配置韌體更新能力,其包括:在所述第一PCI配置空間定義所述韌體更新能力對應的第一資料結構;基於所述第一資料結構將所述韌體更新能力添加到第一能力鏈表,形成第二能力鏈表,使得所述第一PCI配置空間中配置有所述韌體更新能力;其中,所述第一能力鏈表為所述第一PCI配置空間中已有能力形成的鏈表;及基於所述韌體更新能力更新第一韌體到所述韌體更新裝置。
- 根據請求項9所述的韌體更新裝置,其中,所述處理器還被配置為:接收攜帶有激活方式的激活命令;基於所述激活命令中的所述激活方式激活所述第一韌體。
- 根據請求項9所述的韌體更新裝置,其中,所述韌體更新裝置耦接在某一主機上;在所述至少一個PCI配置空間中的第一PCI配置空間配置韌體更新能力之前,所述處理器還被配置為:利用自身耦接的所述主機中的操作系統檢測所述第一PCI配置空間中是否配置有所述韌體更新能力。
- 根據請求項11所述的韌體更新裝置,其中,所述利用自身耦接的所述主機中的操作系統檢測所述第一PCI配置空間中是否配置有所述韌體更新能力,包括:接收查看命令;基於所述操作系統執行所述查看命令,獲得所述韌體更新裝置包含的所述至少一個PCI配置空間的配置資訊;基於所述配置資訊判斷所述第一PCI配置空間中是否配置有所述韌體更新能力。
- 根據請求項12所述的韌體更新裝置,其中,所述處理器被配置為:在判定所述第一PCI配置空間中已配置有所述韌體更新能力,直接基於所述韌體更新能力更新第一韌體到所述韌體更新裝置。
- 根據請求項9至13任一項所述的韌體更新裝置,其中,所述韌體更新裝置還包括以下介面至少之一:PCI介面、PCI-X介面、PCIe介面,用於使所述韌體更新裝置與耦接的主機通訊。
- 根據請求項14所述的韌體更新裝置,其中,所述韌體更新裝置為儲存終端;或,所述韌體更新裝置為轉換橋。
- 根據請求項15所述的韌體更新裝置,其中,所述儲存終端包含記憶體系統;其中所述記憶體系統包括一個或多個記憶體裝置;以及耦接在所述一個或多個記憶體裝置上用於控制所述一個或多個記憶體裝置的記憶體控制器。
- 根據請求項16所述的韌體更新裝置,其中,所述記憶體裝置包括:記憶體陣列,所述記憶體陣列包含多個儲存塊;以及耦接在所述記憶體陣列上用於控制所述記憶體陣列的控制電路。
- 根據請求項17所述的韌體更新裝置,其中,所述記憶體陣列為三維NAND記憶體陣列。
- 一種資料系統,所述資料系統包含主機和第一裝置;其中,所述第一裝置包含至少一個外部裝置互連PCI配置空間,透過以下介面至少之一:PCI介面、PCI-X介面、PCIe介面與所述主機進行通訊;所述主機,向所述第一裝置發送配置請求;所述第一裝置,透過第一介面接收所述配置請求,並基於所述配置請求在所述至少一個PCI配置空間中的第一PCI配置空間配置韌體更新能力,其包括:在所述第一PCI配置空間定義所述韌體更新能力對應的第一資料結構;基於所述第一資料結構將所述韌體更新能力添加到第一能力鏈表,形成第二能力鏈表,使得所述第一PCI配置空間中配置有所述韌體更新能力;其中,所述第一能力鏈表為所述第一PCI配置空間中已有能力形成的鏈表;所述第一介面為PCI介面、PCI-X介面、PCIe介面之一;所述主機,向所述第一裝置發送包含與第一韌體相關的資料的一個或多個寫入命令;及所述第一裝置,透過所述第一介面接收所述一個或多個寫入命令,並將所述與所述第一韌體相關的資料寫入所述韌體更新能力對應的第一資料結構相應的位置;在接收到更新命令,基於所述更新命令更新所述第一韌體到所述第一裝置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210153211.3A CN114741094A (zh) | 2022-02-18 | 2022-02-18 | 一种固件更新方法、设备及数据系统 |
CN202210153211.3 | 2022-02-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202334807A TW202334807A (zh) | 2023-09-01 |
TWI844212B true TWI844212B (zh) | 2024-06-01 |
Family
ID=82275396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111149849A TWI844212B (zh) | 2022-02-18 | 2022-12-25 | 韌體更新方法、裝置及資料系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230266963A1 (zh) |
CN (1) | CN114741094A (zh) |
TW (1) | TWI844212B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117743248A (zh) * | 2023-12-22 | 2024-03-22 | 成都北中网芯科技有限公司 | 一种实现PCIe配置空间的方法、装置、设备及介质 |
CN117707436B (zh) * | 2024-02-05 | 2024-05-03 | 苏州元脑智能科技有限公司 | 固件模式切换方法、装置、电子设备和存储介质 |
CN118502792A (zh) * | 2024-07-18 | 2024-08-16 | 合肥康芯威存储技术有限公司 | 一种电子产品及其存储器固件更新方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747483B2 (en) * | 2018-07-31 | 2020-08-18 | Canon Kabushiki Kaisha | Image forming apparatus that updates firmware |
CN111766797A (zh) * | 2019-04-02 | 2020-10-13 | 海盗船存储器公司 | 微控制器、存储模块及用于更新微控制器的韧件的方法 |
TW202038091A (zh) * | 2019-04-02 | 2020-10-16 | 美商海盜船記憶體公司 | 微控制器、記憶體模組及用於更新微控制器之韌體的方法 |
TWI710953B (zh) * | 2019-05-31 | 2020-11-21 | 緯創資通股份有限公司 | 韌體更新裝置以及韌體更新方法 |
TWI720594B (zh) * | 2019-08-23 | 2021-03-01 | 神雲科技股份有限公司 | 遠端更新韌體的控制方法 |
-
2022
- 2022-02-18 CN CN202210153211.3A patent/CN114741094A/zh active Pending
- 2022-12-25 TW TW111149849A patent/TWI844212B/zh active
- 2022-12-28 US US18/090,241 patent/US20230266963A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747483B2 (en) * | 2018-07-31 | 2020-08-18 | Canon Kabushiki Kaisha | Image forming apparatus that updates firmware |
CN111766797A (zh) * | 2019-04-02 | 2020-10-13 | 海盗船存储器公司 | 微控制器、存储模块及用于更新微控制器的韧件的方法 |
TW202038091A (zh) * | 2019-04-02 | 2020-10-16 | 美商海盜船記憶體公司 | 微控制器、記憶體模組及用於更新微控制器之韌體的方法 |
TWI710953B (zh) * | 2019-05-31 | 2020-11-21 | 緯創資通股份有限公司 | 韌體更新裝置以及韌體更新方法 |
TWI720594B (zh) * | 2019-08-23 | 2021-03-01 | 神雲科技股份有限公司 | 遠端更新韌體的控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230266963A1 (en) | 2023-08-24 |
TW202334807A (zh) | 2023-09-01 |
CN114741094A (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI844212B (zh) | 韌體更新方法、裝置及資料系統 | |
TWI704487B (zh) | 資料儲存設備及其操作方法 | |
US10372570B2 (en) | Storage device, test system for testing the same, and method thereof | |
US10534738B2 (en) | Host bus adaptor with configurable interface | |
US9905314B2 (en) | Storage module and method for datapath bypass | |
US10114743B2 (en) | Memory erase management | |
CN110689915A (zh) | 经由主机/串行接口的远程ssd调试及其执行方法 | |
KR102238650B1 (ko) | 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법 | |
TWI828963B (zh) | 用於控制不同類型儲存單元的裝置及電腦程式產品 | |
US10635350B2 (en) | Task tail abort for queued storage tasks | |
US9940034B2 (en) | Reducing read access latency by straddling pages across non-volatile memory channels | |
US11150842B1 (en) | Dynamic memory controller and method for use therewith | |
US20230221889A1 (en) | Data Storage Device and Method for Providing an Adaptive Data Path | |
US10552264B2 (en) | Hidden diagnostic partition | |
US11782638B2 (en) | Storage device with improved read latency and operating method thereof | |
US11403163B2 (en) | Storage system and method for crash analysis | |
US20230393959A1 (en) | Out-of-band management method for storage apparatus, baseboard management controller and storage apparatus | |
US20230043925A1 (en) | Storage device and operating method thereof | |
US20230007903A1 (en) | Storage device and method of operation thereof | |
US20210406205A1 (en) | Storage system with capacity scalability and method of operating the same | |
CN115202568A (zh) | 存储系统及其操作方法 | |
KR20180127594A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US12045468B2 (en) | Storage devices configured to obtain data of external devices for debugging | |
EP4180965A1 (en) | Storage devices configured to obtain data of external devices for debugging | |
US11921653B2 (en) | Data storage device and method for lane detection and configuration |