社区1230版本上配置PCIe Switch板的VR升级功能

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

PCIe Switch板(IEU类型)上的VR升级功能支持与配置

根据您在社区1230版本中关于在PCIe Switch板上实现MCU和VR固件升级的需求,结合当前系统架构和已有信息,现就IEU类型单板是否支持VR升级以及所需配置对象进行详细说明。


:white_check_mark: 结论概要

  • IEU上可以支持VR升级:尽管VRD(电压调节器)最常见于基础计算单元(BCU),但系统架构上并未限制VRD仅存在于BCU。只要硬件物理上存在VRD芯片并可通过SMC协议通信,软件层面是可以支持其固件升级的。
  • 可参考IEU或BCU的配置模式:由于PCIe Switch板被定义为IEU类型,并且其功能与IEU接近,因此可以在IEU的SR配置文件中实现对VRD的支持。
  • 需要配置的关键对象包括VrdMgmtVrdChipVRDFirmware(实际为 MCUFirmware 类型,用于VRD升级场景)。

:pushpin: 是否支持IEU上的VR升级?

:white_check_mark: 支持,无架构限制

虽然标准实践中VRD多配置在BCU上用于CPU供电管理,但根据openUBMC的设计逻辑:

  • BMC通过VrdMgmt对象统一管理所有VRD设备;
  • VrdMgmt对象可通过SR配置文件动态添加到任意支持的板卡(包括IEU);
  • 系统通过@Parent继承机制和Name命名规则实现MCU与VRD的匹配;
  • 因此,只要在PCIe Switch板(IEU)的SR文件中正确配置相关对象,即可支持其上的VRD固件升级。

:magnifying_glass_tilted_left: 参考依据

  • 文档中有明确说明:“新基础板SR必须配置[VrdChip]类”,表明该类主要用于新基础板(如BCU),但不限于BCU
  • 社区讨论指出:“如果硬件形态类似于riser卡,那么参考riser卡来配置是合理的。” 而PCIe Switch板被视为接近IEU,故应允许扩展配置。

:puzzle_piece: 需要在SR文件中配置的对象

为了实现IEU类型PCIe Switch板上的VR升级,您需要在对应的.sr配置文件中添加以下关键对象:

1. VrdMgmt —— VRD管理对象

用于声明一个VRD管理域,通常一个CPU对应一个VrdMgmt。

{
  "VrdMgmt_1": {
    "@Parent": "System_1",
    "SystemId": 1,
    "CpuId": 1
  }
}

:warning: SystemIdCpuId 根据实际归属设置。如果是单主机系统可省略SystemId


2. VrdChip —— VRD芯片对象

描述具体的VRD芯片实例,并关联到VrdMgmt

{
  "VrdChip_U9": {
    "@Parent": "VrdMgmt_1",
    "Name": "VrdChip0"
  }
}
  • @Parent: 指向所属的VrdMgmt对象;
  • Name: 必须符合VrdChip+编号格式(如VrdChip0),以便与MCU侧获取的编号匹配。

:link: 关联规则:BMC会通过SMC协议从MCU读取VRD编号列表,并用此Name进行匹配,以确定哪一个VRD需要升级。


3. MCUFirmware(用作VRD升级对象)

虽然名为MCUFirmware,但在系统中它也用于表示可升级的嵌入式固件对象,包括VRD固件。

{
  "VRDFirmware_U9": {
    "@Parent": "IEU_1",
    "RefChip": "#/VrdChip_U9",
    "UID": "00000001040000000001",  // 唯一标识,建议按规范生成
    "Version": "1.00",
    "Type": "VRD",
    "SoftwareId": "HWFIRM-VRD-PCIESW",
    "Protocol": "SMC",
    "Address": "0x50"
  }
}
属性 说明
RefChip 引用前面定义的VrdChip_U9对象
Type 明确为VRD类型
Protocol 使用SMC协议通信
Address VRD芯片的SMC地址

:white_check_mark: 注意:系统中没有独立的VRDFirmware类,VRD升级使用MCUFirmware类实现,这是标准做法。


:repeat_button: VRD升级工作流程简述

  1. 用户发起对VRDFirmware_U9的升级请求;
  2. 系统查找RefChip并定位到VrdChip_U9
  3. 查找其@Parent对应的VrdMgmt_1
  4. 检查电源状态(必须下电或进入缓存模式);
  5. 执行四阶段升级流程:
    • Prepare → Process → Finish → Active(下电时生效)

:blue_book: 推荐实践建议

项目 建议
配置位置 IEU.srPSR.sr中添加上述对象,视具体板卡归属而定
继承结构 保持VrdMgmt → VrdChip → MCUFirmware的层级清晰
命名规范 使用统一命名规则,如VrdChip0, VRDFirmware_U9
测试验证 使用test_poweroff_upgrade_vrd等测试用例验证流程
日志监控 检查 /var/log/app.logfirmware_mgmt 模块日志

:red_exclamation_mark: 常见问题与注意事项

问题 建议
升级无法触发 确保VrdMgmtVrdChip已正确定义且继承关系正确
找不到VRD对象 检查MCU是否上报了对应的VRD编号,Name是否一致
升级返回失败码75 通常是固件校验失败或版本异常(见Upgrade Status 75
升级后未生效 VRD必须经过系统下电再上电才能激活新固件
权限不足 升级需具备管理员权限,确保调用接口时身份合法

:books: 参考资料与相关文档


:white_check_mark: 总结

问题 回答
IEU上的VR升级是否支持? :white_check_mark: 支持,无架构限制,只要硬件存在且通信正常
是否只能在BCU上进行? :cross_mark: 不是,支持多类型板卡,可通过SR配置灵活扩展
需配置哪些对象? VrdMgmtVrdChipMCUFirmware(作为VRD升级对象)
是否需要申报议题? 若为首次在IEU上实现VR升级,建议向hardware-sig组申报议题以确认设计规范

:light_bulb: 建议操作步骤

  1. 在IEU的SR文件中添加VrdMgmtVrdChip
  2. 添加MCUFirmware对象并正确引用;
  3. 编译加载SR文件并验证对象是否成功注册;
  4. 使用命令行或Web界面测试VRD升级流程;
  5. 记录日志并排查异常。

如有进一步问题,欢迎提交至hardware-sig讨论确认。

相关链接:

  1. PCIe Switch 芯片的Flash升级
  2. MCU和VRD升级介绍
  3. 单元测试 bingo test -ut运行失败
  4. 从25.12回退到到25.06后,ssh无法登录
  5. CSR配置字典之VrdChip类 | 文档中心 | openUBMC