Foire aux questions

Carte ULX3S non reconnue

Vérifiez que le câble USB-A vers Micro-USB est connecté à US, le connecteur situé du même côté de la carte que la carte SD.

Utilisez des câbles courts et de bonne qualité. Il ne doit pas s’agir d’un câble « charge uniquement ».

Essayez une connexion directe, sans hub.

Écran HDMI vide

Si l’écran est resté alimenté sans signal HDMI actif pendant un certain temps, il peut ne pas se réveiller au premier signal vidéo. Essayez de couper l’alimentation et d’attendre quelques secondes avant de réessayer. Ce comportement a été observé avec l’écran HDMI Elecrow 7 pouces.

OpenOCD n’écoute pas sur localhost:3333

Le scripts/load-firmware.sh actuel vérifie le port 3333 avant de lancer GDB. Si OpenOCD ne tourne pas, il s’arrête avec une erreur directe au lieu de laisser GDB retomber sur sa cible locale exec. Les anciennes versions du chargeur pouvaient afficher monitor command not supported ou target is exec, puis présenter des sections ELF locales comme matched ; ces comparaisons ne vérifiaient pas la mémoire du FPGA.

Pour ULX3S 12F, utilisez le chargeur pratique après programmation du bitstream :

./scripts/load-firmware-12f.sh

Il réutilise OpenOCD sur le port 3333 ou lance automatiquement le lanceur OpenOCD du projet, attend le serveur GDB puis charge le moniteur SDRAM propre à la carte.

Sous Windows/WSL, si OpenOCD signale LIBUSB_ERROR_NOT_SUPPORTED et ne trouve pas 0403:6015, le FT231X de l’ULX3S est généralement encore lié au pilote FTDI natif FTDIBUS/D2XX. Utilisez Zadig pour lier WinUSB ou libusbK pour OpenOCD. fujprog sous Windows utilise le pilote FTDI natif ; passer de fujprog à OpenOCD peut donc nécessiter de changer cette association.

Web Serial ne signale aucun périphérique compatible, mais Windows voit mon port COM. Que dois-je essayer en premier ?

Si Chrome indique qu’une mise à jour du navigateur est en attente, terminez la mise à jour et relancez complètement Chrome avant de modifier les pilotes série USB ou la console web Hazard3-Doom.

Voir l’indicateur de mise à jour du navigateur ci-dessous :

Indicateur de mise à jour Chrome en attente

Pendant les tests de Hazard3-Doom sous Windows, le journal interne des périphériques de Chrome signalait toujours l’adaptateur CH340 comme COM7, mais le sélecteur Web Serial affichait No compatible devices found. Après avoir terminé la mise à jour Chrome en attente et relancé Chrome, le sélecteur de port série a recommencé à fonctionner.

La console web Hazard3-Doom demande volontairement un sélecteur de port série sans filtre ; elle n’est donc pas limitée à CH340, FTDI, CP210x ou à un autre adaptateur série USB particulier.

Rappelez-vous également que navigator.serial.getPorts() renvoie les ports que l’origine actuelle du navigateur a déjà été autorisée à utiliser. Ce n’est pas la liste de tous les ports COM installés sous Windows.

Si le redémarrage du navigateur mis à jour ne restaure pas le port, continuez avec Le sélecteur Web Serial indique qu’aucun périphérique compatible n’a été trouvé. En particulier, si Chrome a journalisé la suppression du port COM pendant une session de débogage, débranchez/rebranchez physiquement l’adaptateur USB-UART externe. Arrêter OpenOCD seul peut ne pas déclencher la ré-énumération du périphérique série par Windows / Chrome nécessaire pour rendre le port à nouveau sélectionnable.

Chrome voit ttyUSB sous Ubuntu mais Web Serial ne peut pas l’ouvrir. Pourquoi ?

L’autorisation du périphérique dans Chrome et les permissions TTY de Linux sont indépendantes. Si /dev/ttyUSB1 appartient à root:dialout et que la sortie actuelle de groups ne contient pas dialout, Chrome peut afficher le périphérique dans son sélecteur alors que SerialPort.open() échoue tout de même.

Ajoutez l’utilisateur avec sudo usermod -aG dialout "$USER" puis ouvrez une nouvelle session. Pour un diagnostic temporaire sans redémarrage, une ACL telle que sudo setfacl -m u:"$USER":rw /dev/ttyUSB1 peut donner à l’utilisateur courant l’accès au nœud de périphérique existant. Voir Dépannage pour la propriété du port, ModemManager et les vérifications du câblage UART.

La page GitHub Pages publique peut-elle charger l’ELF console ?

Oui, si le helper loopback local est en cours d’exécution. La page peut rester sur https://ulx3s.github.io/Hazard3-Doom/ pendant que web-server.py, GDB et OpenOCD tournent sur la machine locale. Le navigateur appelle le helper sur 127.0.0.1:8000 ; le helper utilise ensuite le chemin GDB/OpenOCD local.

Le panneau Console firmware affiche séparément l’état du helper et celui d’OpenOCD. Le mode optionnel web-server.py --access-key ajoute une clé partagée saisie dans la page mais non stockée dans localStorage. Voir Outil Web pour les périphériques.

Pourquoi un second onglet Device Tool ne peut-il pas se connecter à l’UART ?

Un port série ne peut avoir qu’un propriétaire. Les onglets de même origine se coordonnent avec un Web Lock et BroadcastChannel afin que le second puisse signaler que l’UART est déjà utilisé. Des origines différentes, comme http://127.0.0.1:8000 et https://ulx3s.github.io, ne partagent pas ce verrou, mais le navigateur/système refuse tout de même la seconde ouverture. Fermez ou déconnectez le premier propriétaire puis utilisez Retry UART.

OpenOCD peut-il utiliser WinUSB sur l’ULX3S ?

Oui, avec la configuration ULX3S Hazard3-Doom actuelle. Le chemin OpenOCD du projet utilise l’adaptateur ft232r via libusb et a été validé avec le FT231X embarqué associé à WinUSB. libusbK fonctionne également avec OpenOCD, mais n’est plus un choix de pilote obligatoire. GDB se connecte à OpenOCD par TCP et fonctionne donc via toute association FT231X qu’OpenOCD parvient à utiliser.

WinUSB est particulièrement pratique car il satisfait aussi le flasher FPGA/JTAG WebUSB du navigateur. Le pilote FTDI VCP/D2XX normal reste nécessaire aux applications natives FTDI telles que fujprog sous Windows. Voir Flasher FPGA WebUSB pour la matrice de compatibilité.

Pourquoi le flasher FPGA WebUSB a-t-il besoin de WinUSB sous Windows ?

Le FT231X US1 de l’ULX3S utilise normalement un pilote FTDI Windows. Chrome/Edge WebUSB ne peut pas ouvrir cette interface via l’association FTDI VCP/D2XX normale ; le programmateur du navigateur nécessite donc WinUSB pour un accès USB direct. Cela n’affecte que le chemin WebUSB/JTAG ; un adaptateur USB-UART séparé peut continuer à desservir la console Web Serial Hazard3-Doom.

Voir Flasher FPGA WebUSB pour les instructions de configuration et de restauration du pilote, ou Le flasher WebUSB signale USBDevice.open(): Access denied si le navigateur signale Access denied.