HUAYUN IOT · developers/docs · BSP + 模型部署手册 /iot/docs.html · 已合并至开发者中心 ·模型工具链 ·快速开始 ·BSP 架构
developers/docs · BSP + 模型部署手册 · v2.4.0 · 2026-05-13

BSP + 模型部署手册
从板级支持到量产部署,一本手册跑通

本手册已合并至 developers/docs,是 模型工具链 的配套实施篇。覆盖 Bootloader → Kernel → 驱动 → Rootfs → NPU 运行时 的 BSP 全栈,以及 量化 → 编译 → 仿真 → 在环 → OTA 的模型量产闭环。提供可复制的命令、版本化产物与排障清单。

BSP: Yocto Kirkstone / Buildroot 2024.02 · Linux 5.15 LTS板型: HY-Edge X1 (NPU-v2) · HY-Gateway G3 · HY-MCU M55工具链: huayun-cli ≥ 2.4 · aarch64 / riscv64
Handbook Map · 合并说明

一本手册,串起 BSP 与模型两条主线

此前分散在 docs.html 的设备接入文档已收敛:通用接入内容 → devices.html / platform.htmlBSP 与模型部署 → 本手册 (developers/docs)工具链原理 → developers.html。三处相互链接,不再重复。

PART A — BSP● 稳定 v2.4

板级支持包 BSP

Bootloader、Kernel、Device Tree、驱动、Rootfs 的版本化构建与定制。含 Yocto / Buildroot 双构建流与 A/B 分区。

  • U-Boot 2023.10 + Secure Boot
  • Linux 5.15 LTS + PREEMPT_RT
  • 驱动矩阵与 Device Tree 覆盖
查看架构
PART B — MODEL● 与工具链对齐

模型量产部署

与 developers.html 五段流水线一一对应:量化、编译、仿真、在环、OTA。产物直接落入 BSP 镜像的 /data/models

  • PTQ / QAT 量化,INT8/INT4 混合精度
  • 面向 NPU-v2 / M55 的图优化编译
  • 仿真预演 → 在环真测 → 灰度 OTA
进入部署
MERGED● 已合并

developers/docs 定位

本文档即 developers/docs。访问 /iot/docs.html/iot/developers.html#docs 指向同一手册,统一由开发者中心维护。

迁移提示: 旧版“文档中心”卡片与协议速查表已移至对应产品页;本手册仅保留可执行的 BSP + 部署路径。
回到开发者中心
15 min
从空板到首帧推理(BSP 已烧录)
-74%
INT8 量化体积压缩 · mAP 损失 <1%
×2.7
编译图优化加速比(NPU-v2 @1GHz)
99.76%
OTA 灰度到达率 · A/B 回滚兜底
BSP Architecture · 板级支持全貌

BSP 五层模型:每一层都可独立版本化

BSP 不是一个镜像,而是五层产物的组合。每一层都有独立的仓库、版本与校验,支持单层增量升级与回滚。

Bootloader

U-Boot 2023.10
Secure Boot / A/B

v2023.10-hy2

Kernel

Linux 5.15 LTS
Device Tree + RT

5.15.148-rt

Drivers

NPU / ISP / VPU
Wi-Fi / 4G / CAN

drivers-2.4.0

Rootfs

Yocto / Buildroot
systemd / OTA Agent

rootfs-kirkstone-2.4

Runtime

libhy-npu / hy-rt
模型加载与调度

runtime-2.4.1
构建: huayun bsp build --board hy-edge-x1产物: hy-edge-x1_v2.4.0.img + bsp-manifest.json校验: SHA256 + ECDSA支持单层 OTA 差分 · 失败自动回退 A 槽
SUPPORTED BOARDS

支持板型矩阵

同一套 BSP 构建流,多板型同源管理。

板型SoC / NPU内核Rootfs状态
HY-Edge X1NPU-v2 @1 GHz5.15-rtYocto量产
HY-Gateway G3Cortex-A55 + NPU-v15.15Yocto量产
HY-MCU M55Cortex-M55 + Helium5.15-rt / FreeRTOSBuildroot量产
HY-EVB R1RISC-V 64 + NPU-v25.15BuildrootEVT
REPO LAYOUT

BSP 仓库结构

mono-repo + submodules,repo manifest 锁定版本。

bsp-huayun/ ├─ bootloader/ u-boot-2023.10 + hy-patches + env/ ├─ kernel/ linux-5.15/ + dts/overlays/ + fragments/ ├─ drivers/ npu/ isp/ vpu/ wifi/ modem/ can/ ├─ rootfs/ yocto/ buildroot/ + layers/meta-huayun ├─ runtime/ libhy-npu/ hy-rt/ tools/hy-profiler ├─ tools/ huayun-cli/ flash-tool/ ota-packer └─ manifest/ bsp-manifest.json · SBOM
看构建命令
DELIVERABLES

一次构建,六类产物

全部写入 out/hy-edge-x1/,由 bsp-manifest.json 索引。

产物文件说明
Bootloaderu-boot.bin + env.binA/B 槽,支持回滚
KernelImage + *.dtb含 Device Tree Overlays
Rootfsrootfs.ext4 / squashfs只读 + 可写叠加层
镜像hy-edge-x1_v2.4.img可直接烧录
SDKsdk-aarch64.sh交叉工具链 + sysroot
清单bsp-manifest.json版本/SHA256/签名
Quickstart · 30 分钟跑通

从空板到首帧推理,只需三步

假设你已有一块 HY-Edge X1 开发板与一台 Ubuntu 22.04 主机。BSP 已编译好镜像,模型为 YOLOv8n。

获取 BSP 与工具链

拉取 manifest,安装 huayun-cli,校验签名。
约 5 分钟 · 含依赖安装

编译与烧录

一键构建或直接烧录官方镜像,启动后串口可见登录。
约 10 分钟 · 首次构建约 18 分钟

部署模型并推理

量化→编译→推送至板端,运行 demo 看到首帧结果。
约 15 分钟 · 含校准与编译

在环校验与 OTA

板端 profiler 对齐仿真,确认后打包 OTA 灰度发布。
可选 · 流水线自动完成

host — 获取与烧录Ubuntu 22.04
# 1) 安装 huayun CLI
curl -fsSL https://get.huayuniot.com/cli | bash
huayun env check           # 校验宿主机依赖
huayun auth login --token $HUAYUN_TOKEN

# 2) 拉取 BSP(manifest 锁定版本)
repo init -u https://manifest.huayuniot.com/bsp -b v2.4.0
repo sync -j8
huayun bsp verify --manifest bsp-manifest.json  # 验签

# 3) 烧录官方镜像(跳过本地编译)
huayun flash --board hy-edge-x1 \
  --image out/hy-edge-x1/hy-edge-x1_v2.4.0.img --port /dev/ttyUSB0

# 串口登录:user/huayun  IP: 192.168.1.10(USB-RNDIS)
host — 模型部署到板端一键流水线
# 4) 量化 → 编译 → 推送 → 在环(与 developers.html 一致)
huayun pipeline run \
  --model yolov8n.onnx --calib coco_calib_500/ \
  --target npu-v2 --board hy-edge-x1 \
  --hil auto --ota-diff --from v2.3.0

# 流水线产物自动落入 BSP 叠加层:
#   /data/models/yolov8n_npu-v2.hyb
#   /data/models/yolov8n.json (meta)

# 5) 板端首帧推理(SSH 到板子)
ssh user@192.168.1.10
hy-rt run --model /data/models/yolov8n_npu-v2.hyb \
  --input /data/samples/bus.jpg --dump result.json
cat result.json | jq .latency_ms
# → 3.18 ms  mAP 0.408  ✓
首次本地编译 BSP(可选): huayun bsp build --board hy-edge-x1 --variant yocto --jobs 8 首次约 18 分钟,二次增量约 2 分钟;产物含交叉 SDK sdk-aarch64.sh,可在宿主机交叉编译你的应用。
System Bring-up · 系统构建详解

Bootloader、Kernel、Rootfs:分层定制不踩坑

按层定制,按层验证。每一层都有最小可启动验证,避免一次性集成爆炸。

LAYER 1Secure Boot

Bootloader — U-Boot 2023.10

支持 A/B 槽、recovery、USB 烧录与 ECDSA 验签。环境变量分区独立,OTA 不覆盖。

u-boot envhy-edge-x1.h
#define BOOT_A  "mmc 0:2"
#define BOOT_B  "mmc 0:4"
bootcmd=run boot_a; if test $? -ne 0; then run boot_b; fi
verify  yes  # ECDSA 验签内核与 dtb
  • 串口 115200 / USB DFU 二选一烧录
  • 看门狗 30s,启动失败自动切 B 槽
  • env 独立分区,支持 fw_setenv 在线改参
LAYER 25.15-rt

Kernel & Device Tree

基于 5.15 LTS,合入 PREEMPT_RT 补丁;所有外设通过 Device Tree 描述,支持 overlays。

dts overlaynpu-v2.dtsi
&npu {
  compatible = "huayun,npu-v2";
  reg = <0x0 0x58000000 0x0 0x100000>;
  interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  clocks = <&clk_npu>; // 1 GHz
  status = "okay";
};
  • kernel/fragments/huayun.config 增量配置,不改 defconfig
  • dts/overlays/ 按板型叠加,开箱即用
  • huayun bsp kernel-menuconfig 可视化裁剪
LAYER 3已对齐

Rootfs — Yocto / Buildroot

双构建流可选:Yocto 适合多机型矩阵,Buildroot 适合极简启动。均已预置 OTA Agent 与 NPU 运行时。

构建启动时间镜像大小适用
Yocto Kirkstone~4.8 s1.2 GB ext4网关/边缘一体机
Buildroot 2024.02~1.9 s38 MB squashfsMCU/极简终端
1

只读 Rootfs + 可写叠加

/ 为 squashfs 只读,/data 为 ext4 可写。OTA 直接替换只读层。

2

预置服务

hy-ota-agenthy-npu-daemonhy-profiler 开机自启。

驱动内核模块版本接口校验方式
NPU-v2hy_npu.ko2.4.1/dev/hy-npu0 + libhy-npu.so板端 hy-npu-test --burn 100
ISP / Camerahy_isp.ko1.8.3V4L2 /dev/video0-3v4l2-ctl --stream-mmap
VPU 编解码hy_vpu.ko1.6.0V4L2 M2Mhy-vpu-bench
Wi-Fi / BTrtl88x2cs.ko5.12cfg80211iw dev wlan0 scan
4G Modemqmi_wwanqmi / ATuqmi -d /dev/cdc-wdm0
CAN / RS485mcp251x / 8250SocketCAN / ttyS*candump can0
调试接口: UART0 (115200, 8N1) 为主控制台;USB-C RNDIS 提供 192.168.1.10 网口;JTAG (SWD) 保留在板底测试点,量产版默认熔断。板端日志 journalctl -u hy-npu-daemon -f
Model Deployment · 模型量产部署

与工具链同构的五段部署

本节是 developers.html 五段流程 的 BSP 落地版。同样的命令,同样的产物,只是多了一个 --board,让模型直接落盘到可烧录镜像。

01 QUANTIZE

量化

校准集 200~1k 张,KL/MSE 自动择优,逐层 SNR 可视化。

INT8INT4PTQQAT
02 COMPILE

编译

算子融合、内存复用、布局转换,多 target 秒级切换。

NPU-v2M55O2
03 SIMULATE

仿真

主机侧数值+时序仿真,热力图定位误差层。

cos 0.992SNR 31dB
04 HIL + DEPLOY

在环与落盘

真机 profiler + 自动落入 /data/models,即刻推理。

3.18 msA/B 槽
量化 → 编译 → 仿真(主机侧)与 developers 一致
# 1) 量化(PTQ,200 张校准集,KL 散度)
huayun quantize \
  --model yolov8n.onnx --calib coco_calib_500/ \
  --precision int8 --metric kl --per-channel --export-report
# → yolov8n_int8.onnx  + quant_report.html
# 体积 12.4 MB → 3.2 MB (-74%)  mAP 0.412 → 0.408

# 2) 编译到 NPU-v2(同模型可多编译)
huayun compile \
  --model yolov8n_int8.onnx --target npu-v2 --opt O2 \
  --memory-plan reuse --dump-perf
# LAT 8.4 ms → 3.1 ms  MEM 4.8 MB → 3.1 MB  融合 24→16 ops

# 3) 主机侧仿真(不上板)
huayun simulate \
  --artifact yolov8n_npu-v2.hyb --samples val_200/ --mode numeric+timing
# cos_sim mean 0.992  min 0.978 (layer14)  SNR 31.4 dB
在环 → 落盘 → 板端推理BSP 特有
# 4) 在环真测 + 自动部署到板端 /data/models
huayun hil run \
  --artifact yolov8n_npu-v2.hyb \
  --device npu-v2@192.168.1.10 \
  --samples val_200/ --profile --deploy
# 部署路径:/data/models/yolov8n_npu-v2.hyb (board /data)
# HIL: p50 3.18 ms p95 3.42 ms  NPU 87%  DDR 1.2 GB/s
# 准确率 mAP 0.406 (Δ -0.002 vs 仿真)  HIL 通过 184/200

# 5) 板端推理(或宿主机远程)
huayun hil replay --case fail_07.jpg  # 异常回灌
hy-rt run --model /data/models/yolov8n_npu-v2.hyb --input bus.jpg
# 一键流水线等价:
huayun pipeline run --model yolov8n.onnx --calib coco_calib_500/ \
  --target npu-v2 --board hy-edge-x1 --hil auto --deploy
产物落盘约定(BSP Rootfs 已预置): 模型 /data/models/<name>_<target>.hyb/.bin,元信息 /data/models/<name>.json(含输入尺寸、后处理、量化参数),样例 /data/samples/。应用通过 libhy-npu.sohy-rt 加载,无需关心路径细节。
Board Integration · 板端集成清单

模型不是文件,是系统的一部分

从文件权限、系统服务到 A/B 分区,逐项勾选,避免“板上能跑、量产就崩”。

文件布局与权限

/data/modelshy_npu:hy_npu (770),SELinux 标记 hy_model_t。避免 world-writable。

系统服务自启动

模型服务由 systemd 管理,NPU 就绪后拉起,失败自动重试 3 次。

资源预留

/data 至少预留 2× 模型大小;内存 cgroup 为推理进程预留 64 MB。

A/B 模型槽

/data/models/a / /data/models/b 双槽,OTA 切换原子操作,回滚 <1s。

健康检查

开机自检:hy-npu-test --quick + 模型 warmup 3 帧,失败上报云端。

检查项命令预期
驱动就绪ls /dev/hy-npu*出现 /dev/hy-npu0
运行时版本hy-rt --versionbsp-manifest.json 一致
模型完整性hy-rt verify --model *.hybSHA256 + 签名 OK
首帧延迟hy-rt bench --model *.hyb --warmup 3p50 < 4 ms (X1)
内存占用cat /proc/meminfo推理期峰值 < 50 MB
board — systemd 服务示例/etc/systemd/system/hy-model.service
[Unit]
Description=HuaYun Model Runtime
After=hy-npu-daemon.service network.target
Requires=hy-npu-daemon.service

[Service]
Type=simple
User=hy_npu
Group=hy_npu
ExecStartPre=/usr/bin/hy-npu-test --quick
ExecStart=/usr/bin/hy-rt serve \
  --model /data/models/yolov8n_npu-v2.hyb \
  --config /data/models/yolov8n.json \
  --port 5100 --workers 2
Restart=on-failure
RestartSec=3
MemoryMax=256M

[Install]
WantedBy=multi-user.target
host — 叠加到 Rootfs 再打包镜像CI 中使用
# 将模型叠加进 Rootfs 再出厂镜像(CI)
huayun bsp overlay \
  --board hy-edge-x1 \
  --add-model yolov8n_npu-v2.hyb:/data/models/ \
  --add-config yolov8n.json:/data/models/
