ITM - Kasimashi/Systemes-embarques GitHub Wiki

Instrumented Trace Macrocell (ITM)

Lors du développement de logiciels embarqués, une bonne compréhension du comportement en temps réel est essentielle. Chez Percepio, nous développons les outils Tracealyzer pour la visualisation des traces RTOS, mais cet article concerne une technologie connexe d'ARM qui, selon nous, présente un intérêt général pour tout développeur utilisant des MCU basés sur ARM.

Avoir une certaine forme de journalisation/traçage de diagnostic est nécessaire dans la plupart des développements de micrologiciels. Mais si vous utilisez des appels « printf » simples sur un port série traditionnel, la surcharge est souvent de plusieurs millisecondes par appel de journalisation, ce qui perturbe le comportement de l'application et est inacceptable dans le code à temps critique tel que les gestionnaires d'exceptions ou les boucles de contrôle rapides. Il existe peut-être déjà une excellente solution intégrée à votre MCU, du moins si vous utilisez un MCU avec un cœur ARM Cortex-M3, M4 ou M7, à savoir ITM – Instrumentation Trace Macrocell.

Le Cortex-M3 / Cortex-M4 / Cortex-M7 intègre la macrocellule de trace instrumentée (ITM) qui fournit, avec la sortie de fil série (SWO), des capacités de trace pour le système de microcontrôleur. L'ITM dispose de 32 canaux de communication ; deux canaux de communication ITM sont utilisés par CMSIS pour sortir les informations suivantes :

ITM Channel 0 : implémente la fonction ITM_SendChar qui peut être utilisée pour une sortie de style printf via l'interface de débogage. ITM Channel 31 : est réservé au noyau RTOS et peut être utilisé pour le débogage de la connaissance du noyau.

Remarques Les canaux ITM comportent 4 groupes de 8 canaux chacun, chaque groupe pouvant être configuré pour des droits d'accès au niveau non privilégié. Le canal ITM 0 peut être activé pour la tâche utilisateur. Le canal ITM 31 n'est accessible qu'en mode privilégié à partir du noyau RTOS lui-même. Le canal ITM 31 a été sélectionné pour le noyau RTOS car certains noyaux peuvent utiliser le niveau Privilégié pour l'exécution du programme.