2017-04-26 9 views
0

J'utilise un NPC LPC1769, qui contient un Cortex-M3. Jusqu'à présent, je n'y ai accédé qu'à partir de l'interface JTAG, mais maintenant je dois le faire dans l'autre sens. Une routine informatique est supposée lire certaines parties de la mémoire et les envoyer immédiatement au port JTAG. Y a-t-il un moyen de faire cela? * MISE À JOUR: Après des heures de recherche, j'ai trouvé quelque chose qui pourrait aider: Cortex-M3 soutient ITM (Instrumentation Trace Macrocell), qui peut envoyer des données via la broche TDO du port JTAG. Ma question est la suivante: comment on s'y prendrait? J'ai seulement trouvé des applications spécifiques au débogueur de l'ITM, où dans mon cas, je veux être capable d'envoyer des messages JTAG spécifiques (ou écrire des registres DP/AP spécifiques) à partir de l'application en cours d'exécution.Existe-t-il un moyen d'envoyer des données directement au port JTAG à partir de l'application? (Cortex-M3)

+0

répondis-je une autre question (http://stackoverflow.com/questions/32123443/how-do-i-capture-and-view-itm-trace-information-on-a-cortex-m4-mcu/32123445# 32123445) qui peut vous être utile. Il est spécialement destiné à l'IDE de Keil, mais la partie ITM devrait être ce que vous cherchez. Ce que je ne sais pas, c'est comment extraire les informations ITM du côté PC. Il doit y avoir un Doc avec votre outil de débogage. Peut-être que vous trouvez quelque chose là-bas. – jwsc

+0

Tout d'abord, je doute que ce soit JTAG, mais à la place SWD, différence subtile, bien sûr. C'est une chose d'esclave maître, comme spi, i2c, usb, etc. Vous voulez "envoyer" quelque chose au maître, vous le laissez quelque part et avez le maître sondage pour cela. Si c'était vraiment JTAG, ce serait toujours le cas, le maître pilote l'horloge et la machine d'état jtag tdo est esclave de cela, vous placez les valeurs dans un registre dans l'espace jtag et ensuite le maître l'interroge. –

+0

Lisez la documentation de votre bras sur ces sujets. –

Répondre

0

Il y a plusieurs façons que vous pouvez faire d'E/S hôte sur le port JTAG. Le premier que je me tourne normalement est appelé semi-hébergement. Le semi-hébergement utilise des points d'arrêt du processeur afin de fournir à l'hôte la carte déboguée avec IO. Le mécanisme est expliqué un peu plus ici: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471h/Bgbjjgij.html.

Comment vous pouvez activer semihosting sur votre débogueur change en fonction de quel outil que vous utilisez. Par exemple, un fil pour la mise en place semihosting dans le LPCXpresso IDE se trouve ici: https://www.lpcware.com/content/forum/configure-lpcxpresso-use-semihosting et un guide pour GNU Arm Eclipse se trouve ici: https://mcuoneclipse.com/2014/09/11/semihosting-with-gnu-arm-embedded-launchpad-and-gnu-arm-eclipse-debug-plugins/.

L'inconvénient de l'hébergement partiel est qu'il est lente par rapport à l'utilisation de l'ITM.

Une autre méthode, comme vous faites allusion dans votre question, est en utilisant l'ITM (Instrumentation Trace Macrocell) fonctionnalité. Contrairement au semi-hébergement, l'ITM peut fonctionner sans attendre que l'adaptateur JTAG l'interroge pour savoir si la broche SWO est activée ou si une sortie UART séparée a été configurée. Comme pour le semi-hébergement, les détails changent en fonction des outils que vous utilisez.

Un guide pour l'utilisation ITM en tant que sortie standard dans le LPCXpresso IDE se trouvent ici: https://www.lpcware.com/content/faq/lpcxpresso/how-use-itm-printf.