Débogage système et cross-trigger
Observer le processeur et la logique programmable dans une même expérience de débogage avec ILA, VIO, points d'arrêt et déclenchements croisés.
Deux mondes à observer
Le débogueur logiciel montre les registres du processeur, la mémoire, la pile et les variables C. L'Integrated Logic Analyzer, ou ILA, est un analyseur logique intégré dans la PL. Il enregistre des signaux internes à chaque front d'horloge. Un défaut à l'interface PS vers PL exige souvent les deux observations.
Pour illustrer le débogage croisé, nous proposons un scénario précis. Un compteur logiciel écrit sa valeur dans un AXI GPIO et affiche un message lorsqu'il atteint 0x85. Cette valeur apparaît dans le code C et dans la transaction AXI observée par l'ILA. Elle sert donc de repère commun aux deux captures.
Préparer le matériel
Les signaux utiles doivent être connectés à une ILA ou marqués pour le débogage avant l'implémentation. La profondeur de capture consomme de la BRAM. La largeur des sondes augmente aussi le coût.
Une ILA doit utiliser une horloge représentative des signaux observés. Une sonde asynchrone par rapport à cette horloge peut produire une capture trompeuse.
Le Virtual Input Output, ou VIO, est une autre IP de débogage. Elle permet de lire ou de forcer de petits signaux internes, par exemple un reset ou un mode de test.
Débogage logiciel
Après le lancement de la configuration de débogage, Vitis charge l'ELF et place le point d'arrêt demandé dans main. L'ingénieur peut alors examiner les variables. Pour un défaut d'optimisation, il faut comparer le binaire construit et les options de compilation. Une variable peut être supprimée ou gardée dans un registre.
for (count = 0U; count < 256U; count++) {
XGpio_DiscreteWrite