huayun bsp build --board hy-edge-x1 --pack
# → hy-edge-x1_v2.4.0+model.img  开机即推理
Validation & Tuning · 验证与调优

仿真对齐在环,数据对齐体感

性能不是实验室数字。板端 Profiler 的火焰图、带宽与功耗,才是量产依据。

PROFILER

板端 Profiler 火焰图

逐算子 latency、NPU 利用率、DDR 带宽与功耗,异常帧一键回灌。

board — profilerhy-profiler 2.4
hy-profiler --model yolov8n_npu-v2.hyb --duration 10s
#  NPU 87%  DDR 1.2 GB/s  功耗 2.8 W
#  Top ops:
#   Conv_12  0.42 ms 38% | DwConv 0.18 ms 16%
hy-profiler --export flame.html && open flame.html
ACCURACY

精度对齐清单

仿真与在环的余弦、SNR、mAP 需在阈值内,否则回溯量化。

指标阈值当前
余弦相似度 mean> 0.9850.992
SNR> 28 dB31.4 dB
mAP Δ (在环-量化)< 0.008-0.002
Top-5 误差层无塌陷 (<0.95)min 0.978
定位精度塌陷 →
TUNING

调优三板斧

先量化、再编译、最后调度。每一步都可单独回归。

  • 量化侧: 敏感层回退 FP16,校准集加难例
  • 编译侧: --opt O2 → O3,开启 Winograd
  • 调度侧: 双缓冲 + 流水,NPU/CPU 异构重叠
经验值(X1/NPU-v2): YOLOv8n INT8 3.18 ms,YOLOv8s 5.6 ms,ResNet50 2.1 ms。开启双缓冲可再降 12% 延迟。
OTA · 规模化交付

差分、灰度、签名、回滚——一个都不能少

BSP 与模型分别打包、联合编排。BSP 走 A/B 分区替换,模型走双槽切换,失败均可秒级回滚。

DELTA

差分升级

二进制差分,平均流量仅全量的 12~15%,千台设备节省 85% 带宽。

host — 生成差分包ota-packer
huayun ota build --board hy-edge-x1 \
  --from v2.3.0 --to v2.4.0 --diff --sign
#  BSP diff  48 MB → 5.2 MB (-89%)  signed ✓
#  Model diff 3.2 MB → 418 KB (-87%) signed ✓
huayun ota upload --file ota_v2.4.0_diff.bin
ROLLOUT

灰度与熔断

按地域/批次/机型灰度,错误率超阈值自动熔断回滚。

host — 灰度发布canary
huayun ota rollout \
  --version v2.4.0 --strategy canary:1%→10%→100% \
  --auto-rollback error>2% --timeout 48h
huayun ota status v2.4.0
#  进度 1% ✓  10% ✓  100%  成功率 99.76%
SAFETY

安全与可信

全链路签名、板端验签、防回滚计数与断点续传。

  • ECDSA P-256 签名 + X.509 证书链
  • TLS 1.2+ 传输,断点续传 + 哈希校验
  • 防回滚:rollback_version < anti-rollback 拒绝
  • 看板:成功率、失败码分布、熔断日志
分区策略: Bootloader A/B + Rootfs A/B + /data 可写。BSP 升级替换非活跃槽,重启切换;模型升级切换 a/b 槽,无需重启。
SDK & API · 速查

C / Python / REST,一处集成

BSP 驱动与模型运行时提供统一 SDK。宿主机交叉编译,板端直接链接。

