Saltar al contenido principal

Crear y flashear una imagen Yocto para reComputer Super

Esta guía compila una imagen Yocto de Seeed para reComputer Super J401 con un módulo Jetson Orin NX de 16 GB y la flashea en la unidad NVMe del Jetson.

El ejemplo utiliza seeed-image-jetson-development. Esta imagen proporciona un entorno de desarrollo en el lado del objetivo con CUDA Toolkit y nvcc, archivos de desarrollo CUDA/cuDNN/TensorRT/VPI/OpenCV, herramientas de compilación y depuración, ejemplos de NVIDIA y paquetes de prueba.

nota

Este es un sistema OpenEmbedded/Yocto, no un sistema de archivos raíz Ubuntu instalado por NVIDIA SDK Manager. La gestión de paquetes, el contenido del sistema de archivos y el entorno de escritorio difieren de JetPack Ubuntu.

Requisitos previos

Prepara lo siguiente:

  • Un PC host Linux x86_64, preferiblemente una máquina física con Ubuntu o Debian
  • Al menos 16 GB de RAM; se recomiendan 32 GB o más
  • Un SSD local rápido y una conexión a Internet estable
  • Un reComputer Super con un módulo Jetson Orin NX u Orin Nano compatible
  • Un cable de datos USB Tipo C conectado directamente al PC host
  • Acceso a sudo para instalar paquetes en el host y flashear
aviso

Reserva al menos 400 GB de espacio libre en disco en el PC host. Las descargas de Yocto, la caché de estado compartido, los archivos temporales de compilación, el sistema de archivos raíz y el paquete de flasheo extraído pueden consumir varios cientos de gigabytes. Se recomienda encarecidamente un SSD local en el host.

Instala los paquetes de host comúnmente requeridos:

sudo apt update
sudo apt install -y \
gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio \
python3 python3-pip python3-pexpect python3-git python3-jinja2 \
xz-utils debianutils iputils-ping libegl1-mesa libsdl1.2-dev \
pylint xterm zstd liblz4-tool file locales \
gdisk parted udev udisks2

Si BitBake indica que la distribución del host no es compatible, utiliza un host Linux compatible con Yocto en lugar de ignorar la advertencia de validación del host.

SKU de módulo utilizado en esta guía

El reComputer Super J401 es compatible con los siguientes SKU de módulo P3767:

--module-skuNúmero completo de móduloMódulo Jetson
0000P3767-0000Jetson Orin NX 16GB
0001P3767-0001Jetson Orin NX 8GB
0003P3767-0003Jetson Orin Nano 8GB
0004P3767-0004Jetson Orin Nano 4GB

Esta guía utiliza 0000. Utiliza siempre un directorio de compilación separado para cada combinación de carrier y SKU de módulo.

Clonar el repositorio Yocto de Seeed

Crea un espacio de trabajo limpio y clona la rama master:

mkdir -p ~/work/jetson-yocto
cd ~/work/jetson-yocto

git clone \
--branch master \
--single-branch \
https://github.com/jjjadand/seeed-tegra-demo-distro.git \
tegra-demo-distro

cd tegra-demo-distro

El repositorio principal contiene los metadatos de Seeed y los scripts auxiliares. prepare-workspace.sh inicializa las capas OpenEmbedded y OE4T fijadas como submódulos de Git.

Compilar la imagen de desarrollo completa con all

La primera compilación recomendada utiliza build.sh all. Valida los metadatos, compila los device trees de Seeed, comprueba los archivos de arranque y compila la imagen completa y el archivo tegraflash en orden.

Preparar el directorio de compilación

./scripts/seeed/prepare-workspace.sh \
--machine recomputer-orin-super-j401 \
--module-sku 0000 \
--build-dir build-seeed-super-j401-sku0000 \
--cache-dir "$HOME/.cache/yocto-seeed"

La caché compartida mantiene las descargas y el sstate fuera del directorio de compilación para que puedan reutilizarse en compilaciones posteriores.

Confirma el directorio de compilación activo, el carrier y el SKU de módulo:

./scripts/seeed/build.sh current \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401

La salida debe mostrar:

Machine:   recomputer-orin-super-j401
Module SKU: 0000
aviso

No continúes si el MACHINE mostrado o el SKU de módulo no coinciden con el hardware. No reutilices este directorio de compilación para otro carrier o SKU de módulo.

Ejecutar la compilación completa

Compila la imagen de desarrollo en el lado del objetivo:

./scripts/seeed/build.sh all \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

La primera compilación descarga y compila un gran número de componentes y puede tardar varias horas. El comando se detiene inmediatamente si la validación de metadatos, la compilación del device tree, las comprobaciones de archivos de arranque o la compilación de la imagen fallan.

Cuando las cuatro etapas se completan correctamente, la salida del terminal es similar a la siguiente:

Después de una compilación correcta, el directorio de despliegue es:

build-seeed-super-j401-sku0000/tmp/deploy/images/recomputer-orin-super-j401/

Los archivos generados importantes incluyen:

seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.ext4
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.manifest
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.spdx.json
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.testdata.json
seeed-image-jetson-development-recomputer-orin-super-j401.rootfs.tegraflash-tar.zst

El archivo .tegraflash-tar.zst es el archivo autocontenido que se utiliza para flashear.

Preparar el directorio de flasheo

Extrae y valida el archivo de flasheo de la imagen de desarrollo:

./scripts/seeed/prepare-flash.sh \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development \
--output-dir "$HOME/seeed-flash-recomputer-orin-super-j401-sku0000"

