【需求暂不评审】新增长城 CRPS 电源模块 PMBus 协议适配需求

ISSUE 链接

[需求]: 新增 长城crps 适配

背景

长城 CRPS 是一款高效率 CRPS 标准电源模块,采用 PMBus 1.3+ 通信协议。当前 openUBMC 社区版本已支持多种华为 PMBus 电源及电源砖,但尚未完整支持 CRPS 标准电源的 PMBus 协议适配、冷冗余工作模式控制。

本需求用于在 openUBMC 中完成长城 CRPS 电源模块的:

  1. PMBus 协议适配(FRU 资产、传感器、健康状态全量采集)
  2. 冷冗余主备切换模式控制(0xD0 寄存器)
  3. 多电源板卡(每板 3 槽位,共 6 槽位)拓扑管理

涉及仓库:

  1. vpd — 新增 PSU 及电源扩展板 CSR 硬件描述文件
  2. power_mgmt — 新增 CRPS3200T Protocol 协议层、Monitor 监控层、init.lua 协议注册
  3. rackmount — 扩展 power.lua 支持 PsuBoard 槽位合并逻辑

决策点

  1. 是否同意将长城 CRPS 电源 PMBus 协议适配纳入 openUBMC 社区版本;
  2. 是否同意按 vpd、power_mgmt、rackmount、webui 拆分 PR 合入;

详细描述

本需求计划支持以下能力:

1. PMBus 协议适配层(power_mgmt/protocol/pmbus_CRPS3200T.lua)

  • 支持 I2C/PMBus 寄存器读写(含 CRC8 校验 + 3 次重试)
  • 支持 Linear-11/Linear-16 数据格式转换(含 0~1A 小电流精度保护)
  • 支持 FRU 资产信息获取:制造商(0x99)、型号(0x9A)、序列号(0x9E)、固件版本(0x9B)、部件编码、制造日期(0x9D)
  • 支持传感器数据采集:输入输出电压(0x88/0x8B)、输入输出电流(0x89/0x8C)、输入输出功率(0x97/0x96)、环境温度(0x8D)、原边/副边温度(0x8E/0x8F)、风扇转速(0x90)
  • 支持健康状态采集:7 个状态寄存器(7C/7D/81/7A/7B/7E/80)
  • 支持额定功率读取(0xA7)

2. 冷冗余工作模式控制

  • 通过 0xD0 寄存器实现主备切换
  • 主用模式:写入 0x01
  • 备用模式:写入 0x05
  • 支持写入后 10ms 验证回读
  • 支持失败自动回退到 Active 模式
  • 处理 0x00 未初始化状态的自动修复(先设 0x01 再切目标模式)

3. Monitor 监控层(power_mgmt/monitor/pmbus_CRPS3200T.lua)

  • 4 个周期性任务:健康状态 500ms / 电压电流温度 3s / 工作模式 2s / 黑匣子授时 5min
  • 远程高频功率采样(100ms PluginRequest)
  • 通信异常去抖防抖(3 次重试 + PLUGIN_DEBOUNCE)

4. CSR 硬件描述文件(VPD)

  • 新增 PSU CSR:定义 OnePower、Scanner(OPOK/IPOK/PowerGood)、CoolingRequirement(按功率分段温度阈值)、21 个事件定义(故障+告警+插拔+更换等)
  • 新增电源扩展板 CSR:定义 3 个 Connector、PsuSlot、Scanner 在位检测、6 个插拔事件等

5. rackmount 接口扩展

  • power.lua get_supply_list() 新增 PsuBoard 槽位合并逻辑(去重+排序),兼容多电源扩展板
  • get_defult_psu() 返回空默认对象,区分“槽位空”和“数据采集失败”

计划拆分 PR:

  1. vpd:新增 14191046_PSU_CRPS.sr + 14100513_00000002012000234001.sr
  2. power_mgmt:新增 protocol/pmbus_CRPS3200T.lua + monitor/pmbus_CRPS3200T.lua + 修改 protocol/init.lua 协议注册
  3. rackmount:修改 power.lua get_supply_list() 及相关辅助函数

影响范围

  1. 新增长城 CRPS 电源 PMBus 协议适配,不影响已部署的电源型号
  2. 仅当 CSR PhysicalInterface 显式指定 "pmbus_crps3200t" 时触发新代码路径
  3. 新增代码遵循开闭原则,不修改通用 pmbus.lua 和 monitor/pmbus.lua
  4. power.lua 的 PsuBoard 槽位合并逻辑向后兼容,不影响已有场景
  5. init.lua 协议注册表新增 1 条记录,不影响已有协议查找逻辑
  6. VPD 中新增 2 个 CSR 文件,不影响已有板卡的 SR 配置

自验计划

  1. bingo gen

  2. bingo build

  3. bingo test -ut

  4. bingo test -it

  5. 实机验证:

    • 长城 CRPS 电源插入电源板槽位,验证 FRU 信息自动获取
    • Redfish /redfish/v1/Chassis/1/PowerSubsystem/PowerSupplies 接口电源信息完整性
    • 冷冗余主备切换:Active→Standby→Active 全流程
    • I2C 通信异常注入:验证去抖和 communication_status 上报
    • 回归验证:已有电源功能不受影响

评审结论

(待社区评审后填写)