上电状态下执行升级MCU VRD,操作强制下电再上电,出现上电超时告警。

// 此模板仅供参考,如果不适用可以修改

问题描述

上电状态下执行升级MCU VRD→操作强制下电再上电,出现上电超时告警。

[在这里详细描述您遇到的问题]

环境信息

  • 操作系统:

  • 软件版本:OpenUBMC2503

  • 硬件配置:

重现步骤

  1. [第一步]上电状态下执行升级MCU VRD

  2. [第二步]操作强制下电再上电

  3. [第三步]出现上电超时告警产生消失预期不产生告警

期望结果

[您希望实现什么]

  1. 预期不产生告警

实际结果

[实际发生了什么,包含错误信息]

出现了The power BCU1_V_VCC_12V0_1 failure results host power-on timed out.

The power BCU1_V_0V8_CPU1_TDTC_DVDD_ACG_ATS_EFU_FNPLL_RCD_FIX failure results host power-on timed out.

告警

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

寄存器确实出现了短暂的超时,是否需要加防抖。如果要加防抖哪些需要加防抖策略。

image

general_hardware提了一个描述很类似的issue,是否与本帖子描述的问题为同一问题。修复方案是什么。 AtomGit - 全球开发者的开源社区,开源代码托管平台

KunLun2280PV2_2102315QEG10S5100004_20260825-0638.tar.gz (13.5 MB)

答案内容由AI生成,仅供参考:

六、总结

  • 本问题大概率与 MCU/VRD 共用升级通道、VRD 需下电生效、MCU 升级状态卡 2 的升级机制有关。
  • 是否与 issue 408 为同一问题,在现有上下文中无法确认,需查阅该 issue 内容。
  • 可优先尝试:等待 VRD 生效后再升级 MCU;若 MCU 状态卡 2 则先 AC;若 AC 后仍异常则重新升级 CPLD;必要时手动清除上电超时锁存。
  • 防抖策略需根据硬件实测和代码机制决定,已有二值一致防抖和扫描周期调整可作为参考手段。
点击此处查看详细分析解答

问题分析与处理建议

一、现象归纳

你在“上电状态下执行升级 MCU VRD → 操作强制下电再上电”后,出现了两条上电超时告警:

  • The power BCU1_V_VCC_12V0_1 failure results host power-on timed out.
  • The power BCU1_V_0V8_CPU1_TDTC_DVDD_ACG_ATS_EFU_FNPLL_RCD_FIX failure results host power-on timed out.

期望是不产生告警,但实际产生了告警,且分析到“寄存器确实出现了短暂的超时”。


二、基于知识库的原因分析

1. MCU 与 VRD 共用升级通道,存在互斥限制

知识库明确说明:

当前 MCU 和 VRD 走的是同一个升级通道,做了互斥限制。VRD 作为二级电源,只能在下电情况下进行升级;在 OS 上电时缓存升级文件,返回升级成功,下电取升级文件,开始生效。需要等 VRD 下电生效后升级 MCU,才能返回成功。

你的操作是「上电状态下执行升级 MCU VRD」→「强制下电再上电」。这个时序很可能正好落在 VRD 等待下电生效、或 MCU/VRD 升级互斥 的时间窗口内,导致电源上电时序异常,最终触发 BCU1 电源相关的上电超时告警。

2. MCU 升级状态卡在“2”会导致重试异常

知识库中有多个记录显示:

  • BCU MCU 升级状态一直返回 2,表示卡在重试循环中,升级无法推进。
  • 执行 AC 后,状态恢复正常,可继续升级。
  • 如果 AC 后仍无法升级 VRD,最终通过「检查并重新升级 CPLD 后再升级 VRD」解决。

因此,如果升级过程中 MCU 状态异常,会影响 VRD 生效及后续上电流程,这与本问题的现象有较强相关性。

3. 上电超时的设计规则

知识库《上下电常见问题指南》指出:

  • 规则2:上电超时,表示硬件电路有问题,额外的强制下电并不能解决问题,BMC 侧仅记录日志即可。
  • 规则24:当发生上电超时或异常掉电问题时,CPLD 会锁存相关寄存器,并在上电时由 CPLD 清除。
  • 另外,上电超时后如果 BMC 未向下位机(SMC/CPLD)下发“清除系统事件”指令,系统可能卡在上电超时状态,导致后续上电异常。

所以,「寄存器短暂超时」是告警触发的直接原因;但需要进一步区分是 真实硬件故障 还是 瞬时抖动/时序竞争

4. 错误码关联

