🛠 Caméra MIPI CSI et encodage H.264 matériel via GStreamer
Objetivos
Aprovechar las dos entradas de cámara MIPI CSI de 4 lanes de la AI-64 y la cadena de procesamiento de imagen del TDA4VM (captura VPAC/CSI2RX, re-muestreo VPE/M2M, codificador H.264 por hardware) para grabar un vídeo 1080p sin cargar los Cortex-A72. Este es el caso de uso de «cámara inteligente» para el cual existe la placa.
Hardware
- 1 BeagleBone AI-64 con una imagen TI/BeagleBoard que incluya los overlays de cámara
- 1 módulo de cámara CSI compatible (clase IMX219 o equivalente, cable plano FFC de 4 lanes)
- Atención: el cable plano CSI se conecta con los contactos de cobre hacia el conector; la placa debe estar APAGADA durante la inserción
Código completo
sudo apt install v4l-utils gstreamer1.0-tools gstreamer1.0-plugins-bad
v4l2-ctl --list-devices # lister CSI, M2M/VPE et encodeurs
media-ctl -p | grep -E "entity|pad" # cartographier CSI2RX / VPAC / VPE
#!/bin/sh
# record.sh — 5 s de 1080p30 encodées par le SoC (pas par le CPU)
# Les nœuds (/dev/video-rpi-cam0, /dev/video3...) dépendent de l'image et
# des overlays caméra : les confirmer avec media-ctl -p avant de lancer.
gst-launch-1.0 -e \
v4l2src device=/dev/video-rpi-cam0 num-buffers=150 io-mode=5 ! \
"video/x-bayer,format=nv12,width=1920,height=1080,framerate=30/1" ! \
vpe src-io-type=mplane sink-io-type=mplane process-only=1 ! \
v4l2convert ! video/x-raw,format=UYVY ! \
vpe src-io-type=mplane sink-io-type=mplane process-only=1 ! \
v4l2h264enc extra-controls="controls,video_extend=1,compression=1" ! \
h264parse ! mp4mux ! filesink location=out.mp4
Verificación esperada
El archivo out.mp4 de 150 imágenes (5 s a 30 fps) se reproduce en un reproductor de vídeo. Durante la grabación, htop muestra los Cortex-A72 casi inactivos: la captura, la conversión y la codificación se ejecutan en los bloques de hardware VPAC/VPE/codificador.
Errores frecuentes
- Copiar el pipeline sin adaptar los nodos: las entidades v4l2 dependen de la imagen y de los overlays; media-ctl -p es obligatorio para mapear su propio sistema.
- Sensor no vinculado: sin el overlay DT del sensor, no aparece ningún /dev/video de captura — verificar dmesg para el probe del driver I2C del sensor.
- Imagen mainline pura: la cadena CSI/VPAC/codec depende en la práctica de la pila downstream de TI; bajo mainline nos limitamos a una captura básica.
- Olvidar io-mode=5 (DMABUF): sin una negociación mmap-plane coherente, el pipeline falla o tiene problemas de rendimiento.
- Llenar los 16 GB de eMMC con grabaciones: escribir en una tarjeta microSD o en un disco externo.
Otros tutoriales para esta placa
- Flasher l'image officielle et démarrer la BeagleBone AI-64
- Faire clignoter une LED sur la broche P8_03 avec libgpiod
- Surveiller la température et l'alimentation du TDA4VM
- Réseau : Ethernet Gigabit unique et module Wi-Fi en M.2 E-key
- Remoteproc : inventorier et démarrer les co-processeurs R5F et C66x
- Inférence de réseau de neurones sur le C7x+MMA avec edgeai-tidl-tools
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash