2017-04-26 91 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

相關問題