salut
Je développe un séquenceur MIDI sur Teensy 4.1 à 600 MHz, avec 16 Mo de PSRAM, plusieurs liaisons série et des contrôleurs de pads et d’écrans.
JE ne comprends rien au code, je fais tout par Codex, et là GPT essaie de m'expliquer un problème auquel je ne comprends rien
Des ralentissements sont apparus entre deux versions du firmware, sans ajout de traitement qui semble particulièrement lourd. Sur le même matériel, revenir à une version antérieure redonne un fonctionnement fluide.
Le symptôme est particulier : les pauses durent presque toujours environ 1,79 seconde. Elles peuvent aussi apparaître à l’arrêt, avec une session vide, donc sans notes à calculer.
Une instrumentation a relevé :
- de longues durées dans plusieurs traitements et interruptions, notamment Serial5 et USB ;
- un passage pouvant durer environ 1,78 seconde lors de l’écriture d’un tick d’horloge dans une file située en PSRAM ;
- le drapeau AHBBUSTIMEOUT du contrôleur FlexSPI2, qui indique une expiration du délai d’accès au bus de mémoire externe.
Ces observations ne suffisent pas à désigner la cause : les durées incluent les interruptions, et le drapeau mémoire n’a pas été associé individuellement à chaque pause.
Un test autonome de lecture/écriture des 16 Mo de PSRAM, comprenant des accès depuis une interruption, n’a révélé aucune erreur. Déplacer un tampon en RAM interne avait supprimé le blocage mesuré à cet endroit, mais pas toutes les pauses.
Je cherche surtout à comprendre la nature du problème :
- Une modification du code, même peu coûteuse en calcul, peut-elle provoquer ce comportement en changeant la disposition mémoire ou les interactions entre interruptions ?
- Un délai presque fixe de 1,79 seconde évoque-t-il un mécanisme connu du RT1062 : expiration d’attente mémoire, accès au cache, compteur ou autre ?
- Comment distinguer un problème dans le code applicatif d’un problème de configuration ou d’utilisation du contrôleur mémoire ?
- Quelles règles de conception et quelles mesures permettraient d’éviter ce phénomène, ou de le reconnaître rapidement s’il revient ?
Mon objectif n’est pas seulement de supprimer les pauses actuelles, mais de comprendre ce qui les déclenche pour éviter de les réintroduire et savoir les diagnostiquer à l’avenir.
Je précise que la fonction rajoutée n'est pas lourde du tout, c'est un truc de remix qui est la 1ere chose que j'avais faite sur mon proto, puis j'ai laissé ça de côté pour faire un vrai séquenceur complet, et là je voulais rajouter ce truc qui est sensé être anecdotique niveau calcul pour Teensy comparé au reste
Merci si vous pouvez m'aider à comprendre ce charabia
-----



