在 reComputer RK3576 上使用 DEEPX DX-M1 M.2 加速卡
DEEPX DX-M1 是一款带有三个 NPU 核心和板载 LPDDR5 内存的 M.2 PCIe AI 加速卡。本教程介绍如何在 reComputer RK3576 上识别加速卡、构建与板载固件匹配的 Runtime、验证 Runtime 初始化,并监控 NPU 状态。
本教程使用的加速卡固件为 v1.6.0,与之配套使用 DX-RT v2.6.0。
环境信息
| 项目 | 配置 |
|---|---|
| 主机 | reComputer RK3576 Dev Kit |
| 操作系统 | Armbian unofficial 26.05.0-trunk,Debian 12(bookworm) |
| 内核 | 6.1.115-vendor-seeed-rk3576 |
| 加速卡 | DEEPX DX-M1A M.2,4 GB 级 LPDDR5 |
| PCIe 设备 | 1ff4:0001 |
| 协商链路 | PCIe Gen2 x1 |
| NPU 驱动 | dxrt-driver-dkms 2.4.1-2 |
| 板卡固件 | v1.6.0 |
| Runtime | DX-RT v2.6.0,从 DEEPX 对应源码标签构建 |
安装 PCIe 驱动
从 DEEPX 软件下载页面下载适用于 AArch64 Linux 的 DX-All-Suite v2.4.2,然后将压缩包复制到 RK3576。解压并进入其中的 dx-runtime 目录:
tar -xzf dx-all-suite_v2.4.2.tar.gz
cd dx-all-suite/dx-runtime选择并安装与上述环境匹配的驱动版本。此步骤只安装 PCIe 驱动,不修改板卡固件。
ln -sfn 2.4.1 dx_rt_npu_linux_driver/release/latest
./install.sh --target=dx_rt_npu_linux_driver --exclude-fw
sudo reboot系统重启后继续进行下面的硬件检查。兼容的 DX-RT 用户空间库将在后续单独构建,不使用当前套件中的 Runtime。
检查硬件和驱动
将 DX-M1 安装到设备的 M.2 PCIe 插槽,启动 RK3576 后检查 PCIe 设备:
lspci -nnk -s 01:00.0
检查 DEEPX 驱动创建的设备节点:
ls -l /dev/dxrt0
出现 /dev/dxrt0 表示 PCIe 驱动已经初始化加速卡。如果该设备节点不存在,请先解决驱动问题,再构建或运行 DX-RT。
构建兼容的 DX-RT 版本
DX-RT v3.3.0 要求固件不低于 v2.5.2,无法初始化固件为 v1.6.0 的板卡。DX-RT v2.6.0 的最低固件要求为 v1.5.9,与这块板卡兼容。
安装构建工具:
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build python3-dev git克隆准确的 DX-RT 标签。其 CMake 配置需要 pybind11 v2.12,提前进行浅克隆可以避免下载不必要的完整历史:
cd ~
git clone --branch v2.6.0 --depth 1 https://github.com/DEEPX-AI/dx_rt.git
cd dx_rt
git clone --depth 1 --branch v2.12 https://github.com/pybind/pybind11.git extern/pybind11为 RK3576 的 AArch64 CPU 配置并构建 Runtime:
cmake -S . -B build_aarch64 -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain.aarch64.cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DPython_EXECUTABLE="$(command -v python3)"
cmake --build build_aarch64 --parallel 4以上命令不会修改系统中的 DX-RT 安装。首次验证时,直接使用构建目录中的程序和共享库:
export LD_LIBRARY_PATH="$HOME/dx_rt/build_aarch64/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
$HOME/dx_rt/build_aarch64/bin/dxrt-cli -s
验证 Runtime 服务
启动构建目录中的服务前,先停止不兼容的 DX-RT 服务。下面的命令在 20 秒后自动结束,不会安装 systemd 服务:
sudo systemctl stop dxrt
timeout --signal=TERM 20s "$HOME/dx_rt/build_aarch64/bin/dxrtd"初始化成功时会出现以下信息:
[DXRT_SVC][DxrtService] Initialized Devices count=1
[DXRT_SVC][DxrtService] Initialized Scheduler
[DXRT_IPC][DxrtService] Initialized IPC Server出现这些信息表示 Runtime 已经打开驱动并初始化 DX-M1。
监控 NPU 状态
DX-RT v2.6.0 的 dxrt-cli 提供监控模式。下面的命令每秒读取一次设备状态,并在三秒后结束:
timeout --signal=INT 3s "$HOME/dx_rt/build_aarch64/bin/dxrt-cli" -m 1
监控界面会显示三个 NPU 核心的电压、频率、温度和 DVFS 状态。
安装 Model Zoo(可选)
如需浏览可用模型,可以从已经解压的 DX-All-Suite 目录安装 Model Zoo 包及其 Python 依赖:
sudo apt-get install -y python3-venv
cd ~/dx-all-suite/dx-modelzoo
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
dxmz list
dxmz info resnet50_224x224DXNN 模型与生成它的 DX-COM 和 DX-RT 版本相关。运行模型前,请根据 DEEPX Model Zoo 页面确认模型、Runtime 和固件版本兼容。本教程使用 DX-RT v2.6.0 和固件 v1.6.0。
故障排查
lspci中没有1ff4:0001:关闭整机电源,重新安装 M.2 模块,然后检查 M.2 PCIe 插槽和主板固件配置。/dev/dxrt0不存在:确认dx_dma_pcie驱动已经加载,并且驱动版本支持该设备。- 固件为
v1.6.0时 DX-RT 3.x 初始化失败:使用本文验证的 v2.6.0 方案;只有在 DEEPX 明确支持当前模块 revision 的迁移流程下才升级固件。 dxtop报告未定义符号或要求不兼容的服务:系统中的dxtop属于其他 DX-RT 版本。使用上面的 v2.6.0dxrt-cli -m 1,或者安装版本完全匹配的工具套件。