openubmc 新增一个 IPMI Sensor
新增一个IPMI Sensor
一个常见的场景便是需要将硬件上的某一个器件的读值,通过IPMI协议中定义的门限传感器呈现给用户。在本章节中,我们将配置一个LM75温度器件,同时配置一个对应的IPMI门限传感器,并呈现至对外接口。
CSR配置
openUBMC采用一种软件描述性语言描述一个硬件的具体信息,这种描述性语言被称之为Component Self-description Record(CSR)。
关于CSR的具体介绍,请参考《硬件自描述文件(CSR)》
首先我们先获取CSR仓库:
cd /home/workspace
git clone https://gitcode.com/openUBMC/vpd.git
打开服务机型(vendor/Huawei/Server/Kunpeng/openUBMC)的root.sr
打开后可以发现一系列配置。首先我们需要在硬件拓扑链路中声明一个LM75器件。
在实际的硬件链路拓扑中,I2c_8总线下地址为0x90处有一个LM75温感芯片。
在CSR的ManagementTopology中找到对应的I2c_8的配置,如果没有I2c_8,请在ManagementTopology中粘贴下面的配置(可参考I2c_2的配置)。
"ManagementTopology": {
...
"I2c_8": {
"Chip": [
"Lm75_DemoSensor"
]
}
...
}
这样CSR中便完成了实际的硬件链路拓扑配置。
同时,在与ManagementTopology同级的objects下面定义Lm75器件的具体信息,和两个业务对象:
"Objects": {
...
"Lm75_DemoSensor": {
"OffsetWidth": 1,
"AddrWidth": 1,
"Address": 144
},
"Scanner_GetTemperature": {
"Chip": "#/Lm75_DemoSensor",
"Size": 1,
"Offset": 0,
"Mask": 255,
"Period": 1000
},
"ThresholdSensor_DemoSensor": {
"AssertMask": 29312,
"DeassertMask": 29312,
"ReadingMask": 6168,
"Linearization": 0,
"M": 100,
"RBExp": 224,
"UpperCritical": 48,
"UpperNoncritical": 46,
"PositiveHysteresis": 2,
"NegativeHysteresis": 2,
"OwnerId": 32,
"OwnerLun": 0,
"EntityId": "<=/Entity_DemoSensor.Id",
"EntityInstance": "<=/Entity_DemoSensor.Instance",
"Initialization": 127,
"Capabilities": 104,
"SensorType": 1,
"ReadingType": 1,
"SensorName": "Demo Temperature Sensor",
"Unit": 128,
"BaseUnit": 1,
"ModifierUnit": 0,
"Analog": 1,
"MaximumReading": 127,
"MinimumReading": 128,
"Reading": "<=/Scanner_GetTemperature.Value"
},
"Entity_DemoSensor":{
"Id": 99,
"Name": "Demo Temperature Sensor",
"PowerState": 1,
"Presence": 1,
"Instance": 96
},
...
}
此处我们定义了两个对象,一个是Lm75器件,一个是定期扫描任务Scanner,一个是IPMI门限传感器的软件对象。 我们通过引用语法将Scanner和Lm75器件关联起来;通过同步语法将Scanner的读值同步至ThresholdSensor的读值。
具体IPMI传感器的配置,请参考《IPMI Sensor & SEL》
组件构建
由于修改了vpd仓库,因此我们需要对vpd仓库进行重新构建。
为了和之前版本进行区分,我们需要将service.json中的version字段进行更新
bingo build --stage=stable
整包构建
找到vpd声明位置,将版本改至对应的构建版本,然后在manifest中再次进行整包构建
bingo build
整包测试
整包升级后,我们可以通过ipmitool进行传感器查询。
> ./ipmitool.exe -H ip -I lanplus -p 623 -U TestUser -P OpenUBMC@123 -C 17 sdr
> Demo Temperature | 28 degrees C | ok

浙公网安备 33010602011771号