ISSUE 链接
背景
长城 CRPS 是一款高效率 CRPS 标准电源模块,采用 PMBus 1.3+ 通信协议。当前 openUBMC 社区版本已支持多种华为 PMBus 电源及电源砖,但尚未完整支持 CRPS 标准电源的 PMBus 协议适配、冷冗余工作模式控制。
本需求用于在 openUBMC 中完成长城 CRPS 电源模块的:
- PMBus 协议适配(FRU 资产、传感器、健康状态全量采集)
- 冷冗余主备切换模式控制(0xD0 寄存器)
- 多电源板卡(每板 3 槽位,共 6 槽位)拓扑管理
涉及仓库:
- vpd — 新增 PSU 及电源扩展板 CSR 硬件描述文件
- power_mgmt — 新增 CRPS3200T Protocol 协议层、Monitor 监控层、init.lua 协议注册
- rackmount — 扩展 power.lua 支持 PsuBoard 槽位合并逻辑
决策点
- 是否同意将长城 CRPS 电源 PMBus 协议适配纳入 openUBMC 社区版本;
- 是否同意按 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:
- vpd:新增 14191046_PSU_CRPS.sr + 14100513_00000002012000234001.sr
- power_mgmt:新增 protocol/pmbus_CRPS3200T.lua + monitor/pmbus_CRPS3200T.lua + 修改 protocol/init.lua 协议注册
- rackmount:修改 power.lua get_supply_list() 及相关辅助函数
影响范围
- 新增长城 CRPS 电源 PMBus 协议适配,不影响已部署的电源型号
- 仅当 CSR PhysicalInterface 显式指定
"pmbus_crps3200t"时触发新代码路径 - 新增代码遵循开闭原则,不修改通用 pmbus.lua 和 monitor/pmbus.lua
- power.lua 的 PsuBoard 槽位合并逻辑向后兼容,不影响已有场景
- init.lua 协议注册表新增 1 条记录,不影响已有协议查找逻辑
- VPD 中新增 2 个 CSR 文件,不影响已有板卡的 SR 配置
自验计划
-
bingo gen -
bingo build -
bingo test -ut -
bingo test -it -
实机验证:
- 长城 CRPS 电源插入电源板槽位,验证 FRU 信息自动获取
- Redfish
/redfish/v1/Chassis/1/PowerSubsystem/PowerSupplies接口电源信息完整性 - 冷冗余主备切换:Active→Standby→Active 全流程
- I2C 通信异常注入:验证去抖和 communication_status 上报
- 回归验证:已有电源功能不受影响
评审结论
(待社区评审后填写)