chip对象按位反写问题咨询

之前已有一篇帖子咨询如何按mask反写chip对象的指定bit位:如何通过i2c写cpld寄存器 - 交流互助区 - openUBMC 论坛

社区在630也在CpldChip中增加了BitIO,但今天实测时似乎并未生效,是我哪里配置得不对吗?

1、sr配置

目的是修改Nmi.NmiInt的值:

已更新25.0930版本。

2、寄存器列表

3、问题

3.1 首先是代码中设置后并未按预期生效,0xC5的bit3并未被单独修改;

3.2 尝试通过bustcl修改Accessor_NmiInt的值,修改后,通过i2ctool查询寄存器的值,发现整个字节都被修改;

3.3 通过BitIO的方法直接修改,结果也不符合预期

busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/CpldChip/CpldChip_CpldRegister_0101 bmc.kepler.Chip.BitIO Write a{ss}uyuay 0 0xc5 1 8 1 1

image

busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/CpldChip/CpldChip_CpldRegister_0101 bmc.kepler.Chip.BitIO Write a{ss}uyuay 0 0xc5 1 8 1 8

image

可以打开hwproxy的debug级别日志,看看bmc这边写入的值,如果是BMC侧写入后cpld本身有其他地方会去修改这个值,那重新查询到的结果可能写入的值就被覆盖了,你打开debug级别日志后,framework.log日志搜索关键字CpldChip确认下,有的话,把Chip_CpldRegister删除,只保留CpldChip_CpldRegister就可以,之前那用Chip_CpldRegister的地方改为CpldChip_CpldRegister