PROGRAMMATION_AND_DEBUG - Kasimashi/Systemes-embarques GitHub Wiki
Programmation et debug d'une carte électronique.
Histoire
Avant l'avènement de protocoles tels que SWD et JTAG, le monde du débogage était tout simplement chaotique. Chaque grand fabricant a mis au point sa propre façon exclusive de charger le code sur ses microcontrôleurs et, par conséquent, les seuls qui ont dû souffrir étaient des gens comme nous, les ingénieurs embarqués. Chaque fois qu'un grand fabricant lance un microcontrôleur, nous, les ingénieurs embarqués, devons en savoir plus sur leurs protocoles propriétaires pour charger du code dans nos microcontrôleurs.
De plus, les adaptateurs de débogage étaient chers car les fabricants n'ont pas vraiment de concurrence qui fabrique des adaptateurs de débogage correspondant à leurs protocoles car les protocoles étaient propriétaires. Une autre raison pour laquelle ils étaient chers est le manque de volume car ils ne peuvent vendre leurs adaptateurs de débogage qu'aux personnes qui utilisent les microcontrôleurs fabriqués par eux !
Le troisième problème qui a donné lieu à ces normes est la question des tests de production des appareils électroniques . Considérez ce scénario, vous avez 4 puces de 4 fabricants différents sur la carte que vous avez conçue et vous souhaitez implémenter des tests automatisés sur celles-ci pour rendre le processus de production plus efficace. Mais comme toutes les cartes ont leur propre protocole, vous devez maintenant créer un code de production super compliqué qui s'adapte à la complexité et vous avez besoin de 4 débogueurs différents montés sur les points de test de votre carte, ce qui entraîne un coût, un temps de production et un temps de programmation supplémentaires.
Dans leur essence, tous ces protocoles propriétaires effectuent les mêmes activités, comme charger le code et donner la possibilité de déboguer et de tester ces problèmes. Ils le font juste d'une manière légèrement différente.
Pour lutter contre ces 3 problèmes de
- réduire le temps investi dans l'apprentissage,
- réduire les dépenses, et
- rendre les tests de production plus efficaces,
Les ingénieurs de tous les principaux fabricants de microcontrôleurs et fabricants de produits se sont réunis pour discuter et établir des spécifications sur le fonctionnement d'un protocole de débogage. Le résultat de ces rencontres sont des normes comme JTAG.
De cette façon, tous les fabricants de microcontrôleurs peuvent tous implémenter le même protocole de débogage afin que le même adaptateur de débogage puisse être utilisé avec tous les microcontrôleurs qui implémentent la norme donnée !
Il existe 2 normes majeures disponibles pour le chargement et le débogage du code sur les microcontrôleurs et les FPGA.
Qu'est-qu'un débogueurs ?
Les débogueurs, en termes simples, sont des dispositifs qui traduisent les commandes envoyées par le PC (par exemple, via le protocole USB) dans le langage (par exemple, le protocole SWD ou JTAG) compris par les microcontrôleurs (le périphérique à l'intérieur du microcontrôleur qui est responsable de charger le code et contrôler l'exécution pour être exact).
Quelle norme choisir pour dégogguer SWD ou JTAG ?
Le tableau ci-dessous présente les principales différences entre les normes SWD et JTAG.
SWD | JTAG | |
---|---|---|
Pin count | 2 | 4 |
Functionalities | Only programming and debugging | Programming, debugging and Boundary scanning for production tests |
Supported CPU architectures | Only ARM | JTAG is an independent group and hence is supported by many architectures not just limited to ARM |
Topology | Star | Daisy chained |
Special features | Printing debug info via debug port | not supported |
Quand choisir SWD plutôt que JTAG
Regardons quelques scénarios où vous pouvez choisir SWD
- Si la conception de vos schémas/cartes est suffisamment simple pour être testée sans la capacité de balayage des limites de JTAG (les BGA rendent les choses plus difficiles !)
- Les performances de débogage sont plus importantes que les tests de production, car votre appareil est axé sur la recherche plutôt que sur la production de masse !
- Votre produit a des contraintes de dimensions, alors le gain de place par la présence de 2 broches supplémentaires en JTAG par rapport au SWD peut être un avantage
- Votre conception matérielle est trop complexe et vous ne pouvez pas acheminer les 2 signaux supplémentaires vers le microcontrôleur
Quand choisir JTAG plutôt que SWD
Regardons quelques scénarios où vous pouvez choisir JTAG
- La conception de votre matériel est très complexe et vous avez besoin de la capacité d'analyse des limites pour exécuter des tests de production
- Votre appareil va être produit en série
- Vous pensez que les performances de débogage de JTAG sont suffisantes pour votre cas d'utilisation
- L'augmentation de la taille due aux broches et aux routes supplémentaires sur la conception de votre PCB n'est pas un gros problème pour votre appareil.
Mais alors, si les deux options sont disponibles pour vous dans votre microcontrôleur, comment pouvez-vous prendre une décision ? La réponse à celle-ci est simple, il suffit de garder le microcontrôleur en mode SWD pendant la programmation et de passer en JTAG pendant les tests de production !