CPLD的寄存器读写

BMC模组与CPLD通过I2C_2总线连接,openUBMC是否有类似iBMC的i2cread/i2cwrite的命令进行CPLD寄存器的读写测试?

1 个赞

使用busybox命令报错
~ ~ # /opt/debug/busybox i2cdetect -l
i2cdetect: can’t open ‘/sys/class/i2c-dev’: No such file or directory
~ ~ #
~ ~ # ls /sys/class/i2c* -l
lrwxrwxrwx 1 root root 0 Jan 1 03:48 i2c → ../../devices/virtual/i2c/i2c
~ ~ #

可以使用busctl和mdbctl下的call
如:
mdbctl

Usage: call [object name] [interface name] [method name] [parameter list]

call I2c_11 bmc.kepler.Bus.BlockIO Read 0 144 2

busctl 对 /bmc/kepler/Chip/Smc/Smc_EnclSMC_010102 /bmc/kepler/Bus/I2c/I2c_6 等都有读写接口

mdbctl call的[parameter list]参数格式是按照资源树对象的method要求填吗?
试了一下报错了。
~ /tmp # mdbctl call I2c_5 bmc.kepler.Bus.BlockIO Read 0 0 2
kepler.hwproxy.ChipNotExistError: Unable to find chip in the topology link.

~ /tmp #

想要查看资源树对象也报错
~ /tmp # busctl introspect bmc.kepler.hwproxy /bmc/kepler/Bus/I2c/I2c_5
Failed to introspect object /bmc/kepler/Bus/I2c/I2c_5 of service bmc.kepler.hwproxy: The name bmc.kepler.hwproxy was not provided by any .service files
~ /tmp #

你应该是在telnet下执行了该命令,ssh进入bmc,执行
busctl --user introspect bmc.kepler.hwproxy /bmc/kepler/Bus/I2c/I2c_5
image

ssh 进入bmc,先执行mdbctl,然后再执行Usage: call [object name] [interface name] [method name] [parameter list],例如call I2c_11 bmc.kepler.Bus.BlockIO Read 0 144 2,这里指i2c11下有个地址为0x90的设备,具体参数根据i2c总线下设备地址而定,地址不对会报错

1 个赞

感谢,ssh可以