hi1711系统上下电问题

我在使用hi1711开发上下电控制功能,根据链接
上下电配置指导 | 文档中心 | openUBMC 在vpd组件中进行sr文件配置,我们硬件实现是hi1711通过SMC与CPLD链接,uBMC通过SMC将指令发送给CPLD后,CPLD控制系统上下电。

正常状态,显示上电,下电后,系统会下电,但是会重新上电;点击强制下电,也会下电,但是也是会重新上电,这个应该怎么排查?

答案内容由AI生成,仅供参考:
针对您描述的“下电后立即自动重新上电”问题,结合提供的知识库信息,这种现象最常见的原因是 AC 闪断信号误上报 导致系统执行了通电开机策略。以下是系统的排查思路,所有步骤均基于知识库中的文档记录。


1. 确认当前通电策略配置

根据 上下电配置指导(对应搜索文档 id=4),系统存在“保持上电”的通电策略。如果该策略被启用,BMC 在检测到输入电源恢复时会自动恢复系统上电。
排查动作

  • 查看当前系统的通电策略(例如通过 Web 界面或命令行)。
  • 如果策略为“保持上电”,下电后一旦检测到 AC 恢复正常(即使只是瞬间跳变),就会触发自动上电。
  • 可尝试先将策略调整为其他模式(如“保持下电”),观察是否还会自动开机。

2. 检查 AC 闪断信号是否误触发

知识库文档 《开机状态下在web点击下电,OS下电后自动上电问题分析》(搜索结果 id=1)完整描述了与您完全相同的场景:

问题原因:AC 断(闪断)信号上报后,power_mgmt 组件通过 GPIO 扫描检测到该信号,然后发送 ACLost 消息给 fructrl 组件,后者判断为 AC 闪断,随即执行通电开机策略。
解决方案power_mgmt 例行扫描 GPIO 管脚,排查该管脚是否正常。

排查动作

  • 登录 BMC,查看 app.logpower_mgmtfructrl 组件的相关日志。
  • 搜索关键字 ACLostac lost,确认是否在下电后立刻收到该信号。
  • 如果存在 ACLost,说明 GPIO 管脚上出现了虚假的 AC 掉电/恢复信号,需要与硬件协作检查该管脚的电路及电平稳定性。

3. 核对 BMC 与 CPLD 的 SMC 通信

根据您提到的 hi1711 通过 SMC 与 CPLD 链接,知识库文档 《系统上下电失败问题分析》(搜索结果 id=2)指出:

“确认BMC和CPLD的命令字一致;如果命令字一致且BMC已正常下发操作信号,则需要CPLD进一步排查未上电或者下电成功的原因,因为信号BMC给到cpld之后,真正执行上下电操作的是CPLD。”

排查动作

  • 确认 BMC 发送的下电命令(如 ForceOffGracefulShutDown)的命令字与 CPLD 侧的定义完全一致。
  • 在 CPLD 侧日志或调试接口中观察是否收到了正确的下电指令,以及 CPLD 在断电后是保持下电状态还是误触发了重新上电。
  • 如果 CPLD 在接收下电指令后立即又执行了上电动作,需要 CPLD 开发人员排查其逻辑(例如是否将下电信号误解为复位/重启)。

4. 检查上电超时锁及尝试 AC Cycle 恢复

知识库 《上下电常见问题指南》(搜索结果 id=9)和 《上下电配置指导》(搜索结果 id=4)提供了以下排查命令:

  • 执行 ipmcget -t maint -d poweronlock,检查上电超时锁是否被锁定。
  • 如果锁定,执行 ipmcset -t maintenance -d poweronlock -v clear 解锁。
  • 解锁后若仍然异常,尝试执行完整的 AC 循环恢复:
    ipmcset -t maint -d accycle

AC Cycle 会模拟真实的物理断电再上电,有助于清除由于信号残留导致的异常状态。


5. 关注强制下电的特殊机制

知识库实体关系指出:

  • Forced_Power_Off_Again 是当系统在第一次强制断电后仍保持供电时触发的二次强制断电机制。
  • 但根据您的描述,强制下电后系统似乎完全断电了(只是又自动上电)。此时同样应优先排查上述 AC 闪断问题,因为强制下电本身不会导致 AC 信号变化,而 AC 闪断信号仍然可能触发恢复策略。

6. 进一步定位参考

  • 日志关键字:除了 ACLost,还可以关注 Power off timeoutPowerGDStatus 等,以判断是否有其他因素(如超时重新上电)干扰。
  • 硬件协助:若以上排查均未发现问题,需硬件工程师检查 GPIO 管脚电平、CPLD 固件逻辑,以及电源模块的实际输出波形,确认是否存在真正的 AC 瞬间中断。

总结建议

排查序号 关注点 依据文档
1 通电策略是否为“保持上电” 上下电配置指导
2 power_mgmt GPIO 管脚是否有虚假 AC 信号 开机状态下在web点击下电,OS下电后自动上电问题分析
3 BMC 与 CPLD 的 SMC 命令字一致性及 CPLD 行为 系统上下电失败问题分析
4 上电锁及 AC Cycle 恢复 上下电常见问题指南
5 强制下电的特殊二次触发机制 Forced_Power_Off_Again 实体关系

最可能的根因是 1 或 2,建议优先排查。如果问题仍然存在,可以结合上述其他步骤逐层深化分析。

我在vpd sr文件中配置了如下信息:

"Scanner_PowerGd": {
  "Chip": "#/Smc_ExpBoardSMC",
  "Offset": 469765888,
  "Size": 1,
  "Mask": 255,
  "Type": 0,
  "Period": 100,
  "Debounce": "None",
  "Status": 0,
  "Value": 0  
},

    "PGSignal_1": {
      "PowerGDState": "<=/Scanner_PowerGd.Value",
      "@Default": {
        "PowerGDState":255
      }
    },

    "Accessor_ShortPushButton": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 134224384,
      "Size": 1,
      "Mask": 0,
      "Type": 1,
      "Value": 0
    },
    "Accessor_LongPushButton": {
      "Chip": "#/Smc_ExpBoardSMC",
      "Offset": 134224384,
      "Size": 1,
      "Mask": 2,
      "Type": 0,
      "Value": 0
    },
"PowerButton_1": {
  "ShortPushButton": "#/Accessor_ShortPushButton.Value",
  "LongPushButton": "#/Accessor_LongPushButton.Value"
},
"ThermTrip_1": {
    "GetThermTrip": "<=/Scanner_Cpu1ThermalTripAccessor.Value",
    "SetThermTrip": "#/Accessor_Cpu1ClearThermalTripAccessor.Value",
    "GetThermTrip2": "<=/Scanner_Cpu2ThermalTripAccessor.Value",
    "SetThermTrip2": "#/Accessor_Cpu2ClearThermalTripAccessor.Value"
},
"Accessor_IssueRecoredAcc": {
  "Chip": "#/Smc_CpuBrdSMC",
  "Offset": 201360896,
  "Size": 1,
  "Mask": 2,
  "Type": 0,
  "Value": 0
},
"Accessor_LatchRecoredAcc": {
  "Chip": "#/Smc_CpuBrdSMC",
  "Offset": 201360896,
  "Size": 1,
  "Mask": 8,
  "Type": 0,
  "Value": 0
},
"RecordFault_1": {
   "IssueRecoredAcc": "#/Accessor_IssueRecoredAcc.Value",
   "LatchRecoredAcc": "#/Accessor_LatchRecoredAcc.Value"
},