Accessor无法修改EEPROM写保护状态问题分析
更新时间: 2026/05/27
在Gitcode上查看源码问题背景
- 单板类型:自研板;
- 软件版本:openUBMC 25.12;
- 涉及功能:EEPROM写保护属性值修改,SMC命令字;
- 触发条件:Accessor无法修改EEPROM写保护状态;
- 业务表现:预期写入成功;实际写入失败;
问题复现步骤
- SMC命令字修改写保护状态;
- 通过csr文件配置的Accecssor修改写保护状态;
关键日志信息
app.log日志如下:
定位过程
- 尝试通过SMC命令字修改EEPROM的写保护状态,结果修改成功;
shell
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_ExpBoardSMC_0101 bmc.kepler.Chip.BitIO Write a{ss}uyuay 0 134239744 1 255 1 0- 使用Accessor修改EEPROM的写保护状态后查询,状态未变更;
shell
mdbctl setprop set Accessor_EXUWP_0101 bmc.kepler.Accessor Value 1- 使用了mdbctl setprop set命令,尝试先unset取消覆写,再用modify修改后查询value值仍然为0;
shell
mdbctl setprop modify Accessor_EXUWP_0101 bmc.kepler.Accessor Value 1- 怀疑Accessor_EXUWP_0101的CSR配置有问题,确认代码配置;从上树定位过程中可知,SMC的Offset为134239744,翻译成标准命令字为2 15 1 0,该命令字对应的是写寄存器,Accessor的Offset为134239488,对应的标准命令字为2 15 0 1,该命令字为读取寄存器;需要些寄存器的命令字配置了读寄存器的命令字导致写失败。
问题原因
Accessor配置的命令字不对,写寄存器配置成了读寄存器命令字。
解决方案
Accessor的Offset配置从134239488改为134239744,即从读寄存器状态改为写寄存器状态命令字即可。