答案内容由AI生成,仅供参考:
总结
| 项目 | 状态 |
|---|---|
| 问题类型 | BCU硬件信息读取失败 |
| 根本原因 | 很可能是 环境无BCU 或 SMC对象不存在 / JTAG链路未切换 |
| 涉及组件 | BCU Board, SMC, BMC, CSR, BizTopoMonitor |
| 推荐优先级操作 | 确认测试环境是否支持BCU → 检查SMC设备存在 → 切换JTAG链路 → 验证CSR配置 |
附加建议:
参考《MCU、VRD、CSR、CPLD升级与板卡管理问题指南》中的调试方法,使用busctl工具链逐步验证底层访问能力,避免直接运行高层自动化测试造成误判。
点击此处查看详细分析解答
问题分析:通过SSH查询BCU板卡硬件信息冒烟测试失败
问题描述
在执行自动化测试用例 “Get BCU HW Info Via cli” 时,通过SSH命令查询BCU板卡硬件信息失败。测试用例未能在返回结果中找到预期的硬件信息标识 17 85,导致测试不通过。
相关错误信息如下:
FAIL 未找到硬件信息: 'busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}u0 0x500 2' does not contain '17 85'
失败详情
- 测试名称:
Get BCU HW Info Via cli - 执行方式:SSH调用
busctl命令访问SMC(天池管理控制器) - 核心命令:
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101 bmc.kepler.Chip.BlockIO Read a{ss}u0 0x500 2 - 期望输出:返回结果应包含
17 85字样 - 实际返回:无有效硬件信息输出
- 测试时长:13.726秒(最终失败)
可能原因分析
1. BCU硬件或连接异常
根据知识图谱信息:
BCU Board是系统主控板之一,RiserCard 物理安装于其上。- BCU 板负责向 BMC 上报线缆连接状态。
- 若 BCU 未正确安装或通信链路异常,可能导致无法读取其硬件信息。
检查建议:确认 BCU 是否物理就位,连接良好,且已通电运行。
2. SMC命令字不正确或目标设备不存在
- 测试中使用的命令访问的是
/Smc_CpuBrdSMC_010101设备对象,该路径可能不匹配实际存在的设备。 - 根据文档《鲲鹏模组适配约束FAQ》,SR文件需准确配置硬件拓扑,若模组SR文件未正确加载,将导致设备发现失败。
- 若环境中无BCU,相关资源树(如BIOS资源树)将不会加载,导致BCU相关命令失效(见《固件升级机制及常见问题》)。
验证建议:
busctl --user list | grep Smc查看当前可用的SMC设备列表,确认目标对象是否存在。
3. JTAG链路未切换或访问失败
- 类似问题出现在 CPLD升级指南 中:若芯片挂载在JTAG链路上,必须先切至对应链路才能获取信息。
- 相关命令:
busctl --user set-property bmc.kepler.hwproxy /bmc/kepler/Accessor/Accessor_JtagSwitch_010101 bmc.kepler.Accessor Value t <chain_value>
提示:EXU为0,BCU为1,需根据具体板位选择正确的链路。
4. SSH连接不稳定或权限不足
尽管测试日志中Verify SSH Connection最终成功(status = True),但以下问题仍可能存在:
- 命令执行过程中SSH连接短暂中断。
- 执行用户权限不足,无法访问敏感硬件接口。
- 使用的SSH会话未正确绑定到目标BMC环境。
注意:
Codebmcdev曾咨询 Administrator 用户的 SSH 登录密码问题,表明 Administrator 是 openUBMC 管理平台的主要管理账户,建议确保使用正确凭据登录。
5. CSR配置错误或缺失
- CSR描述了板卡的物理结构与链路拓扑(来自《BMC Studio 使用指导》)。
- 若BCU未在CSR中正确定义,则其设备节点不会被创建,导致访问失败。
- 天池协议依赖 CSR 中 Connector 的映射关系建立端口连接。
解决方向:
- 检查CSR中是否正确定义了 BCU1 Config。
- 验证
SrcPortName与BCUIndex映射关系是否正确。
6. BizTopoMonitor 拓扑监控失败
BizTopoMonitor负责监控 BCU1 的配置与状态。- 若该服务未能正常读取或上报拓扑信息,可能出现设备不可见的情况。
- 日志中已有记录:
BizTopoMonitor has repeatedly failed to read or monitor topology data.
排查步骤:
journalctl -u BizTopoMonitor检查是否有拓扑加载失败日志。
建议解决方案
1. 确认系统环境是否存在BCU
- 根据《固件升级机制》文档,“环境为天池模组环境,无bcu”会导致相关资源树未加载。
- 先确认当前测试环境是否为 无BCU环境,若是,则不应执行BCU相关测试。
2. 验证SMC设备对象存在性
# 列出所有SMC设备
busctl --user list | grep Smc
# 尝试调用前先 ping 或探查对象是否存在
busctl --user introspect bmc.kepler.hwproxy /bmc/kepler/Chip/Smc/Smc_CpuBrdSMC_010101
3. 检查并切换JTAG链路
# 设置JTAG链路为BCU(假设Position为010101)
busctl --user set-property bmc.kepler.hwproxy /bmc/kepler/Accessor/Accessor_JtagSwitch_010101 bmc.kepler.Accessor Value t 1
# 查询ChipIdcode验证是否能获取芯片信息
busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Cpld/Cpld_1_010101 bmc.kepler.Chip.JtagTarget GetChipIdcode a{ss} 0
4. 检查CSR配置完整性
- 确认以下内容已在CSR中正确定义:
- BCU Board 实体及其 slot 位置
- Connector 连接关系(如连接RiserCard)
- BCUIndex 是否设置为1或正确索引值
- SrcPortName 与端口映射是否正确
5. 检查拓扑服务运行状态
# 查看BizTopoMonitor服务状态
systemctl status BizTopoMonitor
# 查看日志是否有错误
journalctl -u BizTpooMonitor --no-pager -n 50
6. 改进测试脚本日志可观测性
当前无有效命令回显,增加调试信息可提升定位效率:
# 改进建议:打印执行命令和完整响应
Log 执行命令: ${input_bcu}
${rsp} = Wait Until Keyword Succeeds 3x ${time_out} Execute SSH Command ${ssh} ${input_bcu} timeout=60
Log 原始响应: ${rsp}
${clean_rsp} = Clean SSH Response ${rsp}
Log 清理后响应: ${clean_rsp}
总结
| 项目 | 状态 |
|---|---|
| 问题类型 | BCU硬件信息读取失败 |
| 根本原因 | 很可能是 环境无BCU 或 SMC对象不存在 / JTAG链路未切换 |
| 涉及组件 | BCU Board, SMC, BMC, CSR, BizTopoMonitor |
| 推荐优先级操作 | 确认测试环境是否支持BCU → 检查SMC设备存在 → 切换JTAG链路 → 验证CSR配置 |
附加建议:
参考《MCU、VRD、CSR、CPLD升级与板卡管理问题指南》中的调试方法,使用busctl工具链逐步验证底层访问能力,避免直接运行高层自动化测试造成误判。
相关链接: