如何通过 SMBus/I2C 访问 VPD?

如何通过 SMBus/I2C 访问 VPD?

与 IPMI 查询的内容类似,我如何通过 SMBus/I2C 访问目标服务器中每个设备的 VPD?我是否需要驱动程序,或者 i2c-dev 模块就足够了?如果我有多个存储设备连接到服务器,如何验证目标总线上的哪个是哪个?

我正在使用 i2cDetect 来验证 i2c 总线,但是,我无法验证我的设备连接的是哪条总线,或者它首先是否有总线。我知道我需要一个 i2c 总线/适配器来确定实际的 i2c 设备。创建 i2c 客户端可以这样做,但我仍然需要验证其总线连接,并且创建 i2c 客户端使其仅限于定义 id_table 中枚举的 i2c 设备。我希望它尽可能检测所有存储设备,无论它是否有 i2c 设备。

任何答复将不胜感激。非常感谢。

答案1

部分答案(由于问题老了,询问细节很困难):

如果你的设备的 VPD 存储在标准 EEPROM 中,那么可能标准 EEPROM 驱动程序就足够了。 (如果以不同的方式访问它,那么我不知道)。

modprobe i2c-dev将允许从用户空间进行 I2C 访问,如果您可以使用i2cdetect.modprobe eeprom将安装标准 EEPROM 驱动程序,探测其支持的设备的所有总线,并允许访问/sys/bus/i2c/drivers/eeprom.

但是,我无法验证我的设备连接的是哪条总线,或者它首先是否有总线。

是的,这有点痛苦,您必须充分了解您的硬件,并根据您在总线上看到的设备进行一些猜测。

看着

/sys/bus/i2c/devices/i2c-*/name
/sys/bus/i2c/devices/i2c-*/device/driver/

也会有帮助。

相关内容