3

我正在使用包含 Cortex-M3 的 NXP LPC1769。到目前为止,我只从 JTAG 接口访问它,但现在我必须反过来做。IT 例程应该读取内存的某些部分,并立即将它们发送到 JTAG 端口。有没有办法做到这一点?

*更新:经过数小时的研究,我发现了一些可能有帮助的东西:Cortex-M3 支持 ITM(仪器跟踪宏单元),它可以通过 JTAG 端口的 TDO 引脚发送数据。我现在的问题是,如何去做呢?我只找到了 ITM 的调试器特定应用程序,在我的例子中,我希望能够从正在运行的应用程序发送特定的 JTAG 消息(或写入特定的 DP/AP 寄存器)。

4

1 回答 1

2

您可以通过多种方式通过 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 。

于 2017-06-08T03:27:41.117 回答