🛠 Console série et JTAG du CM5 : l'empreinte de debug JST-SH et les points de test
Objectifs
Le CM5 est le premier Compute Module pensé pour le debug sans carte mère complète : la datasheet (Annexe A) décrit une empreinte UART de debug JST-SH 3 broches au pas de 1 mm (réf. connecteur BM03B-SRSS-TB), des points de test TX/RX répétés (TP35/TP36), des points de test JTAG, et des pads d'alimentation et de boot USB sur points de test pour flasher un module sans mobiliser les connecteurs 2 × 100 broches. Ce tuto : sortir la console noyau sur cet UART, capturer le log de boot complet, et poser la base d'un debug JTAG.
Matériel
- 1 × CM5 (sur CM5IO ou en vol sur pads de debug)
- 1 × convertisseur USB ↔ UART au niveau logique du bank GPIO utilisé (3,3 V ici) — ne jamais alimenter la cible depuis le convertisseur si la carte est déjà alimentée
- Câblage : TX (module) → RX (adaptateur), RX ← TX, masse commune ; connecteur JST-SH ou pins sur TP35/TP36
sudo apt install -y picocom openocd(OpenOCD pour la suite JTAG)
Code complet
# --- 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'
Vérification attendue
Sur le terminal à 115200 bauds défilent le firmware puis les messages du noyau (console=serial0,115200 dans /proc/cmdline), et un login apparaît — la console série fonctionne même quand HDMI/SSH sont morts. OpenOCD halt le Cortex-A76 puis reprend sans erreur, preuve de la chaîne JTAG.
Erreurs fréquentes
- Inverser TX et RX : le classique absolu ; permuter, puis vérifier la masse commune.
- Adaptateur 5 V sur un bank 3,3 V (ou 1,8 V) : respecter la tension du bank GPIO_VREF ; les entrées tolèrent au maximum VGPIO_VREF + 0,5 V (absolu).
- Oublier
enable_uart=1: sans lui, l'UART primaire reste éteint et le connecteur de debug est muet alors que tout le reste fonctionne. - Alimenter le module par le convertisseur série en plus de l'alim principale : double alimentation de rails 3,3 V — la datasheet liste la ré-injection des rails comme cause classique d'arrêt du boot.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash