reComputer RK3576 con acelerador M.2 DEEPX DX-M1

Última actualización:

DEEPX DX-M1 es un acelerador de IA M.2 PCIe con tres núcleos NPU y memoria LPDDR5 integrada. Este tutorial explica cómo detectar la tarjeta en un reComputer RK3576, compilar un Runtime compatible con el firmware instalado, verificar su inicialización y supervisar el estado de la NPU.

La tarjeta utilizada en esta guía ejecuta firmware v1.6.0, combinado con DX-RT v2.6.0.

Antes de empezar

Necesitas un módulo DX-M1 y acceso a una terminal con privilegios de sudo. Apaga el equipo y desconecta la alimentación antes de instalar la tarjeta M.2. Asegúrate de que el runtime coincida con la versión de firmware indicada en la tabla de configuración antes de instalar el software.

Configuración del sistema

ElementoConfiguración
HostreComputer RK3576 Dev Kit
Sistema operativoArmbian unofficial 26.05.0-trunk, Debian 12 (bookworm)
Kernel6.1.115-vendor-seeed-rk3576
AceleradorDEEPX DX-M1A M.2, LPDDR5 de clase 4 GB
Dispositivo PCIe1ff4:0001
Enlace negociadoPCIe Gen2 x1
Controlador NPUdxrt-driver-dkms 2.4.1-2
Firmware de la tarjetav1.6.0
RuntimeDX-RT v2.6.0, compilado desde la etiqueta oficial

Instalar el controlador PCIe

Descarga DX-All-Suite v2.4.2 para AArch64 Linux desde la página de software de DEEPX y copia el archivo al RK3576. Extráelo y entra en dx-runtime:

bash
tar -xzf dx-all-suite_v2.4.2.tar.gz
cd dx-all-suite/dx-runtime

Selecciona e instala el controlador utilizado en esta prueba. Este paso solo instala el controlador PCIe y no modifica el firmware de la tarjeta.

bash
ln -sfn 2.4.1 dx_rt_npu_linux_driver/release/latest
./install.sh --target=dx_rt_npu_linux_driver --exclude-fw
sudo reboot

Tras reiniciar, continúa con la comprobación del hardware. La biblioteca DX-RT compatible se compila por separado en lugar de instalar el Runtime incluido en el paquete actual.

Comprobar el hardware y el controlador

Instala el DX-M1 en la ranura M.2 PCIe, inicia el RK3576 y comprueba la función PCIe:

bash
lspci -nnk -s 01:00.0

Dispositivo PCIe y controlador DX-M1 en el terminal

Comprueba el nodo creado por el controlador:

bash
ls -l /dev/dxrt0

Nodo de dispositivo DX-M1 en el terminal

La presencia de /dev/dxrt0 confirma que el controlador PCIe ha inicializado el acelerador. Si no existe, resuelve primero el problema del controlador.

Compilar la versión compatible de DX-RT

DX-RT v3.3.0 requiere firmware v2.5.2 o posterior y no puede inicializar una tarjeta con firmware v1.6.0. DX-RT v2.6.0 establece v1.5.9 como firmware mínimo y es compatible con esta tarjeta.

Instala las herramientas de compilación:

bash
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build python3-dev git

Clona la etiqueta exacta de DX-RT. Su configuración CMake requiere pybind11 v2.12; clonarlo de forma superficial evita descargar todo el historial.

bash
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

Configura y compila para la CPU AArch64 del RK3576:

bash
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

Estos comandos no cambian la instalación DX-RT del sistema. Para la primera comprobación, usa directamente el binario y la biblioteca del directorio de compilación:

bash
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

Estado de DX-RT y DX-M1 en el terminal

Verificar el servicio Runtime

Detén cualquier servicio DX-RT incompatible antes de iniciar el del directorio de compilación. El siguiente comando termina automáticamente después de 20 segundos y no instala una unidad systemd:

bash
sudo systemctl stop dxrt
timeout --signal=TERM 20s "$HOME/dx_rt/build_aarch64/bin/dxrtd"

La inicialización correcta incluye:

text
[DXRT_SVC][DxrtService] Initialized Devices count=1
[DXRT_SVC][DxrtService] Initialized Scheduler
[DXRT_IPC][DxrtService] Initialized IPC Server

Estos mensajes indican que el Runtime ha abierto el controlador e inicializado el DX-M1.

Supervisar el estado de la NPU

DX-RT v2.6.0 incluye un modo de supervisión en dxrt-cli. Este comando lee el estado cada segundo y termina tras tres segundos:

bash
timeout --signal=INT 3s "$HOME/dx_rt/build_aarch64/bin/dxrt-cli" -m 1

Supervisión del estado de la NPU DX-M1

El monitor muestra el voltaje, la frecuencia, la temperatura y el estado de DVFS de los tres núcleos NPU.

Instalar Model Zoo (opcional)

Para consultar los modelos disponibles, instala el paquete Model Zoo y sus dependencias de Python desde el directorio DX-All-Suite extraído:

bash
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_224x224

Los modelos DXNN dependen de las versiones de DX-COM y DX-RT con las que se generaron. Antes de ejecutar un modelo, consulta la página de DEEPX Model Zoo para confirmar la compatibilidad entre el modelo, el Runtime y el firmware. Esta guía utiliza DX-RT v2.6.0 con firmware v1.6.0.

Solución de problemas

  • lspci no muestra 1ff4:0001: apaga el equipo, vuelve a instalar el módulo M.2 y comprueba la ranura PCIe y la configuración de la placa.
  • Falta /dev/dxrt0: confirma que dx_dma_pcie está cargado y admite el dispositivo.
  • DX-RT 3.x no se inicializa con firmware v1.6.0: usa la ruta v2.6.0 verificada o únicamente el procedimiento de migración de DEEPX para la revisión exacta del módulo.
  • dxtop muestra un símbolo indefinido o solicita un servicio incompatible: el dxtop instalado pertenece a otra generación de DX-RT. Usa dxrt-cli -m 1 de v2.6.0 o instala un conjunto de herramientas con versiones coincidentes.

Referencias