知识库错误码速查表中有:

  • 0x24000031 CPUBoard.VRPowerRedundancyFailure:VR 电源(单相)工作异常,建议更换主板。
  • 0x01000073 Memory.MemoryI2CI3CLinkAbnormal:内存或主板 I2C/I3C 链路异常。

你的告警涉及 BCU1 的 VR 电源(VCC_12V0、0V8_CPU1 等),与 VR 电源/主板链路类问题同属硬件故障方向,必要时需按硬件问题排查。


三、是否与 general_hardware issue 408 为同一问题?

在提供的知识库上下文中,没有包含 issue 408 的具体描述,因此无法确认该 issue 是否与本帖问题完全一致。

建议直接查看该 issue 的详细内容,重点比对:

  • 触发条件是否同为「上电状态升级 MCU/VRD + 强制下电/上电」;
  • 日志中是否出现 MCU 升级状态持续为 2、VRD 反复生效或上电超时;
  • 是否涉及 Scanner_BCUPwrOnTimeOut 扫描周期调整、CPLD 锁存清除等问题。

若 issue 中包含上述相似点,则可能属于同一类问题,但需要以该 issue 的实际代码和日志为准。


四、修复/处理建议(来自知识库)

1. 调整升级时序

不要在 VRD 生效期间升级 MCU。应先让 VRD 在下电后完成生效,再升级 MCU,才能返回成功。

2. 处理 MCU 升级状态卡“2”

  • 若获取 BCU MCU 升级状态一直返回 2,可先执行 AC,AC 后状态恢复正常再继续升级。
  • 若 AC 后仍无法升级 VRD,可检查并重新升级 CPLD,然后再升级 VRD。

3. 清除上电超时锁存

如果 BMC 未自动下发“清除系统事件”指令,可手动执行:

ipmcset -t maintenance -d poweronlock -v clear
ipmcset -t maint -d accycle

长期修复则建议:

  • 在检测到上电超时后,自动触发向 SMC 发送“清除系统事件”指令;
  • 轮询 CpldStatus,在超时后自动清除 CPLD Timeout Flag;
  • 优化 web 后端与电源管理服务之间的通信机制,避免超时导致指令丢失。

4. 硬件排查

如果升级时序和 MCU 状态均正常,仍出现 BCU1 VR 电源相关上电超时告警,可能属于真实硬件故障。可参考 0x24000031 CPUBoard.VRPowerRedundancyFailure 的排查建议,检查或更换主板。


五、关于“是否需要加防抖”

知识库中与防抖相关的线索如下:

  1. 已有防抖先例
    在“升级 VRD 失败问题分析”中,BMC 通过 二值一致防抖策略 来处理 GD MCU 读版本概率返回异常的问题。

  2. 扫描周期调整
    日志显示 Scanner_BCUPwrOnTimeOut_01010118(BCU 上电超时扫描器)的扫描周期曾从 400 ms 调整为 500 ms,随后又重置回 400 ms。
    说明可以通过调整扫描周期来降低瞬时抖动导致的超时误判。

  3. 上电超时规则
    规则2明确:上电超时表示硬件电路有问题。
    因此:

    • 如果确实是硬件问题,加防抖可能掩盖真实故障;
    • 如果只是瞬时抖动(例如 MCU/VRD 升级生效瞬间的电源毛刺导致寄存器短暂超时),则可以通过防抖策略或扫描周期调整来避免误告警。

结论:

  • 是否需要加防抖,取决于「短暂超时」是硬件真实异常还是软件采样/时序抖动。
  • 若确认为硬件问题,不建议用防抖掩盖,应定位硬件;
  • 若确认为瞬时抖动,可借鉴「二值一致防抖」策略,并对 Scanner_BCUPwrOnTimeOut 这类 BCU 上电超时扫描器适当调整扫描周期。
  • 对于“哪些需要加防抖”,知识库未给出明确清单,建议结合硬件波形、日志时间戳以及相关 issue 的代码修改来确定。

六、总结

  • 本问题大概率与 MCU/VRD 共用升级通道、VRD 需下电生效、MCU 升级状态卡 2 的升级机制有关。
  • 是否与 issue 408 为同一问题,在现有上下文中无法确认,需查阅该 issue 内容。
  • 可优先尝试:等待 VRD 生效后再升级 MCU;若 MCU 状态卡 2 则先 AC;若 AC 后仍异常则重新升级 CPLD;必要时手动清除上电超时锁存。
  • 防抖策略需根据硬件实测和代码机制决定,已有二值一致防抖和扫描周期调整可作为参考手段。