读取fru显示Device not present问题分析
更新时间: 2026/05/26
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.06;
- 涉及功能:cli,fru,SMC;
- 预置条件:环境上配置了EXU板的CSR文件且可正常加载;
- 触发条件:使用cli命令读取EXU板的fru信息;
- 业务表现:预期下发cli命令后正常显示EXU板的FRU信息;实际下发命令后显示Device not present。
问题复现步骤
环境安装EXU板,且升级包的CSR文件也配置对应的EXU板;Eeprom地址为0xAE。ipmcget命令查询fru信息,命令如下:
text
ipmcget -d fru关键日志信息
命令返回如下图:
app.log日志截图如下:
定位过程
- 排查硬件链路是否有问题。修改配置文件,将StorageType配置的"TianChi"修改为"Eepromv2",则不会报错Device not present (Destination unavailable),证明硬件链路是通的;
text
"FruData_Expander": {
"FruId": 1,
"FruDev": "#/Eeprom_EXU",
"EepromWp": "#/Accessor_EXUWP.Value",
"BoardSerialNumber": "",
"StorageType": "Eepromv2"
},查询结果如下:
- 查看app.log日志,存在如下报错"bad argument #3 to 's_pack' (unsigned overflow)",溢出异常抛出,确认为软件侧代码问题;
- 查看FruData_Expander配置EepromWp数据来源为Accessor_EXUWP的Value,而Value具体的数值是通过扩展板SMC命令字读取,查看代码确认BMC侧和CPLD侧的SMC命令字是否一致;结果发现CPLD和BMC侧的SMC命令字一致,没有问题;
- 确认SMC对象"Smc_ExpBoardSMC"定义是否正确,结果发现对象"Smc_ExpBoardSMC"对象CSR文件中未定义;
问题原因
配置文件中未配置SMC命令字的对象"Smc_ExpBoardSMC",导致调取该命令字读取FRU信息时失败。
解决方案
Accessor_EXUWP对象所在的CSR文件中,增加Smc_ExpBoardSMC配置,重新出包升级后用cli命令读取EXU板的FRU信息,具体配置如下:
text
"Smc_ExpBoardSMC": {
"Address": 96,
"AddrWidth": 1,
"OffsetWidth": 1,
"WriteTmout": 0,
"ReadTmout": 0
}