JTAG (Joint Test Action Group) est non seulement utilisé pour lire la mémoire et le débogage du matériel, mais aussi pour l'écriture de données sur les puces. Cela inclut le firmware clignotant, la mémoire de programmation et la configuration des FPGA. Ce tutoriel vous guidera tout au long du processus d'écriture sur des puces à l'aide de JTAG, y compris la configuration, les outils et les meilleures pratiques.
Qu'est-ce que JTAG écrit?
L'écriture JTAG fait référence à la programmation ou à la clignotement des données sur un circuit intégré (IC) via son interface JTAG. Ce processus est couramment utilisé pour:
- Firmware clignotant ou chargeurs de démarrage
- Écriture de fichiers de configuration aux FPGA
- Programmation de la mémoire non volatile (par exemple, eeprom, flash)
- Mise à jour du logiciel ou du micrologiciel dans les systèmes intégrés
L'interface JTAG offre un accès direct à la puce, permettant un contrôle précis sur la mémoire et la configuration.
Ce dont vous aurez besoin
- Adaptateur JTAG: Une interface matérielle pour la communication JTAG (par exemple, SEGGER J-LINK, Câble de plate-forme Xilinx, adaptateurs soutenus par OpenOCD).
- Dispositif cible: La puce ou le système que vous souhaitez programmer.
- Outils logiciels: Des outils comme OpenOCD, Urjtag, Vivado (pour Xilinx) ou le logiciel J-Link de Segger.
-
Fichier firmware / configuration: Le fichier à écrire sur la puce (par exemple,
.bin
,.hex
,.svf
). - Documentation JTAG Pinout: Diagramme Pinout pour le dispositif cible.
- Accessoires de connexion: Fils, en-têtes et planche à pain (si nécessaire).
Étape 1: Configuration du matériel JTAG
1. Identifier les broches JTAG
- Consultez la fiche technique de la puce ou les schémas PCB pour localiser les broches JTAG.
- Les étiquettes de broches JTAG communes incluent
TDI
,TDO
,TCK
, etTMS
. - Certaines planches ont des en-têtes JTAG préconfigurés (connecteurs à 10 broches ou 20 broches).
2. Connectez l'adaptateur JTAG
- Tirez l'adaptateur JTAG au périphérique cible, assurant des connexions de broches correctes:
-
TDI
(Tester les données) pourTDI
-
TDO
(Tester les données) àTDO
-
TCK
(Tester horloge) àTCK
-
TMS
(Sélectionner le mode de test) pourTMS
- Sol (
GND
) doit être connecté.
-
3. Vérifiez les niveaux de tension
- Vérifiez que l'adaptateur JTAG correspond aux niveaux de tension du périphérique cible (par exemple, 3,3 V, 1,8 V).
- Certains adaptateurs permettent des paramètres de tension configurables.
Étape 2: Installation des outils logiciels JTAG
1. OpenOCD
OpenOCD (Open On Chip Debugger) est un outil d'ouverture populaire pour la programmation et le débogage.
- Installez via votre gestionnaire de packages (par exemple,
apt install openocd
sur Linux). - Assurez-vous que votre adaptateur JTAG est pris en charge par OpenOCD.
2. Outils spécifiques aux vendeurs
- Segger J-Link: Utilisez le logiciel SEGGER J-LINK pour les opérations JTAG.
- Xilinx Vivado: Idéal pour la programmation FPGA Xilinx et CPLDS.
- Quartus Intel: Pour la programmation des appareils Intel / Altera.
3. Urjtag
Un outil léger pour les opérations JTAG de base comme la rédaction du micrologiciel.
- Installer Site Web d'Urjtag.
Étape 3: Rédaction de données sur une puce
1. Configurez le logiciel JTAG
Configurez le fichier de configuration JTAG pour spécifier l'adaptateur et le périphérique cible.
- Exemple de configuration OpenOCD pour une puce STM32:
source [find interface/jlink.cfg] transport select jtag source [find target/stm32f4x.cfg] init halt
2. Détecter le dispositif cible
Exécutez une commande pour scanner la chaîne JTAG et assurer que le périphérique cible est détecté.
- Pour OpenOCD:
Vérifiez le journal de sortie pour les appareils détectés.openocd -f interface/jlink.cfg -f target/stm32f4x.cfg
3. Flash firmware
Écrivez le fichier firmware sur la puce à l'aide des commandes JTAG.
- Exemple de commande openocd:
program firmware.bin verify reset exit 0x08000000
-
firmware.bin
: Le fichier binaire à écrire. -
verify
: Garantit que les données ont été écrites correctement. -
reset
: Réinitialise l'appareil après la programmation. -
0x08000000
: Démarrer l'adresse en mémoire.
-
4. Écrivez la configuration à un FPGA
Pour les FPGA, utilisez .bit
ou .svf
fichiers.
- Exemple de commandes urjtag:
cable jtagkey detect svf configure.svf
5. Effacer la mémoire avant d'écrire
Certains périphériques nécessitent l'effacement de la mémoire avant de clignoter.
- Exemple de commande openocd:
flash erase_address 0x08000000 0x10000
Étape 4: meilleures pratiques pour l'écriture JTAG
- Sauvegarder le firmware existant: Lisez et enregistrez toujours le firmware existant avant d'écrire de nouvelles données.
-
Vérifiez l'intégrité des données: Utiliser le
verify
commande pour assurer une programmation réussie. - Utilisez des connexions fiables: Sécurisez tous les fils pour empêcher la corruption des données pendant l'écriture.
- Faire correspondre les niveaux de tension: Assurez-vous que l'adaptateur JTAG et le périphérique cible utilisent des niveaux de tension compatibles.
- Vérifiez la protection de l'écriture: Désactiver la protection de l'écriture (le cas échéant) avant la programmation.
Applications de l'écriture JTAG
- Firmware clignotant ou chargeurs de démarrage
- Programmation FPGA ou CPLD
- Mise à jour du logiciel système intégré
- Écriture de données de configuration à la mémoire
- Développer et tester le micrologiciel en temps réel
Dépannage
-
Dispositif non détecté:
- Vérifiez le câblage et la broche.
- Assurez-vous que l'appareil est alimenté et correctement mis à la terre.
-
Écrire des erreurs:
- Assurez-vous que la région de la mémoire n'est pas protégée en écriture.
- Vérifiez le format d'adresse et de fichier de démarrage.
-
La vérification échoue:
- Vérifiez les connexions fiables.
- Utilisez une vitesse d'horloge JTAG plus lente pour améliorer la stabilité.
Conclusion
JTAG est un outil polyvalent pour écrire un micrologiciel, configurer la mémoire et des appareils de programmation à un niveau bas. En suivant ce guide, vous pouvez utiliser en toute confiance JTAG pour flasher le firmware, mettre à jour le logiciel et configurer le matériel. La maîtrise de l'écriture JTAG permet un développement et un maintien efficaces des systèmes intégrés!