明确结论(分两种场景,极易混淆)
1. ❌RDK X5 绝对不能加载【X3 编译出来的 .bin】
- X3 bin:
march=bernoulli2(Bayes 一代 BPU 指令集) - X5 BPU:Bayes-e(Bayes2 二代指令集)两代 BPU 微指令集完全不兼容。 直接拷贝 X3 的.bin 到 X5 加载:
- 运行时初始化失败、报模型校验错误;
- 不存在任何兼容方案,改后缀、二进制修补均无效; ✅ 解决方案:原始 ONNX 模型,使用X5 配套 OE Toolchain,重新量化编译。
2. ✅RDK X5 可以加载【专门给 X5 编译生成的 .bin】
重点区分:后缀同样叫
.bin,但内部指令集不一样!RDK X5(地瓜机器人 D-Robotics)OE v2.x工具链同时支持两种部署产物:
- .bin(混合异构模型,hb_mapper makertbin 输出)
- 适用 Runtime:
hrt_runtime、hobot_dnn - 单模型封装,内置 BPU 指令 + CPU fallback 算子;
- 社区绝大多数 X5 示例、TROS.B 默认使用此格式。
- 适用 Runtime:
- .hbm(Horizon Binary Model,link 链接输出)
- 面向地平线车载芯片J5/J6(天工开物 HBDK4);
- 标准 hbm 在 RDK X5 上无法运行(Nash 指令集 vs Bayes-e)。
行业重大误区纠正:
.bin不是 X3 专属后缀!后缀只是名字,核心看编译时指定的 march 目标架构。
march=bernoulli2→ X3 bin(X5 不可用)march=bayes-e→ X5 bin(X5 可用)march=nash-e/nash-m→J5/J6 hbm(X5 不可用)
X5 上 .bin vs .hbm 边界汇总
表格
| 文件 | 编译目标 march | 能否在 RDK X5 加载 | 适用平台 |
|---|---|---|---|
| X3 生成 xxx.bin | bernoulli2 | ❌ 不支持 | RDK X3 / X3Pi |
| X5 工具链生成 xxx.bin | bayes-e | ✅ 原生支持 | RDK X5 |
| J5/J6 工具链生成 xxx.hbm | nash-e | ❌ 不支持 | 征程 5/J5、征程 6/J6 |
配套工程要点
- 如何快速判断一份 bin 能不能在 X5 跑?使用板端工具校验:
bash
运行
hrt_model_exec model_info --model_file xxx.bin- 正常打印张量信息 = X5 可用 bin;
- 报模型解析失败、header 非法 = X3 旧 bin,无法使用。
- yaml 编译配置关键参数(X5 生成可用 bin)
yaml
march: 'bayes-e' # 重中之重,不能写成bernoulli2 output_model_file_prefix: "model_x5"命令:
bash
运行
hb_mapper makertbin --config convert.yaml- 选型建议(RDK X5 项目)
- 快速开发、复用 hobot_dnn/TROS.B:选用X5 版.bin
- 不要尝试使用车载 J5/J6 链路去生成 hbm,两者指令集不互通。