El asistente verifica el SKU del módulo y comprueba que la imagen rootfs, el DTB, el BPMP DTB, la configuración de pinmux, la configuración de voltaje de pines y los scripts de flasheo estén presentes. Luego muestra el directorio preparado y el siguiente comando exacto.

tip

Utiliza un directorio de salida nuevo o vacío en el SSD local del host. No extraigas el paquete de flasheo en la unidad de destino del Jetson.

Poner el reComputer Super en modo Force Recovery

  1. Apaga el reComputer Super.
  2. Coloca el interruptor de recuperación del reComputer Super en la posición RESET.
  3. Conecta la fuente de alimentación.
  4. Conecta el puerto de dispositivo/depuración USB Tipo C al host Linux con un cable de datos.
  5. En el PC host, verifica el modo de recuperación:
lsusb -d 0955:

Para el módulo Orin NX de 16 GB utilizado en esta guía, la salida debe incluir un dispositivo similar a:

0955:7323 NVIDIA Corp. APX

Otros módulos Super compatibles utilizan diferentes ID de producto USB:

MóduloID USB de recuperación
Orin NX 16GB0955:7323
Orin NX 8GB0955:7423
Orin Nano 8GB0955:7523
Orin Nano 4GB0955:7623

No inicies el flasheo hasta que el dispositivo NVIDIA APX sea visible.

Flashear la imagen Yocto

Ejecuta el flasher generado desde el directorio preparado:

cd "$HOME/seeed-flash-recomputer-orin-super-j401-sku0000"
sudo ./initrd-flash

El script arranca un flasher temporal initrd a través de USB, expone la unidad NVMe de destino al host, escribe las particiones y recupera el estado final del dispositivo. No desconectes el USB ni la alimentación mientras se está ejecutando.

Un flasheo correcto termina con una salida similar a:

[OK: /dev/sdX]
Final status: SUCCESS
Successfully finished

El nombre temporal del dispositivo de bloque en el host se asigna dinámicamente. No supongas que siempre es /dev/sdb o /dev/sdc.

Primer arranque

Después de que el comando de flasheo termine correctamente:

  1. Desconecta el cable de datos USB.
  2. Devuelve el interruptor de recuperación de RESET a su posición normal.
  3. Apaga el dispositivo durante varios segundos.
  4. Conecta una pantalla HDMI y vuelve a encender el reComputer Super.

El escritorio Yocto debería arrancar desde la unidad NVMe flasheada:

La imagen de desarrollo permite el inicio de sesión local como root con una contraseña inicial vacía. Establece una contraseña inmediatamente:

passwd

Verifica el entorno de desarrollo en el lado del objetivo:

nvcc --version
gcc --version
cmake --version

test -f /usr/local/cuda-13.2/include/cuda.h
test -f /usr/include/cudnn.h
test -f /usr/include/NvInfer.h
test -f /opt/nvidia/vpi4/include/vpi/VPI.h
pkg-config --modversion opencv4

Comandos detallados de compilación parametrizada

La sección anterior utilizó all, que es la ruta recomendada para una primera compilación. Para depurar o recompilar una etapa, ejecuta el mismo flujo de trabajo explícitamente:

# 1. Validate metadata and print the selected BSP variables
./scripts/seeed/build.sh metadata \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

# 2. Build the Seeed DTB and DTBO files
./scripts/seeed/build.sh dtb \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

# 3. Install and verify the custom BCT, pinmux, and boot files
./scripts/seeed/build.sh bootfiles \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

# 4. Build the complete root filesystem and tegraflash archive
./scripts/seeed/build.sh image \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

Si el sistema de archivos raíz ya está compilado y solo es necesario regenerar el archivo tegraflash, utiliza:

./scripts/seeed/build.sh flash-package \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

Opcional: compilar un SDK de desarrollo cruzado x86_64

La imagen de desarrollo flasheada ya admite la compilación directamente en el Jetson. Compila el SDK de host solo cuando un PC x86_64 deba compilar aplicaciones de forma cruzada para el objetivo:

./scripts/seeed/build.sh sdk \
--build-dir build-seeed-super-j401-sku0000 \
--machine recomputer-orin-super-j401 \
--image seeed-image-jetson-development

El instalador del SDK generado se coloca en:

build-seeed-super-j401-sku0000/tmp/deploy/sdk/

Este instalador opcional no es necesario para compilar la imagen de Jetson ni para flashear el dispositivo.

Solución de problemas

El directorio de compilación informa la máquina o el SKU incorrectos

Crea un nuevo directorio de compilación con prepare-workspace.sh. No edites un directorio de compilación existente para cambiar placas carrier o SKUs de módulo.

No se puede encontrar el archivo de flasheo

Asegúrate de pasar el mismo nombre de imagen tanto a la compilación como a la preparación del flasheo:

seeed-image-jetson-development

prepare-flash.sh usa por defecto demo-image-full, por lo que omitir --image seeed-image-jetson-development haría que buscara el archivo de flasheo equivocado.

El flasheo se detiene en Waiting for USB storage device flashpkg

En este punto, el host está esperando a que el initrd de Jetson exponga un dispositivo de almacenamiento masivo USB temporal. Comprueba el cable USB, usa un puerto USB de la placa base, retira dispositivos de almacenamiento USB innecesarios y confirma que el Jetson sigue siendo visible con lsusb.

Referencias

Soporte técnico y debate sobre productos

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a distintas preferencias y necesidades.

Loading Comments...