openUBMC如何根据载板和模组做适配?

对于自己的载板,如何做适配?

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

:white_check_mark: 五、总结

步骤 操作要点
1. 环境准备 使用BMC Studio + 正确SDK/镜像
2. 硬件建模 配置CSR模型,定义载板与模组SR文件
3. 自发现配置 推荐 IdentifyMode=3
4. 电源管理 配置 FruCtrlPowerButton 等对象
5. 传感器监控 添加传感器路径与协议适配
6. 构建出包 设置 board_name=openUBMC,完成编译
7. 测试验证 使用QEMU仿真或实机测试功能

:chequered_flag: 最终建议

  • 起步可参考社区已有的配置(如鲲鹏920/920S模组与工具载板参考代码)。
  • 积极参与社区共建,将适配成果贡献回openUBMC,丰富南向兼容生态。
点击此处查看详细分析解答

openUBMC中如何根据载板和模组进行适配

在openUBMC平台中,针对自定义载板模组的适配是确保BMC(Baseboard Management Controller)正常工作的关键环节。下面将详细介绍适配流程、所需工具与配置方法。


:pushpin: 核心概念

  • 载板(Carrier Board):客户自研的主板,用于承载模组(如BMC模组、GPU卡、网卡等)。
  • 模组(Module):预置功能的硬件模块,例如鲲鹏1711 BMC模组。
  • 适配目标:使openUBMC固件支持客户特定硬件拓扑、上下电逻辑、传感器监控、通信接口等功能。

:white_check_mark: 一、载板与模组适配原则

根据社区说明,openUBMC对载板和模组的适配分为两种类型:

类型 描述
公共特性支持 openUBMC默认支持通用硬件管理功能,如IP配置、日志收集、传感器基础监控等。
定制化适配 针对客户自己的载板或模组,需进行个性化配置,包括CSR定义、连接器识别、上下电控制、传感器数据获取等。

:bell: 重要提示
模组出厂自带的固件仅用于启动和升级,并不适配所有客户自研载板,必须进行BMC软件侧的适配开发,否则可能出现大量报错日志或功能异常。


:white_check_mark: 二、适配流程与关键步骤

1. 准备开发环境

  • 使用 BMC Studio 作为主要开发工具(推荐版本 1.2.0 以上)。
  • 确保使用正确的SDK包和Docker镜像环境(如 ubuntu:24.04.2_25.09)。
  • 初始化项目路径并克隆所需 manifest 仓库(如 br_release_openUBMC2509_...)。
python3 init.py -path ./bmc_sdk.zip

2. 配置硬件拓扑结构(CSR模型)

:play_button: 使用BMC Studio进行可视化配置

  1. 打开BMC Studio

    • 访问:http://localhost:10000 或通过Docker部署访问。
  2. 进入“板卡定制”模块

    • 支持两种模式:
      • 板卡新增:定义新器件,创建新的CSR结构。
      • 板卡适配:基于已有组件库进行编排。
  3. 配置载板SR文件

    • platform.sr 或载板专属 .sr 文件中定义:
      • 连接器(Connector)
      • 电源信号(PGSignal)
      • 按键(PowerButton)
      • 故障记录(RecordFault)
      • 过热保护(ThermTrip)
  4. 配置模组SR文件

    • 在模组相关 .sr 文件中定义:
      • 模组ID(BoardId / PlatformId
      • 自发现模式(IdentifyMode=3 推荐)
      • 功耗点(PowerPoint)
      • 载板与模组间的连接关系

:paperclip: 相关文档参考BMC Studio板卡适配指南


3. 定义硬件自发现机制

通过 SR文件中的“IdentifyMode”字段 实现硬件自发现:

IdentifyMode 含义
1 固定BOM识别
2 固定ID识别
3 自发现模式(推荐) —— 根据硬件连接自动识别

:white_check_mark: 建议优先使用 IdentifyMode=3,提升兼容性和易维护性。


4. 上下电功能配置(关键对象)

为实现完整的电源管理,需配置以下核心对象:

对象名 所在SR文件 功能说明
FruCtrl platform.sr 控制FRU上下电
PGSignal 载板SR 电源就绪信号检测
PowerButton 载 板SR 模拟开机按钮
RecordFault 模组SR 故障记录
ThermTrip 模组SR 高温断电保护

:red_exclamation_mark: 若缺少任一对象,可能导致无法上下电。


5. 传感器与状态监控配置

  • 定义各类传感器路径(温度、电压、风扇等),确保能正确读取。
  • 对NVMe硬盘、GPU、RAID卡等设备,可能需要:
    • 适配协议(如 NVMe-MI、SSD-Format)
    • 添加OEM属性解析代码(部分厂商需定制驱动)
    • 配置告警阈值和事件上报逻辑

:books: 参考文档:


6. 固件构建与烧录

设置 board_name 为 openUBMC

在构建命令中明确指定目标板名:

conan create . -pr=profile.ini ... -o vpd/*:board_name=openUBMC ...

或在 Conan 配置中设置:

board_name=openUBMC

此设置会触发加载对应的 Board Openubmc 目录下的配置文件,完成硬件差异化构建。


:white_check_mark: 三、常见问题及解决

问题现象 原因分析 解决方案
无法ping通BMC默认IP 192.168.2.100 载板 PlatformIdBoardId 不符合预期 将PlatformId设为0,BoardId设为0xFF
大量重复日志刷屏 固件未适配载板,导致设备反复探测失败 完成完整SR配置,避免拓扑错误
升级失败提示“无效的升级包” 固件签名与openUBMC不匹配(如华为签名包) 使用开发者自己的证书重新签名固件
编译时报错 TypeError: stat: path should be string... 源码获取失败,git路径为空 检查网络,更新SDK和manifest分支

:white_check_mark: 四、参考资料与资源获取

内容 链接
:white_check_mark: BMC Studio用户指南 https://www.openubmc.cn/docs
:white_check_mark: 板卡适配指南 BMC Studio板卡适配指南
:white_check_mark: 硬盘背板适配 硬盘背板开发指南
:white_check_mark: GPU卡适配 GPU1.0卡适配指导
:white_check_mark: 网卡适配 网卡开发指南
:white_check_mark: 部件兼容性列表 openUBMC VPD仓库
:white_check_mark: 开源代码 GitCode - openUBMC
:white_check_mark: SDK下载 https://repo.openubmc.cn/25.09/sdk/

:white_check_mark: 五、总结

步骤 操作要点
1. 环境准备 使用BMC Studio + 正确SDK/镜像
2. 硬件建模 配置CSR模型,定义载板与模组SR文件
3. 自发现配置 推荐 IdentifyMode=3
4. 电源管理 配置 FruCtrlPowerButton 等对象
5. 传感器监控 添加传感器路径与协议适配
6. 构建出包 设置 board_name=openUBMC,完成编译
7. 测试验证 使用QEMU仿真或实机测试功能

:chequered_flag: 最终建议

  • 起步可参考社区已有的配置(如鲲鹏920/920S模组与工具载板参考代码)。
  • 积极参与社区共建,将适配成果贡献回openUBMC,丰富南向兼容生态。

如需进一步协助,请提供具体硬件型号与问题现象,以便精准定位。

  1. 先在vpd开源组件代码中 所使用的载板的sr文件作为参考
    AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台
    AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台

2.关注sr的载板信息对象、i2c链路配置,cpld升级相关对象的配置。保证加载、升级、上电等功能正常,再进行进一步的开发联调。

3.社区学习csr的配置和功能相关知识,根据自己的载板和需求,在已支持基本功能的载板sr上进行添加或修改。