我想更换开发板上的驱动,但是不知道如何替换 bmc_sdk 中的默认驱动,并且也需要 bmc_sdk 中内核使用的内核树来编译新驱动。
请问有没有什么方法可以实现? 目前 openUBMC 只支持一种BMC硬件吗?使用新的硬件如何适配?
我想更换开发板上的驱动,但是不知道如何替换 bmc_sdk 中的默认驱动,并且也需要 bmc_sdk 中内核使用的内核树来编译新驱动。
请问有没有什么方法可以实现? 目前 openUBMC 只支持一种BMC硬件吗?使用新的硬件如何适配?
答案内容由AI生成,仅供参考:
根据现有信息,直接替换 bmc_sdk 中默认驱动并自行编译新驱动存在较大限制,主要原因如下:
openUBMC 采用解耦开发模式,其 SDK 和底层 BMC 内核代码是分离的。9):“因为提供的是解耦开发。openubmc代码和sdk是解耦。请到应用下载里面下载bmc_sdk组件代码”。5),当前操作系统采用的是 RTOS 版本(Linux 内核版本 5.10),如果需要加载驱动,可以考虑通过用户态驱动进行加载。.ko 文件,原则上可以使用 insmod 命令加载,但由于 SDK 环境和 RTOS 版本的紧密耦合,重新编译的驱动必须与 SDK 使用的 RTOS 版本完全一致,否则会因版本不匹配导致加载失败(参考搜索结果 8)。BMC SDK 以二进制形式(.zip 文件)分发,不包含完整的、可用于编译的内核树。替代方案建议:
/dev/ 接口与硬件通信,规避内核模块编译问题。否,openUBMC 已设计为支持多种硬件,但核心 BMC 芯片目前适配有限。
3:“当前还没有适配其他BMC芯片的规划”)。虽然不能更换底层 BMC 芯片,但 openUBMC 的设计目标是简化服务器内其他组件的硬件适配。您可以适配以下类型的硬件:
| 硬件类型 | 适配说明 |
|---|---|
| GPU 卡 | 可定义 CSR 文件,实现管理、监控和状态上报。非 NVIDIA GPU 需参考特定规范开发代码。 |
| 硬盘/硬盘背板 | 可通过配置 BDF 等信息进行匹配和管理。 |
| 网卡 | 支持 LLDP、OEM 属性适配、OCP 网卡等场景。 |
| RAID 卡、风扇、传感器 | 作为常见带外管理对象,均在 BMC 的管理范围内。 |
10)。10 和 7)。BMC Studio)。您无法轻易地为一个根本不同的 BMC 芯片(如 ast2400e)替换 bmc_sdk 中的内核驱动,因为核心支持有限且内核源码不开放。然而,openUBMC 的强大之处在于,一旦底层平台确定,它可以通过定义 CSR 和编写上层逻辑来高效地适配各种服务器内部的扩展硬件(如 GPU、网卡、硬盘等),这已经满足了绝大多数服务器 OEM 厂商的需求。对于全新的底层硬件平台,建议关注社区未来的技术路线图或直接参与技术委员会(TC)提出需求。
相关链接:
可以使用sdk的编译工具链把ko编出来,然后打包,在rootfs_user还是manifest里面修改启动脚本,用insmod或者modprobe来加载驱动。
dts我记得是可以复用开发板自带的那个
理论上可行,但是没实际操作,可能需要一定的验证调试。
你是要替换哪个驱动?
首先,开发板上的驱动是可以进行替换的。分为两种情况:
1、你想基于当前的硬件,重新开发驱动文件,可以参考 AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台 中的描述。在Qemu平台中我们也使用了自定义的驱动去替代当前openUBMC中的实际驱动程序。
2、如果你想创建目前UBMC中没有的硬件,你可以参考Hi3093原本提供的openeuler版本中的驱动,确定是否有相同的驱动。
dts的你可以直接复用Hi3093所提供的dts。
主要是调试用,已在 qemu 下面重新编译了 i2c_drv,然后替换到了 bmc_sdk 中。