CRPS电源适配问题分析
更新时间: 2026/06/02
在Gitcode上查看源码

问题背景

  • 单板类型:NA;
  • 软件版本:NA;
  • 涉及功能:电源适配,blockIO;
  • 触发条件:BMC通过I2C直连电源,协议使用PMBUS,按照电源适配指南进行电源CSR文件适配。
  • 业务表现:预期电源信息可查,设备树与CSR加载逻辑一致即CSR同时加载adapter下的PsuSlot.lua;实际电源信息可查但是设备树与CSR加载逻辑不一致即只正常加载了OnePower.lua且PsuSlot对象未在资源树中找到。

问题复现步骤

  1. 按照电源适配指南,完成相关CSR修改,目前在BMC上可以看到OnePower对象,并且可以通过EEPROM提供的blockIO命令读取到电源信息;

  2. PsuSlot对象未在资源树中找到;使用命令未看到PsuSlot对象,但从日志上看似乎已正常加载了该对象。命令如下:

shell
  busctl --user tree bmc.kepler.power_mgmtx
  1. 设备树与CSR加载逻辑不一致;预期设备树应根据 CSR 同时加载 adapter 下的 PsuSlot.lua,但实际只正常加载了 OnePower.lua,原因不太明确。

关键日志信息

app.log显示设备树与CSR加载逻辑不一致日志信息: 电源相关的CSR配置(拓展板14100513_EXU_0.sr):

定位过程

  1. PsuSlot对象是私有对象,不会体现在资源树上,因此该问题是非问题;
  2. 设备树与CSR加载逻辑不一致的问题需要确认power_mgmt设备树代码目录是怎么样的,是否加载了默认的PsuSlot;
  3. adapter目录如下,代码未修改; 结果发现只有OnePower加载的14100513_PSU_0目录下面的,PSUSLOT还是加载的通用的;
  4. 确认PsuSlot和OnePower是否都是配置在一个csr下面,如果不是应该建立一个PsuSlot对应的文件夹,文件夹名和PsuSlot所在的CSR同名,因为代码再查找执行程序的时候是按照该文件名进行的; 确认结果:PsuSlot对象是在拓展板14100513_EXU_0.sr里面定义的,OnePower是定义在电源板14100513_PSU_0.sr,正确的方法是psuslot的对象要新建一个目录14100513_EXU_0放PsuSlot,修改如下:
  5. 尝试验证功能正常;

问题原因

电源的PsuSlot和OnePower对象配置在了不同的CSR文件中,导致实体功能无法找到对应的lua文件实现具体的功能。

解决方案

该问题可有两种解决方案: 方案一:PsuSlot和OnePower对象配置在了不同的CSR文件的情况下建立一个PsuSlot对应的文件夹,文件夹名和PsuSlot; 方案二:将PsuSlot和OnePower对象配置再同一个CSR文件即可;