Compilar y flashear una imagen Yocto para reComputer Super
Esta copia se incluye porque el soporte oficial de OpenEmbedded/Yocto es una capacidad importante de producción Linux de JetPack 7.2. Antes de usarla como imagen JetPack 7.2, confirma que la rama Yocto de Seeed seleccionada, la capa BSP de NVIDIA y el paquete de flasheo generado coinciden con el Jetson Linux 39.2 de destino previsto.
Esta guía compila una imagen Yocto de Seeed para reComputer Super J401 con un módulo Jetson Orin NX 16GB y la flashea en la unidad NVMe del Jetson.
El ejemplo usa seeed-image-jetson-development. Esta imagen proporciona un entorno de desarrollo en el lado del objetivo con CUDA Toolkit y nvcc, archivos de desarrollo de CUDA/cuDNN/TensorRT/VPI/OpenCV, herramientas de compilación y depuración, ejemplos de NVIDIA y paquetes de prueba.

Este es un sistema OpenEmbedded/Yocto, no un sistema de archivos raíz de 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
sudopara instalar paquetes en el host y flashear
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 informa de que la distribución del host no es compatible, usa un host Linux compatible con Yocto en lugar de ignorar la advertencia de validación del host.
SKU de módulo usado en esta guía
El reComputer Super J401 es compatible con los siguientes SKU de módulo P3767:
--module-sku | Número completo de módulo | Módulo Jetson |
|---|---|---|
0000 | P3767-0000 | Jetson Orin NX 16GB |
0001 | P3767-0001 | Jetson Orin NX 8GB |
0003 | P3767-0003 | Jetson Orin Nano 8GB |
0004 | P3767-0004 | Jetson Orin Nano 4GB |
Esta guía usa 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 usa 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

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 del 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 auto-contenido que se usa 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 de módulo y comprueba que la imagen rootfs, el DTB, el DTB de BPMP, la configuración de pinmux, la configuración de voltaje de pads y los scripts de flasheo estén presentes. Luego imprime el directorio preparado y el siguiente comando exacto.
Usa 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
- Apaga el reComputer Super.
- Coloca el interruptor de recuperación del reComputer Super en la posición RESET.
- Conecta la fuente de alimentación.
- Conecta el puerto de dispositivo/depuración USB Tipo C al host Linux con un cable apto para datos.
- En el PC host, verifica el modo de recuperación:
lsusb -d 0955:
Para el módulo Orin NX 16GB usado en esta guía, la salida debe incluir un dispositivo similar a:
0955:7323 NVIDIA Corp. APX
Otros módulos Super compatibles usan diferentes IDs de producto USB:
| Módulo | ID USB de recuperación |
|---|---|
| Orin NX 16GB | 0955:7323 |
| Orin NX 8GB | 0955:7423 |
| Orin Nano 8GB | 0955:7523 |
| Orin Nano 4GB | 0955: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:
- Desconecta el cable de datos USB.
- Devuelve el interruptor de recuperación de RESET a su posición normal.
- Apaga el dispositivo durante varios segundos.
- 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 del 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 usó 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 comprimido de tegraflash, usa:
./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 del host solo cuando un PC x86_64 deba compilar aplicaciones de forma cruzada para el dispositivo de destino:
./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 comprimido 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 comprimido equivocado.
El flasheo se detiene en Waiting for USB storage device flashpkg
En este punto, el host está esperando 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 siga siendo visible con lsusb.
Referencias
- Repositorio Seeed tegra-demo-distro
- Compilación rápida de Yocto Project
- Documentación de OE4T meta-tegra
¡Gracias por elegir productos de Seeed Studio! Para soporte técnico y discusión de productos, utiliza los siguientes canales: