平台: 1711 BMC 模组
硬件连接:
-
I2C6 → CPLD
-
I2C7 → CRPS 电源
现象:
-
使用
i2cdetect扫描 I2C6、I2C7 均无法发现设备 -
有其他 I2C 通道可以正常
-
硬件示波器抓波形结果:未检测到波形,I2C7的被拉低(正常应为高电平)
BMC版本为2509,这个BMC版本在其他产品上可以正常使用I2C7的,换到新到产品就出现上述问题了这个问题和BMC版本有关系吗, 是否和CSR配置相关,BMC该如何定位I2C的通道问题呢?
平台: 1711 BMC 模组
硬件连接:
I2C6 → CPLD
I2C7 → CRPS 电源
现象:
使用 i2cdetect 扫描 I2C6、I2C7 均无法发现设备
有其他 I2C 通道可以正常
硬件示波器抓波形结果:未检测到波形,I2C7的被拉低(正常应为高电平)
BMC版本为2509,这个BMC版本在其他产品上可以正常使用I2C7的,换到新到产品就出现上述问题了这个问题和BMC版本有关系吗, 是否和CSR配置相关,BMC该如何定位I2C的通道问题呢?
答案内容由AI生成,仅供参考:
该问题不太可能是BMC版本导致,而更可能是特定产品上的硬件配置或CSR适配问题。建议按照"硬件连接→复用配置→CSR定义→软件工具"的顺序进行逐级排查,优先解决I2C7总线被异常拉低的硬件问题,再检查相关的软件配置。
在1711 BMC模组平台上,I2C6和I2C7通道无法正常扫描到设备。具体现象包括:
i2cdetect工具扫描I2C6(连接CPLD)和I2C7(连接CRPS电源)均无法发现设备此问题与BMC版本无直接关系。根据已知信息,同一BMC版本25.09在其他产品上可以正常使用I2C7,说明BMC固件本身功能正常。问题更可能源于当前产品的硬件设计或配置差异。
CSR配置是关键排查方向之一。CSR(Control and Status Register)文件定义了系统的硬件拓扑和资源配置:
ManagementTopology配置文件中必须正确定义I2c_6和I2c_7总线可通过以下命令检查CSR加载情况:
busctl --user call bmc.kepler.hwdiscovery /bmc/kepler/ObjectGroup/{position} bmc.kepler.ObjectGroup GetObjects a{ss}s 0 'event'
从搜索结果可知,"I2C的复用关系可能没有配置"是导致I2C不工作的常见原因。需要确认:
参考论坛案例[Topic 4745],需确认执行环境初始化:
source /etc/profile
未执行环境变量加载可能导致工具无法正常使用。
i2cdetect工具虽然能检测标准I2C总线,但无法扫描hisport上的设备。不过本场景中I2C6和I2C7并非hisport接口,因此不应受此限制。
I2C7总线被拉低说明存在硬件层面的问题:
结合日志分析,BMC系统中存在多个I2C相关错误线索:
[I2c_6] read failed: iror, i2c read fail 错误表明I2C读取失败BMC.Error.Unknow错误出现在I2C通信过程中sr文件中正确定义了I2c_6和I2c_7i2cdetect -l确认系统识别到I2C总线列表该问题不太可能是BMC版本导致,而更可能是特定产品上的硬件配置或CSR适配问题。建议按照"硬件连接→复用配置→CSR定义→软件工具"的顺序进行逐级排查,优先解决I2C7总线被异常拉低的硬件问题,再检查相关的软件配置。
软件层基本不感知这个变化,可以检查一下插卡/模组硬件的链路设计
波形测试情况:I2C5和I2C6下面没有挂任何器件(硬件电路已断开),但又上拉4.7K电阻,测试波形SDA和SCL均有高电平,但i2cdetect 5和6运行时没有看到波形有变化,也没扫描到器件。
可以看下linux_kernel日志有没有关于i2c_7的报错,以及你们硬件组网是什么样的?看一下是否管脚没有复用成I2C功能。
内核日志在扫描的时候有记录:iBMC kernel: [I2C-06-RT<-5|-5>] M<0x12|0x1|0x0|1|10> L<0|1|0> C<0|0|1> E<0x801|0x0|0x0|0x1> I<0x0|0x110|0x0>
错误是0x801,应该是链路异常, 但不清楚原因。
硬件组网就是i2c_6连到载板CPLD,i2c_7到PSU。
怎么确认管脚有没有复用成I2C功能呢,这个是通过什么配置复用的?
| 通道 | 确认关键复用状态 | 预期值 |
|---|---|---|
| I2C5 | devmem 0x0874505c 32 | 0x00 |
| devmem 0x08745060 32 | 0x00 | |
| I2C6 | devmem 0x08745064 32 | 0x00 |
| I2C7 | devmem 0x08745068 32 | 0x00 |
可以根据这个确认复用状态,不过你那边能打印,应该是使用的i2c
读了寄存器数值,和预期值是一样全为0,那看来管脚的i2c配置是没问题的。
波形测试结果显示i2c_4、i2c_5、i2c_6、i2c_7都是没有波形变化,另外在重启BMC的过程中,i2c_7时钟会先拉高一会后一直拉低,这个现象能说明什么问题吗?
现在能有什么方法判断出是属于硬件问题还是软件配置问题呢,目前同一批次的多个设备都发现这个问题。
BMC软件没有拉低i2c电平的配置,这种一般是硬件问题。csr的配置主要也是配置topo数据,也不会控制底层i2c电平高低。