对于自己的载板,如何做适配?
答案内容由AI生成,仅供参考:
五、总结
| 步骤 | 操作要点 |
|---|---|
| 1. 环境准备 | 使用BMC Studio + 正确SDK/镜像 |
| 2. 硬件建模 | 配置CSR模型,定义载板与模组SR文件 |
| 3. 自发现配置 | 推荐 IdentifyMode=3 |
| 4. 电源管理 | 配置 FruCtrl、PowerButton 等对象 |
| 5. 传感器监控 | 添加传感器路径与协议适配 |
| 6. 构建出包 | 设置 board_name=openUBMC,完成编译 |
| 7. 测试验证 | 使用QEMU仿真或实机测试功能 |
最终建议:
- 起步可参考社区已有的配置(如鲲鹏920/920S模组与工具载板参考代码)。
- 积极参与社区共建,将适配成果贡献回openUBMC,丰富南向兼容生态。
点击此处查看详细分析解答
openUBMC中如何根据载板和模组进行适配
在openUBMC平台中,针对自定义载板和模组的适配是确保BMC(Baseboard Management Controller)正常工作的关键环节。下面将详细介绍适配流程、所需工具与配置方法。
核心概念
- 载板(Carrier Board):客户自研的主板,用于承载模组(如BMC模组、GPU卡、网卡等)。
- 模组(Module):预置功能的硬件模块,例如鲲鹏1711 BMC模组。
- 适配目标:使openUBMC固件支持客户特定硬件拓扑、上下电逻辑、传感器监控、通信接口等功能。
一、载板与模组适配原则
根据社区说明,openUBMC对载板和模组的适配分为两种类型:
| 类型 | 描述 |
|---|---|
| 公共特性支持 | openUBMC默认支持通用硬件管理功能,如IP配置、日志收集、传感器基础监控等。 |
| 定制化适配 | 针对客户自己的载板或模组,需进行个性化配置,包括CSR定义、连接器识别、上下电控制、传感器数据获取等。 |
重要提示:
模组出厂自带的固件仅用于启动和升级,并不适配所有客户自研载板,必须进行BMC软件侧的适配开发,否则可能出现大量报错日志或功能异常。
二、适配流程与关键步骤
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模型)
使用BMC Studio进行可视化配置
-
打开BMC Studio
- 访问:
http://localhost:10000或通过Docker部署访问。
- 访问:
-
进入“板卡定制”模块
- 支持两种模式:
- 板卡新增:定义新器件,创建新的CSR结构。
- 板卡适配:基于已有组件库进行编排。
- 支持两种模式:
-
配置载板SR文件
- 在
platform.sr或载板专属.sr文件中定义:- 连接器(Connector)
- 电源信号(PGSignal)
- 按键(PowerButton)
- 故障记录(RecordFault)
- 过热保护(ThermTrip)
- 在
-
配置模组SR文件
- 在模组相关
.sr文件中定义:- 模组ID(
BoardId/PlatformId) - 自发现模式(
IdentifyMode=3推荐) - 功耗点(PowerPoint)
- 载板与模组间的连接关系
- 模组ID(
- 在模组相关
相关文档参考:BMC Studio板卡适配指南
3. 定义硬件自发现机制
通过 SR文件中的“IdentifyMode”字段 实现硬件自发现:
| IdentifyMode | 含义 |
|---|---|
1 |
固定BOM识别 |
2 |
固定ID识别 |
3 |
自发现模式(推荐) —— 根据硬件连接自动识别 |
建议优先使用
IdentifyMode=3,提升兼容性和易维护性。
4. 上下电功能配置(关键对象)
为实现完整的电源管理,需配置以下核心对象:
| 对象名 | 所在SR文件 | 功能说明 |
|---|---|---|
FruCtrl |
platform.sr |
控制FRU上下电 |
PGSignal |
载板SR | 电源就绪信号检测 |
PowerButton |
载 板SR | 模拟开机按钮 |
RecordFault |
模组SR | 故障记录 |
ThermTrip |
模组SR | 高温断电保护 |
若缺少任一对象,可能导致无法上下电。
5. 传感器与状态监控配置
- 定义各类传感器路径(温度、电压、风扇等),确保能正确读取。
- 对NVMe硬盘、GPU、RAID卡等设备,可能需要:
- 适配协议(如 NVMe-MI、SSD-Format)
- 添加OEM属性解析代码(部分厂商需定制驱动)
- 配置告警阈值和事件上报逻辑
参考文档:
6. 固件构建与烧录
设置 board_name 为 openUBMC
在构建命令中明确指定目标板名:
conan create . -pr=profile.ini ... -o vpd/*:board_name=openUBMC ...
或在 Conan 配置中设置:
board_name=openUBMC
此设置会触发加载对应的 Board Openubmc 目录下的配置文件,完成硬件差异化构建。
三、常见问题及解决
| 问题现象 | 原因分析 | 解决方案 |
|---|---|---|
无法ping通BMC默认IP 192.168.2.100 |
载板 PlatformId 或 BoardId 不符合预期 |
将PlatformId设为0,BoardId设为0xFF |
| 大量重复日志刷屏 | 固件未适配载板,导致设备反复探测失败 | 完成完整SR配置,避免拓扑错误 |
| 升级失败提示“无效的升级包” | 固件签名与openUBMC不匹配(如华为签名包) | 使用开发者自己的证书重新签名固件 |
编译时报错 TypeError: stat: path should be string... |
源码获取失败,git路径为空 | 检查网络,更新SDK和manifest分支 |
四、参考资料与资源获取
| 内容 | 链接 |
|---|---|
| https://www.openubmc.cn/docs | |
| BMC Studio板卡适配指南 | |
| 硬盘背板开发指南 | |
| GPU1.0卡适配指导 | |
| 网卡开发指南 | |
| openUBMC VPD仓库 | |
| GitCode - openUBMC | |
| https://repo.openubmc.cn/25.09/sdk/ |
五、总结
| 步骤 | 操作要点 |
|---|---|
| 1. 环境准备 | 使用BMC Studio + 正确SDK/镜像 |
| 2. 硬件建模 | 配置CSR模型,定义载板与模组SR文件 |
| 3. 自发现配置 | 推荐 IdentifyMode=3 |
| 4. 电源管理 | 配置 FruCtrl、PowerButton 等对象 |
| 5. 传感器监控 | 添加传感器路径与协议适配 |
| 6. 构建出包 | 设置 board_name=openUBMC,完成编译 |
| 7. 测试验证 | 使用QEMU仿真或实机测试功能 |
最终建议:
- 起步可参考社区已有的配置(如鲲鹏920/920S模组与工具载板参考代码)。
- 积极参与社区共建,将适配成果贡献回openUBMC,丰富南向兼容生态。
如需进一步协助,请提供具体硬件型号与问题现象,以便精准定位。
- 先在vpd开源组件代码中 所使用的载板的sr文件作为参考
AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台
AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台
2.关注sr的载板信息对象、i2c链路配置,cpld升级相关对象的配置。保证加载、升级、上电等功能正常,再进行进一步的开发联调。
3.社区学习csr的配置和功能相关知识,根据自己的载板和需求,在已支持基本功能的载板sr上进行添加或修改。