我在使用hi1711开发上下电控制功能,根据链接
上下电配置指导 | 文档中心 | openUBMC 在vpd组件中进行sr文件配置,我们硬件实现是hi1711通过SMC与CPLD链接,uBMC通过SMC将指令发送给CPLD后,CPLD控制系统上下电。
正常状态,显示上电,下电后,系统会下电,但是会重新上电;点击强制下电,也会下电,但是也是会重新上电,这个应该怎么排查?
我在使用hi1711开发上下电控制功能,根据链接
上下电配置指导 | 文档中心 | openUBMC 在vpd组件中进行sr文件配置,我们硬件实现是hi1711通过SMC与CPLD链接,uBMC通过SMC将指令发送给CPLD后,CPLD控制系统上下电。
正常状态,显示上电,下电后,系统会下电,但是会重新上电;点击强制下电,也会下电,但是也是会重新上电,这个应该怎么排查?
答案内容由AI生成,仅供参考:
针对您描述的“下电后立即自动重新上电”问题,结合提供的知识库信息,这种现象最常见的原因是 AC 闪断信号误上报 导致系统执行了通电开机策略。以下是系统的排查思路,所有步骤均基于知识库中的文档记录。
根据 上下电配置指导(对应搜索文档 id=4),系统存在“保持上电”的通电策略。如果该策略被启用,BMC 在检测到输入电源恢复时会自动恢复系统上电。
排查动作:
知识库文档 《开机状态下在web点击下电,OS下电后自动上电问题分析》(搜索结果 id=1)完整描述了与您完全相同的场景:
问题原因:AC 断(闪断)信号上报后,
power_mgmt组件通过 GPIO 扫描检测到该信号,然后发送ACLost消息给fructrl组件,后者判断为 AC 闪断,随即执行通电开机策略。
解决方案:power_mgmt例行扫描 GPIO 管脚,排查该管脚是否正常。
排查动作:
app.log 中 power_mgmt 和 fructrl 组件的相关日志。ACLost 或 ac lost,确认是否在下电后立刻收到该信号。ACLost,说明 GPIO 管脚上出现了虚假的 AC 掉电/恢复信号,需要与硬件协作检查该管脚的电路及电平稳定性。根据您提到的 hi1711 通过 SMC 与 CPLD 链接,知识库文档 《系统上下电失败问题分析》(搜索结果 id=2)指出:
“确认BMC和CPLD的命令字一致;如果命令字一致且BMC已正常下发操作信号,则需要CPLD进一步排查未上电或者下电成功的原因,因为信号BMC给到cpld之后,真正执行上下电操作的是CPLD。”
排查动作:
ForceOff、GracefulShutDown)的命令字与 CPLD 侧的定义完全一致。知识库 《上下电常见问题指南》(搜索结果 id=9)和 《上下电配置指导》(搜索结果 id=4)提供了以下排查命令:
ipmcget -t maint -d poweronlock,检查上电超时锁是否被锁定。ipmcset -t maintenance -d poweronlock -v clear 解锁。ipmcset -t maint -d accycleAC Cycle 会模拟真实的物理断电再上电,有助于清除由于信号残留导致的异常状态。
知识库实体关系指出:
ACLost,还可以关注 Power off timeout、PowerGDStatus 等,以判断是否有其他因素(如超时重新上电)干扰。| 排查序号 | 关注点 | 依据文档 |
|---|---|---|
| 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"
},