您可以通过多种方式通过 JTAG 端口执行主机 I/O。我通常求助的第一个称为半主机。半主机使用处理器断点来为调试板提供主机 IO。该机制在此处进行了更多解释:http: //infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471h/ Bgbjjgij.html。
您在调试器上启用半主机的方式将根据您使用的工具而改变。例如,在 LPCXpresso IDE 中设置半主机的线程可以在这里找到:https ://www.lpcware.com/content/forum/configure-lpcxpresso-use-semihosting和 GNU Arm Eclipse 指南可以在这里找到:https ://mcuoneclipse.com/2014/09/11/semihosting-with-gnu-arm-embedded-launchpad-and-gnu-arm-eclipse-debug-plugins/ 。
与使用 ITM 相比,半主机的缺点是速度较慢。
正如您在问题中提到的那样,另一种方法是使用 ITM(仪器跟踪宏单元)功能。与半主机不同,如果启用了 SWO 引脚或配置了单独的 UART 输出,则 ITM 无需等待 JTAG 适配器轮询数据即可运行。与半主机一样,详细信息将根据您使用的工具而变化。
在 LPCXpresso IDE 中使用 ITM 作为标准输出的指南可在此处找到:https ://www.lpcware.com/content/faq/lpcxpresso/how-use-itm-printf 。