一种bios数据交互的方法、装置及介质
技术领域
1.本发明涉及计算机技术领域,特别是涉及一种bios数据交互的方法、装置及介质。
背景技术:
2.基本输入输出系统(basic input and output system,简称bios)和基板管理控制器(baseboard management controller,简称bmc)是服务器系统中相互独立的两个系统,bios可以完成芯片自检,主板硬件初始化,资源分配,收集主板硬件信息等工作,bmc负责服务器系统的监视、控制等平台管理工作,如传感器的监控、日志的记录等。为了更好地对服务器进行管理,bios和bmc之间需要进行数据交互,目前普遍采用智能平台管理接口(intelligent platform management interface,简称ipmi)规范中定义的接口进行通信,数据交互时,bios将数据输入到输入输出通信(input/output,简称io)命令端口和数据端口,并解码到lpc总线上,bmc将读取的lpc总线接口数据进行解析使用,或者将bios需求数据返回给bios使用。
3.由于lpc总线接口最大频率为33mhz,最大传输带宽为16mb/s,主要适用于低速通信的设备,此外,通过lpc数据总线实现bios和bmc数据交互的单向通信特点,即bios发送读取数据的请求至bmc,bmc响应后bios才进行读取数据,导致bios通过lpc总线接口读取数据时,效率低,当需要传输大量数据时,lpc总线低速、单向通信的特点,会耗费大量时间,等待过程中可能出现指令无响应,导致用户误以为系统宕机的现象,同时,还会影响lpc总线上其他设备的正常使用。
4.由此可见,如何解决bios通过lpc总线接口读取数据时,效率低的问题,是本领域技术人员亟待解决的问题。
技术实现要素:
5.本发明的目的是提供一种bios数据交互的方法、装置及介质,通过pcie高速传输通道读取bmc存储于自身的预设内存存储区内的数据,避免采用lpc总线进行数据传输的低速率,同时节约bios发送请求和等待应答的时间,进而提高了bios数据交互的效率。
6.为解决上述技术问题,本发明提供一种bios数据交互的方法,包括:
7.发送读取数据的指令至bmc,以便于所述bmc将所述数据存储于所述bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间;
8.判断所述预设内存存储区是否存在数据,若存在数据,通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据。
9.优选地,在所述通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据之前还包括:
10.控制显示控制器停止显示功能。
11.优选地,所述通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据包括:
12.确定当前数据的存储结束标识的位置;
13.根据所述存储结束标识,判断所述当前数据是否存储结束,若所述当前数据存储结束,则读取所述当前数据,当前数据id,以及下一条数据id;
14.设置所述当前数据的读取状态为读取完成,同时清除所述当前数据的所述存储结束标识;
15.判断所述下一条数据id是否为空,若不为空,则将下一条数据作为当前数据,并进入所述根据所述存储结束标识,判断所述当前数据是否存储结束的步骤,若为空,则结束;
16.若所述当前数据存储未结束,则等待预设时间,在达到所述预设时间后再次判断所述当前数据是否存储结束,若是,进入所述读取所述当前数据,所述当前数据的id,以及下一条数据id的步骤,若否,则结束。
17.优选地,所述确定当前数据的存储结束标识的位置包括:
18.获取所述显存起始地址,显存大小,所述预设内存存储区的大小;
19.依据所述显存起始地址,所述显存大小和所述预设内存存储区的大小,确定所述当前数据的存储结束标识的位置。优选地,所述bios数据交互的方法,还包括:
20.发送存储数据的指令至所述bmc;
21.在所述bmc接收所述指令后,控制显示控制器停止显示功能,并确定存储所述数据的预设内存存储区;
22.将所述数据存储于所述预设内存存储区,以便于所述bmc读取所述数据。
23.为了解决上述技术问题,本发明还提供了一种bios数据交互的方法,包括:
24.接收bios发送的读取数据的指令;
25.依据所述指令,将所述数据存储于预设内存存储区,以便于所述bios判断所述预设内存存储区是否存在数据,若存在,通过pcie传输通读取所述预设内存存储区的所述数据,其中,所述预设内存存储区为所述bmc的内存,且所述预设内存存储区的存储空间小于所述bmc的显存存储空间。
26.优选地,所述将所述数据存储于预设内存存储区包括:
27.确定所述数据的存储起始地址;
28.依据所述存储起始地址,将当前数据,当前数据id和下一条数据id存储于预设内存存储区中所述当前数据的指定存储区;
29.判断所述当前数据是否存储结束,若是,将所述当前数据的存储状态设置为存储结束。
30.为了解决上述技术问题,本发明还提供了一种bios数据交互的装置,包括:
31.发送模块,用于发送读取数据的指令至bmc,以便于所述bmc将所述数据存储于所述bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间;
32.判断模块,用于判断所述预设内存存储区是否存在数据,若存在数据,调用读取模块;
33.所述读取模块,用于通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据。
34.为了解决上述技术问题,本发明还提供了一种bios数据交互的装置,包括存储器,
用于存储计算机程序;
35.处理器,用于执行所述计算机程序时实现如所述的bios数据交互的方法的步骤。
36.为了解决上述技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的bios数据交互的方法的步骤。
37.本发明提供的bios数据交互的方法,包括:bios发送读取数据的指令至bmc,以便于bmc将数据存储于bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间。bios判断该预设内存存储区是否存在数据,若存在数据,通过pcie传输通道读取bmc存储于预设内存存储区的数据。本发明提供的技术方案,bmc可以通过内存方式快速将数据存储于自身的预设内存存储区中,bios通过判断该预设内存存储区是否存在数据,若存在,则通过pcie传输通道直接读取该预设内存存储区的数据,pcie传输通道为高速传输通道,避免了采用lpc总线传输数据的低效率,此外,采用lpc总线传输数据时,bios需要发送请求,等待bmc应答后才能进行数据交互,本发明技术方案直接从bmc的预设内存存储区中读取数据,节约了发送请求和等待应答的时间,提高了数据交互的效率,进而提高产品质量以及用户体验感。
38.此外,本发明还提供bios数据交互的装置及介质,效果同上。
附图说明
39.为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
40.图1为本发明实施例提供的一种bios数据交互的方法流程图;
41.图2为本发明实施例提供的另一种bios数据交互的方法流程图;
42.图3为本发明实施例提供的bios数据交互的装置结构图;
43.图4为本发明另一实施例提供的bios数据交互的装置的结构图。
具体实施方式
44.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
45.本发明的核心是提供一种bios数据交互的方法、装置及介质,bios发送读取数据的指定至bmc,bmc接收指令后,通过内存方式快速将数据存储于bmc的预设内存存储区,bios过pcie高速传输通道读取数据,避免了采用lpc总线传输数据的低速率,此外,节约了bios发送请求和等待应答的时间,提高bios和bmc之间的数据交互效率。
46.为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
47.bios和bmc是服务器系统中两个独立的系统,为了实现各种功能,更好地对服务器进行管理,bios和bmc之间需要进行数据传输交互,目前通常采用lpc总线实现bios和bmc之
间的信息交互,bios发送数据交互的命令至bmc,等待bmc应答后,bios将数据输入到io命令端口和数据端口,并解码到lpc总线上,bmc将读取的lpc总线接口数据进行解析使用,或者将bios需求数据返回给bios使用。在数据交互中,由于lpc总线接口最大频率为33mhz,最大传输带宽为16mb/s,主要用于低速通信设备,此外,通过lpc总线实现bios和bmc之间的信息交互,只能是bios发送请求,并等待bmc应答后才能进行数据交互,因此,当需要传输大量数据时,采用lpc总线的方式进行数据传输需要耗费大量时间,在等待过程中容易出现操作指令无响应的情况,导致用户误判系统宕机,同时还会影响lpc总线上其他设备的正常使用,给用户带来不好的体验。
48.为了解决bios和bmc之间数据交互速率低的问题,本发明提供了一种bios数据交互的方法,包括:通过bios发送读取数据的指令至bmc,bmc通过内存方式将数据快速存储于自身的预设内存存储区,其中,预设内存存储区的存储空间小于bmc的显存存储空间。bios通过判断该内存存储区是否存在数据,若存在数据,则通过pcie高速通道将数据从预设内存存储区读取出来,避免采用lpc总线实现bios和bmc间数据交互的低速率,同时节省了发送请求和等待应答的时间,提高了bios和bmc间数据交互的效率。
49.图1为本发明实施例提供的一种bios数据交互的方法流程图,如图1所示,该方法包括:
50.s10:发送读取数据的指令至bmc,以便于bmc将数据存储于bmc的预设内存存储区。
51.s11:判断预设内存存储区是否存在数据,若存在数据,进入步骤s12。
52.s12:通过pcie传输通道读取bmc存储于预设内存存储区的数据。在具体实施例中,bios需要获取bmc中的数据,通过步骤s10发送读取数据的指令至bmc,bmc接收指令后,通过内存访问的方式快速将数据存储于自身的预设内存存储区,其中,预设内存存储区的存储空间小于bmc的显存存储空间。需要说明的是,存储数据的预设内存存储区属于bmc内存的一部分,预设内存存储区的大小可以是1mb,2mb,3mb等,对于预设内存存储区的大小本发明不作限定,可以依据实际业务需求进行设定。
53.在步骤s11中,bios判断bmc中预设内存存储区是否存在数据,若存在数据,则进入步骤s12,通过pcie高速传输通道读取该预设内存存储区中的数据。值得注意的是,bios读取数据可以是在bmc存储完所有数据后进行读取,也可以是bmc存储一条数据后就开始数据读取,当然,bios也可以在bmc存储数据过程中的任意时刻读取预设内存存储区中的数据,对此本发明不作限定。借用bmc内存中的一部分内存,并通过pcie的传输方式实现bios和bmc之间的数据交互,提高数据交互的效率,进而提升用户体验感。
54.在实施中,为了避免bmc和bios在数据交互过程中,bmc中用于存储和bios数据交互的预设内存存储区被显示控制驱动所修改,在bios读取预设内存存储区中数据之前,控制显示控制器停止显示功能,以便于bios顺利读取数据。
55.控制显示控制器停止显示功能后,bios确定当前数据的存储结束标识的位置,并依据存储结束标识的位置,判断当前数据是否存储结束,若存储结束,则读取该当前数据,当前数据id,以及下一条数据id。读取结束后,设置当前数据的读取状态为读取结束,同时清除当前数据存储结束标识,并依据读取的下一条数据id判断下一条数据id是否为空,若不为空,则确定下一条数据也存储结束,将下一条数据作为当前数据,进入读取当前数据的步骤继续读取数据,若下一条数据id为空,bios结束读取数据。
56.当判断当前数据是否存储结束时,若存储未结束,则等待预设时间后,再次判断当前数据是否存储结束,若存储结束,则读取数据,若存储未结束,biso结束读取数据。
57.需要说明的是,bios确定当前数据的存储结束标识的位置时,需要获取显存起始地址,显存大小,以及预设内存存储区的大小,依据该显存起始地址,显存大小和预设内存存储区的大小计算获取当前数据的存储结束标识的位置,以便于bios判断数据存储结束时,读取当前数据。
58.本发明提供的bios数据交互的方法,通过pcie读取bmc中预设内存存储区中的数据,,bios可以读取bmc存储于预设内存存储区的数据,也可以将数据存储至该预设内存存储区中,以便bmc读取该数据进行使用,实现bios和bmc之间的数据交互。在实施中,bios发送存储数据的指令至bmc,并控制显示控制器停止显示功能,以便于bmc提供预设内存存储区以存储数据,当bios将数据存储结束后,bmc可以以内存访问的方式快速获取bios存储的数据。
59.本发明实施例提供的bios数据交互的方法,包括:bios发送读取数据的指令至bmc,以便于bmc将数据存储于bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间。bios判断该预设内存存储区是否存在数据,若存在数据,通过pcie传输通道读取bmc存储于预设内存存储区的数据。本发明提供的技术方案,bmc可以通过内存方式快速将数据存储于自身的预设内存存储区中,bios通过判断该预设内存存储区是否存在数据,若存在,则通过pcie传输通道直接读取该预设内存存储区的数据,pcie传输通道为高速传输通道,避免了采用lpc总线传输数据的低效率,此外,采用lpc总线传输数据时,bios需要发送请求,等待bmc应答后才能进行数据交互,本发明技术方案直接从bmc的预设内存存储区中读取数据,节约了发送请求和等待应答的时间,提高了数据交互的效率,进而提高产品质量以及用户体验感。
60.在具体实施例中,bios和bmc进行数据交互时,需要借用bmc显存的一部分内存作为预设内存存储区,为了避免数据交互过程中,该预设内存存储区被显示控制器中的显示控制驱动程序所改变,导致数据交互出现错误,则在bios通过pcie读取预设内存存储区内的数据前,控制显示控制器停止显示功能,以便于bios和bmc顺利进行数据交互。
61.本发明实施例所提供的bios数据交互的方法,在bios通过pcie读取预设内存存储区内的数据前,控制显示控制器停止显示功能,避免bios和bmc在数据交互过程中该预设内存存储区被修改导致数据交互出现错误,进而提高数据交互的效率,提高产品质量。
62.图2为本发明实施例提供的另一种bios数据交互的方法流程图,如图2所示,该方法包括:
63.s20:确定当前数据的存储结束标识的位置。
64.s21:根据存储结束标识,判断当前数据是否存储结束,若当前数据存储结束,进入步骤s22,若当前数据存储未结束,进入步骤s26
65.s22:读取当前数据,当前数据id,以及下一条数据id。
66.s23:设置当前数据的读取状态为读取完成,同时清除当前数据存储结束标识。
67.s24:判断下一条数据id是否为空,若不为空。
68.s25:将下一条数据作为当前数据,并进入步骤s21,若为空,进入步骤s28。
69.s26:等待预设时间,在达到预设时间后进入步骤s27。
70.s27:再次判断当前数据是否存储结束,若是,进入步骤s22,若否,进入步骤s28。
71.s28:结束。
72.在具体实施例中,bios读取bmc存储于预设内存存储区内的数据时,由于该预设内存存储区是bmc显存存储区中暂借的一部分存储空间,因此需要确定当前数据存储结束标识的位置,以便于依据步骤s20确定的当前数据存储结束标识的位置,判断当前数据是否存储结束,若存储结束,则进入步骤s22以读取当前数据,当前数据id,以及下一条数据id。若存储未结束,则进去步骤s26,等待预设时间,在预设时间后,再次判断当前数据是否存储结束,若存储结束,则进入步骤s22完成bios的数据读取,若存储未结束,则进入步骤s28,bios结束读取数据。
73.在步骤s22中,bios读取当前数据,当前数据id和下一条数据id后,设置当前数据的读取状态为读取完成,同时清除当前数据存储结束的标识,并进入步骤s25,判断获取的下一条数据id是否为空,若不为空,则将下一条数据作为当前数据,并进入步骤s21继续读取数据,若为空,则进入步骤s28,结束bios读取数据。需要说明的是,对于预设内存存储区的存储空间大小,本发明不作限定,此外,数据的具体存储方式也不作限定。为了便于理解,下面将举例说明。
74.例如,bmc的预设内存存储区大小为1mb,每条数据分配32字节,其中每条数据的第一个16字节用于存储当前数据id,下一条数据id,当前数据存储状态标识,当前数据存储状态标识,第二个16字节用于存储当前数据的内容。表1为本发明实施例提供的预设内存存储区存储数据表,0-f表示存储每条数据的第一个16字节,其中,字节0和1存储当前数据id,字节2和3存储下一条数据id,字节4和5存储数据的存储状态标识,字节6和7存储数据读取状态标识,字节9-f预留。当数据存储结束后,字节4和5标识设置为0x5a5a,若当前数据读取结束后,字节6和7标识设置为0xa5a5,需要说明的是,对于存储状态标识和读取状态标识的设置,本发明不作限定。此外,还需要说明的是,对于分配给每条数据的字节大小,本发明不作限定,可以依据实际业务需求进行设定。
75.表1预设内存存储区存储数据表
[0076][0077]
在具体实施中,当bios确定当前数据存储结束标识的位置后,判断字节4和5的标识是否为0x5a5a,若是,确定数据存储结束,则读取第一个16字节中的当前数据id和下一条数据id,以及第二个16字节中当前数据的内容。并判断下一条数据id是否为空,即是否为0xffff,若是,则结束bios数据读取,若否,则依据下一条数据id将下一条数据作为当前数据,并进入判断当前数据是否存储结束的步骤,即判断字节4和5的标识是否为0x5a5a。此外,bios读取数据后,将字节4和5的标识清除,即设置为0x0000,同时将字节6和7标识设置为0xa5a5以标识当前数据读取结束。
[0078]
当判断出字节4和5的标识不为0x5a5a时,确定数据未存储结束,则等待预设时间,例如,等待100微秒,在100微秒后,再次判断字节4和5的标识是否为0x5a5a,若是,确定数据存储结束,则读取当前数据id和下一条数据id,以及第二个16字节中当前数据的内容,若
否,则结束bios的数据读取。需要说明的是,等待的时间可以是100微秒,200微秒等,本发明对此不作限定。
[0079]
本发明实施例所提供的bios数据交互的方法,通过pcie高速通道直接读取bmc存储于预设内存存储区的数据,避免了发送请求和等待应答的时间,同时克服了采用lpc总线交互数据带来的低速率,进而提高了bios和bmc之间的数据交互,提高用户体验感。
[0080]
在上述实施例的基础上,通过获取显存起始地址,显存大小,预设内存存储区的大小,确定bios读取的当前数据的存储结束标识的位置,当前数据的存储结束标识的位置=显存起始地址+显存大小-预设内存存储区的大小。确定当前数据的存储结束标识的位置后,bios依据特定的方式读取数据,对于bios读取数据的特定方式,上述实施例已详细描述,此处暂不赘述。
[0081]
本发明实施例提供的bios数据交互的方法,确定当前数据的存储结束标识的位置后,bios通过pcie高速通道快速读取bmc存储于预设内存存储区的数据,实现bios和bmc间的快速数据交互,进而避免bios和bmc数据交互中出现卡顿或误判宕机等现象,提高用户体验感。
[0082]
在具体实施例中,bios除了可以读取bmc存储于自身的预设内存存储区中的数据,还可以将数据存储于该预设内存存储区中,以便于bmc获取bios存储的数据。在实施中,bios想要存储数据至bmc的预设内存存储区,则需要发送存储数据的指令中bmc,告知bmc需要存储数据的需求,以便于bmc提供存储数据的预设内存存储区,当bios将数据存储于预设内存存储区后,bmc可以通过内存访问的方式快速获取bios存储的数据,实现bios和bmc之间的数据交互。
[0083]
本发明实施例所提供的bios数据交互的方法,采用pcie传输通道实现bios和bmc之间的数据交互,bios可以将数据存储至bmc的预设内存存储区,以便于bmc以内存访问的方式获取bios存储的数据,不仅提高了数据交互速率,还使产品的可用性更强,进一步提高了用户体验感。
[0084]
在上述实施例中,从bios侧角度对bios数据交互的方法进行了详细描述,本发明还提供从bmc侧角度的bios数据交互的方法对应的实施例。bmc接收bios发送的读取数据的指令,依据该指令,bmc将数据存储于预设的内存存储区中,以便于bios判断预设内存存储区是否存在数据,若存在,通过pcie传输通读取预设内存存储区的数据。其中,预设内存存储区为bmc的内存,且预设内存存储区的存储空间小于bmc的显存存储空间。
[0085]
可以理解的是,基于bmc侧角度的bios数据交互的方法与基于bios侧角度对bios数据交互的方法是相互对应的,故具体实施方式参见上文描述,本实施例不再赘述。
[0086]
本发明提供的bios数据交互的方法,包括:接收bios发送的读取数据指令,接收到指令后,将数据存储于预设的内存存储区中,以便于bios判断预设内存存储区是否存在数据,若存在,通过pcie传输通读取预设内存存储区的数据。本发明提供的技术方案,bmc接收到bios发送的指令后,通过内存方式快速将数据存储于自身的预设内存存储区中,bmc存储数据后,bios通过判断该预设内存存储区是否存在数据,若存在,则通过pcie传输通道直接读取该预设内存存储区的数据,pcie传输通道为高速传输通道,避免了采用lpc总线传输数据的低效率,此外,采用lpc总线传输数据时,bios需要发送请求,等待bmc应答后才能进行数据交互,本发明技术方案直接从bmc的预设内存存储区中读取数据,节约了发送请求和等
待应答的时间,提高了数据交互的效率,进而提高产品质量以及用户体验感。
[0087]
在具体实施例中,bmc接收bios读取数据的指令后,确定存储数据的起始地址,依据该起始地址将数据存储于的预设内存存储区的指定存储区中,并判断当前数据是否存储结束,若是,将当前数据的存储状态设置为存储结束。为了便于理解bmc如何存储数据至预设内存存储区,下面将举例说明。例如,bmc的预设内存存储区大小为1mb,每条数据分配32字节,其中每条数据的第一个16字节用于存储当前数据id,下一条数据id,当前数据存储状态标识,当前数据存储状态标识,第二个16字节用于存储当前数据的内容。其中,第一个16字节分别为字节0-f,字节0和1用于存储当前数据id,字节2和3用于存储下一条数据id,字节4和5用于存储数据的存储状态标识,字节6和7用于存储数据读取状态标识,字节9-f预留。当数据存储结束后,字节4和5标识设置为0x5a5a,若当前数据读取结束后,字节6和7标识设置为0xa5a5,需要说明的是,对于存储状态标识和读取状态标识的设置,本发明不作限定。
[0088]
在具体实施中,当确定存储数据的起始地址后,将数据依次存储于指定存储区中,需要说明的是,由于bmc中不同的显存大小对应的起始地址不同,但结束地址相同,因此,当bmc的内存大小以及显存大小确定时,获取预设内存存储空间的大小就可以确定bmc存储数据的起始地址,即起始地址=显存结束地址-预设内存存储空间的大小。bmc获取bios发送的读取数据的指令后,将当前数据存储于对应的字节中,当前数据id存储于字节0和1,下一条数据id存储于字节2和3,判断当前数据是否存储结束,若存储结束,则将字节4和5标识设置为0x5a5a,此外,将当前数据的内容存储于第二个16字节中,以便于bios通过pcie读取预设内存存储区的数据。
[0089]
本发明提供的bios数据交互的方法,bmc接收到bios发送的指令后,通过内存方式快速将数据存储于自身的预设内存存储区中,bmc存储数据后,bios通过pcie高速传输通道快速读取该预设内存存储区的数据,避免了采用lpc总线传输数据的低效率,此外,采用lpc总线传输数据时,bios需要发送请求,等待bmc应答后才能进行数据交互,本发明技术方案直接从bmc的预设内存存储区中读取数据,节约了发送请求和等待应答的时间,提高了数据交互的效率,进而提高产品质量以及用户体验感。
[0090]
在上述实施例中,对于一种bios数据交互的方法进行了详细描述,本发明还提供一种bios数据交互的装置对应的实施例。需要说明的是,本发明从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件结构的角度。
[0091]
图3为本发明实施例提供的bios数据交互的装置结构图,如图3所述,该装置包括:
[0092]
发送模块10,用于发送读取数据的指令至bmc,以便于所述bmc将所述数据存储于所述bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间。
[0093]
判断模块11,用于判断所述预设内存存储区是否存在数据,若存在数据,调用读取模块。
[0094]
所述读取模块12,用于通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据。
[0095]
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0096]
本发明实施例提供的bios数据交互的装置,包括:bios发送读取数据的指令至bmc,以便于bmc将数据存储于bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间。bios判断该预设内存存储区是否存在数据,若存在数据,通过pcie传输通道读取bmc存储于预设内存存储区的数据。本发明提供的技术方案,bmc可以通过内存方式快速将数据存储于自身的预设内存存储区中,bios通过判断该预设内存存储区是否存在数据,若存在,则通过pcie传输通道直接读取该预设内存存储区的数据,pcie传输通道为高速传输通道,避免了采用lpc总线传输数据的低效率,此外,采用lpc总线传输数据时,bios需要发送请求,等待bmc应答后才能进行数据交互,本发明技术方案直接从bmc的预设内存存储区中读取数据,节约了发送请求和等待应答的时间,提高了数据交互的效率,进而提高产品质量以及用户体验感。
[0097]
图4为本发明另一实施例提供的bios数据交互的装置的结构图,如图4所示,bios数据交互的装置包括:存储器20,用于存储计算机程序;
[0098]
处理器21,用于执行计算机程序时实现如上述实施例所提到的bios数据交互的方法的步骤。
[0099]
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理(digital signal processing,简称dsp)、现场可编程门阵列(field-programmable gate array,简称fpga)、可编程逻辑阵列(programmable logic array,简称pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,简称cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图像处理器(graphics processing unit,简称gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,简称ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0100]
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的bios数据交互的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于bios数据交互的方法所涉及的数据等。
[0101]
在一些实施例中,bios数据交互的装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
[0102]
本领域技术人员可以理解,图4中示出的结构并不构成对bios数据交互的装置的限定,可以包括比图示更多或更少的组件。
[0103]
本发明实施例提供的bios数据交互的装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:bios数据交互的方法。
[0104]
本发明实施例提供的bios数据交互的装置,通过pcie高速传输通道读取bmc存储于自身的预设内存存储区内的数据,避免采用lpc总线进行数据传输的低速率,同时节约
bios发送请求和等待应答的时间,进而提高了bios数据交互的效率。
[0105]
最后,本发明还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例(可以是bios芯片侧对应的方法、也可以是bmc侧对应的方法,)中记载的步骤。
[0106]
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0107]
以上对本发明所提供的一种bios数据交互的方法、装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
[0108]
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
技术特征:
1.一种bios数据交互的方法,其特征在于,包括:发送读取数据的指令至bmc,以便于所述bmc将所述数据存储于所述bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间;判断所述预设内存存储区是否存在数据,若存在数据,通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据。2.根据权利要求1所述的bios数据交互的方法,其特征在于,在所述通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据之前还包括:控制显示控制器停止显示功能。3.根据权利要求1所述的bios数据交互的方法,其特征在于,所述通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据包括:确定当前数据的存储结束标识的位置;根据所述存储结束标识,判断所述当前数据是否存储结束,若所述当前数据存储结束,则读取所述当前数据,当前数据id,以及下一条数据id;设置所述当前数据的读取状态为读取完成,同时清除所述当前数据的所述存储结束标识;判断所述下一条数据id是否为空,若不为空,则将下一条数据作为当前数据,并进入所述根据所述存储结束标识,判断所述当前数据是否存储结束的步骤,若为空,则结束;若所述当前数据存储未结束,则等待预设时间,在达到所述预设时间后再次判断所述当前数据是否存储结束,若是,进入所述读取所述当前数据,所述当前数据的id,以及下一条数据id的步骤,若否,则结束。4.根据权利要求3所述的bios数据交互的方法,其特征在于,所述确定当前数据的存储结束标识的位置包括:获取所述显存起始地址,显存大小,所述预设内存存储区的大小;依据所述显存起始地址,所述显存大小和所述预设内存存储区的大小,确定所述当前数据的存储结束标识的位置。5.根据权利要求1所述的bios数据交互的方法,其特征在于,还包括:发送存储数据的指令至所述bmc;在所述bmc接收所述指令后,控制显示控制器停止显示功能,并确定存储所述数据的预设内存存储区;将所述数据存储于所述预设内存存储区,以便于所述bmc读取所述数据。6.一种bios数据交互的方法,其特征在于,包括:接收bios发送的读取数据的指令;依据所述指令,将所述数据存储于预设内存存储区,以便于所述bios判断所述预设内存存储区是否存在数据,若存在,通过pcie传输通读取所述预设内存存储区的所述数据,其中,所述预设内存存储区为所述bmc的内存,且所述预设内存存储区的存储空间小于所述bmc的显存存储空间。7.根据权利要求6所述的bios数据交互的方法,其特征在于,所述将所述数据存储于预设内存存储区包括:确定所述数据的存储起始地址;
依据所述存储起始地址,将当前数据,当前数据id和下一条数据id存储于预设内存存储区中所述当前数据的指定存储区;判断所述当前数据是否存储结束,若是,将所述当前数据的存储状态标识设置为存储结束。8.一种bios数据交互的装置,其特征在于,包括:发送模块,用于发送读取数据的指令至bmc,以便于所述bmc将所述数据存储于所述bmc的预设内存存储区,其中,所述预设内存存储区的存储空间小于所述bmc的显存存储空间;判断模块,用于判断所述预设内存存储区是否存在数据,若存在数据,调用读取模块;所述读取模块,用于通过pcie传输通道读取所述bmc存储于所述预设内存存储区的所述数据。9.一种bios数据交互的装置,其特征在于,包括存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的bios数据交互的方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的bios数据交互的方法的步骤。
技术总结
本发明公开了一种BIOS数据交互的方法、装置及介质,包括:BIOS发送读取数据指令至BMC,BMC将数据存储于BMC的预设内存存储区,其中,预设内存存储区的存储空间小于BMC的显存存储空间。BIOS判断预设内存存储区是否存在数据,若存在,通过PCIE传输通道读取数据。本发明提供的技术方案,BMC可以通过内存方式快速将数据存储于自身的预设内存存储区中,BIOS通过PCIE高速传输通道直接读取该预设内存存储区的数据,避免了采用LPC总线传输数据的低效率,此外,从BMC的预设内存存储区中读取数据,节约了BIOS发送请求和等待应答后才能进行数据交互的时间,进而提高了数据交互的效率。进而提高了数据交互的效率。进而提高了数据交互的效率。
技术研发人员:马井彬
受保护的技术使用者:浪潮(北京)电子信息产业有限公司
技术研发日:2021.11.12
技术公布日:2022/3/8