使用示例
概述
本文档介绍如何在 MOFFETT AI加速卡上通过SMBus获取产品信息数据。
操作步骤
手动加载SMBus驱动
modprobe i2c-i801
查询主板I2C端口详情
i2cdetect -l
预期结果:
# i2cdetect -l
i2c-3 i2c i915 gmbus dpd I2C adapter
i2c-1 i2c i915 gmbus dpc I2C adapter
i2c-6 smbus SMBus I801 adapter at f040 SMBus adapter
i2c-4 i2c DPDDC-C I2C adapter
i2c-2 i2c i915 gmbus dpb I2C adapter
i2c-0 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-5 i2c DPDDC-D I2C adapter
查看 I2C 端口下挂载的设备
i2cdetect -y 6
参数 6 表示 i2c-6,需要根据上一步中 SMBus 对应的 i2c 地址进行调整。
预期结果:
# i2cdetect -y 6
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- 08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 31 -- -- 34 35 36 -- -- -- -- -- -- -- -- --
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
50: 50 -- 52 -- -- -- -- -- 58 -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- 6c -- -- --
70: -- -- -- -- -- -- -- --
结果表示在 I2C 端口 6 下有识别到地址为 0x58 的设备,对应 MCU的地址。
对设备读取对应信息
i2cget –y –f 端口号 设备地址 寄存器地址
预期结果:
# i2cget -y -f 6 0x58 0x01
0x00
备注
目前 MCU 没有自动获取 GPU 的数据,需要手动读取,读取方式如下:
前置操作:(MCU 设计为 GPU1,GPU2,GPU3)
i2cset -y -f 0 0x58 0x3f [0x01、0x02、0x03] (指定获取 GPU)
获取GPU1 数据前置操作步骤:
i2cset -y -f 0 0x58 0x3f 0x01 (指定获取 GPU1)
i2cset -y -f 0 0x58 0x40 0x01 (读操作)
i2cset -y -f 0 0x58 0x45 0xB8 (读取的长度)
i2cset -y -f 0 0x58 0x46 0x02 (触发读取操作)
polling 0x46地址的bit0, bit0=1时表示data就绪
i2cset -y -f 0 0x58 0x46 0x00
获取GPU2 数据前置操作步骤:
i2cset -y -f 0 0x58 0x3f 0x02 (指定获取 GPU2)
i2cset -y -f 0 0x58 0x40 0x01 (读操作)
i2cset -y -f 0 0x58 0x45 0xB8 (读取的长度)
i2cset -y -f 0 0x58 0x46 0x02 (触发读取操作)
polling 0x46地址的bit0, bit0=1时表示data就绪
i2cset -y -f 0 0x58 0x46 0x00
获取GPU3 数据前置操作步骤:
i2cset -y -f 0 0x58 0x3f 0x03 (指定获取 GPU3)
i2cset -y -f 0 0x58 0x40 0x01 (读操作)
i2cset -y -f 0 0x58 0x45 0xB8 (读取的长度)
i2cset -y -f 0 0x58 0x46 0x02 (触发读取操作)
polling 0x46地址的bit0, bit0=1时表示data就绪
i2cset -y -f 0 0x58 0x46 0x00
前置操作完成后即可读取对应寄存器,获取对应信息。
最后更新于
这有帮助吗?