🛠 Console série et JTAG du CM5 : l'empreinte de debug JST-SH et les points de test
Objetivos
El CM5 es el primer Compute Module diseñado para el debug sin una placa base completa: la hoja de datos (Anexo A) describe una huella de depuración UART JST-SH de 3 pines con paso de 1 mm (ref. del conector BM03B-SRSS-TB), puntos de prueba TX/RX repetidos (TP35/TP36), puntos de prueba JTAG, y pads de alimentación y de arranque USB en puntos de prueba para flashear un módulo sin utilizar los conectores de 2 × 100 pines. Este tutorial: sacar la consola del kernel a este UART, capturar el registro de arranque completo y sentar las bases de un debug JTAG.
Material
- 1 × CM5 (en una CM5IO o volando sobre los pads de debug)
- 1 × convertidor USB ↔ UART al nivel lógico del banco GPIO utilizado (3,3 V aquí) — nunca alimentar el destino desde el convertidor si la placa ya está alimentada
- Cableado: TX (módulo) → RX (adaptador), RX ← TX, masa común; conector JST-SH o pines en TP35/TP36
sudo apt install -y picocom openocd(OpenOCD para la parte JTAG)
Código completo
# --- Côté CM5 : activer la console série ---
sudo tee -a /boot/firmware/config.txt >/dev/null <<'EOF'
enable_uart=1
cmdline=console=serial0,115200 console=tty1
EOF
sudo reboot
# --- Côté hôte : capturer le boot complet ---
sudo apt install -y picocom
picocom -b 115200 /dev/ttyUSB0 # log de boot puis shell
# (sous minicom : minicom -D /dev/ttyUSB0 -b 115200)
# --- Vérifier le console déclarée par le noyau ---
cat /proc/cmdline
cat /sys/class/tty/ttyAMA0/device/driver/driver 2>/dev/null || true
# --- Base JTAG (points de test de l'Annexe A) avec un adaptateur CMSIS-DAP ---
cat > /tmp/jtag.cfg <<'EOF'
adapter driver cmsis-dap
transport select jtag
target extended-memory-access enabled
EOF
sudo openocd -f /tmp/jtag.cfg -c 'init; halt; reg pc; resume; shutdown'
Verificación esperada
En el terminal a 115200 baudios desfilan el firmware y luego los mensajes del kernel (console=serial0,115200 en /proc/cmdline), y aparece un login — la consola serie funciona incluso cuando HDMI/SSH están caídos. OpenOCD detiene el Cortex-A76 y luego continúa sin errores, prueba de la cadena JTAG.
Errores frecuentes
- Invertir TX y RX: el clásico absoluto; permutar, y luego verificar la masa común.
- Adaptador de 5 V en un banco de 3,3 V (o 1,8 V): respetar la tensión del banco GPIO_VREF; las entradas toleran como máximo VGPIO_VREF + 0,5 V (absoluto).
- Olvidar
enable_uart=1: sin él, el UART primario permanece apagado y el conector de debug está mudo mientras todo lo demás funciona. - Alimentar el módulo mediante el convertidor serie además de la fuente de alimentación principal: doble alimentación de los rieles de 3,3 V — la hoja de datos lista la reinyección de los rieles como causa clásica de parada del arranque.
Otros tutoriales para esta placa
- Alimenter un CM5 comme il faut : USB-C PD 5 V / 5 A et bouton d'alimentation
- La première RTC des Compute Modules : câbler et vérifier la VBAT du CM5
- Accès distant sans VPN : enregistrer un CM5 dans Raspberry Pi Connect
- GPIO du CM5 côté RP1 : force de conduite, budget 50 mA et broches pièges
- Refroidir le CM5 : ventilateur PWM sur le connecteur JST-SH et tachymétrie
- Deux ports USB 3.0 simultanés : le CM5 fait du stockage rapide, pas sur une carte CM4
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash