请教一下前辈,硬件自发现的功能

术语表 | 文档中心 | openUBMC 这里描述硬件自发现

硬件自发现

启动时,会自动发现支持天池协议的组件,支持不同产品的灵活配置。

是不是openUBMC只能选用支持天池协议的组件(比如风扇,电源,Raid卡,GPU算力卡)。如果自己选的组件,就需要自己包硬件的驱动进去?

答案内容由AI生成,仅供参考:
:white_check_mark: 总结:回答您的原始问题

“是不是 openUBMC 只能选用支持天池协议的组件?如果自己选的组件,就需要自己包硬件的驱动进去?”

答:

  1. 否,openUBMC 不强制只用天池组件。

    • 天池组件的优势在于:支持 硬件自发现、自动注册、零配置接入
    • 非天池组件也可以使用,但需手动适配。
  2. 是,若使用自选组件,必须自行提供驱动和配置文件。

    • 需将驱动集成到 component_drivers
    • 提供符合规范的 CSR 配置文件;
    • 确保 hwdiscovery 支持其版本(建议 ≤ 4.00);
    • 最终通过 Conan/CMake 构建系统打包进固件。
  3. 建议开发流程:

    • 优先选择天池协议组件以降低开发成本;
    • 如必须使用自定义硬件,请按照 openUBMC 的 CSR 规范和驱动框架进行适配;
    • 可借助 QEMU 模拟环境提前验证发现与驱动加载逻辑。
点击此处查看详细分析解答

关于 openUBMC 硬件自发现与组件兼容性问题的解答

根据您提供的资料和问题,我们可以从 硬件自发现机制组件驱动支持策略 两个方面来详细分析您提出的问题。


:magnifying_glass_tilted_left: 1. 硬件自发现(Hardware Self-Discovery)的功能解析

:white_check_mark: 核心机制说明:

根据知识库中《术语表》文档中的描述:

“启动时,会自动发现支持天池协议的组件,支持不同产品的灵活配置。”

这表明 openUBMC 的 硬件自发现功能主要针对“支持天池协议”的组件。在系统上电或启动过程中,openUBMC 会通过 hwdiscovery 模块自动扫描和识别符合该协议的硬件设备。

这类组件包含但不限于:

  • 风扇模块(Fan)
  • 电源单元(PSU)
  • RAID 控制器
  • GPU 算力卡
  • EXU、BCU、IEU 等天池架构下的功能单元

:pushpin: 参考资料:Qemu资料汇总提到 QEMU 支持对 EXU、BCU、IEU 等组件的“天池自发现”,并能加载其 CSR 文件进行管理。


:gear: 2. 自发现依赖的核心技术:CSR 与 SR 配置文件

硬件自发现并非“魔法”,它依赖于以下关键技术:

技术 功能说明
CSR (Component Self-Description Record) 描述硬件组件自身属性的配置文件,如类型、位置、I2C 地址、协议版本等。hwdiscovery 服务通过读取 CSR 文件识别硬件对象。
SR (System Resource File) 包含系统级资源定义,用于初始化和注册硬件对象树。hwcomponent.lua 脚本负责加载并处理 SR 文件。

:light_bulb: 举例说明:

  • 如果一个 RAID 卡是“天池兼容”的,它的 VPD 区域就会携带格式为 5.0 的 CSR 文件(参考 component_drivers 支持 CSR 5.0);
  • hwdiscovery 在启动时读取这些信息,调用 hwcomponent.lua 脚本完成组件注册;
  • 最终该 RAID 卡可被 BMC 正常管理。

:link: 关键关系:
hwdiscovery → 读取 CSR/SR 文件 → 通过 hwcomponent.lua 执行 self-discovery → 动态创建硬件对象(如 Connector_EXU_1_01


:red_question_mark:3. 是否只能使用支持天池协议的组件?

:cross_mark: 不完全正确 —— 您的理解有一定偏差。

openUBMC 优先支持“天池协议”组件以实现自动化管理,但 并不完全排斥非天池组件

:white_check_mark: 实际策略如下:

场景 是否支持 实现方式
使用天池协议组件 :white_check_mark: 强烈推荐 即插即用,无需额外开发,支持自动发现、自动注册、统一建模。
使用自选硬件组件(非天池) :white_check_mark: 支持,但需手动适配 必须提供相应的 CSR 配置文件设备驱动程序,才能被系统识别和管理。

:pushpin: 结论:

不是“必须用天池组件”,而是 只有天池组件才能享受“自动发现 + 零配置接入”的便利
如果您选用自定义组件(如某厂商定制电源、特制 FPGA 模块),只要按规范提供驱动和配置文件,依然可以集成进 openUBMC。


:light_bulb:4. 如果使用自己的组件,是否需要打包驱动?

:white_check_mark: 是的,通常需要您自己提供驱动并集成到系统中。

实现路径如下:

第一步:编写或集成驱动

  • 将您的硬件驱动代码放入 component_drivers 目录下;
  • component_drivers 是 openUBMC 中专门管理硬件驱动的子项目,支持芯片层、总线层(如 I2C、PCIe)驱动;
  • 示例:Conan 包 component_drivers/1.2.74@openubmc/stable 明确包含 I2C 传感器驱动代码。

第二步:添加 CSR 配置文件

  • 为您自定义的组件创建 .csr 文件,描述其属性(UID、Slot、I2cAddr、ChipType 等);
  • 将其放入 VPD 仓库对应路径下,例如:
    vendor/Huawei/Server/Kunpeng/openUBMC/platform.sr
    

第三步:确保 hwdiscovery 可加载

  • hwdiscovery 会根据 CSR 的 FormatVersion 判断是否加载;

  • :warning: 注意:根据 huangzhiyu 用户的说明:

    hwdiscovery 目前仅支持 FormatVersion < 4.00 的 CSR 文件

    所以如果您的 CSR 版本过高(如 5.0),可能需要降级或确认系统是否已适配。

第四步:构建与打包

  • 使用 Conan + CMake 构建系统将驱动和配置打包进固件镜像;
  • 若是 QEMU 开发环境,还需在 manifest.yml 中声明依赖 qemu_drivers 或自定义驱动包。

:puzzle_piece: 补充说明:非天池组件也能升级固件(示例)

参考“【已评审】支持非天池单板上的vrd升级”文档:

  • 即使不是天池架构,openUBMC 也能通过新增私有属性(如 Protocol: "SMC""PMBus"I2C Address)与电源芯片直接通信;
  • 这证明 openUBMC 对 非标准硬件具有良好的可扩展性,只需合理建模即可支持。

:white_check_mark: 总结:回答您的原始问题

“是不是 openUBMC 只能选用支持天池协议的组件?如果自己选的组件,就需要自己包硬件的驱动进去?”

答:

  1. 否,openUBMC 不强制只用天池组件。

    • 天池组件的优势在于:支持 硬件自发现、自动注册、零配置接入
    • 非天池组件也可以使用,但需手动适配。
  2. 是,若使用自选组件,必须自行提供驱动和配置文件。

    • 需将驱动集成到 component_drivers
    • 提供符合规范的 CSR 配置文件;
    • 确保 hwdiscovery 支持其版本(建议 ≤ 4.00);
    • 最终通过 Conan/CMake 构建系统打包进固件。
  3. 建议开发流程:

    • 优先选择天池协议组件以降低开发成本;
    • 如必须使用自定义硬件,请按照 openUBMC 的 CSR 规范和驱动框架进行适配;
    • 可借助 QEMU 模拟环境提前验证发现与驱动加载逻辑。

:books: 推荐学习资源


如有进一步具体硬件型号或场景,欢迎继续提问!

非天池组件,Connector的IdentifyMode用2,把bom、id、auxid填上,csr仓里配上,打包到环境上也可以加载。

谢谢指导。

如果自己采购的服务器风扇。不知道如何填写风扇的bom、id、auxid,

可以问下厂商,应该会有说明的