CN110851154B - 用于更新只读存储器编码的计算机实施方法、系统及介质 - Google Patents
用于更新只读存储器编码的计算机实施方法、系统及介质 Download PDFInfo
- Publication number
- CN110851154B CN110851154B CN201910109762.8A CN201910109762A CN110851154B CN 110851154 B CN110851154 B CN 110851154B CN 201910109762 A CN201910109762 A CN 201910109762A CN 110851154 B CN110851154 B CN 110851154B
- Authority
- CN
- China
- Prior art keywords
- rom code
- code
- computer system
- copy
- 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.)
- Active
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
- G06F8/66—Updates of program code stored in read-only memory [ROM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/702—Software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
提供更新扩充只读存储器(ROM)以执行特定装置的初始化的系统及方法。一种范例性方法包括首先于多个储存库中的至少一个储存库存取一个或多个ROM编码的复本。ROM编码可配置来为计算机系统中的特定装置执行初始化程序。上述方法可接着基于选择准则自一个或多个ROM编码中选择一个ROM编码,作为欲使用的ROM编码。上述方法可接着将欲使用的ROM编码复制到计算机系统的系统存储器。上述方法可接着在系统存储器中执行欲使用的ROM编码以初始化特定装置。
Description
技术领域
本发明有关于检索只读存储器(ROM)编码,特别有关于在计算机系统可存取的本地及远程储存库的可能编码中选择偏好的ROM编码的系统及方法。
背景技术
计算机系统使用扩充只读存储器(expansion ROM)编码初始化计算机中的特定装置。通常,扩充ROM编码用于计算机系统启动之时。举例来说,视频图形阵列(videographics array,VGA)装置的扩充ROM编码赋予计算机系统视频输出功能。于另一范例中,储存装置的扩充ROM编码可于计算机系统启动时初始化硬盘机(hard disk drive)并将其曝露给BIOS。
运行扩充ROM编码可初始化计算机系统中的重要固件装置,例如图形卡及硬盘机。若未在系统启动期间正确运行扩充ROM编码,这些固件装置将难以初始化。因此,当不存在用于初始化特定装置的扩充ROM编码时,计算机系统的功能会被削弱。当扩充ROM编码无效或不是最新时,计算机系统亦可能无法正确初始化特定装置。
扩充ROM编码通常储存于计算机总线卡(bus card)上。计算机总线卡,亦以扩充卡或配接器卡(adapter card)之名为人所知,为计算机系统提供初始化该卡的主要电源开启指令(main power-up instructions)。当扩充ROM编码储存于计算机总线卡时,计算机系统可于电源开启期间简单地存取及运行编码。然而,这种方法存在一些问题。特别是,若用户由于任何原因需要更换计算机总线卡,判断新的计算机总线卡是否在替换卡上具有合适的扩充ROM编码实属不易。若卡上不具备合适的扩充ROM编码,则用户初始化特定装置通常是一个繁冗的过程。用户必通过检索合适的扩充ROM编码并手动将其加入计算机总线卡以完成手动初始化程序。
在一些实例中,扩充ROM编码储存于计算机系统可存取的位置,但并不储存于计算机总线卡中。然而,许多传统计算机系统不支持存取储存于其他位置的扩充ROM编码。于计算机系统中存在多个扩充ROM编码的复本的情况下,这种计算机系统通常也不能决定哪个扩充ROM编码是用于执行的偏好的编码(preferred code)。
此外,对用户而言,若扩充ROM编码已过时,则更新扩充ROM编码更显困难。举例来说,用户通常需要手动扩充ROM编码,或以具有更新的扩充ROM编码的总线卡替换计算机总线卡本身。为了手动更新扩充ROM编码,用户需自计算机总线卡厂商的FAE(FieldApplication Engineer)处检索ROM映像或自厂商网站下载ROM映像。用户接着需要将ROM映像复制到储存装置中(例如:USB随身碟(USB flash key))。接着,用户需要使用原始计算机总线卡以电源开启系统并启动操作系统。然后用户需要使用厂商特定公用程序(vendor-specific utility)来刷新或更新扩充卡的ROM映像。
因此,需要一种系统或方法,当来自计算机总线卡的扩充ROM编码错失或过时的时候,可以在计算机系统可存取的多个储存库中的任何一个存取扩充ROM编码。
发明内容
本公开实施例的多种范例直指在计算机系统可存取的本地及远程储存库的可能编码中选择偏好的ROM编码。根据本公开实施例的一范例性方法,藉由一系列操作核对可能ROM编码来运行并执行偏好的ROM编码。根据本公开的一实施例可包含用于更新计算机系统中的只读存储器编码的计算机实施(computer-implemented)方法。上述方法可自多个储存库中的至少一个储存库存取ROM编码的一个或多个复本。上述ROM编码可被配置来执行计算机系统中特定装置的初始化程序。于存取ROM编码的一个或多个复本后,上述方法可基于选择准则,自ROM编码的一个或多个复本中选择一个ROM编码的复本。这可作为欲使用的ROM编码。上述方法可接着将欲使用的ROM编码复制到计算机系统的系统存储器以初始化特定装置。
在一些范例中,多个储存库可包括计算机系统内的本地储存库及计算机系统外的远程储存库。
在一些范例中,选择准则可包括,决定是否可自ROM编码的一个或多个复本中辨识出ROM编码的最新复本。作为对确定ROM编码的最新复本可被辨识的响应,上述方法可选择最新复本作为欲使用的ROM编码。作为对确定无法辨识ROM编码的最新复本的响应,上述方法可选择ROM编码中具有最高优先级的复本作为欲使用的ROM编码。
在一些范例中,通过ROM编码复本的位置决定ROM编码复本的优先级。本地储存库相对远程储存库具有较高的优先级。计算机系统的计算机总线卡相对计算机系统的任何其他本地储存库亦具有较高的优先级。
在一些范例中,复制欲使用的ROM编码可进一步包括决定欲使用的ROM编码是否位于远程储存库。作为对确认欲使用的ROM编码位于远程储存库的响应,上述方法可自远程储存库将欲使用的ROM编码下载,作为经下载而欲使用的ROM编码。上述方法可接着接收来自用户的输入,以将经下载而欲使用的ROM编码储存于计算机系统的本地储存库中。
在其他范例中,上述方法可首先包括确定计算机系统中的计算机总线卡中的现存ROM编码不存在及/或无效。
在其他范例中,上述方法可首先包括确定计算机系统中的计算机总线卡内的现存ROM编码存在且有效。上述方法亦可包括确定计算机系统倾向基于选择准则选择ROM编码而非自动地使用现存ROM编码。
单词「计算机系统」、「计算系统」以及「服务器系统」于本公开中可互换使用,且可用于辨识通过计算机程序执行算术或逻辑运算序列的电子计算系统。这种电子计算系统可包括但不限于:个人计算机、笔记本电脑、平板计算机以及商业或私人服务器系统。
附图说明
本公开及本公开的优点与制图自后续实施例及附图可更加理解。这些附图仅描绘范例性的实施例,因此不应被视为对多种实施例或申请专利范围的限制。
图1所示是根据现有技术执行扩充ROM编码的流程图。
图2是根据本公开实施例的流程图,显示用于在计算机系统中更新只读存储器编码的范例性方法。
图3所示是根据本公开实施例的范例性选择准则。
图4所示是根据本公开实施例的范例性方法,用于将欲使用的ROM编码自远程储存库储存至本地储存库。
图5所示是根据本公开实施例的扩充ROM编码结构的范例性存储器地图。
图6所示是根据本公开实施例用于说明范例性系统的区块示意图。
符号说明
100~方法
102-110~步骤
200~方法
210-260~步骤
300~方法
310-340~步骤
400~远程选择程序
410-440~步骤
501~ROM标头
502~PCI数据结构
503~映像文件
504~标头字段
505~签章
506~指向PCI数据结构的指针
507~附加标头数据
508~指向PCI数据结构的指针
509~厂商识别
510~装置识别
511~装置列表指针
512~ROM编码结构长度
513~ROM编码修正历史
514~ROM编码的版本数据
515~附加数据结构信息
600~服务器系统
602~电源供应单元
603~BMC
604~处理器
605~BIOS
606~NB逻辑
607~PCI总线
608~SB逻辑
609~储存装置
611~主存储器
650~ISA插槽
651~ISA插槽
670~PCIe插槽
671~PCI插槽
具体实施方式
本发明的描述参考附图,其中所有的附图使用相同的附图标记来表示相似或相等的元件。附图并未依比例绘制,且仅用于说明本发明。下列参考用于说明的范例性应用以描述本发明的若干样态。须理解的是,许多具体细节、关系及方法被提出以提供对本发明的通盘理解。然而,于相关技术领域普通技术人员将轻易认知到本发明可在没有一个或多个具体细节下或以其他方法完成。在其他实例中,公知结构或操作并未详述以免模糊本发明。本发明并不限于所示的动作或事件的顺序,因为一些动作可以不同的顺序发生及/或与其他动作或事件同时发生。此外,并非所有示出的动作或事件皆为实施根据本发明的方法所必需的。
本公开直指一种方法,此方法检索更新的扩充ROM编码并执行该编码以初始化特定装置。于上述方法的范例性实施例中,计算机系统可首先于一个或多个储存库中存取扩充ROM编码的一个或多个复本。计算机系统接着可基于选择准则选择编码的一个复本。最后,计算机系统可接着将欲使用的ROM编码复制到计算机系统的系统存储器中并于系统存储器中执行欲使用的ROM编码。
于本文公开的方法中,选择准则可规定首先选择最新版本的扩充ROM编码。若没有最新版本,选择准则可规定根据哪个编码复本具有最高优先级来选择扩充ROM编码。举例来说,较高的优先级可分配至来自本地储存库的扩充ROM编码,而较低的优先级可分配至来自远程储存库的扩充ROM编码。
上述方法允许更新扩充ROM编码,而非总是依靠初始计算机总线卡的扩充ROM编码。于上述方法中,计算机系统可查看本地及远程储存库来寻找其他扩充ROM编码的复本以初始化特定装置。
上述方法具有优于传统程序的优点,例如允许评估可用的扩充ROM编码以选择偏好的ROM编码。举例来说,因为较新的编码通常具有最新的更新,故而较新的编码可为优先选择。因此,上述方法可规定选择最新的扩充ROM编码以便选择及使用偏好的ROM编码。于其他范例中,因为本地储存的ROM编码通常为初始化装置的最佳配置,上述方法可规定位于本地储存库的扩充ROM编码的复本优先于位于远程储存库的扩充ROM编码的复本。
图1所示是根据现有技术的方法100的流程图,方法100用于在计算机系统中执行扩充ROM编码。于此方法100中,第一步骤(步骤102)用于检查系统是否可在外围组件互连(peripheral component interconnect,PCI)装置上定位扩充ROM编码。举例来说,PCI装置可为计算机总线卡。若发现ROM编码存在且有效(于步骤104中),接着计算机系统可继续自PCI装置中将扩充ROM编码复制到系统存储器(步骤106)。方法100可接着在系统存储器中执行扩充ROM编码并初始化PCI装置(步骤108)。然而,若系统无法于PCI装置中定位扩充ROM编码(于步骤104中),则方法100结束于此(步骤110)。
如图1所见,若未于PCI装置中找到扩充ROM编码,传统方法通常不会提供任何手段用于初始化PCI装置。因此,方法100仅在有限的情况下有用,且若未满足方法100的需求,则方法100不具有备用手段。
图2所示是根据本公开实施例的范例性方法200的流程图,方法200用于在计算机系统中更新只读存储器编码。方法200可在计算机系统启动阶段执行,使得程序在用户与计算机系统互动前完成。方法200可整合至计算机系统的BIOS软件中并于启动程序中执行。
于计算机系统的启动程序期间但在方法200开始之前,计算机系统可首先检查计算机系统内的计算机总线卡中的现存ROM编码是否存在且有效。若发现现存ROM编码不存在及/或无效,则计算机系统可接着初始化图2的方法200。首先检查现存ROM编码是否存在且有效,允许计算机系统尽可能有效地运行。举例来说,若现存ROM编码已经存在且有效,则不需要为了更新的ROM编码搜寻计算机系统。搜寻更新的ROM编码可能花费非必要的额外时间。
或者,计算机系统可决定计算机系统内的计算机总线卡中的现存ROM编码存在且有效。计算机系统可接着检查系统偏好(system preferences)以辨识计算机系统仍倾向于藉由方法200基于选择准则选择ROM编码,而非自动使用现存ROM编码。这允许用户设定系统偏好并独立决定计算机系统是否应该牺牲效率以获得最新的ROM编码。
无论计算机系统是否对现存ROM编码执行初始检查,方法200皆于步骤210中藉由自多个储存库中的至少一个储存库存取一个或多个ROM编码的复本开始。ROM编码可为扩充ROM编码,一个可选的ROM编码(option ROM code)或任何其他编码,被配置来为计算机系统内的特定装置执行初始化程序。举例来说,ROM编码可被配置来为VGA卡、硬盘机或计算机系统中的可使用独立初始化编码的任何其他装置执行初始化程序。步骤210可于多个储存库中的任何储存库存取ROM编码的复本。
储存库可包括计算机系统的本地储存库及计算机系统的远程储存库。本地储存库的范例可包括计算机系统内的任何储存库,例如计算机总线卡、快速外围组件互连(peripheral component interconnect express,PCIe)卡上的电子可抹除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、计算机系统的主板装置上的EEPROM及/或基本输出入系统(basic input/output system,BIOS)的保留空间。本地储存库包括BIOS可直接存取的任何存储器,使得BIOS不需要通过网络连接或第三方组件(3-parity component)存取存储器。若硬驱动机或USB驱动机直接与计算机系统的主板装置相连,则可为本地储存库。
远程储存库的范例可包括未直接与计算机系统的主板装置相连、但可通过诸如Wi-Fi或以太网络的链接连接或其他连接存取,需要花费必要量的等待时间以检索数据的任何储存库。远程储存库亦可通过第三方组件存取。因此,远程储存库亦可包括存在于计算机系统内但BIOS不可直接存取的计算机零件。一些远程储存库的范例可包括硬盘机、通用串行总线(universal serial bus,USB)驱动机及/或远程固件控制服务器。
于完成步骤210后,方法200于步骤220中藉由基于选择准则选取ROM编码的一个复本来进行。范例性选择准则的进一步讨论参考图3。回到图2,步骤220中的选择准则用于在步骤210存取多于一个ROM编码的复本的情况下,选择ROM编码的单一复本。再者,选择准则用于确保所选的ROM编码复本为最可靠、最新及最易于存取的。
方法200可接着于步骤230中检查所选复本是否在远程储存库中。若所选复本在远程储存库中,则上述方法将持续到步骤260并完成远程选择程序。一范例性远程选择程序将于下列参考图4进行更详细的讨论。回到图2,于完成步骤260的远程选择程序后,上述方法将进行至步骤240。
若计算机系统于步骤230中决定所选复本不在远程储存库中,则方法200可进行至步骤240。于步骤240中,方法200将欲使用的ROM编码复制到计算机系统中的系统存储器。系统存储器可为计算机零件,用于保存计算机指令以在计算机系统的启动程序期间执行。举例来说,系统存储器可为动态随机存取存储器(dynamic random access memory,DRAM)。
接着,方法200于步骤250中藉由执行欲使用的ROM编码来完成,欲使用的ROM编码为计算机系统中的特定装置运行初始化程序。
因此,方法200具有许多优于传统程序的优点。计算机系统可于比传统系统更广泛的环境中初始化特定装置,因为方法200于各种储存库中存取ROM编码,这些储存库同时包括对计算机系统为本地及远程的储存库。传统系统仅于计算机总线卡中搜寻ROM编码,且无法在未于计算机总线卡中发现ROM编码的情况下初始化装置。此外,方法200于步骤220中确保可藉由选择准则选择最新、易于存取及可靠的编码。此步骤确保始终使用最佳可用的ROM编码进行装置初始化。
因此图2的方法呈现优于当前程序的优点,当前程序需要用户参与下载、辨识与选择用于初始化程序的更新编码。此外,当前程序通常需要在计算机电源开启并可由用户存取时,运行特定装置的更新步骤。用户接着需要在运行被执行的编码前重新启动计算机系统。相反地,方法200允许更新步骤在计算机系统启动期间运行。
如上所论,图2中的步骤220包含,基于选择准则选择所存取的ROM编码的复本中的一个。图3根据本公开实施例示出执行范例性选择准则的方法300。于步骤310中,方法300首先评估所存取的ROM编码(例如:于图2的步骤210中存取的ROM编码)以决定ROM编码的复本中何者为最新复本。最新复本可为最新编写或发布的ROM编码─即具有最新日期的ROM编码。日期可由编码上的标签(tag)辨识,或由任何其他辨识编码复本的新近性(recentness)的机制来辨识。举例来说,图5讨论根据本公开实施例讨论范例性的ROM编码结构。回到图3,辨识最新复本确保用于初始化特定装置的编码将是最新更新的编码。
在一些实例中,方法300可于步骤310中辨识单一、最新的ROM编码复本。举例来说,可创建汇总表(summary table)以表列扩充ROM编码及其版本数据。此汇总表可包括的数据诸如扩充ROM编码的厂商识别、用于什么计算机装置使用扩充ROM编码的相应装置识别、扩充ROM编码的任何版本数据、扩充ROM编码的修正历史以及修正后扩充ROM编码的每个复本的位置。因此,BIOS可检索汇总表以决定具有最新ROM编码复本的储存库为何者。
若最新复本可被辨识(于步骤315中),则方法300可进行至步骤320。于步骤320中,方法300回到图2的步骤230,其中ROM编码的最新复本作为欲使用的编码。
相反地,若不能辨识最新复本(于步骤315中),方法300可转而进行至步骤330以进行进一步处理。也就是说在某些案例中,可能有数个具有最新日期的ROM编码复本。方法300可为了附加处理而进行至步骤330,以辨识具有最新日期的所有ROM编码复本。因此,若存在一些具有较新日期的ROM编码复本及其他具有不太新的日期的复本,方法300可仅使用具有较新日期的ROM编码继续进行。
一旦在步骤330中辨识出具有最新日期的ROM编码,则方法300可进行至步骤340。于步骤340中,可选择具有最高优先级的ROM编码复本。再者,于步骤340中,方法300回到图2的步骤230,其中最高优先级的ROM编码作为欲使用的编码。
ROM编码的优先级可以多种方式指定。然而,在一个范例性配置中,方法300可以决定优先级如下。首先,可辨识ROM编码的个别复本的位置。举例来说,如上所论,ROM编码的个别复本可在本地储存库或远程储存库中找到,且相应的储存库可被记录。此后可以使用位置优先级。举例来说,本地储存库可具有高于远程储存库的优先级。于此配置中,方法300将导致来自本地储存库的ROM编码复本优先于来自远程储存库的ROM编码复本的结果。再者,即使在相似类型的储存库(本地或远程)中,亦可指定优先级。举例来说,计算机总线卡中的ROM编码复本可具有最高优先级,高于其他计算机系统中的本地储存库的ROM编码复本。
于本公开其他范例性实施例中,选择标准可偏好的来自基于ROM编码的版本作者的ROM编码。举例来说,与固件创建者相同的版本作者可被偏好的。于本公开另一范例性实施例中,可实时为用户提供接口且用户可选择ROM编码中的何者为偏好的。
方法300提供许多优于传统程序的优点。举例来说,当代程序通常仅有评估于计算机总线卡中找到的ROM编码,且不具备评估编码新近性的方法。相反地,方法300可基于选择具有最新日期的ROM编码复本而产生偏好的ROM编码。
此外,方法300可基于编码的位置决定要执行ROM编码复本中的何者。这可以达成更有效率的启动程序。举例来说,自计算机总线卡中选择编码并不需要计算机系统自远程储存库中下载编码,储存至新位置,然后执行编码。因此,若计算机总线卡中的ROM编码是最新的,则本公开的方法避免了对非必要程序的需求。
在一些配置中,若最终自远程储存库中获得ROM编码,则将ROM编码储存于本地储存库,以供未来使用可能是有利的。这于图4中说明。图4根据本公开实施例示出范例性远程选择程序400,用于将所选的扩充ROM编码自远程储存库储存至本地储存库。远程选择程序400为一可选程序,可在方法200的欲使用的ROM编码位于远程储存库的情况下开始。
远程选择程序400始于步骤410,其中自远程储存库接收来自欲使用的ROM编码的版本数据。举例来说,可自远程储存库下载整个欲使用的ROM编码。于另一范例性实施例中,仅可自远程储存库中接收来自欲使用的ROM编码的版本数据。版本数据可被检索并放入本地盘机、主板上的EEPROM、BIOS快闪ROM的预留空间,或是本地储存库的任何位置。在一些范例中,上述位置可由用户选择。
远程选择程序400可于步骤420中继续进行,以自用户接收关于远程选择程序400是否应将ROM编码储存于本地储存库中的指令。将ROM编码储存于本地储存库,允许ROM编码于未来的尝试中更有效地被存取并更有效地被执行。于获得将ROM编码储存于本地储存库的指令后,远程选择程序400可进行至步骤430,其中ROM编码被复制到本地储存库中。
于(1)未收到将编码储存于本地储存库的指令(于步骤420中)或者于(2)完成将编码复制到本地储存库的程序(于步骤430中)之后,远程选择程序400于步骤440中完成。
远程选择程序400呈现优于当代程序的优点,因为远程选择程序允许将更新ROM编码复制到本地储存库,并在未来所有计算机系统启动程序中重复使用。这提高了未来所有启动程序的效率,因为系统在继续启动程序之前无须自远程储存库中下载编码。
图5显示根据本公开实施例的扩充ROM编码的范例性结构。举例来说,范例性结构可包括ROM标头501、PCI数据结构502及映像文件503。ROM标头(header)501可包括用于扩充ROM编码的标头字段(header field)504、扩充ROM编码的签章(signature)505、指向PCI数据结构的指针(pointer)506以及任何其他附加标头数据507。在评估扩充ROM编码时,此信息可被储存、分析及唤回。
PCI数据结构502可包括,诸如指向PCI数据结构的指针508、厂商识别509、装置识别510、装置列表指针511、ROM编码结构长度512、ROM编码修正历史513、ROM编码的版本数据514以及任何附加数据结构信息515的信息。装置识别510可辨识保存有特定ROM编码的特定装置。装置列表指针511可指向装置列表,装置列表包括特定ROM编码可支持的所有其他装置。厂商识别509、装置识别510、装置列表指针511及ROM编码修正历史513可如参考图3所描述般被使用。当实施本公开的任何方法时,ROM编码的版本数据可被BIOS存取。
图6是根据本公开实施的区块示意图,用以说明范例性服务器系统600。于此范例中,服务器系统600包括至少一个微处理器或处理器604;BMC(Baseboard ManagementController;基板管理控制器)603;一个或多个冷却模块660;主存储器(main memory,MEM)611;至少一个电源供应单元(power supply unit,PSU)602,电源供应单元602自AC电源供应器接收AC电力,并将电力提供与服务器系统600的多种零件,例如:处理器604、北桥(north bridge,NB)逻辑606、PCIe插槽670、南桥(south bridge,SB)逻辑608、储存装置609、ISA插槽650、PCIe插槽670及BMC 603。
在电源开启后,服务器系统600被配置为自存储器、计算机储存装置或外部储存装置加载软件应用程序以执行多种操作。储存装置609被建构为可用于操作系统及服务器系统600的应用程序的逻辑块(logical blocks)。储存装置609被配置为当服务器系统600电力关闭时也能保留服务器数据。
于图6中,主存储器611直接耦接至处理器604。主存储器611可包括但不限于:DRAM、双倍数据速率DRAM(double data rate DRAM,DDR DRAM)、静态随机存取存储器(SRAM)或其他类型的合适存储器。主存储器611可配置来储存服务器系统600的固件数据。在一些配置中,固件数据可储存于储存装置609。
在一些实施中,服务器系统600可进一步包含快闪储存装置。快闪储存装置可为随身盘(flash drive)、随机存取存储器(RAM)、非易失性随机存取存储器(NVRAM)或电子可抹除可编程只读存储器(EEPROM)。快闪储存装置可配置来储存诸如固件数据的系统配置(system configurations)。
处理器604可为中央处理单元(central processing unit,CPU),配置来执行特定功能的程序指令。举例来说,于启动程序期间,处理器604可存取储存于BMC 603或快闪储存装置中的固件数据,并执行BIOS 605以初始化服务器系统600。于启动程序后,处理器604可执行操作系统以执行及管理服务器系统600的特定任务。于另一实施例中,BIOS 605连接至PCH而非处理器604。
在一些配置中,处理器604可为多核心处理器,个别处理器通过连接至NB逻辑606的CPU总线耦合在一起。在一些配置中,NB逻辑606可整合至处理器604。NB逻辑606亦可连接至多个快速外围组件互连(PCIe)插槽670及SB逻辑608(可选)。多个PCIe插槽670可用于连接及总线,例如:PCI Express标准x1、USB 2.0、SM总线(系统管理总线,SMBus)、SIM卡、用于另一PCIe通道(lane)的未来延伸(extension)、1.5V及3.5V电源以及用于诊断服务器系统600底盘上的LED的导线。
于服务器系统600中,NB逻辑606与SB逻辑608以外围组件互连(PCI)总线607连接。PCI总线607可支持处理器604上的功能,但采用独立于任何处理器604的本机总线的标准化格式。PCI总线607可进一步连接至多个PCIe插槽670(例如:PCI插槽671)。连接至PCI总线607的装置可看似直接连接到CPU总线的总线控制器(未图标),于处理器604的地址空间中分配地址,并同步化至单一总线时钟(bus clock)。可用于多个PCI插槽670的PCI卡包括但不限于:网络接口卡(network interface cards,NICs)、声卡、调制解调器(modems)、电视调谐器卡(TV tuner cards)、磁盘控制器(disk controllers)、视频卡(video cards)、小计算机系统接口(small computer system interface,SCSI)配接器以及个人计算机存储卡国际协会(personal computer memory card international association,PCMCIA)卡。
SB逻辑608可经由扩充总线将PCI总线607耦合至多个扩充卡或ISA插槽650(例如:ISA插槽651)。扩充总线可为用于SB逻辑608与外围装置间的通信的总线,可包括但不限于:工业标准架构(industry standard architecture,ISA)总线、PC/604总线、低接脚计数(low pin count)总线、扩充型工业标准架构(extended ISA,EISA)总线、整合驱动电子(integrated drive electronics,IDE)总线或可用于外围装置数据通信的任何其他合适的总线。
于此范例中,BIOS 605可为配置以启动及辨识服务器系统600的多种零件的任何程序指令或固件。BIOS为重要的系统零件,负责初始化及测试对应服务器系统的硬件零件。BIOS可为硬件零件提供抽象化层(abstraction layer),从而为应用程序及操作系统提供一致的与诸如键盘、显示器及其他输入/输出装置的外围装置互动的方式。
于服务器系统600中,SB逻辑608更耦合至连接到PSU 602的BMC 603。在一些实施中,BMC 603亦可为机架管理控制器(rack management controller,RMC)。BMC 603被配置来监控服务器系统600的零件的操作状态,并基于零件的操作状态控制服务器系统600。
虽然图6中的范例性服务器系统600仅示出某些零件,但可处理或储存数据、或接收或发送信号的多种类型的电子或计算零件亦可包括于范例性服务器系统600。再者,范例性服务器系统600中的电子或计算零件可被配置来执行多种类型的应用程序,及/或用于多种类型的操作系统。这些操作系统可包括但不限于:Android、柏克莱软件分配(BerkeleySoftware Distribution,BSD)、iPhone OS(iOS)、Linux、OS X、类Unix实时操作系统(Unix-like Real-time Operating System)(例如:QNX)、微软窗口(Microsoft Windows)、WindowPhone以及IBM z/OS。
根据范例性服务器系统600所欲的实施,可使用各种网络及通信协议,包括但不限于:TCP/IP、开放系统互连(open systems interconnection,OSI)、文件传送协议(filetransfer protocol,FTP)、通用即插即用(universal plug and play,UpnP)、网络文件系统(network file system,NFS)、公用因特网文件系统(common internet file system,CIFS)、AppleTalk通信协议等。如同于本技术领域普通技术人员所理解的,图6用于解释的目的。因此,网络系统可以不同方式适当地实施,但仍提供根据本公开多种范例的网络平台的配置。
于图6的范例性配置中,范例性服务器系统600亦可包括一个或多个无线零件,可在特定无线信道(wireless channel)的计算范围内操作以与一个或多个电子装置通信。无线信道可为任何合适的信道用于使装置进行无线通信,例如:蓝牙(Bluetooth)、蜂窝系统(cellular)、NFC或Wi-Fi信道。须理解的是,装置可具有一个或多个传统有线通信连接,一如本技术领域已知的。多种其他元件及/或组合亦可于多种范例的范围内。
虽然本发明的多种实施例已描述于上,但仍应理解,它们仅以范例的方式呈现而非限制。于不脱离本发明的精神或范围的情况下,可根据本文的公开对所公开的范例进行许多改变。因此,本发明的广度及范围不应被上述任何范例所限制。更确切地说,本发明的范围应根据权利要求及与其等价的物来定义。
尽管已就一个或多个实施说明及描述本发明,但于本技术领域普通技术人员在阅读及理解本说明书及附图时,将想到等价的改动及修改。此外,尽管本发明的特定特征可能仅在一个或数个实施中被公开,但如此特征可与其他实施的一个或多个其他特征结合,如同任何给定或特定应用可能期望及有益的。
本文所用的术语仅用于描述特定范例,而非旨于限制本发明。如此处所用的,单数型式「一」「一个」及「该」亦旨于包括复数形式,除非上下文另有明确说明。此外,在具体实施方式及/或权利要求中使用术语「包括」、「包含」、「具有」、「有」、「拥有」或其变体的范围,这些术语旨在以近似于术语「包括」的方式包含。
除非另有定义,否则本文所用的所有术语(包括技术及科学术语)具有与于本发明所属技术领域中的普通技术人员通常理解的含义相同的含义。此外,诸如于那些常用字典中定义的术语应被解释为具有与其在相关领域的上下文中的含义一致的含义,且除非于本文中明确地如此定义,否则将不被理解为理想化或过于正式的含义。
Claims (10)
1.一种计算机实施方法,用于在计算机系统的启动期间更新计算机系统中的扩充只读存储器编码,包括:
自多个储存库中的至少一个储存库存取扩充只读存储器编码的一个或多个复本,其中所述扩充只读存储器编码的配置是用以执行所述计算机系统中特定装置的初始化程序,并且所述多个储存库包括所述计算机系统内的多个本地储存库及所述计算机系统外的多个远程储存库;
基于选择准则,自所述扩充只读存储器编码的所述一个或多个复本中选择一个复本,作为欲使用的只读存储器编码;
将所述欲使用的只读存储器编码复制到所述计算机系统的系统存储器;以及
执行所述存储器中的所述欲使用的只读存储器编码,以初始化所述特定装置。
2.如权利要求1所述的计算机实施方法,其中所述选择准则还包括:
决定是否可自所述扩充只读存储器编码的所述一个或多个复本中辨识出所述扩充只读存储器编码的最新复本;
作为对确定所述扩充只读存储器编码的所述最新复本可被辨识的响应,选择所述最新复本作为所述欲使用的只读存储器编码;以及
作为对确定无法辨识所述扩充只读存储器编码的所述最新复本的响应,选择所述扩充只读存储器编码中具有最高优先级的复本作为所述欲使用的只读存储器编码;
其中所述扩充只读存储器编码中的复本的优先级藉由所述扩充只读存储器编码中的所述复本的位置而决定,其中所述本地储存库相对于所述远程储存库具有较高的优先级,且所述计算机系统的计算机总线卡相对所述计算机系统的任何其他本地储存库亦具有较高的优先级。
3. 如权利要求1所述的计算机实施方法,其中对所述欲使用的只读存储器编码的复制还包括:
决定所述欲使用的只读存储器编码是否位于远程储存库;以及
作为对确定所述欲使用的只读存储器编码位于远程储存库的响应,自所述远程储存库下载所述欲使用的只读存储器编码,作为经下载而欲使用的只读存储器编码。
4. 如权利要求1所述的计算机实施方法,其中所述方法还包括:
于所述存取之前,确定所述计算机系统中的计算机总线卡中的现存扩充只读存储器编码为不存在或无效;以及
执行所述存取及所述选择,以作为对确定计算机系统中的计算机总线卡中的所述现存扩充只读存储器编码为不存在或无效的响应。
5.一种计算机系统,用以在计算机系统的启动期间更新扩充只读存储器编码,包括:
多个储存库;
系统存储器;
特定装置;
处理器;以及
储存多个指令的计算机可读取介质,当所述指令由所述处理器执行时,会使所述计算机系统执行下列操作,包括:
自多个储存库中的至少一个储存库存取扩充只读存储器编码的一个或多个复本,其中所述扩充只读存储器编码的配置是为所述特定装置执行初始化程序,并且所述多个储存库包括所述计算机系统内的多个本地储存库及所述计算机系统外的多个远程储存库;
基于选择准则自所述扩充只读存储器编码的所述一个或多个复本中选择一个复本,作为欲使用的只读存储器编码;
将所述欲使用的只读存储器编码复制到所述计算机系统的所述系统存储器;以及
执行所述系统存储器中的所述欲使用的只读存储器编码以初始化所述特定装置。
6.如权利要求5所述的计算机系统,其中所述选择准则还包括:
决定是否可自所述扩充只读存储器编码中的所述一个或多个复本中辨识出所述扩充只读存储器编码的最新复本;
作为对确定所述扩充只读存储器编码的所述最新复本可被辨识的响应,选择所述最新复本作为所述欲使用的只读存储器编码;以及
作为对确定无法辨识所述扩充只读存储器编码的所述最新复本的响应,选择所述扩充只读存储器编码中具有最高优先级的复本作为所述欲使用的只读存储器编码;
其中所述扩充只读存储器编码中的复本的优先级藉由所述扩充只读存储器编码中的所述复本的位置而决定,其中所述本地储存库相对于所述远程储存库具有较高的优先级,且所述计算机系统的计算机总线卡相对所述计算机系统的任何其他本地储存库亦具有较高的优先级。
7. 如权利要求5所述的计算机系统,其中对所述欲使用的只读存储器编码的复制还包括:
决定所述欲使用的只读存储器编码是否位于远程储存库;以及
作为对确定所述欲使用的只读存储器编码位于远程储存库的响应,自所述远程储存库下载所述欲使用的只读存储器编码,作为经下载而欲使用的只读存储器编码。
8.一种非暂态计算机可读取储存介质,所述非暂态计算机可读取储存介质包括多个指令,当所述指令由一计算机系统中的至少一个处理器执行时,使所述计算机系统在计算机系统的启动期间执行下列操作,包括:
自多个储存库中的至少一个储存库存取扩充只读存储器编码的一个或多个复本,其中所述扩充只读存储器编码的配置是用以为特定装置执行初始化程序,并且所述多个储存库包括计算机系统内的多个本地储存库及所述计算机系统外的多个远程储存库;
基于选择准则自所述扩充只读存储器编码的所述一个或多个复本中选择一个复本,作为欲使用的只读存储器编码;
将所述欲使用的只读存储器编码复制至所述计算机系统的系统存储器;以及
执行所述存储器中的所述欲使用的只读存储器编码以初始化所述特定装置。
9.如权利要求8所述的非暂态计算机可读取储存介质,其中所述选择准则还包括:
决定是否可自所述扩充只读存储器编码中的所述一个或多个复本中辨识出所述扩充只读存储器编码的最新复本;
作为对确定所述扩充只读存储器编码的所述最新复本可被辨识的响应,选择所述最新复本作为所述欲使用的只读存储器编码;以及
作为对确定无法辨识所述扩充只读存储器编码的所述最新复本的响应,选择所述扩充只读存储器编码中具有最高优先级的复本作为所述欲使用的只读存储器编码,所述扩充只读存储器编码中的复本的优先级藉由所述扩充只读存储器编码中的所述复本的位置而决定;所述本地储存库相对于所述远程储存库具有较高的优先级,且所述计算机系统的计算机总线卡相对所述计算机系统的任何其他本地储存库亦具有较高的优先级。
10. 如权利要求8所述的非暂态计算机可读取储存介质,其中对所述欲使用的只读存储器编码的复制还包括:
决定所述欲使用的只读存储器编码是否位于远程储存库;以及
作为对确定所述欲使用的只读存储器编码位于远程储存库的响应,自所述远程储存库下载所述欲使用的只读存储器编码,作为经下载而欲使用的只读存储器编码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/105,043 | 2018-08-20 | ||
US16/105,043 US10430181B1 (en) | 2018-08-20 | 2018-08-20 | Retrieving updated firmware code |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851154A CN110851154A (zh) | 2020-02-28 |
CN110851154B true CN110851154B (zh) | 2023-03-24 |
Family
ID=67262092
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910109762.8A Active CN110851154B (zh) | 2018-08-20 | 2019-02-11 | 用于更新只读存储器编码的计算机实施方法、系统及介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10430181B1 (zh) |
EP (1) | EP3614258B1 (zh) |
JP (1) | JP2020030812A (zh) |
CN (1) | CN110851154B (zh) |
TW (1) | TWI707274B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210079601A (ko) * | 2019-12-20 | 2021-06-30 | 주식회사 실리콘웍스 | 펌웨어를 업데이트하는 터치 시스템 및 방법 |
TWI821998B (zh) * | 2021-07-09 | 2023-11-11 | 台達電子工業股份有限公司 | 離線式軟體在環模擬的開發系統及離線式軟體在環模擬方法 |
US11947886B2 (en) | 2021-07-09 | 2024-04-02 | Delta Electronics, Inc. | Development system and method of offline software-in-the-loop simulation |
WO2023009146A1 (en) * | 2021-07-30 | 2023-02-02 | Hewlett-Packard Development Company, L.P. | Bioss with oprom managers |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015087365A1 (ja) * | 2013-12-09 | 2015-06-18 | 三菱電機株式会社 | 情報機器 |
CN106681751A (zh) * | 2015-11-05 | 2017-05-17 | 广达电脑股份有限公司 | 统一固件管理系统和管理方法以及计算机可读取介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3597690B2 (ja) * | 1998-01-21 | 2004-12-08 | 株式会社東芝 | デジタル情報記録再生システム |
US20030217357A1 (en) * | 2002-05-14 | 2003-11-20 | Parry Travis J. | Monitoring firmware |
US20040030877A1 (en) * | 2002-08-06 | 2004-02-12 | Aleksandr Frid | Using system BIOS to update embedded controller firmware |
US7174446B2 (en) * | 2003-04-25 | 2007-02-06 | Dell Products L.P. | System and method for managing the boot sequence of an information handling system |
US7337267B1 (en) * | 2004-02-10 | 2008-02-26 | Netlogic Microsystems, Inc | Hierarchical, programmable-priority content addressable memory system |
KR100604877B1 (ko) * | 2004-07-03 | 2006-07-31 | 삼성전자주식회사 | 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법 |
US7835615B2 (en) * | 2004-10-12 | 2010-11-16 | Panasonic Corporation | Data processing apparatus |
US7418590B2 (en) * | 2005-07-14 | 2008-08-26 | Dell Products L.P. | Information handling system for storing basic input output system configurations |
JP4984503B2 (ja) * | 2005-11-28 | 2012-07-25 | 富士通株式会社 | 携帯端末装置およびソフトウェアインストール方法 |
US8176306B2 (en) * | 2009-07-24 | 2012-05-08 | Hewlett-Packard Development Company, L.P. | Boot block |
US8677343B2 (en) * | 2011-09-16 | 2014-03-18 | Cisco Technology, Inc. | Centrally coordinated firmware upgrade model across network for minimizing uptime loss and firmware compatibility |
US9151051B2 (en) * | 2013-02-04 | 2015-10-06 | Andre Cossette | 65 db sound barrier insulated block |
US9323568B2 (en) * | 2014-01-24 | 2016-04-26 | International Business Machines Corporation | Indicating a low priority transaction |
US9335947B2 (en) * | 2014-06-30 | 2016-05-10 | Raytheon Company | Inter-processor memory |
US10108412B2 (en) * | 2016-03-30 | 2018-10-23 | Square, Inc. | Blocking and non-blocking firmware update |
US10120806B2 (en) * | 2016-06-27 | 2018-11-06 | Intel Corporation | Multi-level system memory with near memory scrubbing based on predicted far memory idle time |
JP6698467B2 (ja) * | 2016-08-09 | 2020-05-27 | シャープ株式会社 | 電子回路システム及び制御装置の起動方法 |
US20180113815A1 (en) * | 2016-10-21 | 2018-04-26 | Advanced Micro Devices, Inc. | Cache entry replacement based on penalty of memory access |
-
2018
- 2018-08-20 US US16/105,043 patent/US10430181B1/en active Active
-
2019
- 2019-01-28 TW TW108103021A patent/TWI707274B/zh active
- 2019-02-11 CN CN201910109762.8A patent/CN110851154B/zh active Active
- 2019-07-10 JP JP2019128484A patent/JP2020030812A/ja active Pending
- 2019-07-11 EP EP19185748.1A patent/EP3614258B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015087365A1 (ja) * | 2013-12-09 | 2015-06-18 | 三菱電機株式会社 | 情報機器 |
CN106681751A (zh) * | 2015-11-05 | 2017-05-17 | 广达电脑股份有限公司 | 统一固件管理系统和管理方法以及计算机可读取介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110851154A (zh) | 2020-02-28 |
JP2020030812A (ja) | 2020-02-27 |
TW202009696A (zh) | 2020-03-01 |
EP3614258B1 (en) | 2022-04-06 |
TWI707274B (zh) | 2020-10-11 |
US10430181B1 (en) | 2019-10-01 |
EP3614258A1 (en) | 2020-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851154B (zh) | 用于更新只读存储器编码的计算机实施方法、系统及介质 | |
US10019253B2 (en) | Systems and methods of updating hot-pluggable devices | |
US9507604B2 (en) | Boot method and boot system | |
US7512777B2 (en) | Method and system for maintaining system management BIOS | |
US20060282653A1 (en) | Method for updating frimware of memory card | |
KR101555210B1 (ko) | 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치 | |
US20090006831A1 (en) | Methods and apparatuses for configuring add-on hardware to a computing platform | |
CN103365696A (zh) | Bios镜像文件获取方法及装置 | |
CN110083380A (zh) | 固件更新方法及使用此方法的电子装置 | |
TW200525422A (en) | Method of using feature flags to determine compatibility between bios revisions and installed hardware during flash update | |
CN108694052B (zh) | 一种固件升级方法、固件升级装置及固件升级系统 | |
CN109426527B (zh) | 在uefi固件及作业系统间分享蓝牙数据的电脑系统及其方法 | |
US20040103172A1 (en) | Method of updating an operation system | |
CN114020211B (zh) | 存储空间管理方法、装置、设备及存储介质 | |
US20050223209A1 (en) | Apparatus for fast booting computer and method for the same | |
US20060129520A1 (en) | System and method for automatically updating a program in a computer | |
CN109426511B (zh) | 软核更新方法和系统 | |
CN104866397A (zh) | 计算机系统与控制方法 | |
CN110955449B (zh) | 客户端的灰度发布方法及装置 | |
CN113064610A (zh) | 一种更新bios的方法、装置及介质 | |
US11340882B2 (en) | Systems and methods for enforcing update policies while applying updates from bootable image file | |
CN113360161A (zh) | 资源升级方法及相关产品 | |
US20130036411A1 (en) | Software Update Method for Display Device | |
US20210042047A1 (en) | Information processing apparatus, control method, and program | |
US8423584B2 (en) | Conditional inclusion of resources in a computer system configuration |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |