CN117992246A - 数据传输方法、装置、电子设备及存储介质 - Google Patents
数据传输方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117992246A CN117992246A CN202311616405.3A CN202311616405A CN117992246A CN 117992246 A CN117992246 A CN 117992246A CN 202311616405 A CN202311616405 A CN 202311616405A CN 117992246 A CN117992246 A CN 117992246A
- Authority
- CN
- China
- Prior art keywords
- data
- shared memory
- target
- memory space
- data transmission
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 202
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000013507 mapping Methods 0.000 claims abstract description 28
- 230000004622 sleep time Effects 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 27
- 230000007958 sleep Effects 0.000 claims description 17
- 238000013475 authorization Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 11
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000004617 sleep duration Effects 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000011161 development Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 9
- 241001290266 Sciaenops ocellatus Species 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据传输方法、装置、电子设备及存储介质,涉及计算机技术领域,该方法包括:根据高速串行计算机扩展总线PCIE的基地址寄存器建立的目标共享内存空间的占用信息,在第一共享内存空间中对FRU数据的数据头进行配置,得到初始数据头;根据FRU数据的数据内容,生成FRU数据的目标数据体和目标校验值;根据目标校验值和目标数据体的目标长度,对第一共享内存空间中的初始数据头进行更新,得到目标数据头,并将目标数据体写入第一共享内存空间;基于PCIE,将第一共享内存空间的中的目标数据头和目标数据体,按照共享映射关系,共享传输至第二共享内存空间。本发明实现低成本地进行数据安全传输。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据传输方法、装置、电子设备及存储介质。
背景技术
FRU(Field Replace Unit,现场可更换单元)数据为服务器上的可更换的设备的属性信息。FRU数据通常保存在非易失存储设备中,且独立于服务器的主处理器、BIOS(Basic Input Output System,基本输入输出系统)、系统软件或操作系统;FRU数据通常由BMC(Board Management Controller,基板控制器)固件进行收集,若服务器中的BIOS在运行过程中需要获取FRU数据,则需要通过BMC固件向BIOS传输FRU数据。
目前,通常使用Redfish管理接口在BMC与BIOS之间进行FRU传输,但是为了支持Redfish管理接口在BMC和BIOS之间进行FRU数据传输,需要针对BMC固件定制化开发虚拟USB网卡,但虚拟网卡的代码实现较为复杂,开发与维护成本较高。
发明内容
本发明提供一种数据传输方法、装置、电子设备及存储介质,用以解决现有技术中使用Redfish管理接口在BMC与BIOS之间进行FRU传输,需要针对BMC固件定制化开发虚拟USB网卡,严重影响数据传输成本的缺陷,实现低成本地进行数据安全传输。
本发明提供一种数据传输方法,应用于基板管理控制器,包括:
获取目标共享内存空间的占用信息;所述目标共享内存空间是根据所述基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立的;所述目标共享内存空间包括存在共享映射关系的基板管理控制器的第一共享内存空间和主机端的第二共享内存空间;
根据所述占用信息,在所述第一共享内存空间中对现场可更换单元FRU数据的数据头进行配置,得到所述FRU数据的初始数据头;
根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值;
根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,并将所述目标数据体写入所述第一共享内存空间;
基于所述PCIE,将所述第一共享内存空间的中的目标数据头和目标数据体,按照所述共享映射关系,共享传输至所述第二共享内存空间。
根据本发明提供的一种数据传输方法,所述根据所述占用信息,在所述第一共享内存空间中对现场可更换单元FRU数据的数据头进行配置,得到所述FRU数据的初始数据头,包括:
根据所述占用信息,判断所述目标共享内存空间是否被基本输入输出系统占用;
在确定所述目标共享内存空间被所述基本输入输出系统占用的情况下,执行睡眠操作;
在执行所述睡眠操作之后,获取第一实时睡眠时长;
判断所述第一实时睡眠时长是否达到第一预设睡眠时长;
在确定所述第一实时睡眠时长达到所述第一预设睡眠时长的情况下,根据所述占用信息,迭代判断所述目标共享内存空间是否被基本输入输出系统占用;
若在第一目标次迭代判断过程中,判断获知所述目标共享内存空间未被所述基本输入输出系统占用,且所述第一目标次迭代判断过程对应的累计判断次数小于第一预设次数的情况下,占用所述目标共享内存空间;
在所述第一共享内存空间的第一共享内存块中,将数据头模板中占用字段的值配置为第一占用标识,并将所述数据头模板中数据传输状态字段的值配置为数据准备状态,得到所述初始数据头;
其中,所述第一占用标识用于标识被所述基板管理控制器占用。
根据本发明提供的一种数据传输方法,所述根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值,包括:
通过系统管理总线收集所述FRU数据的数据内容;
根据所述第一共享内存空间的第二共享内存块中的数据体模板,对所述数据内容进行数据格式转换和编译,得到所述目标数据体;
根据所述目标长度和所述目标数据体,生成所述目标校验值。
根据本发明提供的一种数据传输方法,所述根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,包括:
对所述初始数据头执行如下更新操作,得到所述目标数据头:
将所述第一共享内存空间的第一共享内存块中的初始数据头中的校验值更新为所述目标校验值;
将所述第一共享内存空间的第一共享内存块中的初始数据头中的数据长度更新为所述目标长度;
将所述第一共享内存空间的第一共享内存块中的初始数据头中数据传输状态字段的值配置为数据配置完成状态或者数据读取授权状态;
将所述第一共享内存空间的第一共享内存块中的初始数据头中占用字段的值更新为第二占用标识,所述第二占用标识用于标识未被占用。
根据本发明提供的一种数据传输方法,所述方法还包括:
接收所述第二共享内存空间的共享更新请求;
根据所述共享更新请求以及所述共享映射关系,对所述第一共享内存空间中目标数据头中占用字段的值和/或数据传输状态字段的值进行共享映射更新;
其中,所述共享更新请求是基本输入输出系统在对所述第二共享内存空间中的目标数据体执行数据读取操作的情况下,对所述第二共享内存空间中的目标数据头中占用字段的值和/或数据传输状态字段的值进行更新产生的。
本发明还提供一种数据传输方法,应用于基本输入输出系统,包括:
获取目标共享内存空间的第二共享内存空间的目标数据头中的数据传输状态;
根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值;
根据所述目标长度,在所述第二共享内存空间的第二共享内存块中,读取目标数据体;
根据所述目标校验值,对所述目标数据体进行解析,得到FRU数据的数据内容;
其中,所述第二共享内存空间的第一共享内存块中的目标数据头和所述第二共享内存空间的第二共享内存块中目标数据体是由基板管理控制器执行如上述任一种所述数据传输方法得到的。
根据本发明提供的一种数据传输方法,所述根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值,包括:
判断所述数据传输状态是否为数据准备状态;
在确定所述数据传输状态为数据准备状态的情况下,执行睡眠操作;
在执行所述睡眠操作之后,获取第二实时睡眠时长;
判断所述第二实时睡眠时长是否达到第二预设睡眠时长;
在确定所述第二实时睡眠时长达到所述第二预设睡眠时长的情况下,迭代判断所述数据传输状态是否为数据准备状态;
若在第二目标次迭代判断过程中,判断获知所述数据传输状态为数据配置完成状态或者数据读取授权状态,且所述第二目标次迭代判断过程对应的累计判断次数小于第二预设次数的情况下,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值。
本发明还提供一种数据传输装置,应用于基板管理控制器,包括:
第一获取单元,用于获取目标共享内存空间的占用信息;所述目标共享内存空间是根据所述基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立的;所述目标共享内存空间包括存在共享映射关系的基板管理控制器的第一共享内存空间和主机端的第二共享内存空间;
配置单元,用于根据所述占用信息,在所述第一共享内存空间中对现场可更换单元FRU数据的数据头进行配置,得到所述FRU数据的初始数据头;
生成单元,用于根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值;
写入单元,用于根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,并将所述目标数据体写入所述第一共享内存空间;
传输单元,用于基于所述PCIE,将所述第一共享内存空间的中的目标数据头和目标数据体,按照所述共享映射关系,共享传输至所述第二共享内存空间。
本发明还提供一种数据传输装置,应用于基本输入输出系统,包括:
第二获取单元,用于获取目标共享内存空间的第二共享内存空间的目标数据头中的数据传输状态;
第一读取单元,用于根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值;
第二读取单元,用于根据所述目标长度,在所述第二共享内存空间的第二共享内存块中,读取目标数据体;
解析单元,用于根据所述目标校验值,对所述目标数据体进行解析,得到FRU数据的数据内容;
其中,所述第二共享内存空间的第一共享内存块中的目标数据头和所述第二共享内存空间的第二共享内存块中目标数据体是由基板管理控制器执行如上述任一种所述数据传输方法得到的。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据传输方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据传输方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据传输方法。
本发明提供的数据传输方法、装置、电子设备及存储介质,通过基于基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立目标共享内存空间,并基于目标共享内存空间的占用信息,在目标共享内存空间的第一共享内存空间中进行FRU数据的数据头配置以及数据体的配置,由此基于PCIE将第一共享内存空间的中的目标数据头和目标数据体,按照共享映射关系,实时共享传输至第二共享内存空间,一方面借用了BMC与主机之间的VGA的PCIE通路,无需新增硬件模块或者增加少量PCIE硬件成本,即可进行数据传输,且PCIE的协议栈为是在BIOS与BMC中必须实现的通用代码,简化了代码开发成本,由此实现无需实现较难维护的USB虚拟网卡和Redfish协议栈等程序,有效降低了开发成本,提高了传输速率,保证了传输安全性;另一方面,通过共享内存空间进行数据共享传输,进一步有效提高数据传输的实时性和高效性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的数据传输方法的流程示意图之一;
图2是本发明提供的数据传输方法的流程示意图之二;
图3是本发明提供的数据传输方法的流程示意图之三;
图4是本发明提供的数据传输方法的流程示意图之四;
图5是本发明提供的数据传输装置的结构示意图之一;
图6是本发明提供的数据传输装置的结构示意图之二;
图7是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供的方法可以是应用于现场可更换单元等其他设备数据的传输,本实施例对此不作具体地限定。以下以现场可更换单元数据传输为例,对本实施例提供的数据传输方法展开描述。
FRU数据通常保存在非易失存储设备中,且独立于服务器的主处理器、BIOS、系统软件或操作系统。这些功能允许在依赖于主处理器的FRU访问机制不可用时,在故障条件下获得FRU信息。这有助于创建自动的远程库存和服务应用程序。因此,如何高效低成本地进行FRU数据传输是目前亟待解决的技术问题之一。
FRU数据通常由BMC固件进行收集,若服务器中的BIOS在运行过程中需要获取FRU数据,则需要通过BMC固件向BIOS传输FRU数据。
目前,常使用IPMI(Intelligent Platform Management Interface,智能平台管理接口)协议来传输FRU数据,但IPMI是一种容易被攻击的协议,较为不安全,现在已停止更新,虽然仍在大规模使用中,但是正在逐步被Redfish协议取代。但是为了支持Redfish管理接口在BMC和BIOS之间进行FRU数据传输,需要针对BMC固件定制化开发虚拟USB网卡,但虚拟网卡的代码实现较为复杂,开发与维护成本较高,因而严重影响数据传输性能。
针对上述问题,本实施例提供一种数据传输方法、装置、电子设备及存储介质。
下面结合图1-图4描述本发明的数据传输方法。
图1为本实施例提供的数据传输方法的流程示意图之一;该方法的执行主体为基板管理控制器,该基板管理控制器是对主基板提供智能服务的控制器。其独立于服务器CPU(Central Processing Unit,中央处理器)工作,其上会运行一个较为复杂的固件;该基板管理控制器作为PCIE(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)总线的一个EP(Endpoint,终端设备),下挂在主机下面;如图1所示,该方法包括如下步骤:
步骤101,获取目标共享内存空间的占用信息;所述目标共享内存空间是根据所述基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立的;所述目标共享内存空间包括存在共享映射关系的基板管理控制器的第一共享内存空间和主机端的第二共享内存空间;
需要说明的是,此处的基板管理控制器的PCIE可以是在基板管理控制器硬件上实现单独的一个PCIE功能,也可以是基板管理控制器与VGA(Video Graphic Array,显示绘图阵列)共用一个PCIE功能,本实施例对此不作具体地限定,由此实现基于PCIE的FRU数据传输。
相对于IPMI与Redfish来说,使用PCIE通路传输FRU数据较为安全可靠,代码实现较为简单。由于绝大多数BMC设备中会集成显卡功能,BMC硬件与主机硬件之间的PCIE链路必不可少。在基板管理控制器与VGA共用一个PCIE功能的情况下,BMC显卡功能的显存空间的大小远远大于需求,因此,可以将VGA显存空间开辟一部分空间作为传输FRU数据的共享内存,该解决方案并没有增加硬件成本;在BMC硬件单独实现一个PCIE功能用于传输FRU数据的情况下,该解决方案仅增加少量的硬件成本,并且该功能可以用来传输其他大宗数据,如系统设置数据等。另外使用PCIE传输数据的速度非常快,是常用总线中传输速度最快;因此,基于PCIE传输数据具备成本低和速度非常快的明显优势。
可选地,在执行步骤101之前,需要预先构建目标共享内存空间,具体构建步骤包括:
BMC固件在其启动过程中,会设置其PCIe配置空间中的基地址寄存器(BAR,BaseAddress Register),该寄存器包含本端第一共享内存空间的大小。并且会设置一私有寄存器或使用硬件默认的值来指定第一共享内存的基地址。当主机的上电后,PCIe的硬件会自动将BMC的配置空间寄存器映射到主机上。当BIOS启动时,会读取BMC的配置空间中的基地址寄存器的配置信息,由此BIOS根据该信息,分配一段地址空间,该空间即是第二共享内存,该过程称为PCIE设备枚举。设备枚举完成后,PCIe硬件会建立BMC的第一共享内存空间与主机的第二共享内存空间之间的共享映射关系,并将存在共享映射关系的基板管理控制器的第一共享内存空间和主机端的第二共享内存空间作为目标共享内存空间,由此实现BMC写入第一共享内存空间的数据可实时共享同步传输至第二共享内存空间。
此处的目标共享内存空间中第一共享内存空间和第二共享内存空间之间的数据一致,即若一端共享内存空间的数据修改了,另一端的共享内存空间中的数据也会发生改变。其中,数据同步过程由PCIE硬件实现。
此处的BIOS的主要功能是为计算机提供最底层的、最直接的硬件设置和控制、启动操作系统、向操作系统提供一些系统参数等,其运行于主机处理器(如CPU)上。
在构建形成目标共享内存空间之后,可实时监测目标共享内存空间的占用信息,以判断第一共享内存空间是否被BMC占用,或者第二共享内存空间是否被BIOS占用,由此根据占用信息进行数据传输决策。
步骤102,根据所述占用信息,在所述第一共享内存空间中对现场可更换单元FRU数据的数据头进行配置,得到所述FRU数据的初始数据头;
所称的FRU数据可以是现场可更换单元的设备数据,如可以是主板的设备数据,也可以是风扇的设备数据;所称的设备数据包括但不限于序列号、零件号、型号和资产标签,本实施例对此不作具体地限定。
不同的占用信息对应不同数据头配置策略。示例性地,若占用信息为目标共享内存空间未被占用的情况下,BMC占用目标共享内存空间之后,直接进行数据头配置;若占用信息为目标共享内存空间被BMC占用的情况下,BMC直接进行数据头配置;若占用信息为目标共享内存空间被BIOS占用的情况下,先进行休眠,待BIOS释放占用空间之后,再进行数据头配置。
所称的第一共享内存空间和第二共享内存空间中每一空间可以是包括两个共享内存块,其中,第一共享内存块用于进行数据头存储,第二共享内存块用于进行数据体存储。第一共享内存块可以是配置在第二共享内存块之后。
可选地,根据占用信息,获取相应的数据头配置策略;按照相应的数据头配置策略,在第一共享内存空间中用于存储数据头的第一共享内存块中,对FRU数据的数据头进行配置,得到FRU数据的初始数据头。
此处的初始数据头可以包括多个字段,分别为占用字段(下文也称UserAndOwner字段)、数据传输状态字段(下文也称Flag字段)、数据体大小字段(下文也称FileSize字段),以及校验码字段(下文也称FileCrc字段);其中,各字段的数据类型可以根据实际需求进行配置,如占用状态字段和数据传输状态字段为无符号8位整数的数据类型(也称UINT8)、数据体大小字段为无符号16位整数的数据类型(也称UINT16),校验码字段为无符号32位整数的数据类型(也称UINT32)。
如下为初始数据头的示例性结构代码:
其中,占用字段用于存储目标共享内存空间的占用者标识,此处的占用者可读可写,非所有者只可读。占用者标识包括用于标识被BMC占用的第一占用标识,用于标识未被占用的第二占用标识,以及用于标识被BIOS占用的第三占用标识。数据传输状态字段用存储数据传输的状态阶段,数据传输状态字段的取值包括BMC数据准备状态、数据配置完成状态(或者数据读取授权状态),以及数据传输错误状态、数据传输成功状态;其中,各状态可以根据实际需求进行标识,如BMC数据准备状态的标识为0,数据配置完成状态(或者数据读取授权状态)的标识为1,数据传输错误状态的标识为2、数据传输成功状态的标识为3,示例性代码如下:
#define FLAG_PREPARE_DATA(0)//BMC数据准备状态的标识为0;
#define FLAG_DATA_READY(1)//数据配置完成状态(或者数据读取授权状态)的标识为1;
#define FLAG_FAILED(2)//数据传输错误状态的标识为2;
#define FLAG_SUCCESS(2)//数据传输成功状态的标识为3;
数据体大小字段用于存储FRU数据的数据体的数据大小值,且不包含数据头的数据大小;校验码字段用于存储FRU数据的数据体的校验值,且不含数据头的校验值,用于保证数据传输的正确性。
此处的数据头配置包括但不限于占用字段的值的配置、数据传输状态字段的值的配置。
步骤103,根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值;
可选地,对于目标数据体的生成,可以是按照预设数据体结构,对FRU数据的数据内容编译生成FRU数据的目标数据体;或者将FRU数据的数据内容配置至预设数据体模板中,得到FRU数据的目标数据体,本实施例对此不做具体地限定。
对于目标校验值的生成,可以是采用CRC(Cyclic Redundancy Check,循环冗余校核)算法或其他校验算法,对FRU数据的数据内容进行计算得到目标校验值。
步骤104,根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,并将所述目标数据体写入所述第一共享内存空间;
可选地,在获取到目标校验值以及目标数据体之后,可以统计目标数据体的目标长度,并将目标长度配置更新至第一共享内存空间中第一共享内存块中初始数据头的数据体大小字段中,将目标校验值配置更新至第一共享内存空间中第一共享内存块中初始数据头的校验码字段中,同时将目标数据体写入第一共享内存空间的第二共享内存块中。由此实现将FRU数据完整更新至第一共享内存空间。
步骤105,基于所述PCIE,将所述第一共享内存空间的中的目标数据头和目标数据体,按照所述共享映射关系,共享传输至所述第二共享内存空间。
可选地,由于第一共享内存空间与第二共享内存空间之间存在共享映射关系,因此,在将FRU数据完整更新至第一共享内存空间,可以基于PCIE,将第一共享内存空间的中的目标数据头和目标数据体,按照共享映射关系,同步共享传输至第二共享内存空间,以便BIOS在需要进行FRU数据获取的情况下,从第二共享内存空间中将FRU数据取出并校验,若校验成功则解析FRU数据并将其保存在内存中,以便后续进行FRU数据的处理。
本实施例提供的方法,通过基于基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立目标共享内存空间,并基于目标共享内存空间的占用信息,在目标共享内存空间的第一共享内存空间中进行FRU数据的数据头配置以及数据体的配置,由此基于PCIE将第一共享内存空间的中的目标数据头和目标数据体,按照共享映射关系,实时共享传输至第二共享内存空间,一方面借用了BMC与主机之间的VGA的PCIE通路,无需新增硬件模块或者增加少量PCIE硬件成本,即可进行数据传输,且PCIE的协议栈为是在BIOS与BMC中必须实现的通用代码,简化了代码开发成本,由此实现无需实现较难维护的USB虚拟网卡和Redfish协议栈等程序,有效降低了开发成本,提高了传输速率,保证了传输安全性;另一方面,通过共享内存空间进行数据共享传输,进一步有效提高数据传输的实时性和高效性。
在一些实施例中,所述根据所述占用信息,在所述第一共享内存空间中对FRU数据的数据头进行配置,得到所述FRU数据的初始数据头,包括:
根据所述占用信息,判断所述目标共享内存空间是否被基本输入输出系统占用;
在确定所述目标共享内存空间被所述基本输入输出系统占用的情况下,执行睡眠操作;
在执行所述睡眠操作之后,获取第一实时睡眠时长;
判断所述第一实时睡眠时长是否达到第一预设睡眠时长;
在确定所述第一实时睡眠时长达到所述第一预设睡眠时长的情况下,根据所述占用信息,迭代判断所述目标共享内存空间是否被基本输入输出系统占用;
若在第一目标次迭代判断过程中,判断获知所述目标共享内存空间未被所述基本输入输出系统占用,且所述第一目标次迭代判断过程对应的累计判断次数小于第一预设次数的情况下,占用所述目标共享内存空间;
在所述第一共享内存空间的第一共享内存块中,将数据头模板中占用字段的值配置为第一占用标识,并将所述数据头模板中数据传输状态字段的值配置为数据准备状态,得到所述初始数据头;
其中,所述第一占用标识用于标识被所述基板管理控制器占用。
图2为本实施例提供的数据传输方法的流程示意图之二;如图2所示,FRU数据的初始数据头的确定步骤如下:
在获取到目标共享内存空间的占用信息之后,通过占用信息判断目标共享内存空间是否被BIOS占用,若未被BIOS占用,则BMC可占用目标共享内存空间,以对目标共享内存空间进行读写操作;此时,具体可在第一共享内存空间的第一共享内存块中,将数据头模板中占用字段的值配置为被BMC占用的第一占用标识,也即UserAndOwner字段配置为被BMC占用的第一占用标识,以表征目标共享内存空间被BMC占用;同时,将数据头模板中数据传输状态字段的值配置为数据准备状态,也即将Flag字段的值配置为FLAG_PREPARE_DATA,以表征BMC正在进行数据准备,由此得到初始数据头。
若被BIOS占用,则BMC无法占用目标共享内存空间,也即无法对目标共享内存空间进行写操作。此时,需要执行休眠操作,暂时释放对该共享内存空间的访问,以等待BIOS占用结束;并在第一实时睡眠时长达到第一预设睡眠时长之后,再次获取目标共享内存空间的占用信息,并基于占用信息,再次迭代判断目标共享内存空间是否仍然被BIOS占用,并将判断次数累计加1,直到累计判断次数大于或等于第一预设次数,和/或判断获知目标共享内存空间未被BIOS占用。此处的第一预设睡眠时长可以是根据实际需求进行配置,如2秒或3秒等,本实施例对此不作具体地限定。此处的第一预设次数可以是根据实际需求进行配置,如3次或4次等,本实施例对此不作具体地限定。
根据迭代判断结果,判断是否存在根据判断结果可获知目标共享内存空间未被BIOS占用,且累计判断次数小于第一预设次数的第一目标次迭代判断过程,若存在第一目标次迭代判断过程,则停止迭代判断,BMC占用目标共享内存空间,以在第一共享内存空间的第一共享内存块中,将数据头模板中占用字段的值配置为被BMC占用的第一占用标识,并将数据头模板中数据传输状态字段的值配置为数据准备状态,得到初始数据头。
在根据迭代判断结果,确定不存在第一目标次迭代判断过程,也即在累计判断次数大于或等于第一预设次数的情况下,仍然判断获知目标共享内存空间被BIOS持续占用,则结束数据传输,并发出告警,以提示用户目标共享内存空间被BIOS异常占用,无法正常进行数据传输。
本实施例提供的方法,在判断目标共享内存空间被基本输入输出系统占用的情况下执行睡眠操作,并根据预设的睡眠时长进行判断和迭代,以确保目标共享内存空间未被占用,确保在需要访问目标共享内存空间时不会与基本输入输出系统发生冲突,并能够及时释放和重新占用共享内存空间,保证数据传输的有效性的同时,提高数据传输的稳定性和实时性。
在一些实施中,所述根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值,包括:
通过系统管理总线收集所述FRU数据的数据内容;
根据所述第一共享内存空间的第二共享内存块中的数据体模板,对所述数据内容进行数据格式转换和编译,得到所述目标数据体;
根据所述目标长度和所述目标数据体,生成所述目标校验值。
如图2所示,FRU数据的目标数据体和目标校验值的确定步骤如下:
在软件上,BMC启动速度较快,启动过程中会通过SMBus(System Management Bus,系统管理总线)收集FRU的设备数据,由于FRU为可更换设备,也即各个FRU均可能被更换,所以,FRU数据也不是一成不变的。所以BMC在收集完FRU数据之后,会将非易失存储器中的数据刷新,以确保存储数据的实时性。
在收集完FRU数据的数据内容之后,即可在第一共享内存空间的第二共享内存块中,按照第一共享内存空间的第二共享内存块中的数据体模板的数据结构,对数据内容进行数据格式转换以及编译,得到目标数据体。此处,数据格式转换,可以是将FRU数据的数据内容结构化为Json格式的字符串。示例性地,数据体模板的数据结构可以基于如下代码构建:
在获取到目标数据体之后,即可计算目标数据体的数据长度,得到目标长度,并使用校验算法(如用CRC算法)对目标数据体和目标长度进行校验值计算,得到目标校验值。
本实施例提供的方法,通过格式转换、编译和校验值生成等步骤进行数据传输,以确保数据在传输过程中的正确性、完整性和有效性。
在一些实施中,所述根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,包括:
对所述初始数据头执行如下更新操作,得到所述目标数据头:
将所述第一共享内存空间的第一共享内存块中的初始数据头中的校验值更新为所述目标校验值;
将所述第一共享内存空间的第一共享内存块中的初始数据头中的数据长度更新为所述目标长度;
将所述第一共享内存空间的第一共享内存块中的初始数据头中数据传输状态字段的值配置为数据配置完成状态或者数据读取授权状态;
将所述第一共享内存空间的第一共享内存块中的初始数据头中占用字段的值更新为第二占用标识,所述第二占用标识用于标识未被占用。
如图2所示,目标数据头的获取步骤如下:
将第一共享内存空间的第一共享内存块中的初始数据头中的校验值更新为目标校验值,也即FileCrc字段更新为目标校验值;将第一共享内存空间的第一共享内存块中的初始数据头中的数据长度更新为目标长度,也即将FileSize字段更新为目标长度。
同时,在第一共享内存空间的第一共享内存块中,将初始数据头中数据传输状态字段的值更新为数据配置完成状态或者数据读取授权状态,也即将Flag字段的值配置为FLAG_DATA_READY,以表征BMC数据准备完成或者BIOS可授权读取数据;并且,释放BMC对目标共享内存空间的占用,以及将初始数据头中占用字段的值更新为未被占用的第二占用标识,也即UserAndOwner字段配置为未被占用的第二占用标识,以表征目标共享内存空间未被占用,由此得到目标数据头。
本实施例提供的方法,更新初始数据头中的校验值为目标校验值,可以确保传输的数据在BIOS能够通过校验,保障数据的完整性和准确性;更新初始数据头中的数据长度为目标长度,能够准确反映实际传输数据的长度,帮助BIOS正确解析数据内容。针对数据传输状态字段的更新,能够使第一共享内存空间的第一共享内存块中的数据传输状态得到明确的配置,以及更新占用字段的值为第二占用标识,可以有效确保在BMC数据配置完成之后,BIOS能够及时获取到FRU数据。
在一些实施中,所述方法还包括:
接收所述第二共享内存空间的共享更新请求;
根据所述共享更新请求以及所述共享映射关系,对所述第一共享内存空间中目标数据头中占用字段的值和/或数据传输状态字段的值进行共享映射更新;
其中,所述共享更新请求是基本输入输出系统在对所述第二共享内存空间中的目标数据体执行数据读取操作的情况下,对所述第二共享内存空间中的目标数据头中占用字段的值和/或数据传输状态字段的值进行更新产生的。
可选地,在将第一共享内存空间的中的目标数据头和目标数据体,共享传输至第二共享内存空间之后,即可等待接收BIOS的访问更新结果。BIOS在对所述第二共享内存空间中的目标数据体执行数据读取操作的过程中,可实时对第二共享内存空间中的目标数据头中占用字段的值和/或数据传输状态字段的值进行更新,以生成第二共享内存空间的共享更新请求。
图3为本实施例提供的数据传输方法的流程示意图之三,如图3所示,此处的更新可以是在传输过程中以及BIOS读取数据过程,BIOS根据读取结果进行占用字段的值的更新以及数据传输状态字段的值的更新。BIOS具体可执行如下步骤对第二共享内存空间的第一共享内存块进行更新:
BIOS在数据读取之后,根据读取结果,采用校验算法(如CRC算法)计算数据体的校验值,将数据体的校验值与数据头中存储的目标校验值进行比较,以确定数据是否传输成功,若一致,则表征数据传输成功;若不一致,则表征数据传输失败。
在确定数据传输成功的情况下,BIOS先将占用字段的值更新为被BIOS占用的第三占用标识,也即UserAndOwner字段更新为被BIOS占用的第三占用标识;将数据传输状态字段的值更新为数据传输成功状态,也即将Flag字段更新为FLAG_SUCCESS,即3之后,将占用字段的值更新为未被占用的第二占用标识,也即将UserAndOwner字段更新未被占用的第二占用标识。
在确定数据传输失败的情况下,BIOS先将占用字段的值更新为被BIOS占用的第三占用标识,也即UserAndOwner字段更新为被BIOS占用的第三占用标识,BIOS再将数据传输状态字段的值更新为数据传输错误状态,也即将Flag字段更新为FLAG_FAILED,即2之后,再将占用字段的值更新为未被占用的第二占用标识,也即将UserAndOwner字段更新未被占用的第二占用标识,以便BIOS重新对FRU数据进行读取,直到数据传输成功和/或重新读取的次数大于预设次数,如3次或4次等。
若在重新传输的次数小于或等于预设次数的情况下,确定数据传输成功时,则BIOS可将数据传输状态字段的值更新为数据传输成功状态,也即将Flag字段更新为FLAG_SUCCESS,即3,并将占用字段的值更新为未被占用的第二占用标识,也将UserAndOwner字段更新未被占用的第二占用标识。
若重新传输的次数大于预设次数,仍然确定数据传输失败,则BIOS发出告警,以提示用户传输失败。
需要说明的是,BIOS在根据上述更新步骤,对第二共享内存空间的第一共享内存块进行更新的过程中,第二共享内存空间会实时生成共享更新请求。
同步地,BMC在获取到第二共享内存空间的共享更新请求之后,可以根据共享更新请求和共享映射关系,将第二享内存空间中目标数据头中占用字段的值和/或数据传输状态字段的值同步共享映射更新至第一共享内存空间中目标数据头中。
本实施例提供的方法,通过接收共享更新请求并进行共享映射更新,能够保障第一共享内存空间中目标数据头的准确性和同步性,使得第一共享内存空间中的数据状态与第二共享内存空间中的目标数据体的读取操作保持一致,提高数据传输的可靠性和正确性。
图4为本实施例提供的数据传输方法的流程示意图之四;如图4所示,本实施例还提供一种数据传输方法,该方法的执行主体为BIOS,BIOS端流程所执行的数据传输可在一个事件(也即线程)中进行。该方法包括如下步骤:
步骤401,获取目标共享内存空间的第二共享内存空间的目标数据头中的数据传输状态;其中,所述第二共享内存空间的第一共享内存块中的目标数据头和所述第二共享内存空间的第二共享内存块中目标数据体是由基板管理控制器执行上述各实施例提供的所述数据传输方法得到的。
步骤402,根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值;
步骤403,根据所述目标长度,在所述第二共享内存空间的第二共享内存块中,读取目标数据体;
步骤404,根据所述目标校验值,对所述目标数据体进行解析,得到FRU数据的数据内容。
需要说明的是,第二共享内存空间的第一共享内存块中的目标数据头和第二共享内存空间的第二共享内存块中目标数据体是由基板管理控制器执行上述各实施例的数据传输方法得到的,具体可同步参考BMC侧执行的数据传输方法的步骤,此处不再进行赘述。
不同的数据传输状态对应不同数据读取策略。示例性地,若数据传输状态为数据配置完成状态(或者数据读取授权状态)的情况下,直接进行数据头和数据体的数据读取;若占用信息为数据准备状态的情况下,先进行休眠,待BMC进行数据配置完成之后,再进行数据头和数据体的数据读取。
可选地,读取目标共享内存空间的第二共享内存空间的目标数据头中的Flag字段的值,以获取数据传输状态,由此根据数据传输状态,确定FRU数据是否已在BMC端配置完成。
接着,根据占用信息,获取相应的数据头配置策略;按照相应的数据头配置策略,从第二共享内存空间的第一共享内存块中,读取目标数据头中的FileSize字段的值,获取目标长度,以及读取FileCrc字段的值,获取目标校验值。
在获取到目标长度之后,可以按照FileSize字段中的目标长度,将第二共享内存空间的第二共享内存块中目标数据体全部读出。
在获取到目标校验值之后,对目标数据体进行校验值计算,以得到计算校验值,将计算校验值与目标校验值进行比较,以确定读取出的目标数据体是否正确。
若正确,则对目标数据体进行解析,也即将目标数据体解析为可快速查阅的、方便存储的数据结构,由此得到FRU数据的数据内容,并将FRU数据的数据内容保存BIOS内存中,以便其他模块直接获取到对应的值。如目标数据体中的数据内容无法被其他模块直接读取和解析时,BIOS会提取出主板的于序列号、零件号、型号和资产标签的值存储在内存中,其他模块通过读取对应的内存即可直接得到主板的序列号、零件号、型号和资产标签等信息。
同时,BIOS先将第二共享内存空间的第一共享内存块中第二占用字段的值更新为被BIOS占用的第三占用标识,也即UserAndOwner字段更新为被BIOS占用的第三占用标识;将第二共享内存空间的第一共享内存块中数据传输状态字段的值更新为数据传输成功状态,也即将Flag字段更新为FLAG_SUCCESS,即3之后,将占用字段的值更新为未被占用的第二占用标识,也即将UserAndOwner字段更新未被占用的第二占用标识。
若不正确,则BIOS先将第二共享内存空间的第一共享内存块中占用字段的值更新为被BIOS占用的第三占用标识,也即UserAndOwner字段更新为被BIOS占用的第三占用标识,再将第二共享内存空间的第一共享内存块中数据传输状态字段的值更新为数据传输错误状态,也即将Flag字段更新为FLAG_FAILED,即2之后,再将占用字段的值更新为未被占用的第二占用标识,也即将UserAndOwner字段更新未被占用的第二占用标识,以便BIOS重新对FRU数据进行读取,直到数据传输成功和/或重新读取的次数大于预设次数,如3次或4次等。
若在重新传输的次数小于或等于预设次数的情况下,确定数据传输成功时,则BIOS可将数据传输状态字段的值更新为数据传输成功状态,也即将Flag字段更新为FLAG_SUCCESS,即3,并将占用字段的值更新为未被占用的第二占用标识,也即将UserAndOwner字段更新未被占用的第二占用标识。
若重新传输的次数大于预设次数,仍然确定数据传输失败,则BIOS发出告警,以提示用户传输失败。
本实施例提供的方法,通过基于基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立目标共享内存空间,并在第二共享内存空间中对BMC的第一共享内存空间共享映射的FRU数据的数据头以及数据体进行解析读取,以实时获取FRU数据的数据内容,一方面借用了BMC与主机之间的VGA的PCIE通路,无需新增硬件模块或者增加少量PCIE硬件成本,即可进行数据传输,且PCIE的协议栈为是在BIOS与BMC中必须实现的通用代码,简化了代码开发成本,由此实现无需实现较难维护的USB虚拟网卡和Redfish协议栈等程序,有效降低了开发成本,提高了传输速率,保证了传输安全性;另一方面,通过共享内存空间进行数据共享传输,进一步有效提高数据传输的实时性和高效性。
在一些实施例中,所述根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值,包括:
判断所述数据传输状态是否为数据准备状态;
在确定所述数据传输状态为数据准备状态的情况下,执行睡眠操作;
在执行所述睡眠操作之后,获取第二实时睡眠时长;
判断所述第二实时睡眠时长是否达到第二预设睡眠时长;
在确定所述第二实时睡眠时长达到所述第二预设睡眠时长的情况下,迭代判断所述数据传输状态是否为数据准备状态;
若在第二目标次迭代判断过程中,判断获知所述数据传输状态为数据配置完成状态或者数据读取授权状态,且所述第二目标次迭代判断过程对应的累计判断次数小于第二预设次数的情况下,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值。
如图3所示,目标长度和目标校验值的读取步骤如下:
在获取到数据准备状态之后,通过数据准备状态判断目标共享内存空间内的FRU数据是否配置完成,若第二共享内存空间的第一共享内存块中目标数据头的Flag字段的值为FLAG_DATA_READY,则认为BMC已经将数据全部写入目标共享内存空间,则直接从第二共享内存空间的第一共享内存块中,读取目标数据头中的目标长度和目标校验值。
若第二共享内存空间的第一共享内存块中目标数据头的Flag字段的值不为FLAG_DATA_READY,则认为BMC未将数据全部写入目标共享内存空间,此时需要执行休眠操作,暂时释放对该共享内存空间的访问,以等待BMC将数据全部写入目标共享内存空间;并在第二实时睡眠时长达到第二预设睡眠时长之后,再次获取目标数据头中的数据传输状态,并基于数据传输状态,再次迭代判断目标共享内存空间内的FRU数据是否配置完成,并将判断次数累计加1,直到累计判断次数大于或等于第二预设次数,和/或判断获知目标共享内存空间内的FRU数据已配置完成,则结束迭代判断流程。此处的第二预设睡眠时长,可以与第一预设睡眠时长相同或不同,具体可以是根据实际需求进行配置,如2秒或3秒等,本实施例对此不作具体地限定。此处的第二预设次数,可以与第一预设次数相同或不同,具体是根据实际需求进行配置,如3次或4次等,本实施例对此不作具体地限定。
根据迭代判断结果,判断是否存在根据判断结果可获知目标共享内存空间内的FRU数据已配置完成,且累计判断次数小于第二预设次数的第二目标次迭代判断过程,若存在第二目标次迭代判断过程,则停止迭代判断,从第二共享内存空间的第一共享内存块中,读取目标数据头中的目标长度和目标校验值。
在根据迭代判断结果,确定不存在第二目标次迭代判断过程,也即在累计判断次数大于或等于第二预设次数的情况下,仍然判断获知目标共享内存空间内的FRU数据未配置完成,则结束数据传输,并发出告警,以提示用户目标共享内存空间数据写入异常,无法正常进行数据传输。
本实施例提供的方法,在判断目标共享内存空间内的FRU数据未配置完成的情况下执行睡眠操作,并根据预设的睡眠时长进行判断和迭代,以确保FRU数据配置完成,确保在需要访问目标共享内存空间时不会与BMC发生冲突,保证数据传输的有效性的同时,提高数据传输的稳定性和实时性。
下面对本发明提供的数据传输装置进行描述,下文描述的数据传输装置与上文描述的数据传输方法可相互对应参照。
如图5所示,为本实施例提供的数据传输装置的结构示意图之一,该装置可以是基板管理控制器,具体包括:
第一获取单元501用于获取目标共享内存空间的占用信息;所述目标共享内存空间是根据所述基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立的;所述目标共享内存空间包括存在共享映射关系的基板管理控制器的第一共享内存空间和主机端的第二共享内存空间;
配置单元502用于根据所述占用信息,在所述第一共享内存空间中对FRU数据的数据头进行配置,得到所述FRU数据的初始数据头;
生成单元503用于根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值;
写入单元504用于根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,并将所述目标数据体写入所述第一共享内存空间;
传输单元,用于基于所述PCIE,将所述第一共享内存空间的中的目标数据头和目标数据体,按照所述共享映射关系,共享传输至所述第二共享内存空间。
本实施例提供的数据传输装置,通过基于基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立目标共享内存空间,并基于目标共享内存空间的占用信息,在目标共享内存空间的第一共享内存空间中进行FRU数据的数据头配置以及数据体的配置,由此基于PCIE将第一共享内存空间的中的目标数据头和目标数据体,按照共享映射关系,实时共享传输至第二共享内存空间,一方面借用了BMC与主机之间的VGA的PCIE通路,无需新增硬件模块或者增加少量PCIE硬件成本,即可进行数据传输,且PCIE的协议栈为是在BIOS与BMC中必须实现的通用代码,简化了代码开发成本,由此实现无需实现较难维护的USB虚拟网卡和Redfish协议栈等程序,有效降低了开发成本,提高了传输速率,保证了传输安全性;另一方面,通过共享内存空间进行数据共享传输,进一步有效提高数据传输的实时性和高效性。
如图6所示,为本实施例提供的数据传输装置的结构示意图之二,该装置可以是BIOS,具体包括:
第二获取单元601用于获取目标共享内存空间的第二共享内存空间的目标数据头中的数据传输状态;
第一读取单元602用于根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值;
第二读取单元603用于根据所述目标长度,在所述第二共享内存空间的第二共享内存块中,读取目标数据体;
解析单元604用于根据所述目标校验值,对所述目标数据体进行解析,得到FRU数据的数据内容;
其中,所述第二共享内存空间的第一共享内存块中的目标数据头和所述第二共享内存空间的第二共享内存块中目标数据体是由基板管理控制器执行如上述各实施例所述数据传输方法得到的。
本实施例提供的装置,通过基于基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立目标共享内存空间,并在第二共享内存空间中对BMC的第一共享内存空间共享映射的FRU数据的数据头以及数据体进行解析读取,以实时获取FRU数据的数据内容,一方面借用了BMC与主机之间的VGA的PCIE通路,无需新增硬件模块或者增加少量PCIE硬件成本,即可进行数据传输,且PCIE的协议栈为是在BIOS与BMC中必须实现的通用代码,简化了代码开发成本,由此实现无需实现较难维护的USB虚拟网卡和Redfish协议栈等程序,有效降低了开发成本,提高了传输速率,保证了传输安全性;另一方面,通过共享内存空间进行数据共享传输,进一步有效提高数据传输的实时性和高效性。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)701、通信接口(Communications Interface)702、存储器(memory)703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。处理器701可以调用存储器703中的逻辑指令,以执行上述各实施例提供的数据传输方法。
此外,上述的存储器703中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的数据传输方法。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的数据传输方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (11)
1.一种数据传输方法,其特征在于,应用于基板管理控制器,包括:
获取目标共享内存空间的占用信息;所述目标共享内存空间是根据所述基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立的;所述目标共享内存空间包括存在共享映射关系的基板管理控制器的第一共享内存空间和主机端的第二共享内存空间;
根据所述占用信息,在所述第一共享内存空间中对现场可更换单元FRU数据的数据头进行配置,得到所述FRU数据的初始数据头;
根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值;
根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,并将所述目标数据体写入所述第一共享内存空间;
基于所述PCIE,将所述第一共享内存空间的中的目标数据头和目标数据体,按照所述共享映射关系,共享传输至所述第二共享内存空间。
2.根据权利要求1所述的数据传输方法,其特征在于,所述根据所述占用信息,在所述第一共享内存空间中对现场可更换单元FRU数据的数据头进行配置,得到所述FRU数据的初始数据头,包括:
根据所述占用信息,判断所述目标共享内存空间是否被基本输入输出系统占用;
在确定所述目标共享内存空间被所述基本输入输出系统占用的情况下,执行睡眠操作;
在执行所述睡眠操作之后,获取第一实时睡眠时长;
判断所述第一实时睡眠时长是否达到第一预设睡眠时长;
在确定所述第一实时睡眠时长达到所述第一预设睡眠时长的情况下,根据所述占用信息,迭代判断所述目标共享内存空间是否被基本输入输出系统占用;
若在第一目标次迭代判断过程中,判断获知所述目标共享内存空间未被所述基本输入输出系统占用,且所述第一目标次迭代判断过程对应的累计判断次数小于第一预设次数的情况下,占用所述目标共享内存空间;
在所述第一共享内存空间的第一共享内存块中,将数据头模板中占用字段的值配置为第一占用标识,并将所述数据头模板中数据传输状态字段的值配置为数据准备状态,得到所述初始数据头;
其中,所述第一占用标识用于标识被所述基板管理控制器占用。
3.根据权利要求1所述的数据传输方法,其特征在于,所述根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值,包括:
通过系统管理总线收集所述FRU数据的数据内容;
根据所述第一共享内存空间的第二共享内存块中的数据体模板,对所述数据内容进行数据格式转换和编译,得到所述目标数据体;
根据所述目标长度和所述目标数据体,生成所述目标校验值。
4.根据权利要求1-3任一项所述的数据传输方法,其特征在于,所述根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,包括:
对所述初始数据头执行如下更新操作,得到所述目标数据头:
将所述第一共享内存空间的第一共享内存块中的初始数据头中的校验值更新为所述目标校验值;
将所述第一共享内存空间的第一共享内存块中的初始数据头中的数据长度更新为所述目标长度;
将所述第一共享内存空间的第一共享内存块中的初始数据头中数据传输状态字段的值配置为数据配置完成状态或者数据读取授权状态;
将所述第一共享内存空间的第一共享内存块中的初始数据头中占用字段的值更新为第二占用标识,所述第二占用标识用于标识未被占用。
5.根据权利要求1-3任一项所述的数据传输方法,其特征在于,所述方法还包括:
接收所述第二共享内存空间的共享更新请求;
根据所述共享更新请求以及所述共享映射关系,对所述第一共享内存空间中目标数据头中占用字段的值和/或数据传输状态字段的值进行共享映射更新;
其中,所述共享更新请求是基本输入输出系统在对所述第二共享内存空间中的目标数据体执行数据读取操作的情况下,对所述第二共享内存空间中的目标数据头中占用字段的值和/或数据传输状态字段的值进行更新产生的。
6.一种数据传输方法,其特征在于,应用于基本输入输出系统,包括:
获取目标共享内存空间的第二共享内存空间的目标数据头中的数据传输状态;
根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值;
根据所述目标长度,在所述第二共享内存空间的第二共享内存块中,读取目标数据体;
根据所述目标校验值,对所述目标数据体进行解析,得到FRU数据的数据内容;
其中,所述第二共享内存空间的第一共享内存块中的目标数据头和所述第二共享内存空间的第二共享内存块中目标数据体是由基板管理控制器执行如权利要求1至5任一项所述数据传输方法得到的。
7.根据权利要求6所述的数据传输方法,其特征在于,所述根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值,包括:
判断所述数据传输状态是否为数据准备状态;
在确定所述数据传输状态为数据准备状态的情况下,执行睡眠操作;
在执行所述睡眠操作之后,获取第二实时睡眠时长;
判断所述第二实时睡眠时长是否达到第二预设睡眠时长;
在确定所述第二实时睡眠时长达到所述第二预设睡眠时长的情况下,迭代判断所述数据传输状态是否为数据准备状态;
若在第二目标次迭代判断过程中,判断获知所述数据传输状态为数据配置完成状态或者数据读取授权状态,且所述第二目标次迭代判断过程对应的累计判断次数小于第二预设次数的情况下,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值。
8.一种数据传输装置,其特征在于,应用于基板管理控制器,包括:
第一获取单元,用于获取目标共享内存空间的占用信息;所述目标共享内存空间是根据所述基板管理控制器的高速串行计算机扩展总线PCIE的基地址寄存器建立的;所述目标共享内存空间包括存在共享映射关系的基板管理控制器的第一共享内存空间和主机端的第二共享内存空间;
配置单元,用于根据所述占用信息,在所述第一共享内存空间中对现场可更换单元FRU数据的数据头进行配置,得到所述FRU数据的初始数据头;
生成单元,用于根据所述FRU数据的数据内容,生成所述FRU数据的目标数据体和目标校验值;
写入单元,用于根据所述目标校验值和所述目标数据体的目标长度,对所述第一共享内存空间中的初始数据头进行更新,得到目标数据头,并将所述目标数据体写入所述第一共享内存空间;
传输单元,用于基于所述PCIE,将所述第一共享内存空间的中的目标数据头和目标数据体,按照所述共享映射关系,共享传输至所述第二共享内存空间。
9.一种数据传输装置,其特征在于,应用于基本输入输出系统,包括:
第二获取单元,用于获取目标共享内存空间的第二共享内存空间的目标数据头中的数据传输状态;
第一读取单元,用于根据所述数据传输状态,从所述第二共享内存空间的第一共享内存块中,读取所述目标数据头中的目标长度和目标校验值;
第二读取单元,用于根据所述目标长度,在所述第二共享内存空间的第二共享内存块中,读取目标数据体;
解析单元,用于根据所述目标校验值,对所述目标数据体进行解析,得到FRU数据的数据内容;
其中,所述第二共享内存空间的第一共享内存块中的目标数据头和所述第二共享内存空间的第二共享内存块中目标数据体是由基板管理控制器执行如权利要求1至5任一项所述数据传输方法得到的。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述数据传输方法,或者如权利要求6至7任一项所述数据传输方法。
11.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述数据传输方法,或者如权利要求6至7任一项所述数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311616405.3A CN117992246A (zh) | 2023-11-29 | 2023-11-29 | 数据传输方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311616405.3A CN117992246A (zh) | 2023-11-29 | 2023-11-29 | 数据传输方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992246A true CN117992246A (zh) | 2024-05-07 |
Family
ID=90891758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311616405.3A Pending CN117992246A (zh) | 2023-11-29 | 2023-11-29 | 数据传输方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992246A (zh) |
-
2023
- 2023-11-29 CN CN202311616405.3A patent/CN117992246A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6496790B1 (en) | Management of sensors in computer systems | |
US10318736B2 (en) | Validating operating firmware of a periperhal device | |
CN108958787B (zh) | 区块链系统升级方法、装置、设备及存储介质 | |
US9384085B2 (en) | Method, device, and system for monitoring quickpath interconnect link | |
TWI345153B (en) | System to accelerate identification of hardware platform classes | |
CN109388604B (zh) | 一种基于PCIe的热插拔控制方法、装置及存储介质 | |
CN111950014A (zh) | 服务器系统启动的安全度量方法、安全度量装置及服务器 | |
US10996936B2 (en) | Techniques for distributing code to components of a computing system | |
CN114995860B (zh) | 图形处理器固件升级的方法和图形处理器 | |
WO2024120169A1 (zh) | 一种服务器及其资产信息获取方法、提供方法和装置 | |
CN115129249A (zh) | Sas链路拓扑识别管理方法、系统、终端及存储介质 | |
CN111949470B (zh) | 一种芯片验证方法、装置、电子设备及存储介质 | |
CN116881929B (zh) | 安全防护方法、装置、电子设备以及基板控制器芯片 | |
US20050223207A1 (en) | Method and apparatus for remote flashing of a bios memory in a data processing system | |
CN117687944A (zh) | 一种拓扑生成方法、扩展板卡及服务器 | |
CN117992246A (zh) | 数据传输方法、装置、电子设备及存储介质 | |
CN115454896A (zh) | 基于smbus的ssd mctp控制消息验证方法、装置、计算机设备及存储介质 | |
CN101452417B (zh) | 监控方法及其监控装置 | |
CN115421793A (zh) | 一种启动状态的显示方法及计算设备 | |
TW201502806A (zh) | 針對另一系統韌體域中具有邏輯處理器之刀鋒式裝置的錯誤協調訊息技術 | |
CN114666103A (zh) | 可信度量装置、设备、系统及可信身份认证方法 | |
CN109783031B (zh) | 用于RAID卡的盘符和slot号校验方法、装置、终端及存储介质 | |
US11593121B1 (en) | Remotely disabling execution of firmware components | |
US20070005819A1 (en) | Apparatus and method to guarantee unique connection tags across resets in a connection protocol | |
CN111694587A (zh) | 服务器pnor固件升级方法、装置、设备及存储介质 |
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 |