Je programme une carte de découverte STM32 Cortex M0 (32F0308DISCOVERY) en utilisant OpenOCD, arm-none-eabi-gcc et gdb. Je me demandais s'il existe un moyen simple de consigner les messages de débogage via SWD. J'ai lu sur l'option semihosting, mais cela semble nécessiter l'extraction de newlib ou d'autres grandes bibliothèques. (Il n'y a que 64 Ko de mémoire flash disponibles.) Existe-t-il un moyen plus léger de consigner du texte sur SWD, ou l'utilisation de l'UART est-elle la seule option pratique?
15
Réponses:
Merci pour les pointeurs, Markt et Chris-Stratton. L'option de semi-hébergement s'est avérée assez simple. J'ai réussi à trouver la source de quelques routines de journalisation simples qui peuvent envoyer des messages à la console OpenOCD. Je les posterai ici car (i) ils ont nécessité quelques modifications pour fonctionner et (ii) je pense que cette information n'est pas super facile à trouver pour les personnes qui débutent.
Tout d'abord, le code D ici est facilement adapté pour fournir la fonction C suivante:
Exemple d'appel de send_command pour écrire une chaîne dans la console OpenOCD:
Deuxièmement, la fonction putChar donnée dans les commentaires ici fonctionne bien, sauf que j'ai dû ajouter un «#» avant 0x03:
Pour regarder la sortie de ces fonctions, je démarre d'abord OpenOCD, puis je me connecte en utilisant arm-none-eabi-gdb comme suit:
Notez que les messages apparaissent sur la sortie standard du processus OpenOCD, pas sur la console GDB.
la source
putchar
aussi simplement quevoid putchar(char c) { send_command(3,&c); }