API / 命令说明头文件 / 包
BSP / NPUhy_npu_init() / hy_npu_run(model, in, out)同步推理,零拷贝输入libhy-npu.so / hy_npu.h
BSP / 系统huayun-bsp-info --json读取 BSP 五层版本与 SHA256板端 /usr/bin/huayun-bsp-info
Runtimehy-rt run --model *.hyb --input img.jpg命令行一键推理hy-rt
Runtime / Chy_rt_load() / hy_rt_infer() / hy_rt_unload()长驻服务推荐hy_runtime.h
Pythonfrom hy_npu import Model; m.infer(img)与 C 运行时同后端pip install hy-npu
RESTPOST /v1/models/{id}/infer板端 hy-rt serve 暴露http://192.168.1.10:5100
OTAhy-ota-agent status / logs升级状态与失败码hy-ota-agent
C — 同步推理sdk-aarch64
#include "hy_npu.h"
hy_model_t *m = hy_npu_load("/data/models/yolov8n_npu-v2.hyb");
hy_tensor_t in = { .data = img, .size = 640*640*3 };
hy_tensor_t out;
hy_npu_run(m, &in, &out);          // 3.1 ms @ NPU-v2
hy_npu_unload(m);
Python — 批量推理hy-npu 2.4
from hy_npu import Model
m = Model("/data/models/yolov8n_npu-v2.hyb")
for img in dataset:
    r = m.infer(img)                # dict: boxes, scores
    print(r["latency_ms"], r["boxes"][:1])
交叉编译: source /opt/hy-sdk/environment-setup-aarch64-huayun-linux 后,$CC a.c -lhy-npu -o a 即可。SDK 已在 sdk-aarch64.sh 中提供,CI 可直接 huayun bsp sdk --board hy-edge-x1 生成。
Troubleshooting · 排障与 FAQ

量产前必读的十个坑

按 “现象 → 根因 → 命令 → 解决” 编排,支持在 huayun bsp doctor 中自动检测 7 项。

板子无法启动,串口无输出 Bootloader
根因: 烧录中断 / env 损坏 / 电源不足。
排查: huayun flash --verify 校验镜像;短接 BOOT 键进 DFU 模式重烧;测量 5V/3A 供电。
恢复: huayun flash --board hy-edge-x1 --image hy-edge-x1_v2.4.0.img --force
内核启动卡在 “Starting kernel ...” Kernel / DT
根因: Device Tree 与板型不匹配。
排查: 确认 dtb 名称 hy-edge-x1.dtb 与板型一致;huayun bsp verify --board hy-edge-x1 校验 manifest。
解决: 重新 repo synchuayun bsp build --board hy-edge-x1 --kernel-only
/dev/hy-npu0 不存在,推理报 ENODEV Drivers
排查: dmesg | grep hy_npu / lsmod | grep hy_npu / journalctl -u hy-npu-daemon
常见: 内核未启用 NPU 配置 CONFIG_HY_NPU=m;电源域未打开 hy-pm npu on;签名不匹配导致模块拒绝加载。
量化后 mAP 掉 3 个点以上 Quantize
解决: 查看 quant_report.html 逐层 SNR,标红层回退 FP16;校准集换为难例分布(加夜景/小目标);切 QAT 微调 3 epoch。
huayun quantize --mixed-precision auto --fallback fp16 --layers 14,22
仿真 pass 但在环精度掉点 HIL
根因: 预处理不一致 / 输入归一化差异。
排查: 对比主机与板端 preprocess.yaml,确认 mean/stdresizeBGR/RGB 完全一致;用 huayun hil replay --case fail_07.jpg --dump-tensors 比对中间张量。
首帧延迟抖动大(p95 > p50 ×1.5) Runtime
优化: 启用双缓冲与 NPU 预热 --warmup 3;关闭 CPU 频控 hy-pm performance;将推理线程绑定大核 taskset -c 4-7 hy-rt run ...
OTA 升级后回滚,日志 “anti-rollback” OTA
说明: 目标版本低于板端防回滚计数。
解决: 检查 bsp-manifest.jsonrollback_version;量产切勿随意递增防回滚值;测试板可 huayun bsp rollback-reset --force(会熔断安全)。
如何一键体检? Doctor
命令: huayun bsp doctor --board hy-edge-x1 --model yolov8n_npu-v2.hyb 自动检测:驱动、运行时版本、模型签名、首帧延迟、内存、OTA Agent 与分区健康,并输出 doctor.html 报告。

手册已合一,流水线已就绪

本手册与 developers.html 同源维护。提交 issue 或 PR 时,请同时更新两处流水线示例,确保 命令可复制、产物可复现、版本可追溯