背景:
这边需要实现在PCIe Switch板上分别实现MCU和VR固件升级,PCIe Switch板的类型设置为IEU
问题:
- 当前版本的VR升级是否只支持在基础板(BCU)上进行,IEU上的VR升级是否能支持
- 若IEU上可支持VR升级的话,那在对应的文件中需要配置哪些对象?Vrd_chip 和VRDFirmware?
背景:
这边需要实现在PCIe Switch板上分别实现MCU和VR固件升级,PCIe Switch板的类型设置为IEU
问题:
答案内容由AI生成,仅供参考:
根据您在社区1230版本中关于在PCIe Switch板上实现MCU和VR固件升级的需求,结合当前系统架构和已有信息,现就IEU类型单板是否支持VR升级以及所需配置对象进行详细说明。
VrdMgmt、VrdChip 和 VRDFirmware(实际为 MCUFirmware 类型,用于VRD升级场景)。虽然标准实践中VRD多配置在BCU上用于CPU供电管理,但根据openUBMC的设计逻辑:
VrdMgmt对象统一管理所有VRD设备;VrdMgmt对象可通过SR配置文件动态添加到任意支持的板卡(包括IEU);@Parent继承机制和Name命名规则实现MCU与VRD的匹配;
参考依据:
- 文档中有明确说明:“新基础板SR必须配置[VrdChip]类”,表明该类主要用于新基础板(如BCU),但不限于BCU;
- 社区讨论指出:“如果硬件形态类似于riser卡,那么参考riser卡来配置是合理的。” 而PCIe Switch板被视为接近IEU,故应允许扩展配置。
为了实现IEU类型PCIe Switch板上的VR升级,您需要在对应的.sr配置文件中添加以下关键对象:
VrdMgmt —— VRD管理对象用于声明一个VRD管理域,通常一个CPU对应一个VrdMgmt。
{
"VrdMgmt_1": {
"@Parent": "System_1",
"SystemId": 1,
"CpuId": 1
}
}
![]()
SystemId和CpuId根据实际归属设置。如果是单主机系统可省略SystemId。
VrdChip —— VRD芯片对象描述具体的VRD芯片实例,并关联到
VrdMgmt。
{
"VrdChip_U9": {
"@Parent": "VrdMgmt_1",
"Name": "VrdChip0"
}
}
@Parent: 指向所属的VrdMgmt对象;Name: 必须符合VrdChip+编号格式(如VrdChip0),以便与MCU侧获取的编号匹配。
关联规则:BMC会通过SMC协议从MCU读取VRD编号列表,并用此Name进行匹配,以确定哪一个VRD需要升级。
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地址 |
注意:系统中没有独立的
VRDFirmware类,VRD升级使用MCUFirmware类实现,这是标准做法。
VRDFirmware_U9的升级请求;RefChip并定位到VrdChip_U9;@Parent对应的VrdMgmt_1;| 项目 | 建议 |
|---|---|
| 配置位置 | 在IEU.sr或PSR.sr中添加上述对象,视具体板卡归属而定 |
| 继承结构 | 保持VrdMgmt → VrdChip → MCUFirmware的层级清晰 |
| 命名规范 | 使用统一命名规则,如VrdChip0, VRDFirmware_U9 |
| 测试验证 | 使用test_poweroff_upgrade_vrd等测试用例验证流程 |
| 日志监控 | 检查 /var/log/app.log 中 firmware_mgmt 模块日志 |
| 问题 | 建议 |
|---|---|
| 升级无法触发 | 确保VrdMgmt和VrdChip已正确定义且继承关系正确 |
| 找不到VRD对象 | 检查MCU是否上报了对应的VRD编号,Name是否一致 |
| 升级返回失败码75 | 通常是固件校验失败或版本异常(见Upgrade Status 75) |
| 升级后未生效 | VRD必须经过系统下电再上电才能激活新固件 |
| 权限不足 | 升级需具备管理员权限,确保调用接口时身份合法 |
VrdChip的属性与配置方式VrdMgmt对象的结构VrdMgmt、LogicFirmware等| 问题 | 回答 |
|---|---|
| IEU上的VR升级是否支持? | |
| 是否只能在BCU上进行? | |
| 需配置哪些对象? | VrdMgmt、VrdChip、MCUFirmware(作为VRD升级对象) |
| 是否需要申报议题? | 若为首次在IEU上实现VR升级,建议向hardware-sig组申报议题以确认设计规范 |
建议操作步骤:
VrdMgmt和VrdChip;MCUFirmware对象并正确引用;如有进一步问题,欢迎提交至hardware-sig讨论确认。
相关链接:
您好,理论上有VRD通路的话,是支持VRD升级的,可以参考AI给出的参考文献和csr配置的参考文档。
1.必须要配置VrdMgmt这个对象么?这个对象中的CPUID要咋样填呢?因为这个SW板上供电是针对接的PCIe卡的,不对应CPU吧?
2.AI里面一会说MCUFirmware对应一会说VRDFirmware对象,我到底该配置哪个呢?
需要配置MCUFirmware对象,MCUFirmware是升级对象。
1、升级包可以区分出来是MCU还是VRD
2、general_hardware会根据类型升级VRD
那VRDFirmware对象的作用是什么呢?社区25.12的代码有新增这个对象的单独升级功能
你这个vrd预期是走什么链路升级,VRDFirmware这个对象是用支持独立vrd升级,直接通过pmbus或者其他协议直接与vr进行升级
I2C通道进行VR升级
如果是单独实现与电源交互,实现升级的流程,可以复用VRDFirmware这个对象的升级流程。MCUFirmware是用于天池架构下的vrd升级的对象
我们新开发的板子也会是遵循天池规范的,这个VR在BMC I2C2 链路的9548的channel7上的,那我用VRDFirmware来升级的话是不是也没毛病
看你们的vrd升级是不是由mcu管理的,如果是还是用MCUFirmware比较好