Percepio apporte l’observabilité à l’aide de traces pour tout logiciel en C/C++, hors système d’exploitation

Percepio TraceAlyser 4.7

Avec la version 4.7 de son outil phare Tracealyzer, le suédois Percepio, fournisseur de logiciels de visualisation et d'analyse d’exécution du code sur des systèmes embarqués (et dont les technologies sont distribuées en France par NeoMore), propose la possibilité d’“observer” tout logiciel développé en C/C++ grâce à la bibliothèque TraceRecorder de la société, désormais utilisable sans nécessiter l'utilisation d'un système d’exploitation temps réel (RTOS).

Une approche rendue possible par une option dite “bare metal” qui permet de générer une trace au niveau de l'application sans avoir besoin d'instrumenter le noyau d’un système d’exploitation. Ici, la trace du noyau RTOS n'est pas fournie par défaut mais, malgré cela, les utilisateurs peuvent enregistrer et visualiser tout événement ou donnée dans leur application, tels que les appels de fonction, les valeurs des variables et des registres, les machines d'état, ainsi que divers types de synchronisation logicielle.

Ainsi, selon Percepio, davantage de développeurs de micrologiciels pour systèmes embarqués peuvent bénéficier des fonctions d’observabilité de Tracealyzer en vue d’améliorer leurs processus de vérification, de profilage et de débogage de logiciels.

Parallèlement, l’outil prend désormais en charge le profilage des ECU (Electronic Control Unit) pour l’automobile. Cette évolution autorise le traçage des exécutables sur ces architectures, ouvrant la voie au profilage et au débogage des ECU pour automobile. Pour rappel, un exécutable est un terme utilisé par les développeurs dans l’automobile qui désigne un composant logiciel dans le système d'exécution.

Cette technologie de traçage des exécutables n'est pas seulement destinée aux systèmes automobiles, mais elle permet aussi, selon Percepio, un profilage détaillé de tout code écrit en C/C++, là où la synchronisation et les performances sont importantes. Ce qui permet aux développeurs de tracer et de visualiser n'importe quelle section de code dans des vues chronologiques et d'obtenir des informations de profilage détaillées, y compris des statistiques de temps d'exécution et des traces.

Notons aussi que Tracealyzer permet désormais aux développeurs de configurer un traçage explicite des machines d'état et des intervalles personnalisés directement dans l'API TraceRecorder, côté cible. Ce qui rend ce traçage plus efficace et plus facile à utiliser car aucune configuration supplémentaire n'est nécessaire dans l'application Tracealyzer. Ainsi, des vues telles que des graphiques d'état et des traces d'intervalles sont disponibles directement lorsque ces traces sont chargées dans Tracealyzer.

Enfin, Tracealyzer dans sa version 4.7 ajoute la prise en charge de la trace en continu (streaming) sur le protocole UDP, plus rapide que le protocole TCP, ce qui signifie un débit plus élevé, moins d'utilisation de la mémoire et des charges de processeur plus faibles.

Côté architectures matérielles, on notera que l’outil intègre un nouveau port pour les puces Arm Cortex-R et Cortex-A qui utilisent l'architecture Armv8 en mode 32 bits. Ce qui permet d'utiliser Tracealyzer sur des cœurs tels que les Arm Cortex-R52.

« Le traçage amélioré des applications, qui ne nécessite plus l'intégration du noyau RTOS, a toujours été un goulot d'étranglement limitant les utilisateurs que nous pouvions prendre en charge immédiatement, commente Johan Kraft, CTO chez Percepio. Désormais, nous pouvons offrir une grande partie des fonctionnalités de Tracealyzer à tout développeur de logiciels développés en C/C++, quel que soit le système d'exploitation qu'il utilise. De plus l’option d'intégration “bare metal” fournit la base de notre prochain SDK Tracealyzer qui permettra aux utilisateurs et partenaires de faire des intégrations personnalisées pour n'importe quel noyau RTOS. »