2017-04-26 47 views
0

我正在使用包含Cortex-M3的恩智浦LPC1769。到目前为止,我只能从JTAG接口访问它,但现在我必须以相反的方式进行操作。 IT例程应该读取内存的某些部分,并立即将它们发送到JTAG端口。有没有办法做到这一点? *更新:经过数小时的研究,我发现了一些可能有所帮助的东西:Cortex-M3支持ITM(仪表跟踪宏单元),它可以通过JTAG端口的TDO引脚发送数据。我现在的问题是,怎么会这样做呢?我只发现了ITM的特定于调试器的应用程序,在我的情况下,我希望能够从正在运行的应用程序发送特定的JTAG消息(或写入特定的DP/AP寄存器)。有没有办法直接从应用程序发送数据到JTAG端口? (Cortex-M3)

+0

我回答了另一个问题(http://stackoverflow.com/questions/32123443/how-do-i-capture-and-view-itm-trace-information-on-a-cortex-m4-mcu/32123445# 32123445)这可能对你有用。它特别针对keil IDE,但ITM部分应该是你正在寻找的。我不知道如何在PC端提取ITM信息。你的调试工具必须有一个Doc。也许你在那里找到一些东西 – jwsc

+0

首先我怀疑这是jtag,但取而代之的是SWD,细微差别,当然。它是一个主人奴隶的东西,像spi,i2c,usb等。你想要“发送”一些东西给主人,你把它留在某个地方并让主人为它进行民意调查。如果它真的是JTAG,这仍然是这种情况,主设备驱动时钟,并且jtag状态机tdo是从设备,您将这些值放入jtag空间的寄存器中,然后让主设备对其进行轮询。 –

+0

阅读您的arm文档,了解这些主题。 –

回答

0

有几种方法可以通过JTAG端口进行主机I/O。我通常转向的第一个称为semihosting。半主机使用处理器断点来为调试板提供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

相关问题