CN116521378A - 服务器的传感器访问方法、装置和基板管理控制器 - Google Patents
服务器的传感器访问方法、装置和基板管理控制器 Download PDFInfo
- Publication number
- CN116521378A CN116521378A CN202310802821.6A CN202310802821A CN116521378A CN 116521378 A CN116521378 A CN 116521378A CN 202310802821 A CN202310802821 A CN 202310802821A CN 116521378 A CN116521378 A CN 116521378A
- Authority
- CN
- China
- Prior art keywords
- processor
- array
- sensor data
- sensor
- current array
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 239000011159 matrix material Substances 0.000 claims description 50
- 238000004891 communication Methods 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 23
- 230000005540 biological transmission Effects 0.000 claims description 16
- 238000012360 testing method Methods 0.000 claims description 12
- 239000000523 sample Substances 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000001276 controlling effect Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 230000001105 regulatory effect Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Arrangements For Transmission Of Measured Signals (AREA)
Abstract
本申请实施例提供了一种服务器的传感器访问方法、装置和基板管理控制器,第一处理器和第二处理器位于同一个芯片上,第一处理器运行实时操作系统,第二处理器运行非实时操作系统,该方法应用于第一处理器,方法包括:获取步骤,获取服务器中各传感器的传感器数据,得到当前数组;第一发送步骤,将当前数组中至少部分的传感器数据发送至第二处理器,使得第二处理器根据当前数组中至少部分的传感器数据控制服务器的运行状态。本申请至少解决了相关技术中芯片访问传感器的效率较低的问题。
Description
技术领域
本申请实施例涉及服务器技术领域,具体而言,涉及一种服务器的传感器访问方法、装置、计算机可读存储介质、基板管理控制器和服务器。
背景技术
大部分服务器主板上都会设置BMC(Baseboard Manager Controller,基板管理控制器)芯片,BMC具备监管服务器的运行状态、记录运行日志以及故障处理等功能。BMC最重要的一个功能是周期性监控主板上所有传感器的状态,经过一系列计算,反馈给服务器运维人员或自主进行相应处理。但是目前大部分传感器需要BMC不断访问各传感器,来达到周期性获取传感器状态的目的。这样会有两个弊端,一个弊端是BMC上业务众多,访问传感器就会比较低效,需要CPU花费大量时间用于传感器访问,另一个弊端是有些传感器的读数一定时间内并未发生改变,频繁访问会造成CPU资源大量占用。
发明内容
本申请实施例提供了一种服务器的传感器访问方法、装置、计算机可读存储介质、基板管理控制器和服务器,以至少解决相关技术中芯片访问传感器的效率较低的问题。
根据本申请的一个实施例,提供了一种服务器的传感器访问方法,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述方法应用于所述第一处理器,所述方法包括:获取步骤,获取服务器中各传感器的传感器数据,得到当前数组;第一发送步骤,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,使得所述第二处理器根据所述当前数组中至少部分的所述传感器数据控制所述服务器的运行状态。
在一个示例性实施例中,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,包括:第一确定步骤,确定所述当前数组与历史数组是否相同,所述历史数组为历史时刻得到的各所述传感器的传感器数据,所述历史时刻早于所述当前数组的得到时刻,所述当前数组与所述历史数组中对应位置的传感器数据为同一个所述传感器的传感器数据;第二发送步骤,在所述当前数组与所述历史数组不相同的情况下,至少将所述当前数组中的目标传感器数据发送至所述第二处理器,所述目标传感器数据为与所述历史数组不相同的所述传感器数据。
在一个示例性实施例中,确定所述当前数组与历史数组是否相同,包括:依次比对所述当前数组与所述历史数组中对应位置的所述传感器数据,确定对应位置的所述传感器数据是否相同;在所有对应位置的所述传感器数据均相同的情况下,确定所述当前数组以及所述历史数组相同;在至少一个对应位置的所述传感器数据不相同的情况下,确定所述当前数组以及所述历史数组不相同。
在一个示例性实施例中,至少将所述当前数组中的目标传感器数据发送至所述第二处理器,包括:第三发送步骤,将所述当前数组或者所述目标传感器数据发送至所述第二处理器;替换步骤,采用所述当前数组替换所述历史数组,得到新的所述历史数组。
在一个示例性实施例中,所述方法还包括:第二确定步骤,在所述当前数组与所述历史数组相同的情况下,或者在至少将所述当前数组中的目标传感器数据发送至所述第二处理器之后,确定上一轮询时刻与当前时刻之间的时间间隔是否达到轮询周期;循环步骤,在所述时间间隔达到所述轮询周期的情况下,依次执行所述获取步骤、所述第一确定步骤、第三发送步骤、替换步骤和第二确定步骤预定次数,或者依次执行所述获取步骤、第一确定步骤和第二确定步骤所述预定次数。
在一个示例性实施例中,在获取服务器中各传感器的传感器数据,得到当前数组之前,所述方法还包括:从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;初始化所述传感器数组模板中各所述元素的数值,得到初始数组,所述初始数组的得到时刻早于或者等于所述历史时刻。
在一个示例性实施例中,所述第一处理器与各所述传感器通过串行总线通信,获取服务器中各传感器的传感器数据,得到当前数组,包括:从所述服务器的存储器中读取轮询配置参数;根据所述轮询配置参数,依次询问所述串行总线上的各所述传感器,以得到各所述传感器数据;根据所述模板定义信息,将各所述传感器数据填入所述传感器数组模板中,得到所述当前数组。
在一个示例性实施例中,所述服务器的存储器为EEPROM(Electrically ErasableProgrammable Read-Only Memory,电可擦除可编程只读存储器),所述数组模板信息以JSON(JavaScript Object Notation,JS对象简谱)格式存储在所述EEPROM中。
在一个示例性实施例中,获取服务器中各传感器的传感器数据,包括:在接收到所述第二处理器发送的唤醒指令的情况下,运行所述实时操作系统,以获取所述服务器中的各所述传感器数据。
在一个示例性实施例中,所述当前数组为矩阵数据,所述矩阵数据的行或列中之一表征所述传感器的类型,所述矩阵数据的行或列中另一个表征所述传感器的测试位置。
在一个示例性实施例中,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,包括:将所述当前数组中至少部分的所述传感器数据写入共享内存区域中,使得所述第二处理器从所述共享内存区域中读取所述当前数组中至少部分的所述传感器数据,其中,所述共享内存区域为所述第一处理器和所述第二处理器均可以访问的所述芯片的内存区域。
根据本申请的另一个实施例,提供了一种服务器的传感器访问方法,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述方法应用于所述第二处理器,所述方法包括:接收所述第一处理器发送的当前数组中至少部分的传感器数据,所述当前数组为所述第一处理器获取服务器中各传感器的所述传感器数据得到的;根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态。
在一个示例性实施例中,接收所述第一处理器发送的当前数组中至少部分的传感器数据,包括:接收所述第一处理器发送的所述当前数组,在根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态之前,所述方法还包括:从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;根据所述模板定义信息,解析所述当前数组的数据,确定各个所述传感器对应的所述传感器数据。
在一个示例性实施例中,根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态,包括:按照所述传感器的类型对各所述传感器数据进行分类;对分类后的所述传感器数据进行预定处理,得到各类型的所述传感器的处理后数据,所述预定处理包括加权平均处理;根据所述处理后数据和标准数据范围,确定所述服务器的待调整对象和调整参数;根据所述调整参数,对所述待调整对象进行调整,使得调整后对应的所述处理后数据位于所述标准数据范围内。
在一个示例性实施例中,在接收所述第一处理器发送的当前数组中至少部分的传感器数据之前,所述方法还包括:在上电的情况下,运行所述非实时操作系统;生成唤醒指令并发送所述唤醒指令至所述第一处理器,使得所述第一处理器运行所述实时操作系统,以获取所述服务器中的各所述传感器数据。
在一个示例性实施例中,所述非实时操作系统包括Linux系统,运行所述非实时操作系统,包括:运行所述芯片内部的ROM固化程序,以加载引导程序;执行所述引导程序,以加载所述Linux系统的系统内核。
在一个示例性实施例中,所述当前数组是所述第一处理器确定所述当前数组与历史数组不同的情况下发送的,所述当前数组中至少部分的所述传感器数据至少包括目标传感器数据,所述目标传感器数据为与所述历史数组不相同的所述传感器数据,所述历史数组为历史时刻得到的各所述传感器的传感器数据,所述历史时刻早于所述当前数组的得到时刻,所述当前数组与所述历史数组中对应位置的传感器数据为同一个所述传感器的传感器数据。
在一个示例性实施例中,接收所述第一处理器发送的当前数组中至少部分的传感器数据,包括:从共享内存区域中读取所述当前数组中至少部分的所述传感器数据,其中,所述共享内存区域为所述第一处理器和所述第二处理器均可以访问的所述芯片的内存区域。
根据本申请的再一个实施例,提供了一种服务器的传感器访问装置,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述装置应用于所述第一处理器,所述装置包括:获取单元,用于获取步骤,获取服务器中各传感器的传感器数据,得到当前数组;发送单元,用于第一发送步骤,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,使得所述第二处理器根据所述当前数组中至少部分的所述传感器数据控制所述服务器的运行状态。
根据本申请的另一个实施例,提供了一种服务器的传感器访问装置,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述装置应用于所述第二处理器,所述装置包括:接收单元,用于接收所述第一处理器发送的当前数组中至少部分的传感器数据,所述当前数组为所述第一处理器获取服务器中各传感器的所述传感器数据得到的;控制单元,用于根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述任一种方法实施例中的步骤。
根据本申请的另一个实施例,还提供了一种BMC,包括第一处理器,用于运行实时操作系统;第二处理器,与所述第一处理器通信连接,所述第二处理器用于运行非实时操作系统;存储器、存储在所述存储器上并可在所述第一处理器上运行的第一计算机程序以及存储在所述存储器上并可在所述第二处理器上运行的第二计算机程序,其中,所述第一处理器执行所述第一计算机程序时用于实现如下步骤:获取服务器中各传感器的传感器数据,得到当前数组;将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器;所述第二处理器执行所述第二计算机程序时用于实现如下步骤:接收所述第一处理器发送的当前数组中至少部分的传感器数据,所述当前数组为所述第一处理器获取服务器中各传感器的所述传感器数据得到的;根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态。
在一个示例性实施例中,所述第一处理器执行所述第一计算机程序时还用于实现如下步骤:确定所述当前数组与历史数组是否相同,所述历史数组为历史时刻得到的各所述传感器的传感器数据,所述历史时刻早于所述当前数组的得到时刻,所述当前数组与所述历史数组中对应位置的传感器数据为同一个所述传感器的传感器数据;在所述当前数组与所述历史数组不相同的情况下,至少将所述当前数组中的目标传感器数据发送至所述第二处理器,所述目标传感器数据为与所述历史数组不相同的所述传感器数据。
在一个示例性实施例中,所述第一处理器执行所述第一计算机程序时还用于实现如下步骤:在获取服务器中各传感器的传感器数据,得到当前数组之前,从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;初始化所述传感器数组模板中各所述元素的数值,得到初始数组,所述初始数组的得到时刻早于或者等于所述历史时刻,所述第一处理器执行所述第一计算机程序时还用于实现如下步骤:在根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态之前,从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;根据所述模板定义信息,解析所述当前数组的数据,确定各个所述传感器对应的所述传感器数据。
根据本申请的再一个实施例,提供了一种服务器,包括:多个传感器以及任一种所述的BMC。
在本申请中,通过实时操作系统获取传感器数据并将传感器数据发送给非实时操作系统,实时操作系统上可以保证对传感器数据进行快速响应并处理,保证了芯片访问传感器的效率较高。并且,通过运行非实时操作系统的第二处理器来处理除了获取传感器数据之外的其他业务,解放了第二处理器上的资源,使得第二处理器可以较为快速地响应其他业务。
附图说明
图1是根据本申请实施例的服务器的传感器访问方法的移动终端的硬件结构框图;
图2是根据本申请实施例的BMC的结构示意图;
图3是根据本申请实施例的服务器的传感器访问方法的流程图;
图4是根据本申请实施例的服务器的传感器访问方法的流程图;
图5是根据本申请实施例的服务器的传感器访问装置的结构框图;
图6是根据本申请实施例的服务器的传感器访问装置的结构框图;
图7是根据本申请实施例的BMC的双核双系统的启动流程图;
图8是根据本申请实施例的第一处理器运行服务器的传感器访问方法的流程图。
其中,上述附图包括以下附图标记:
102、处理器;104、存储器;106、传输设备;108、输入输出设备;400、BMC;401、第一处理器;402、第二处理器;403、传感器。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种服务器的传感器访问方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储传感器数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的服务器的传感器访问方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及传感器数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送传感器数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于第一处理器的服务器的传感器访问方法,如图2所示,上述第一处理器401和第二处理器402位于同一个芯片上,该芯片可以为BMC芯片,也可以为其他芯片,本实施例对此不作具体限制。上述第一处理器401运行实时操作系统,上述第二处理器402运行非实时操作系统,图3是根据本申请实施例的服务器的传感器访问方法的流程图,如图3所示,该流程包括如下步骤:
步骤S201,获取步骤,获取服务器中各传感器的传感器数据,得到当前数组;
具体地,上述传感器数据为上述传感器的工作状态,也就是传感器读数。各上述传感器包括但不限于温度传感器、湿度传感器、电压传感器、电流传感器以及转速传感器等。上述当前数组中各个传感器按照预定顺序排列,其具体格式可以为一维数组,也可以为二维数组,还可以三维数组等其他数组格式。
步骤S202,第一发送步骤,将上述当前数组中至少部分的上述传感器数据发送至上述第二处理器,使得上述第二处理器根据上述当前数组中至少部分的上述传感器数据控制上述服务器的运行状态。
具体地,可以将当前数组发送至上述第二处理器,即将当前数组中全部的传感器数据发送至第二处理器,也可以仅将当前数组中的部分传感器数据发送至第二处理器。上述第二处理器用于处理除了传感器数据获取之外的其他业务,根据接收到的传感器数据,确定服务器的控制参数,并以该控制参数控制服务器运行。
通过上述步骤,首先,芯片中的第一处理器获取服务器中各传感器的传感器数据,得到当前数组;然后,第一处理器将该当前数组中至少部分的上述传感器数据发送给芯片中的第二处理器,使得第二处理器根据接收到的传感器数据进行服务器的运行控制,其中,第一处理器用于实时操作系统,第二处理器用于运行非实时操作系统,也就是说,在本申请中,通过实时操作系统获取传感器数据并将传感器数据发送给非实时操作系统,实时操作系统上可以保证对传感器数据进行快速响应并处理,保证了芯片访问传感器的效率较高。并且,通过运行非实时操作系统的第二处理器来处理除了获取传感器数据之外的其他业务,解放了第二处理器上的资源,使得第二处理器可以较为快速地响应其他业务。
其中,上述步骤的执行主体可以为控制器、服务器或者终端等,但不限于此。
上述的实时操作系统(Real Time Operating System,简称为RTOS)在传感器数据产生时,能够接受并以足够快的速度予以处理,调度一切可利用的资源完成,并控制所有实时任务协调一致运行的操作系统。具有及时响应和/>的特点。上述的非实时操作系统为除了实时操作系统之外处理器的其他操作系统,如Linux、Windows、以及Unix等系统。
进一步地,上述当前数组为矩阵数据,上述矩阵数据的行或列中之一表征上述传感器的类型,上述矩阵数据的行或列中另一个表征上述传感器的测试位置。本申请示例性的示出了一种4行3列的上述矩阵数据,如下所示,其中,矩阵数据的列为传感器类型,如温度传感器、电压传感器、电流传感器和转速传感器,矩阵数据的行为测试位置,在传感器为温度传感器的情况下,一行的数据分别为主板温度、背板温度、机箱内温度。其中,FAN为风扇,PSU全称为Power Supply Unit,为电源供应单元。
根据本申请的一种可选方案,将上述当前数组中至少部分的上述传感器数据发送至上述第二处理器,包括:第一确定步骤,确定上述当前数组与历史数组是否相同,上述历史数组为历史时刻得到的各上述传感器的传感器数据,上述历史时刻早于上述当前数组的得到时刻,上述当前数组与上述历史数组中对应位置的传感器数据为同一个上述传感器的传感器数据;第二发送步骤,在上述当前数组与上述历史数组不相同的情况下,至少将上述当前数组中的目标传感器数据发送至上述第二处理器,上述目标传感器数据为与上述历史数组不相同的上述传感器数据。由于服务器中有些传感器的读数比较稳定,在一段时间内都不会发生改变,本申请的第一处理器在得到当前数组后先确定当前数组与历史数组是否相同,只有两者不相同时,说明传感器数据发生了变化,此时才至少将不相同的传感器数据发送给第二处理器,这样进一步地避免了频繁将未发生变化的传感器数据发送给第二处理器,大量占用第二处理器资源的问题,进一步地实现了对第二处理器的资源解放。
需要说明的是,为了保证第二处理器可以较为准确地根据目标传感器数据对服务器进行控制,上述历史时刻为早于上述当前数据的得到时刻、且与该得到时刻间隔最短的时刻,也就是说历史数组为历史的传感器数据数组中,与当前数组在时间上间隔最近的数组。
为了进一步地实现较为快速且准确地确定当前数组与历史数组是否相同,另一种示例性的实施例中,确定上述当前数组与历史数组是否相同,包括:依次比对上述当前数组与上述历史数组中对应位置的上述传感器数据,确定对应位置的上述传感器数据是否相同;在所有对应位置的上述传感器数据均相同的情况下,确定上述当前数组以及上述历史数组相同;在至少一个对应位置的上述传感器数据不相同的情况下,确定上述当前数组以及上述历史数组不相同。
具体地,至少将上述当前数组中的目标传感器数据发送至上述第二处理器,包括:第三发送步骤,将上述当前数组或者上述目标传感器数据发送至上述第二处理器;替换步骤,采用上述当前数组替换上述历史数组,得到新的上述历史数组。在传感器数据发生改变时,将当前数组或者发生变化的数据发送给第二处理器,并更新存储的历史数组,保证了历史数组的实时性较强,进一步地保证了后续将新的当前数组与历史数组进行比较得到的比较结果较为准确。
当然,除了上述的将上述目标传感器数据发送至上述第二处理器,以及将上述当前数组发送至上述第二处理器之外,至少将上述当前数组中的目标传感器数据发送至上述第二处理器,还可以包括:将上述目标传感器数据以及关联数据发送至上述第二处理器,其中,上述关联数据为与上述目标传感器数据具有相关关系的传感器数据,上述相关关系为预存至上述第一处理器中的关系,上述相关关系可以为根据多次实验得到的关系。这样在进一步地减少传感器数据对第二处理器的资源占用之外,还可以进一步地保证第二处理器根据这些传感器数据对服务器做出的控制较为准确。
在一个示例性实施例中,上述方法还包括:第二确定步骤,在上述当前数组与上述历史数组相同的情况下,或者在至少将上述当前数组中的目标传感器数据发送至上述第二处理器之后,确定上一轮询时刻与当前时刻之间的时间间隔是否达到轮询周期;循环步骤,在上述时间间隔达到上述轮询周期的情况下,依次执行上述获取步骤、上述第一确定步骤、第三发送步骤、替换步骤和第二确定步骤预定次数,或者依次执行上述获取步骤、第一确定步骤和第二确定步骤上述预定次数。通过上述实施例,实时操作系统可以周期性地自动执行获取当前数组、将当前数组与历史数组比较、根据比较结果发送或者不发送传感器数据给第二处理器的过程,从而进一步地提高芯片对传感器的访问效率,进一步地解决芯片访问传感器的效率较低的问题。
具体地,上述上一轮询时刻可以为第一处理器上一次获取各传感器数据的开始时刻,也可以为第一处理器上一次获取各传感器数据的结束时刻,本领域技术人员可以根据实际情况灵活设置该时刻的具体含义,并对应设置上述轮询周期的时长。
根据本申请的又一种可选方案,在获取服务器中各传感器的传感器数据,得到当前数组之前,上述方法还包括:从上述服务器的存储器中读取数组模板信息,上述数组模板信息包括传感器数组模板和模板定义信息,上述传感器数组模板包括多个元素,上述模板定义信息表征上述元素与上述传感器的对应关系;初始化上述传感器数组模板中各上述元素的数值,得到初始数组,上述初始数组的得到时刻早于或者等于上述历史时刻。本实施例中,将传感器数组模板以及模板中元素与传感器的对应关系以模板定义信息的形式存储在服务器的存储器中,第一处理器在开始获取传感器数据生成当前数组前,先从存储器中读取该模板定义信息,保证了可以按照元素与传感器的对应关系,生成第二处理器可识别的当前数组。
具体地,上述元素与上述传感器的对应关系具体包括上述元素与传感器的类型以及传感器的测试位置的对应关系。
一种示例性实施例中,上述传感器数组模板的代码内容如下:
{
“temp_sensors”:{
“MB_temp”,
“BackPlane_temp”,
“Inter_temp”,
}
“voltage_sensors”:{
“psu0_volt”,
“psu1_volt”,
“sys_volt”,
}
“electric_sensors”:{
“psu0_elec”,
“psu1_elec”,
“sys_elec”,
}
“fan_sensors”:{
“fan0_speed”,
“fan1_speed”,
“fan2_speed”,
}
}
本申请中,初始化上述传感器数组模板中各上述元素的数值,得到初始数组,可以包括:将上述传感器数组模板中各上述元素的数值设为0,得到上述初始数组。初始化上述传感器数组模板中各上述元素的数值,得到初始数组,还可以包括:将上述传感器数组模板中各上述元素的数值设为初始值,得到上述初始数组,上述初始值位于各传感器的正常数值范围内。上述初始数组可以作为当前数组的历史数组。
另外,上述服务器的存储器可以为Cache(缓存)/寄存器等SRAM(Static Random-Access Memory,静态随机存取存储器)、DRAM(Dynamic Random-Access Memory,动态随机存取内存)、PROM(Programmable Red-Only Memory,可编程只读存储器)/EPROM(ErasableProgrammable Read-Only Memory,可擦写可编程只读存储器)/EEPROM等ROM(Red-OnlyMemory,只读存储器)以及Flash Memory(快闪存储器)、U盘、SSD(Solid State Disk,固态硬盘)等非易失性RAM。
一种具体的实施例中,本申请的上述服务器的存储器为EEPROM,上述数组模板信息以JSON格式存储在上述EEPROM中。EEPROM掉电后数据不丢失,具有较高的可靠性,采用轻量级的JSON数据交换格式,易于相关人员的阅读和编写,同时便于第一处理器和第二处理器进行读取解析,可以有效提升网络传输效率。
为了进一步地提升芯片对传感器的轮询效率,在其他实施例中,上述第一处理器与各上述传感器通过串行总线通信,获取服务器中各传感器的传感器数据,得到当前数组,包括:从上述服务器的存储器中读取轮询配置参数;根据上述轮询配置参数,依次询问上述串行总线上的各上述传感器,以得到各上述传感器数据;根据上述模板定义信息,将各上述传感器数据填入上述传感器数组模板中,得到上述当前数组。第一处理器通过不断轮询串行总线上的传感器,来获取传感器数据,再根据预定义的模板定义信息,得到当前数组,由于第一处理器运行实时操作系统,并且其上运行的业务比较少,所以轮询起来要比第二处理器高效,进一步地实现了对传感器数据的快速响应和处理,进一步地提升了芯片访问传感器的效率。
上述的串行总线可以为SPI(Serial Peripheral Interface,串行外设接口)总线,也可以为IIC(Inter-Integrated Circuits,集成电路之间的连接)总线,还可以为UART(Universal Asynchronous receiver/Transmitter,通用异步收/发)总线,本领域技术人员可以根据实际情况灵活选择串行总线的类型。由于大部分传感器都是基于IIC协议,故本申请中上述串行总线为IIC总线,所有挂在IIC总线上的传感器都是平等的,都作为Slaver(从机),第一处理器作为Master(主机),只能由第一处理器读或者写传感器的数据。
在一个示例性实施例中,获取服务器中各传感器的传感器数据,包括:在接收到上述第二处理器发送的唤醒指令的情况下,运行上述实时操作系统,以获取上述服务器中的各上述传感器数据。第一处理器在接收到唤醒指令的情况下,才开始运行实时操作系统,来获取传感器数据以及确定是否要发送给第二处理器,这样可以进一步地保证芯片整体的功耗较低。
在实际的应用过程中,上述第一处理器可以通过任意可行的方式与上述第二处理器进行核间通信,如采用硬件中断方式进行通信、采用任务中断方式进行通信或者采用共享内存方式进行通信。本申请示例性的示出了第一处理器通过共享内存方式与第二处理器进行通信的方式,具体地,将上述当前数组中至少部分的上述传感器数据发送至上述第二处理器,包括:将上述当前数组中至少部分的上述传感器数据写入共享内存区域中,使得上述第二处理器从上述共享内存区域中读取上述当前数组中至少部分的上述传感器数据,其中,上述共享内存区域为上述第一处理器和上述第二处理器均可以访问的上述芯片的内存区域。本实施例通过共享内存进行第一处理器和第二处理器之间的通信,保证了通信的便捷性较强,提升了第一处理器与第二处理器之间的通信效率。
比如,芯片的内存中划出1M的空间作为上述第一处理器和上述第二处理器的共享内存,采用Mailbox(邮箱通道)进行指令传递,且指令传递的方向是单向的,只能由第一处理器写指令和写共享内存,第二处理器读指令和读共享内存。
本申请还提供了一种运行于第二处理器的服务器的传感器访问方法,如图2所示,上述第一处理器401和第二处理器402位于同一个芯片上,该芯片可以为BMC芯片,也可以为其他芯片,本实施例对此不作具体限制。上述第一处理器401运行实时操作系统,上述第二处理器402运行非实时操作系统,图4是根据本申请实施例的服务器的传感器访问方法的流程图,如图4所示,该流程包括如下步骤:
步骤S301,接收上述第一处理器发送的当前数组中至少部分的传感器数据,上述当前数组为上述第一处理器获取服务器中各传感器的上述传感器数据得到的;
具体地,上述传感器数据为上述传感器的工作状态,也就是传感器读数。各上述传感器包括但不限于温度传感器、湿度传感器、电压传感器、电流传感器以及转速传感器等。上述当前数组中各个传感器按照预定顺序排列,其具体格式可以为一维数组,也可以为二维数组,还可以三维数组等其他数组格式。
步骤S302,根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态。
具体地,接收到的传感器数据可以是上述当前数组,即当前数组中全部的传感器数据,也可以是当前数组中的部分传感器数据,第二处理器根据接收到的传感器数据,确定服务器的控制参数,并以该控制参数控制服务器运行。
通过上述步骤,首先,芯片中的第二处理器接收当前数组中至少部分的传感器数据,这些数据是第一处理器获取的服务器中的传感器数据;之后第二处理器根据接收到的传感器数据进行服务器的运行控制,其中,第一处理器用于实时操作系统,第二处理器用于运行非实时操作系统,也就是说,在本申请中,通过实时操作系统获取传感器数据并将传感器数据发送给非实时操作系统,实时操作系统上可以保证对传感器数据进行快速响应并处理,保证了芯片访问传感器的效率较高。并且,通过运行非实时操作系统的第二处理器来处理除了获取传感器数据之外的其他业务,解放了第二处理器上的资源,使得第二处理器可以较为快速地响应其他业务。
其中,上述步骤的执行主体可以为控制器、服务器或者终端等,但不限于此。
进一步地,上述当前数组为矩阵数据,上述矩阵数据的行或列中之一表征上述传感器的类型,上述矩阵数据的行或列中另一个表征上述传感器的测试位置。本申请示例性的示出了一种4行3列的上述矩阵数据,如下所示,其中,矩阵数据的列为传感器类型,如温度传感器、电压传感器、电流传感器和转速传感器,矩阵数据的行为测试位置,在传感器为温度传感器的情况下,一行的数据分别为主板温度、背板温度、机箱内温度。第二处理器在接收到所有的温度数据之后,根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态,可以包括:将所有的温度数据进行加权求平均值,得到温度平均值;根据温度平均值自动调节风扇转速,达到降温的目的。其中,FAN为风扇,PSU全称为PowerSupply Unit,为电源供应单元。
根据本申请的又一种可选方案,接收上述第一处理器发送的当前数组中至少部分的传感器数据,包括:接收上述第一处理器发送的上述当前数组,在根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态之前,上述方法还包括:从上述服务器的存储器中读取数组模板信息,上述数组模板信息包括传感器数组模板和模板定义信息,上述传感器数组模板包括多个元素,上述模板定义信息表征上述元素与上述传感器的对应关系;根据上述模板定义信息,解析上述当前数组的数据,确定各个上述传感器对应的上述传感器数据。本实施例中,将传感器数组模板以及模板中元素与传感器的对应关系以模板定义信息的形式存储在服务器的存储器中,第二处理器收到当前数组时根据读取的模板定义信息来确定当前数组中元素与传感器的对应关系,可以较为准确的识别当前数组的传感器数据信息。
另外,上述服务器的存储器可以为Cache/寄存器等SRAM、DRAM、PROM/EPROM/EEPROM等ROM以及Flash Memory、U盘、SSD等非易失性RAM。
一种具体的实施例中,本申请的上述服务器的存储器为EEPROM,上述数组模板信息以JSON格式存储在上述EEPROM中。EEPROM掉电后数据不丢失,具有较高的可靠性,采用轻量级的JSON数据交换格式,易于相关人员的阅读和编写,同时便于第一处理器和第二处理器进行读取解析,可以有效提升网络传输效率。
在一个示例性实施例中,根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态,包括:按照上述传感器的类型对各上述传感器数据进行分类;对分类后的上述传感器数据进行预定处理,得到各类型的上述传感器的处理后数据,上述预定处理包括加权平均处理;根据上述处理后数据和标准数据范围,确定上述服务器的待调整对象和调整参数;根据上述调整参数,对上述待调整对象进行调整,使得调整后对应的上述处理后数据位于上述标准数据范围内。从而进一步实现了根据传感器数据实时调控服务器的部件运行参数的目的。
在另一些示例性实施例中,在接收上述第一处理器发送的当前数组中至少部分的传感器数据之前,上述方法还包括:在上电的情况下,运行上述非实时操作系统;生成唤醒指令并发送上述唤醒指令至上述第一处理器,使得上述第一处理器运行上述实时操作系统,以获取上述服务器中的各上述传感器数据。由于第二处理器的非实时操作系统是用来运行除获取传感器数据之外的其他业务的,因此在上电的情况下,需要先运行起来,来保证芯片最基本的业务程序运行,再发送唤醒指令给第一处理器,使得实时操作系统运行起来,执行传感器数据的获取业务。并且,通过唤醒指令方式来唤醒第一处理器,使得第一处理器其他时间处于休眠状态,可以进一步地保证芯片整体的功耗较低。
具体地,上述非实时操作系统包括Linux系统,运行上述非实时操作系统,包括:运行上述芯片内部的ROM固化程序,以加载引导程序;执行上述引导程序,以加载上述Linux系统的系统内核。通过加载引导程序并执行,实现了Linux系统内核的加载。
其中,芯片内部ROM固化程序可以为BOOTROM(无盘启动ROM接口),是引导程序的引导代码,BOOTROM读硬件的启动信息,从指定的启动介质中读取引导代码。上述引导程序为UBOOT(Universal Boot Loader,通用引导加载程序),在加载系统内核之前,完成硬件初始化和内存映射,为后续内核的引导提供一个良好的环境。
根据本申请的再一种示例性实施例,上述当前数组是上述第一处理器确定上述当前数组与历史数组不同的情况下发送的,上述当前数组中至少部分的上述传感器数据至少包括目标传感器数据,上述目标传感器数据为与上述历史数组不相同的上述传感器数据,上述历史数组为历史时刻得到的各上述传感器的传感器数据,上述历史时刻早于上述当前数组的得到时刻,上述当前数组与上述历史数组中对应位置的传感器数据为同一个上述传感器的传感器数据。由于服务器中有些传感器的读数比较稳定,在一段时间内都不会发生改变,本申请的第一处理器在得到当前数组后先确定当前数组与历史数组是否相同,只有两者不相同时,说明传感器数据发生了变化,此时才至少将不相同的传感器数据发送给第二处理器,这样进一步地避免了频繁将未发生变化的传感器数据发送给第二处理器,大量占用第二处理器资源的问题,进一步地实现了对第二处理器的资源解放。
需要说明的是,为了保证第二处理器可以较为准确地根据目标传感器数据对服务器进行控制,上述历史时刻为早于上述当前数据的得到时刻、且与该得到时刻间隔最短的时刻,也就是说历史数组为历史的传感器数据数组中,与当前数组在时间上间隔最近的数组。
另外,上述当前数组与上述历史数组是否相同是第一处理器通过依次比对上述当前数组与上述历史数组中对应位置的上述传感器数据,确定对应位置的上述传感器数据是否相同确定的。
并且,在上述当前数组与上述历史数组不相同的情况下,上述第一处理器会将上述当前数组替换上述历史数组,得到新的上述历史数组,保证了历史数组的实时性较强,进一步地保证了后续将新的当前数组与历史数组进行比较得到的比较结果较为准确。
当然,除了接收上述的将上述目标传感器数据,以及接收上述当前数组之外,接收上述第一处理器发送的当前数组中至少部分的传感器数据还可以包括:接收上述目标传感器数据以及关联数据,其中,上述关联数据为与上述目标传感器数据具有相关关系的传感器数据,上述相关关系为预存至上述第一处理器中的关系,上述相关关系可以为根据多次实验得到的关系。这样在进一步地减少传感器数据对第二处理器的资源占用之外,还可以进一步地保证第二处理器根据这些传感器数据对服务器做出的控制较为准确。
具体地,上述当前数组为上述第一处理器根据上述模板定义信息,将各上述传感器数据填入上述传感器数组模板中得到的,上述传感器数据为上述第一处理器根据轮询配置参数,依次询问上述串行总线上的各上述传感器得到的,上述轮询配置参数为上述第一处理器从上述服务器的存储器中读取的。由于第一处理器运行实时操作系统,并且其上运行的业务比较少,所以轮询起来要比第二处理器高效,进一步地实现了对传感器数据的快速响应和处理,进一步地提升了芯片访问传感器的效率。
上述的串行总线可以为SPI(Serial Peripheral Interface,串行外设接口)总线,也可以为IIC(Inter-Integrated Circuits,集成电路之间的连接)总线,还可以为UART(Universal Asynchronous receiver/Transmitter,通用异步收/发)总线,本领域技术人员可以根据实际情况灵活选择串行总线的类型。由于大部分传感器都是基于IIC协议,故本申请中上述串行总线为IIC总线,所有挂在IIC总线上的传感器都是平等的,都作为Slaver(从机),第一处理器作为Master(主机),只能由第一处理器读或者写传感器的数据。
在实际的应用过程中,上述第一处理器可以通过任意可行的方式与上述第二处理器进行核间通信,如采用硬件中断方式进行通信、采用任务中断方式进行通信或者采用共享内存方式进行通信。本申请示例性的示出了第一处理器通过共享内存方式与第二处理器进行通信的方式,具体地,接收上述第一处理器发送的当前数组中至少部分的传感器数据,包括:从共享内存区域中读取上述当前数组中至少部分的上述传感器数据,其中,上述共享内存区域为上述第一处理器和上述第二处理器均可以访问的上述芯片的内存区域。本实施例通过共享内存进行第一处理器和第二处理器之间的通信,保证了通信的便捷性较强,提升了第一处理器与第二处理器之间的通信效率。
比如,芯片的内存中划出1M的空间作为上述第一处理器和上述第二处理器的共享内存,采用Mailbox(邮箱通道)进行指令传递,且指令传递的方向是单向的,只能由第一处理器写指令和写共享内存,第二处理器读指令和读共享内存。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例上述的方法。
在本实施例中还提供了一种运行于第一处理器的服务器的传感器访问装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图2所示,上述第一处理器401和第二处理器402位于同一个芯片上,该芯片可以为BMC芯片,也可以为其他芯片,本实施例对此不作具体限制。上述第一处理器401运行实时操作系统,上述第二处理器402运行非实时操作系统,图5是根据本申请实施例的服务器的传感器访问装置的结构框图,如图5所示,该装置包括:
获取单元10,用于获取步骤,获取服务器中各传感器的传感器数据,得到当前数组;
具体地,上述传感器数据为上述传感器的工作状态,也就是传感器读数。各上述传感器包括但不限于温度传感器、湿度传感器、电压传感器、电流传感器以及转速传感器等。上述当前数组中各个传感器按照预定顺序排列,其具体格式可以为一维数组,也可以为二维数组,还可以三维数组等其他数组格式。
第一发送单元20,用于第一发送步骤,将上述当前数组中至少部分的上述传感器数据发送至上述第二处理器,使得上述第二处理器根据上述当前数组中至少部分的上述传感器数据控制上述服务器的运行状态。
具体地,可以将当前数组发送至上述第二处理器,即将当前数组中全部的传感器数据发送至第二处理器,也可以仅将当前数组中的部分传感器数据发送至第二处理器。上述第二处理器用于处理除了传感器数据获取之外的其他业务,根据接收到的传感器数据,确定服务器的控制参数,并以该控制参数控制服务器运行。
通过上述实施例,芯片中的第一处理器通过获取单元获取服务器中各传感器的传感器数据,得到当前数组;第一处理器通过第一发送单元将该当前数组中至少部分的上述传感器数据发送给芯片中的第二处理器,使得第二处理器根据接收到的传感器数据进行服务器的运行控制,其中,第一处理器用于实时操作系统,第二处理器用于运行非实时操作系统,也就是说,在本申请中,通过实时操作系统获取传感器数据并将传感器数据发送给非实时操作系统,实时操作系统上可以保证对传感器数据进行快速响应并处理,保证了芯片访问传感器的效率较高。并且,通过运行非实时操作系统的第二处理器来处理除了获取传感器数据之外的其他业务,解放了第二处理器上的资源,使得第二处理器可以较为快速地响应其他业务。
上述的实时操作系统在传感器数据产生时,能够接受并以足够快的速度予以处理,调度一切可利用的资源完成,并控制所有实时任务协调一致运行的操作系统。具有及时响应和/>的特点。上述的非实时操作系统为除了实时操作系统之外处理器的其他操作系统,如Linux、Windows、以及Unix等系统。
进一步地,上述当前数组为矩阵数据,上述矩阵数据的行或列中之一表征上述传感器的类型,上述矩阵数据的行或列中另一个表征上述传感器的测试位置。本申请示例性的示出了一种4行3列的上述矩阵数据,如下所示,其中,矩阵数据的列为传感器类型,如温度传感器、电压传感器、电流传感器和转速传感器,矩阵数据的行为测试位置,在传感器为温度传感器的情况下,一行的数据分别为主板温度、背板温度、机箱内温度。其中,FAN为风扇,PSU全称为Power Supply Unit,为电源供应单元。
根据本申请的一种可选方案,上述第一发送单元包括:第一确定模块,用于第一确定步骤,确定上述当前数组与历史数组是否相同,上述历史数组为历史时刻得到的各上述传感器的传感器数据,上述历史时刻早于上述当前数组的得到时刻,上述当前数组与上述历史数组中对应位置的传感器数据为同一个上述传感器的传感器数据;发送模块,用于第二发送步骤,在上述当前数组与上述历史数组不相同的情况下,至少将上述当前数组中的目标传感器数据发送至上述第二处理器,上述目标传感器数据为与上述历史数组不相同的上述传感器数据。由于服务器中有些传感器的读数比较稳定,在一段时间内都不会发生改变,本申请的第一处理器在得到当前数组后先确定当前数组与历史数组是否相同,只有两者不相同时,说明传感器数据发生了变化,此时才至少将不相同的传感器数据发送给第二处理器,这样进一步地避免了频繁将未发生变化的传感器数据发送给第二处理器,大量占用第二处理器资源的问题,进一步地实现了对第二处理器的资源解放。
需要说明的是,为了保证第二处理器可以较为准确地根据目标传感器数据对服务器进行控制,上述历史时刻为早于上述当前数据的得到时刻、且与该得到时刻间隔最短的时刻,也就是说历史数组为历史的传感器数据数组中,与当前数组在时间上间隔最近的数组。
为了进一步地实现较为快速且准确地确定当前数组与历史数组是否相同,另一种示例性的实施例中,上述第一确定模块包括:比对子模块,用于依次比对上述当前数组与上述历史数组中对应位置的上述传感器数据,确定对应位置的上述传感器数据是否相同;第一确定子模块,用于在所有对应位置的上述传感器数据均相同的情况下,确定上述当前数组以及上述历史数组相同;第二确定子模块,用于在至少一个对应位置的上述传感器数据不相同的情况下,确定上述当前数组以及上述历史数组不相同。
具体地,上述发送模块包括:第一发送子模块,用于第三发送步骤,将上述当前数组或者上述目标传感器数据发送至上述第二处理器;替换子模块,用于替换步骤,采用上述当前数组替换上述历史数组,得到新的上述历史数组。在传感器数据发生改变时,将当前数组或者发生变化的数据发送给第二处理器,并更新存储的历史数组,保证了历史数组的实时性较强,进一步地保证了后续将新的当前数组与历史数组进行比较得到的比较结果较为准确。
当然,除了上述的将上述目标传感器数据发送至上述第二处理器,以及将上述当前数组发送至上述第二处理器之外,上述发送模块还可以包括:第二发送子模块,用于将上述目标传感器数据以及关联数据发送至上述第二处理器,其中,上述关联数据为与上述目标传感器数据具有相关关系的传感器数据,上述相关关系为预存至上述第一处理器中的关系,上述相关关系可以为根据多次实验得到的关系。这样在进一步地减少传感器数据对第二处理器的资源占用之外,还可以进一步地保证第二处理器根据这些传感器数据对服务器做出的控制较为准确。
在一个示例性实施例中,上述装置还包括:确定单元,用于第二确定步骤,在上述当前数组与上述历史数组相同的情况下,或者在至少将上述当前数组中的目标传感器数据发送至上述第二处理器之后,确定上一轮询时刻与当前时刻之间的时间间隔是否达到轮询周期;循环单元,用于循环步骤,在上述时间间隔达到上述轮询周期的情况下,依次执行上述获取步骤、上述第一确定步骤、第三发送步骤、替换步骤和第二确定步骤预定次数,或者依次执行上述获取步骤、第一确定步骤和第二确定步骤上述预定次数。通过上述实施例,实时操作系统可以周期性地自动执行获取当前数组、将当前数组与历史数组比较、根据比较结果发送或者不发送传感器数据给第二处理器的过程,从而进一步地提高芯片对传感器的访问效率,进一步地解决芯片访问传感器的效率较低的问题。
具体地,上述上一轮询时刻可以为第一处理器上一次获取各传感器数据的开始时刻,也可以为第一处理器上一次获取各传感器数据的结束时刻,本领域技术人员可以根据实际情况灵活设置该时刻的具体含义,并对应设置上述轮询周期的时长。
根据本申请的又一种可选方案,上述装置还包括:第一读取单元,用于在获取服务器中各传感器的传感器数据,得到当前数组之前,从上述服务器的存储器中读取数组模板信息,上述数组模板信息包括传感器数组模板和模板定义信息,上述传感器数组模板包括多个元素,上述模板定义信息表征上述元素与上述传感器的对应关系;初始化单元,用于初始化上述传感器数组模板中各上述元素的数值,得到初始数组,上述初始数组的得到时刻早于或者等于上述历史时刻。本实施例中,将传感器数组模板以及模板中元素与传感器的对应关系以模板定义信息的形式存储在服务器的存储器中,第一处理器在开始获取传感器数据生成当前数组前,先从存储器中读取该模板定义信息,保证了可以按照元素与传感器的对应关系,生成第二处理器可识别的当前数组。
具体地,上述元素与上述传感器的对应关系具体包括上述元素与传感器的类型以及传感器的测试位置的对应关系。
一种示例性实施例中,上述传感器数组模板的代码内容如下:
{
“temp_sensors”:{
“MB_temp”,
“BackPlane_temp”,
“Inter_temp”,
}
“voltage_sensors”:{
“psu0_volt”,
“psu1_volt”,
“sys_volt”,
}
“electric_sensors”:{
“psu0_elec”,
“psu1_elec”,
“sys_elec”,
}
“fan_sensors”:{
“fan0_speed”,
“fan1_speed”,
“fan2_speed”,
}
}
本申请中,上述初始化单元可以包括:第一设置模块,用于将上述传感器数组模板中各上述元素的数值设为0,得到上述初始数组。上述初始化单元还可以包括:第二设置模块,用于将上述传感器数组模板中各上述元素的数值设为初始值,得到上述初始数组,上述初始值位于各传感器的正常数值范围内。上述初始数组可以作为当前数组的历史数组。
另外,上述服务器的存储器可以为Cache/寄存器等SRAM、DRAM、PROM/EPROM/EEPROM等ROM以及Flash Memory、U盘、SSD等非易失性RAM。
一种具体的实施例中,本申请的上述服务器的存储器为EEPROM,上述数组模板信息以JSON格式存储在上述EEPROM中。EEPROM掉电后数据不丢失,具有较高的可靠性,采用轻量级的JSON数据交换格式,易于相关人员的阅读和编写,同时便于第一处理器和第二处理器进行读取解析,可以有效提升网络传输效率。
为了进一步地提升芯片对传感器的轮询效率,在其他实施例中,上述第一处理器与各上述传感器通过串行总线通信,上述获取单元包括:第一读取模块,用于从上述服务器的存储器中读取轮询配置参数;询问模块,用于根据上述轮询配置参数,依次询问上述串行总线上的各上述传感器,以得到各上述传感器数据;填入模块,用于根据上述模板定义信息,将各上述传感器数据填入上述传感器数组模板中,得到上述当前数组。第一处理器通过不断轮询串行总线上的传感器,来获取传感器数据,再根据预定义的模板定义信息,得到当前数组,由于第一处理器运行实时操作系统,并且其上运行的业务比较少,所以轮询起来要比第二处理器高效,进一步地实现了对传感器数据的快速响应和处理,进一步地提升了芯片访问传感器的效率。
上述的串行总线可以为SPI(Serial Peripheral Interface,串行外设接口)总线,也可以为IIC(Inter-Integrated Circuits,集成电路之间的连接)总线,还可以为UART(Universal Asynchronous receiver/Transmitter,通用异步收/发)总线,本领域技术人员可以根据实际情况灵活选择串行总线的类型。由于大部分传感器都是基于IIC协议,故本申请中上述串行总线为IIC总线,所有挂在IIC总线上的传感器都是平等的,都作为Slaver(从机),第一处理器作为Master(主机),只能由第一处理器读或者写传感器的数据。
在一个示例性实施例中,上述获取单元包括:运行模块,用于在接收到上述第二处理器发送的唤醒指令的情况下,运行上述实时操作系统,以获取上述服务器中的各上述传感器数据。第一处理器在接收到唤醒指令的情况下,才开始运行实时操作系统,来获取传感器数据以及确定是否要发送给第二处理器,这样可以进一步地保证芯片整体的功耗较低。
在实际的应用过程中,上述第一处理器可以通过任意可行的方式与上述第二处理器进行核间通信,如采用硬件中断方式进行通信、采用任务中断方式进行通信或者采用共享内存方式进行通信。本申请示例性的示出了第一处理器通过共享内存方式与第二处理器进行通信的方式,具体地,上述第一发送单元包括:写入模块,用于将上述当前数组中至少部分的上述传感器数据写入共享内存区域中,使得上述第二处理器从上述共享内存区域中读取上述当前数组中至少部分的上述传感器数据,其中,上述共享内存区域为上述第一处理器和上述第二处理器均可以访问的上述芯片的内存区域。本实施例通过共享内存进行第一处理器和第二处理器之间的通信,保证了通信的便捷性较强,提升了第一处理器与第二处理器之间的通信效率。
比如,芯片的内存中划出1M的空间作为上述第一处理器和上述第二处理器的共享内存,采用Mailbox(邮箱通道)进行指令传递,且指令传递的方向是单向的,只能由第一处理器写指令和写共享内存,第二处理器读指令和读共享内存。
在本实施例中还提供了一种运行于第二处理器的服务器的传感器访问装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图2所示,第一处理器401和上述第二处理器402位于同一个芯片上,该芯片可以为BMC芯片,也可以为其他芯片,本实施例对此不作具体限制。上述第一处理器401运行实时操作系统,上述第二处理器402运行非实时操作系统,图6是根据本申请实施例的服务器的传感器访问装置的结构框图,如图6所示,该装置包括:
接收单元30,用于接收上述第一处理器发送的当前数组中至少部分的传感器数据,上述当前数组为上述第一处理器获取服务器中各传感器的上述传感器数据得到的;
具体地,上述传感器数据为上述传感器的工作状态,也就是传感器读数。各上述传感器包括但不限于温度传感器、湿度传感器、电压传感器、电流传感器以及转速传感器等。上述当前数组中各个传感器按照预定顺序排列,其具体格式可以为一维数组,也可以为二维数组,还可以三维数组等其他数组格式。
控制单元40,用于根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态。
具体地,接收到的传感器数据可以是上述当前数组,即当前数组中全部的传感器数据,也可以是当前数组中的部分传感器数据,第二处理器根据接收到的传感器数据,确定服务器的控制参数,并以该控制参数控制服务器运行。
通过上述实施例,芯片中的第二处理器通过接收单元接收当前数组中至少部分的传感器数据,这些数据是第一处理器获取的服务器中的传感器数据;第二处理器通过控制单元根据接收到的传感器数据进行服务器的运行控制,其中,第一处理器用于实时操作系统,第二处理器用于运行非实时操作系统,也就是说,在本申请中,通过实时操作系统获取传感器数据并将传感器数据发送给非实时操作系统,实时操作系统上可以保证对传感器数据进行快速响应并处理,保证了芯片访问传感器的效率较高。并且,通过运行非实时操作系统的第二处理器来处理除了获取传感器数据之外的其他业务,解放了第二处理器上的资源,使得第二处理器可以较为快速地响应其他业务。
进一步地,上述当前数组为矩阵数据,上述矩阵数据的行或列中之一表征上述传感器的类型,上述矩阵数据的行或列中另一个表征上述传感器的测试位置。本申请示例性的示出了一种4行3列的上述矩阵数据,如下所示,其中,矩阵数据的列为传感器类型,如温度传感器、电压传感器、电流传感器和转速传感器,矩阵数据的行为测试位置,在传感器为温度传感器的情况下,一行的数据分别为主板温度、背板温度、机箱内温度。第二处理器在接收到所有的温度数据之后,根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态,可以包括:将所有的温度数据进行加权求平均值,得到温度平均值;根据温度平均值自动调节风扇转速,达到降温的目的。其中,FAN为风扇,PSU全称为PowerSupply Unit,为电源供应单元。
根据本申请的又一种可选方案,上述接收单元包括:第一接收模块,用于接收上述第一处理器发送的上述当前数组,上述装置还包括:第二读取单元,用于在根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态之前,从上述服务器的存储器中读取数组模板信息,上述数组模板信息包括传感器数组模板和模板定义信息,上述传感器数组模板包括多个元素,上述模板定义信息表征上述元素与上述传感器的对应关系;解析单元,用于根据上述模板定义信息,解析上述当前数组的数据,确定各个上述传感器对应的上述传感器数据。本实施例中,将传感器数组模板以及模板中元素与传感器的对应关系以模板定义信息的形式存储在服务器的存储器中,第二处理器收到当前数组时根据读取的模板定义信息来确定当前数组中元素与传感器的对应关系,可以较为准确的识别当前数组的传感器数据信息。
另外,上述服务器的存储器可以为Cache/寄存器等SRAM、DRAM、PROM/EPROM/EEPROM等ROM以及Flash Memory、U盘、SSD等非易失性RAM。
一种具体的实施例中,本申请的上述服务器的存储器为EEPROM,上述数组模板信息以JSON格式存储在上述EEPROM中。EEPROM掉电后数据不丢失,具有较高的可靠性,采用轻量级的JSON数据交换格式,易于相关人员的阅读和编写,同时便于第一处理器和第二处理器进行读取解析,可以有效提升网络传输效率。
在一个示例性实施例中,上述控制单元包括:分类模块,用于按照上述传感器的类型对各上述传感器数据进行分类;处理模块,用于对分类后的上述传感器数据进行预定处理,得到各类型的上述传感器的处理后数据,上述预定处理包括加权平均处理;第二确定模块,用于根据上述处理后数据和标准数据范围,确定上述服务器的待调整对象和调整参数;调整模块,用于根据上述调整参数,对上述待调整对象进行调整,使得调整后对应的上述处理后数据位于上述标准数据范围内。从而进一步实现了根据传感器数据实时调控服务器的部件运行参数的目的。
在另一些示例性实施例中,上述装置还包括:运行单元,用于在接收上述第一处理器发送的当前数组中至少部分的传感器数据之前,在上电的情况下,运行上述非实时操作系统;生成单元,用于生成唤醒指令并发送上述唤醒指令至上述第一处理器,使得上述第一处理器运行上述实时操作系统,以获取上述服务器中的各上述传感器数据。由于第二处理器的非实时操作系统是用来运行除获取传感器数据之外的其他业务的,因此在上电的情况下,需要先运行起来,来保证芯片最基本的业务程序运行,再发送唤醒指令给第一处理器,使得实时操作系统运行起来,执行传感器数据的获取业务。并且,通过唤醒指令方式来唤醒第一处理器,使得第一处理器其他时间处于休眠状态,可以进一步地保证芯片整体的功耗较低。
具体地,上述非实时操作系统包括Linux系统,上述运行单元包括:运行模块,用于运行上述芯片内部的ROM固化程序,以加载引导程序;执行模块,用于执行上述引导程序,以加载上述Linux系统的系统内核。通过加载引导程序并执行,实现了Linux系统内核的加载。
其中,芯片内部ROM固化程序可以为BOOTROM,是引导程序的引导代码,BOOTROM读硬件的启动信息,从指定的启动介质中读取引导代码。上述引导程序为UBOOT,在加载系统内核之前,完成硬件初始化和内存映射,为后续内核的引导提供一个良好的环境。
根据本申请的再一种示例性实施例,上述当前数组是上述第一处理器确定上述当前数组与历史数组不同的情况下发送的,上述当前数组中至少部分的上述传感器数据至少包括目标传感器数据,上述目标传感器数据为与上述历史数组不相同的上述传感器数据,上述历史数组为历史时刻得到的各上述传感器的传感器数据,上述历史时刻早于上述当前数组的得到时刻,上述当前数组与上述历史数组中对应位置的传感器数据为同一个上述传感器的传感器数据。由于服务器中有些传感器的读数比较稳定,在一段时间内都不会发生改变,本申请的第一处理器在得到当前数组后先确定当前数组与历史数组是否相同,只有两者不相同时,说明传感器数据发生了变化,此时才至少将不相同的传感器数据发送给第二处理器,这样进一步地避免了频繁将未发生变化的传感器数据发送给第二处理器,大量占用第二处理器资源的问题,进一步地实现了对第二处理器的资源解放。
需要说明的是,为了保证第二处理器可以较为准确地根据目标传感器数据对服务器进行控制,上述历史时刻为早于上述当前数据的得到时刻、且与该得到时刻间隔最短的时刻,也就是说历史数组为历史的传感器数据数组中,与当前数组在时间上间隔最近的数组。
另外,上述当前数组与上述历史数组是否相同是第一处理器通过依次比对上述当前数组与上述历史数组中对应位置的上述传感器数据,确定对应位置的上述传感器数据是否相同确定的。
并且,在上述当前数组与上述历史数组不相同的情况下,上述第一处理器会将上述当前数组替换上述历史数组,得到新的上述历史数组,保证了历史数组的实时性较强,进一步地保证了后续将新的当前数组与历史数组进行比较得到的比较结果较为准确。
当然,除了接收上述的将上述目标传感器数据,以及接收上述当前数组之外,上述接收单元还可以包括:第二接收模块,用于接收上述目标传感器数据以及关联数据,其中,上述关联数据为与上述目标传感器数据具有相关关系的传感器数据,上述相关关系为预存至上述第一处理器中的关系,上述相关关系可以为根据多次实验得到的关系。这样在进一步地减少传感器数据对第二处理器的资源占用之外,还可以进一步地保证第二处理器根据这些传感器数据对服务器做出的控制较为准确。
具体地,上述当前数组为上述第一处理器根据上述模板定义信息,将各上述传感器数据填入上述传感器数组模板中得到的,上述传感器数据为上述第一处理器根据轮询配置参数,依次询问上述串行总线上的各上述传感器得到的,上述轮询配置参数为上述第一处理器从上述服务器的存储器中读取的。由于第一处理器运行实时操作系统,并且其上运行的业务比较少,所以轮询起来要比第二处理器高效,进一步地实现了对传感器数据的快速响应和处理,进一步地提升了芯片访问传感器的效率。
上述的串行总线可以为SPI总线,也可以为IIC总线,还可以为UART总线,本领域技术人员可以根据实际情况灵活选择串行总线的类型。由于大部分传感器都是基于IIC协议,故本申请中上述串行总线为IIC总线,所有挂在IIC总线上的传感器都是平等的,都作为Slaver,第一处理器作为Master,只能由第一处理器读或者写传感器的数据。
在实际的应用过程中,上述第一处理器可以通过任意可行的方式与上述第二处理器进行核间通信,如采用硬件中断方式进行通信、采用任务中断方式进行通信或者采用共享内存方式进行通信。本申请示例性的示出了第一处理器通过共享内存方式与第二处理器进行通信的方式,具体地,上述接收单元包括:第二读取模块,用于从共享内存区域中读取上述当前数组中至少部分的上述传感器数据,其中,上述共享内存区域为上述第一处理器和上述第二处理器均可以访问的上述芯片的内存区域。本实施例通过共享内存进行第一处理器和第二处理器之间的通信,保证了通信的便捷性较强,提升了第一处理器与第二处理器之间的通信效率。
比如,芯片的内存中划出1M的空间作为上述第一处理器和上述第二处理器的共享内存,采用Mailbox(邮箱通道)进行指令传递,且指令传递的方向是单向的,只能由第一处理器写指令和写共享内存,第二处理器读指令和读共享内存。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
根据本申请的另一方面,还提供了一种如图2所示的BMC400,包括:
第一处理器401,用于运行实时操作系统;
第二处理器402,与上述第一处理器401通信连接,上述第二处理器402用于运行非实时操作系统;
存储器、存储在上述存储器上并可在上述第一处理器401上运行的第一计算机程序以及存储在上述存储器上并可在上述第二处理器402上运行的第二计算机程序,其中,
上述第一处理器401执行上述第一计算机程序时用于实现如下步骤:
获取服务器中各传感器的传感器数据,得到当前数组;
将上述当前数组中至少部分的上述传感器数据发送至上述第二处理器;
上述第二处理器402执行上述第二计算机程序时用于实现如下步骤:
接收上述第一处理器发送的当前数组中至少部分的传感器数据,上述当前数组为上述第一处理器获取服务器中各传感器的上述传感器数据得到的;
根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态。
示例性地一种实施例中,上述第一处理器执行上述第一计算机程序时还用于实现如下步骤:
确定上述当前数组与历史数组是否相同,上述历史数组为历史时刻得到的各上述传感器的传感器数据,上述历史时刻早于上述当前数组的得到时刻,上述当前数组与上述历史数组中对应位置的传感器数据为同一个上述传感器的传感器数据;
在上述当前数组与上述历史数组不相同的情况下,至少将上述当前数组中的目标传感器数据发送至上述第二处理器,上述目标传感器数据为与上述历史数组不相同的上述传感器数据。
其他实施例中,上述第一处理器执行上述第一计算机程序时还用于实现如下步骤:
在获取服务器中各传感器的传感器数据,得到当前数组之前,从上述服务器的存储器中读取数组模板信息,上述数组模板信息包括传感器数组模板和模板定义信息,上述传感器数组模板包括多个元素,上述模板定义信息表征上述元素与上述传感器的对应关系;
初始化上述传感器数组模板中各上述元素的数值,得到初始数组,上述初始数组的得到时刻早于或者等于上述历史时刻,
上述第一处理器执行上述第一计算机程序时还用于实现如下步骤:
在根据上述当前数组中至少部分的上述传感器数据,控制上述服务器的运行状态之前,从上述服务器的存储器中读取数组模板信息,上述数组模板信息包括传感器数组模板和模板定义信息,上述传感器数组模板包括多个元素,上述模板定义信息表征上述元素与上述传感器的对应关系;
根据上述模板定义信息,解析上述当前数组的数据,确定各个上述传感器对应的上述传感器数据。
具体地,如图2所示,第一处理器401采用共享内存+Mailbox方式实现将传感器的矩阵数据上报至与第二处理器402。第一处理器401作为IIC串行总线的master,轮询获取IIC总线上的传感器403的读数,经过读数对比确定读数有变化后,通过核间通信上报给第二处理器402。服务器上的传感器一般有温度传感器、电流传感器、电压传感器和转速传感器,这些传感器403都在服务器主板上,传感器403作为IIC串行总线的slave,只能被IIC串行总线的master读或者写。
本申请中,上述非实时操作系统为Linux。本申请在第二处理器上运行Linux系统,在第一处理器上运行RTOS,其中Linux系统启动后运行最基本的BMC业务程序。RTOS运行传感器数据的轮询业务。图7示出了BMC的双核双系统的启动流程,如图7所示,包括如下步骤:
步骤S1:上电唤醒第二处理器;
步骤S2:第二处理器运行BOOTROM中的指定程序;
步骤S3:SPL(二级程序加载器)阶段第二处理器首先会唤醒第一处理器,让第一处理器开始执行RTOS,接着第二处理器去特定地址执行UBOOT部分的程序,使其运行起来;
步骤S4:第二处理器中的UBOOT阶段会加载Linux内核,并启动BMC业务程序;
步骤S5:第一处理器中的RTOS系统启动后会执行服务器的传感器访问方法。
又一种示例性实施例中,图8示例性的示出了第一处理器运行服务器的传感器访问方法的流程图,如图8所示,包括如下步骤:
步骤S11:RTOS从EEPROM中读取轮询配置参数;
步骤S12:初始化传感器矩阵,生成矩阵old,矩阵old的作用是通过核间通信发送给第二处理器的Linux系统;
步骤S13:RTOS系统按照轮询配置参数,依次访问IIC总线上的传感器,获取其读数;
步骤S14,轮询完所有传感器后,生成矩阵new;
步骤S15,对比矩阵old和矩阵new里面的数据;
步骤S16,判断矩阵old和矩阵new是否完全相同,如果完全相同,进行步骤S19,如果有至少1个数据不同,进行步骤S17;
步骤S17,将矩阵new数据更新到矩阵old;
步骤S18,RTOS系统通过核间通信将矩阵old发送给Linux系统;
步骤S19,等待轮询周期,进入下一次轮询。
传感器的矩阵数据的上报通过共享内存+Mailbox实现,BMC内存中划出1M的空间作为RTOS系统和Linux系统的共享内存,采用Mailbox进行指令传递,这里注意指令和数据是单向的,即只能由RTOS系统写指令和写共享内存,Linux系统读指令和读共享内存。
传感器矩阵数据上报给Linux后,由Linux进行解析,所以为了Linux和RTOS可以同步传感器矩阵数据模板,将其模板以JSON格式存放到EEPROM中,RTOS和Linux系统都可以访问EEPROM来获取传感器矩阵数据模板,RTOS根据数据模板生成传感器矩阵数据,Linux系统根据数据模板解析传感器矩阵数据,解析矩阵数据完成后,Linux系统会进行后续相应处理。
本申请使用RTOS进行传感器轮询访问比Linux系统进行传感器轮询访问要快;RTOS生成的传感器矩阵数据只有在发生变化的条件下才会上报给Linux系统,大大减少了Linux系统轮询访问传感器的时间。
根据本申请的又一方面,还提供了一种服务器,包括多个传感器以及任一种上述的BMC。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (25)
1.一种服务器的传感器访问方法,其特征在于,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述方法应用于所述第一处理器,所述方法包括:
获取步骤,获取服务器中各传感器的传感器数据,得到当前数组;
第一发送步骤,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,使得所述第二处理器根据所述当前数组中至少部分的所述传感器数据控制所述服务器的运行状态。
2.根据权利要求1所述的方法,其特征在于,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,包括:
第一确定步骤,确定所述当前数组与历史数组是否相同,所述历史数组为历史时刻得到的各所述传感器的传感器数据,所述历史时刻早于所述当前数组的得到时刻,所述当前数组与所述历史数组中对应位置的传感器数据为同一个所述传感器的传感器数据;
第二发送步骤,在所述当前数组与所述历史数组不相同的情况下,至少将所述当前数组中的目标传感器数据发送至所述第二处理器,所述目标传感器数据为与所述历史数组不相同的所述传感器数据。
3.根据权利要求2所述的方法,其特征在于,确定所述当前数组与历史数组是否相同,包括:
依次比对所述当前数组与所述历史数组中对应位置的所述传感器数据,确定对应位置的所述传感器数据是否相同;
在所有对应位置的所述传感器数据均相同的情况下,确定所述当前数组以及所述历史数组相同;
在至少一个对应位置的所述传感器数据不相同的情况下,确定所述当前数组以及所述历史数组不相同。
4.根据权利要求2所述的方法,其特征在于,至少将所述当前数组中的目标传感器数据发送至所述第二处理器,包括:
第三发送步骤,将所述当前数组或者所述目标传感器数据发送至所述第二处理器;
替换步骤,采用所述当前数组替换所述历史数组,得到新的所述历史数组。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
第二确定步骤,在所述当前数组与所述历史数组相同的情况下,或者在至少将所述当前数组中的目标传感器数据发送至所述第二处理器之后,确定上一轮询时刻与当前时刻之间的时间间隔是否达到轮询周期;
循环步骤,在所述时间间隔达到所述轮询周期的情况下,依次执行所述获取步骤、所述第一确定步骤、第三发送步骤、替换步骤和第二确定步骤预定次数,或者依次执行所述获取步骤、第一确定步骤和第二确定步骤所述预定次数。
6.根据权利要求2所述的方法,其特征在于,在获取服务器中各传感器的传感器数据,得到当前数组之前,所述方法还包括:
从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;
初始化所述传感器数组模板中各所述元素的数值,得到初始数组,所述初始数组的得到时刻早于或者等于所述历史时刻。
7.根据权利要求6所述的方法,其特征在于,所述第一处理器与各所述传感器通过串行总线通信,获取服务器中各传感器的传感器数据,得到当前数组,包括:
从所述服务器的存储器中读取轮询配置参数;
根据所述轮询配置参数,依次询问所述串行总线上的各所述传感器,以得到各所述传感器数据;
根据所述模板定义信息,将各所述传感器数据填入所述传感器数组模板中,得到所述当前数组。
8.根据权利要求6所述的方法,其特征在于,所述服务器的存储器为EEPROM,所述数组模板信息以JSON格式存储在所述EEPROM中。
9.根据权利要求1至8中任一项所述的方法,其特征在于,获取服务器中各传感器的传感器数据,包括:
在接收到所述第二处理器发送的唤醒指令的情况下,运行所述实时操作系统,以获取所述服务器中的各所述传感器数据。
10.根据权利要求1至8中任一项所述的方法,其特征在于,所述当前数组为矩阵数据,所述矩阵数据的行或列中之一表征所述传感器的类型,所述矩阵数据的行或列中另一个表征所述传感器的测试位置。
11.根据权利要求1至8中任一项所述的方法,其特征在于,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,包括:
将所述当前数组中至少部分的所述传感器数据写入共享内存区域中,使得所述第二处理器从所述共享内存区域中读取所述当前数组中至少部分的所述传感器数据,其中,所述共享内存区域为所述第一处理器和所述第二处理器均可以访问的所述芯片的内存区域。
12.一种服务器的传感器访问方法,其特征在于,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述方法应用于所述第二处理器,所述方法包括:
接收所述第一处理器发送的当前数组中至少部分的传感器数据,所述当前数组为所述第一处理器获取服务器中各传感器的所述传感器数据得到的;
根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态。
13.根据权利要求12所述的方法,其特征在于,
接收所述第一处理器发送的当前数组中至少部分的传感器数据,包括:接收所述第一处理器发送的所述当前数组,
在根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态之前,所述方法还包括:
从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;
根据所述模板定义信息,解析所述当前数组的数据,确定各个所述传感器对应的所述传感器数据。
14.根据权利要求13所述的方法,其特征在于,根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态,包括:
按照所述传感器的类型对各所述传感器数据进行分类;
对分类后的所述传感器数据进行预定处理,得到各类型的所述传感器的处理后数据,所述预定处理包括加权平均处理;
根据所述处理后数据和标准数据范围,确定所述服务器的待调整对象和调整参数;
根据所述调整参数,对所述待调整对象进行调整,使得调整后对应的所述处理后数据位于所述标准数据范围内。
15.根据权利要求12所述的方法,其特征在于,在接收所述第一处理器发送的当前数组中至少部分的传感器数据之前,所述方法还包括:
在上电的情况下,运行所述非实时操作系统;
生成唤醒指令并发送所述唤醒指令至所述第一处理器,使得所述第一处理器运行所述实时操作系统,以获取所述服务器中的各所述传感器数据。
16.根据权利要求15所述的方法,其特征在于,所述非实时操作系统包括Linux系统,运行所述非实时操作系统,包括:
运行所述芯片内部的ROM固化程序,以加载引导程序;
执行所述引导程序,以加载所述Linux系统的系统内核。
17.根据权利要求12至16中任一项所述的方法,其特征在于,所述当前数组是所述第一处理器确定所述当前数组与历史数组不同的情况下发送的,所述当前数组中至少部分的所述传感器数据至少包括目标传感器数据,所述目标传感器数据为与所述历史数组不相同的所述传感器数据,所述历史数组为历史时刻得到的各所述传感器的传感器数据,所述历史时刻早于所述当前数组的得到时刻,所述当前数组与所述历史数组中对应位置的传感器数据为同一个所述传感器的传感器数据。
18.根据权利要求12至16中任一项所述的方法,其特征在于,接收所述第一处理器发送的当前数组中至少部分的传感器数据,包括:
从共享内存区域中读取所述当前数组中至少部分的所述传感器数据,其中,所述共享内存区域为所述第一处理器和所述第二处理器均可以访问的所述芯片的内存区域。
19.一种服务器的传感器访问装置,其特征在于,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述装置应用于所述第一处理器,所述装置包括:
获取单元,用于获取步骤,获取服务器中各传感器的传感器数据,得到当前数组;
发送单元,用于第一发送步骤,将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器,使得所述第二处理器根据所述当前数组中至少部分的所述传感器数据控制所述服务器的运行状态。
20.一种服务器的传感器访问装置,其特征在于,第一处理器和第二处理器位于同一个芯片上,所述第一处理器运行实时操作系统,所述第二处理器运行非实时操作系统,所述装置应用于所述第二处理器,所述装置包括:
接收单元,用于接收所述第一处理器发送的当前数组中至少部分的传感器数据,所述当前数组为所述第一处理器获取服务器中各传感器的所述传感器数据得到的;
控制单元,用于根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态。
21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至11任一项中所述的方法的步骤,或者实现权利要求12至18任一项中所述的方法的步骤。
22.一种基板管理控制器,其特征在于,包括:
第一处理器,用于运行实时操作系统;
第二处理器,与所述第一处理器通信连接,所述第二处理器用于运行非实时操作系统;
存储器、存储在所述存储器上并可在所述第一处理器上运行的第一计算机程序以及存储在所述存储器上并可在所述第二处理器上运行的第二计算机程序,其中,
所述第一处理器执行所述第一计算机程序时用于实现如下步骤:
获取服务器中各传感器的传感器数据,得到当前数组;
将所述当前数组中至少部分的所述传感器数据发送至所述第二处理器;
所述第二处理器执行所述第二计算机程序时用于实现如下步骤:
接收所述第一处理器发送的当前数组中至少部分的传感器数据,所述当前数组为所述第一处理器获取服务器中各传感器的所述传感器数据得到的;
根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态。
23.根据权利要求22所述的基板管理控制器,其特征在于,所述第一处理器执行所述第一计算机程序时还用于实现如下步骤:
确定所述当前数组与历史数组是否相同,所述历史数组为历史时刻得到的各所述传感器的传感器数据,所述历史时刻早于所述当前数组的得到时刻,所述当前数组与所述历史数组中对应位置的传感器数据为同一个所述传感器的传感器数据;
在所述当前数组与所述历史数组不相同的情况下,至少将所述当前数组中的目标传感器数据发送至所述第二处理器,所述目标传感器数据为与所述历史数组不相同的所述传感器数据。
24.根据权利要求23所述的基板管理控制器,其特征在于,
所述第一处理器执行所述第一计算机程序时还用于实现如下步骤:
在获取服务器中各传感器的传感器数据,得到当前数组之前,从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;
初始化所述传感器数组模板中各所述元素的数值,得到初始数组,所述初始数组的得到时刻早于或者等于所述历史时刻,
所述第一处理器执行所述第一计算机程序时还用于实现如下步骤:
在根据所述当前数组中至少部分的所述传感器数据,控制所述服务器的运行状态之前,从所述服务器的存储器中读取数组模板信息,所述数组模板信息包括传感器数组模板和模板定义信息,所述传感器数组模板包括多个元素,所述模板定义信息表征所述元素与所述传感器的对应关系;
根据所述模板定义信息,解析所述当前数组的数据,确定各个所述传感器对应的所述传感器数据。
25.一种服务器,其特征在于,包括:
多个传感器;
权利要求22至24中任一项所述的基板管理控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310802821.6A CN116521378B (zh) | 2023-07-03 | 2023-07-03 | 服务器的传感器访问方法、装置和基板管理控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310802821.6A CN116521378B (zh) | 2023-07-03 | 2023-07-03 | 服务器的传感器访问方法、装置和基板管理控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116521378A true CN116521378A (zh) | 2023-08-01 |
CN116521378B CN116521378B (zh) | 2023-09-19 |
Family
ID=87390682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310802821.6A Active CN116521378B (zh) | 2023-07-03 | 2023-07-03 | 服务器的传感器访问方法、装置和基板管理控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521378B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555760A (zh) * | 2023-12-29 | 2024-02-13 | 苏州元脑智能科技有限公司 | 服务器监测方法及装置、基板控制器及嵌入式系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338695A (zh) * | 2018-12-19 | 2020-06-26 | 中科寒武纪科技股份有限公司 | 基于流水线技术的数据处理方法及相关产品 |
CN115616984A (zh) * | 2022-10-17 | 2023-01-17 | 深圳数马电子技术有限公司 | 基于多核处理器的任务处理方法、数控机和存储介质 |
CN115658408A (zh) * | 2022-11-10 | 2023-01-31 | 苏州浪潮智能科技有限公司 | 传感器状态检测方法、装置及可读存储介质 |
CN116339836A (zh) * | 2023-02-10 | 2023-06-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种资源访问方法、设备、可读存储介质及bmc芯片 |
WO2023115999A1 (zh) * | 2021-12-24 | 2023-06-29 | 浪潮(北京)电子信息产业有限公司 | 设备状态监控方法、装置、设备及计算机可读存储介质 |
-
2023
- 2023-07-03 CN CN202310802821.6A patent/CN116521378B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338695A (zh) * | 2018-12-19 | 2020-06-26 | 中科寒武纪科技股份有限公司 | 基于流水线技术的数据处理方法及相关产品 |
WO2023115999A1 (zh) * | 2021-12-24 | 2023-06-29 | 浪潮(北京)电子信息产业有限公司 | 设备状态监控方法、装置、设备及计算机可读存储介质 |
CN115616984A (zh) * | 2022-10-17 | 2023-01-17 | 深圳数马电子技术有限公司 | 基于多核处理器的任务处理方法、数控机和存储介质 |
CN115658408A (zh) * | 2022-11-10 | 2023-01-31 | 苏州浪潮智能科技有限公司 | 传感器状态检测方法、装置及可读存储介质 |
CN116339836A (zh) * | 2023-02-10 | 2023-06-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种资源访问方法、设备、可读存储介质及bmc芯片 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555760A (zh) * | 2023-12-29 | 2024-02-13 | 苏州元脑智能科技有限公司 | 服务器监测方法及装置、基板控制器及嵌入式系统 |
CN117555760B (zh) * | 2023-12-29 | 2024-04-12 | 苏州元脑智能科技有限公司 | 服务器监测方法及装置、基板控制器及嵌入式系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116521378B (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7293165B1 (en) | BMC-hosted boot ROM interface | |
US7197657B1 (en) | BMC-hosted real-time clock and non-volatile RAM replacement | |
US7398401B2 (en) | Method and apparatus for communicating information from an operating system based environment of a server blade to the chassis management module | |
US8082470B2 (en) | Share resources and increase reliability in a server environment | |
US8600576B2 (en) | Scheduling cool air jobs in a data center | |
CN116521378B (zh) | 服务器的传感器访问方法、装置和基板管理控制器 | |
CN111966189B (zh) | 一种灵活配置的多计算节点服务器主板结构和程序 | |
CN116541227B (zh) | 故障诊断方法、装置、存储介质、电子装置及bmc芯片 | |
CN116719700B (zh) | 服务器主机系统的硬件分区的监测方法及装置 | |
CN116244229B (zh) | 硬件控制器的访问方法、装置、存储介质和电子设备 | |
US11861357B2 (en) | Selecting and sending subset of components to computing device prior to operating system install | |
CN116243996A (zh) | 业务的运行切换方法、装置、存储介质及电子装置 | |
US7996696B1 (en) | Updating kernel affinity for applications executing in a multiprocessor system | |
CN111949320B (zh) | 提供系统数据的方法、系统及服务器 | |
CN116830082A (zh) | 嵌入式系统的启动控制方法和装置、存储介质和电子设备 | |
CN115454512A (zh) | 一种芯片驱动加载配置方法、装置、设备和存储介质 | |
CN114911332B (zh) | 服务器风扇调控方法、系统、电子设备及存储介质 | |
CN113900718B (zh) | 一种bmc与bios资产信息的解耦方法、系统及装置 | |
CN113010303A (zh) | 一种处理器间的数据交互方法、装置以及服务器 | |
CN111966617A (zh) | 一种传感信息通讯方法、中央处理器和基板管理控制器 | |
CN117687703B (zh) | 服务器的启动方法、装置、系统、存储介质和电子设备 | |
CN117555760B (zh) | 服务器监测方法及装置、基板控制器及嵌入式系统 | |
CN113918273B (zh) | 一种容器组的创建方法和装置 | |
CN117453377B (zh) | 模型调度方法、终端设备以及服务器 | |
CN115454744A (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 |