CN113741928A - 一种基于i2c的逻辑器件的固件升级方法及系统 - Google Patents

一种基于i2c的逻辑器件的固件升级方法及系统 Download PDF

Info

Publication number
CN113741928A
CN113741928A CN202110840688.4A CN202110840688A CN113741928A CN 113741928 A CN113741928 A CN 113741928A CN 202110840688 A CN202110840688 A CN 202110840688A CN 113741928 A CN113741928 A CN 113741928A
Authority
CN
China
Prior art keywords
logic device
register data
register
logic
firmware
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.)
Granted
Application number
CN202110840688.4A
Other languages
English (en)
Other versions
CN113741928B (zh
Inventor
王鹏
季冬冬
朱英澍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202110840688.4A priority Critical patent/CN113741928B/zh
Publication of CN113741928A publication Critical patent/CN113741928A/zh
Application granted granted Critical
Publication of CN113741928B publication Critical patent/CN113741928B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于I2C的逻辑器件的固件升级方法及系统,方法包括:将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;由系统侧向逻辑器件发起第一次握手,使逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;响应于寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到闪存的固件发送到逻辑器件的静态随机存储器以对逻辑器件更新,并在逻辑器件的更新完成后,恢复寄存器数据;响应于寄存器数据恢复完成,由逻辑器件向系统侧发起第二次握手以进行逻辑器件的逻辑修复,并在逻辑修复完成后结束升级。通过本发明的方案,解决了CPLD&FPGA固件升级后需进行额外的掉电重启的问题,保证了业务场景的连贯性,节省了硬件资源。

Description

一种基于I2C的逻辑器件的固件升级方法及系统
技术领域
本发明涉及固件升级技术领域,尤其涉及一种基于I2C的逻辑器件的固件升级方法及系统。
背景技术
服务器、交换机以及存储器等产品领域,CPLD(Complex Programmable LogicDevice,复杂可编程逻辑器件)和FPGA(Field Programmable Gate Array现场可编程阵列)是必不可少的逻辑器件。对于CPLD&FPGA的固件升级,现有的行业做法是,在CPLD&FPGA固件下载到器件内部的非易失存储介质后,必须完成一次掉电重启动作,新的CPLD&FPGA固件才会在不影响正常业务的情况下生效。这样带来的问题是,跑在服务器、交换机以及存储器的正常业务不得不被迫停止一段时间,以完成硬件机器的掉电重启操作。通常CPLD&FPGA固件升级通道有两种,一种是JTAG(Joint Test Action Group,联合测试工作组),JTAG是一种国际标准测试协议,主要用于芯片内部测试;一种是I2C(Inter-Integrated Circuit),I2C是一种串行通讯总线。采用JTAG升级的优点是传输速度快,适合较大固件传输,缺点是需要单独拉一条硬件JTAG通道,硬件资源利用率低。采用I2C升级的优点是,CPLD&FPGA可以和其他I2C器件共用一条I2C通道,不占用额外的硬件资源,并且,CPLD&FPGA内部的业务寄存器也是以I2C逻辑实现的,这样一来,不管是正常的业务寄存器访问,还是升级需求,就都设计在了同一条I2C链路上。缺点是I2C传输速率较JTAG低,但一般CPLD&FPGA的固件只有几十、几百K大小,升级时间完全可以接受。因此本发明提出一种基于I2C进行固件升级的方案,解决CPLD&FPGA固件升级后需进行额外的掉电重启操作的问题。
发明内容
有鉴于此,本发明提出了一种基于I2C的逻辑器件的固件升级方法及系统,解决了CPLD&FPGA固件升级后需进行额外的掉电重启操作的问题,保证了业务场景的连贯性,节省了硬件资源。
基于上述目的,本发明实施例的一方面提供了一种基于I2C的逻辑器件的固件升级方法,具体包括如下步骤:
将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
在一些实施方式中,方法还包括:
在内核加载hwmon驱动,并基于所述hwmon驱动获取升级逻辑器件的固件需要的所述逻辑器件中的寄存器;
将所述寄存器的寄存器数据写入sysfs节点。
在一些实施方式中,向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备,包括:
以协议形式向所述逻辑器件发送命令,使逻辑器件与系统侧进行交互,以进行所述逻辑器件的逻辑准备。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据,包括:
读取所述sysfs节点中的寄存器数据,并将所述寄存器数据写入本地缓冲寄存器。
在一些实施方式中,恢复寄存器数据,包括:
读取本地缓冲寄存器中的寄存器数据,并将所述寄存器数据写入所述sysfs节点中对应的寄存器数据。
在一些实施方式中,所述逻辑器件包括复杂可编程逻辑器件和现场可编程阵列中的任意一个或全部。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据以及恢复寄存器数据,包括:
基于逻辑器件的固件升级主线程构建子线程,并基于所述子线程备份寄存器数据以及恢复寄存器数据。
在一些实施方式中,方法还包括:在主线程定义变量;
基于所述子线程备份寄存器数据以及恢复寄存器数据,包括:响应于接收到主线程发送的变量,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据。
在一些实施方式中,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据,还包括:
响应于执行备份寄存器数据或执行恢复寄存器数据完成,基于所述变量继续执行逻辑器件的固件升级主线程。
本发明实施例的另一方面,还提供了一种逻辑器件的固件升级系统,包括:
拷贝模块,所述拷贝模块配置为将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
第一握手模块,所述第一握手模块配置为由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
更新模块,所述更新模块配置为响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
第二握手模块,所述第二握手模块配置为响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手以进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
在一些实施方式中,系统还包括获取模块,所述获取模块配置为在内核加载hwmon驱动,并基于所述hwmon驱动获取升级逻辑器件的固件需要的所述逻辑器件中的寄存器;
将所述寄存器的寄存器数据写入sysfs节点。
在一些实施方式中,向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备,包括:
以协议形式向所述逻辑器件发送命令,使逻辑器件与系统侧进行交互,以进行所述逻辑器件的逻辑准备。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据,包括:
读取所述sysfs节点中的寄存器数据,并将所述寄存器数据写入本地缓冲寄存器。
在一些实施方式中,恢复寄存器数据,包括:
读取本地缓冲寄存器中的寄存器数据,并将所述寄存器数据写入所述sysfs节点中对应的寄存器数据。
在一些实施方式中,所述逻辑器件包括复杂可编程逻辑器件和现场可编程阵列中的任意一个或全部。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据以及恢复寄存器数据,包括:
基于逻辑器件的固件升级主线程构建子线程,并基于所述子线程备份寄存器数据以及恢复寄存器数据。
在一些实施方式中,系统还定义模块,所述定义模块配置为在主线程定义变量;
基于所述子线程备份寄存器数据以及恢复寄存器数据,包括:响应于接收到主线程发送的变量,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据。
在一些实施方式中,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据,还包括:
响应于执行备份寄存器数据或执行恢复寄存器数据完成,基于所述变量继续执行逻辑器件的固件升级主线程。
本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明具有以下有益技术效果:通过本发明的方案,解决了CPLD&FPGA固件升级后需进行额外的掉电重启操作的问题,保证了业务场景的连贯性,节省了硬件资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的逻辑器件的固件升级方法的一实施例的框图;
图2为本发明提供的逻辑器件的固件升级系统的一实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种基于I2C的逻辑器件的固件升级方法的实施例。如图1所示,其包括如下步骤:
步骤S101、将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
步骤S103、由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
步骤S105、响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
步骤S107、响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手以进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
具体的,将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存(Flash),即把固件下载到逻辑器件外挂的Flash,新的固件只是烧写到了非易失存储介质,并没有实时生效到当前逻辑器件的逻辑处理中,只有重新上电逻辑器件后(通过掉电重启整个机器),逻辑器件内部初始化逻辑才会把Flash中的新固件刷到其自身内部的静态随机存储器(Static Random-Access Memory,简称SRAM)中生效。其中,逻辑器件,例如可以为CPLD、FPGA等逻辑器件。
由系统侧,例如SoC,以私有协议形式,发起第一次握手,通知逻辑器件接下来需要进行实时刷新SRAM等逻辑动作,在SoC与逻辑器件经过若干交互之后,CPLD&FPAG完成自身的逻辑准备工作,向SoC发送ACK信息,表示其已准备就绪,可以做接下来的动作。
接下来备份业务寄存器,并在业务寄存器备份完成并且接收到对逻辑器件的更新命令后由SoC将拷贝到Flash的固件发送到逻辑器件的SRAM以完成对逻辑器件的实时更新,但逻辑器件的实时更新,会导致之前缓存在SRAM中的寄存器数据会被一并冲掉,也因此,需要在发送refresh命令前后,做额外的寄存器备份和恢复动作,因此在逻辑器件的更新完成后,进行恢复所述寄存器数据的动作;
第二次握手,由逻辑器件侧发起,当寄存器完成恢复后,逻辑器件还需要做一些额外的逻辑修复动作,等到这些全部完成就绪后,逻辑器件向SoC发送最终的升级成功信息,SoC接收到信息后,结束整个升级流程,升级工作结束。
通过本发明的方案,解决了CPLD&FPGA固件升级后需进行额外的掉电重启操作的问题,保证了业务场景的连贯性,节省了硬件资源。
在一些实施方式中,方法还包括:
在内核加载hwmon驱动,并基于所述hwmon驱动获取升级逻辑器件的固件需要的所述逻辑器件中的寄存器;
将所述寄存器的寄存器数据写入sysfs节点。
在内核加载逻辑器件的hwmon驱动,将在固件升级过程中会被破坏的业务寄存器导出到sysfs节点,为系统侧升级工具提供编程接口。
在一些实施方式中,向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备,包括:
以协议形式向所述逻辑器件发送命令,使逻辑器件与系统侧进行交互,以进行所述逻辑器件的逻辑准备。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据,包括:
读取所述sysfs节点中的寄存器数据,并将所述寄存器数据写入本地缓冲寄存器。
在一些实施方式中,恢复寄存器数据,包括:
读取本地缓冲寄存器中的寄存器数据,并将所述寄存器数据写入所述sysfs节点中对应的寄存器数据。
在一些实施方式中,所述逻辑器件包括复杂可编程逻辑器件和现场可编程阵列中的任意一个或全部。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据以及恢复寄存器数据,包括:
基于逻辑器件的固件升级主线程构建子线程,并基于所述子线程备份寄存器数据以及恢复寄存器数据。
在一些实施方式中,方法还包括:在主线程定义变量;
基于所述子线程备份寄存器数据以及恢复寄存器数据,包括:响应于接收到主线程发送的变量,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据。
在一些实施方式中,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据,还包括:
响应于执行备份寄存器数据或执行恢复寄存器数据完成,基于所述变量继续执行逻辑器件的固件升级主线程。
具体的,根据本发明的多个实施方式,为提高原有代码的执行效率和代码清晰度,对于备份寄存器数据和恢复寄存器数据,可以在固件升级主线程创建一个子线程加以处理,子线程中,通过主线程传入的一个标识变量,判断是做备份动作还是恢复动作。如果是备份,则通过读取逻辑器件hwmon驱动抛出的sysfs节点,将寄存器数据缓存到本地buffer;如果是恢复,则把之前已保存到本地buffer的寄存器数据逐一再写入逻辑器件hwmon驱动抛出的sysfs节点,固件升级主线程等待子线程完成寄存器备份或恢复后,将条件变量置位,随后,主线程再继续往下跑。
下面,通过一个具体的实施例对本发明的逻辑器件的固件升级方法进行说明。
以AST2500 BMC(ARM平台)为例,具体实施方案如下:
加载CPLD&FPGA hwmon驱动
#modprobe boardid_cpld_productid
#echo boardid_cpld_productid i2caddr>/sys/bus/devices/i2c-x/new_device
驱动加载后,/sys/bus/devices/i2c-x/下会生成新的hwmon,末端路径下,就是全部寄存器的编程节点。
将待升级的CPLD&FPGA固件拷贝到BMC的指定目录下;
执行cpldupdate-i2c,启动固件升级流程,即第一次握手→备份寄存器数据→固件更新→恢复寄存器数据→第二次握手,具体用法如下:
cpldupdate-i2c<bus><address><img_path><boardnumber><cpldnumber><hitless>
其中,<bus>为CPLD&FPGA的I2C链路上游的i2c bus number,<address>为CPLD&FPGA的i2c address,<img_path>为待升级CPLD&FPGA固件的存放路径,<boardnumber>和<cpldnumber>用于标识具体板卡上的具体CPLD&FPGAIC,<hitless>用来标识第一二次握手的开始和结束,实现上可以用一个GPIO,也可以读写母板上CPLD&FPGA的指定寄存器。
需要注意的是,母板上的CPLD&FPGA的固件升级还是不得不使用一个GPIO作为hitless信号,其他CPLD&FPGA的固件升级可以借助来自母板的CPLD&FPGA寄存器作为hitless信号。
基于同一发明构思,根据本发明的另一个方面,如图2所示,本发明的实施例还提供了一种逻辑器件的固件升级系统,包括:
拷贝模块110,所述拷贝模块110配置为将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
第一握手模块120,所述第一握手模块120配置为由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
更新模块130,所述更新模块130配置为响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
第二握手模块140,所述第二握手模块140配置为响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手以进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
在一些实施方式中,系统还包括获取模块,所述获取模块配置为在内核加载hwmon驱动,并基于所述hwmon驱动获取升级逻辑器件的固件需要的所述逻辑器件中的寄存器;
将所述寄存器的寄存器数据写入sysfs节点。
在一些实施方式中,向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备,包括:
以协议形式向所述逻辑器件发送命令,使逻辑器件与系统侧进行交互,以进行所述逻辑器件的逻辑准备。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据,包括:
读取所述sysfs节点中的寄存器数据,并将所述寄存器数据写入本地缓冲寄存器。
在一些实施方式中,恢复寄存器数据,包括:
读取本地缓冲寄存器中的寄存器数据,并将所述寄存器数据写入所述sysfs节点中对应的寄存器数据。
在一些实施方式中,所述逻辑器件包括复杂可编程逻辑器件和现场可编程阵列中的任意一个或全部。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据以及恢复寄存器数据,包括:
基于逻辑器件的固件升级主线程构建子线程,并基于所述子线程备份寄存器数据以及恢复寄存器数据。
在一些实施方式中,系统还定义模块,所述定义模块配置为在主线程定义变量;
基于所述子线程备份寄存器数据以及恢复寄存器数据,包括:响应于接收到主线程发送的变量,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据。
在一些实施方式中,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据,还包括:
响应于执行备份寄存器数据或执行恢复寄存器数据完成,基于所述变量继续执行逻辑器件的固件升级主线程。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,在该计算机设备中包括处理器以及存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行如下的方法的步骤:
将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手以进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
在一些实施方式中,方法还包括:
在内核加载hwmon驱动,并基于所述hwmon驱动获取升级逻辑器件的固件需要的所述逻辑器件中的寄存器;
将所述寄存器的寄存器数据写入sysfs节点。
在一些实施方式中,向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备,包括:
以协议形式向所述逻辑器件发送命令,使逻辑器件与系统侧进行交互,以进行所述逻辑器件的逻辑准备。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据,包括:
读取所述sysfs节点中的寄存器数据,并将所述寄存器数据写入本地缓冲寄存器。
在一些实施方式中,恢复寄存器数据,包括:
读取本地缓冲寄存器中的寄存器数据,并将所述寄存器数据写入所述sysfs节点中对应的寄存器数据。
在一些实施方式中,所述逻辑器件包括复杂可编程逻辑器件和现场可编程阵列中的任意一个或全部。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据以及恢复寄存器数据,包括:
基于逻辑器件的固件升级主线程构建子线程,并基于所述子线程备份寄存器数据以及恢复寄存器数据。
在一些实施方式中,方法还包括:在主线程定义变量;
基于所述子线程备份寄存器数据以及恢复寄存器数据,包括:响应于接收到主线程发送的变量,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据。
在一些实施方式中,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据,还包括:
响应于执行备份寄存器数据或执行恢复寄存器数据完成,基于所述变量继续执行逻辑器件的固件升级主线程。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行如下方法的计算机程序:
将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手以进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
在一些实施方式中,方法还包括:
在内核加载hwmon驱动,并基于所述hwmon驱动获取升级逻辑器件的固件需要的所述逻辑器件中的寄存器;
将所述寄存器的寄存器数据写入sysfs节点。
在一些实施方式中,向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备,包括:
以协议形式向所述逻辑器件发送命令,使逻辑器件与系统侧进行交互,以进行所述逻辑器件的逻辑准备。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据,包括:
读取所述sysfs节点中的寄存器数据,并将所述寄存器数据写入本地缓冲寄存器。
在一些实施方式中,恢复寄存器数据,包括:
读取本地缓冲寄存器中的寄存器数据,并将所述寄存器数据写入所述sysfs节点中对应的寄存器数据。
在一些实施方式中,所述逻辑器件包括复杂可编程逻辑器件和现场可编程阵列中的任意一个或全部。
在一些实施方式中,备份逻辑器件中寄存器的寄存器数据以及恢复寄存器数据,包括:
基于逻辑器件的固件升级主线程构建子线程,并基于所述子线程备份寄存器数据以及恢复寄存器数据。
在一些实施方式中,方法还包括:在主线程定义变量;
基于所述子线程备份寄存器数据以及恢复寄存器数据,包括:响应于接收到主线程发送的变量,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据。
在一些实施方式中,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据,还包括:
响应于执行备份寄存器数据或执行恢复寄存器数据完成,基于所述变量继续执行逻辑器件的固件升级主线程。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种基于I2C的逻辑器件的固件升级方法,其特征在于,包括:
将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手以进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
2.根据权利要求1所述的方法,其特征在于,还包括:
在内核加载hwmon驱动,并基于所述hwmon驱动获取升级逻辑器件的固件需要的所述逻辑器件中的寄存器;
将所述寄存器的寄存器数据写入sysfs节点。
3.根据权利要求1所述的方法,其特征在于,向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备,包括:
以协议形式向所述逻辑器件发送命令,使逻辑器件与系统侧进行交互,以进行所述逻辑器件的逻辑准备。
4.根据权利要求2所述的方法,其特征在于,备份逻辑器件中寄存器的寄存器数据,包括:
读取所述sysfs节点中的寄存器数据,并将所述寄存器数据写入本地缓冲寄存器。
5.根据权利要求4所述的方法,其特征在于,恢复寄存器数据,包括:
读取本地缓冲寄存器中的寄存器数据,并将所述寄存器数据写入所述sysfs节点中对应的寄存器数据。
6.根据权利要求1所述的方法,其特征在于,所述逻辑器件包括复杂可编程逻辑器件和现场可编程阵列中的任意一个或全部。
7.根据权利要求1所述的方法,其特征在于,备份逻辑器件中寄存器的寄存器数据以及恢复寄存器数据,包括:
基于逻辑器件的固件升级主线程构建子线程,并基于所述子线程备份寄存器数据以及恢复寄存器数据。
8.根据权利要求7所述的方法,其特征在于,还包括:在主线程定义变量;
基于所述子线程备份寄存器数据以及恢复寄存器数据,包括:响应于接收到主线程发送的变量,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据。
9.根据权利要求8所述的方法,其特征在于,基于所述变量确定执行备份寄存器数据或执行恢复寄存器数据,还包括:
响应于执行备份寄存器数据或执行恢复寄存器数据完成,基于所述变量继续执行逻辑器件的固件升级主线程。
10.一种逻辑器件的固件升级系统,其特征在于,包括:
拷贝模块,所述拷贝模块配置为将待升级的逻辑器件的固件拷贝到与逻辑器件连接的闪存;
第一握手模块,所述第一握手模块配置为由系统侧向所述逻辑器件发起第一次握手,使所述逻辑器件进行逻辑准备并备份逻辑器件中寄存器的寄存器数据;
更新模块,所述更新模块配置为响应于所述寄存器数据备份完成并且接收到对逻辑器件的更新命令,由系统侧将拷贝到所述闪存的固件发送到逻辑器件的静态随机存储器以对所述逻辑器件更新,并在所述逻辑器件的更新完成后,恢复所述寄存器数据;
第二握手模块,所述第二握手模块配置为响应于所述寄存器数据恢复完成,由所述逻辑器件向系统侧发起第二次握手以进行所述逻辑器件的逻辑修复,并在所述逻辑修复完成后结束升级。
CN202110840688.4A 2021-07-25 2021-07-25 一种基于i2c的逻辑器件的固件升级方法及系统 Active CN113741928B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110840688.4A CN113741928B (zh) 2021-07-25 2021-07-25 一种基于i2c的逻辑器件的固件升级方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110840688.4A CN113741928B (zh) 2021-07-25 2021-07-25 一种基于i2c的逻辑器件的固件升级方法及系统

Publications (2)

Publication Number Publication Date
CN113741928A true CN113741928A (zh) 2021-12-03
CN113741928B CN113741928B (zh) 2023-07-14

Family

ID=78728998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110840688.4A Active CN113741928B (zh) 2021-07-25 2021-07-25 一种基于i2c的逻辑器件的固件升级方法及系统

Country Status (1)

Country Link
CN (1) CN113741928B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468387A (zh) * 2014-09-03 2016-04-06 华为技术有限公司 升级处理方法、装置和系统
CN106610847A (zh) * 2015-10-22 2017-05-03 湖南国奥电力设备有限公司 升级处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468387A (zh) * 2014-09-03 2016-04-06 华为技术有限公司 升级处理方法、装置和系统
CN106610847A (zh) * 2015-10-22 2017-05-03 湖南国奥电力设备有限公司 升级处理方法

Also Published As

Publication number Publication date
CN113741928B (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN109783014B (zh) 一种存储数据的方法及装置
CN112491600A (zh) 升级网卡固件的方法、装置、网卡和设备
CN114116280B (zh) 交互式bmc自恢复方法、系统、终端及存储介质
WO2022188690A1 (zh) 升级电子设备的方法及装置
CN111858077A (zh) 一种存储系统中io请求日志的记录方法、装置及设备
CN114020340B (zh) 一种服务器系统及其数据处理方法
CN113127264A (zh) 数据存储装置修复方法
CN110764799A (zh) 一种优化远程更新fpga加速卡的方法、设备及介质
CN112600690B (zh) 一种配置数据同步方法、装置、设备及存储介质
CA2058933C (en) Reset method when adaptor module is faulty and computer system executing same
CN112162794B (zh) 一种单板启动方法、装置、单板以及网络设备
WO2020094063A1 (zh) 存储数据的方法、装置、存储介质及电子装置
CN113741928A (zh) 一种基于i2c的逻辑器件的固件升级方法及系统
CN108958776A (zh) 一种基于命令行的bmc固件更新方法与装置
CN113515291A (zh) 设备在线升级方法和装置
CN114995852A (zh) 一种设备升级方法、设备及计算机可读存储介质
CN112527327A (zh) 一种uos操作系统恢复出厂的方法、系统、终端及存储介质
CN110096366B (zh) 一种异构内存系统的配置方法、装置及服务器
CN113032021A (zh) 系统切换及其数据处理方法、装置、设备及存储介质
CN113835741A (zh) 补丁加载方法、网元及计算机可读存储介质
CN110908821A (zh) 任务失败管理的方法、装置、设备和存储介质
CN117608494B (zh) 云计算集群的存储方法及系统
CN113138881B (zh) 分布式文件系统备份方法、装置和系统
CN118295964A (zh) 创建双活卷快照的方法、装置、计算机设备及存储介质
CN113687851A (zh) 嵌入式设备升级方法及装置

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