2017-04-26 5 views
0

Ich benutze eine NXP LPC1769, die eine Cortex-M3 enthält. Bis jetzt habe ich nur über die JTAG-Schnittstelle darauf zugegriffen, aber jetzt muss ich es umgekehrt tun. Eine IT-Routine soll bestimmte Teile des Speichers lesen und sofort an den JTAG-Port senden. Gibt es eine Möglichkeit, dies zu tun?Gibt es eine Möglichkeit, Daten direkt von der Anwendung an den JTAG-Port zu senden? (Cortex-M3)

* UPDATE: Nach Stunden der Forschung, fand ich etwas, das helfen könnte: Cortex-M3 unterstützt ITM (Instrumentation Trace Macrocell), die Daten über den TDO-Pin des JTAG-Port senden kann. Meine Frage ist nun, wie würde man das machen? Ich habe nur Debugger-spezifische Anwendungen des ITM gefunden, wobei ich in meinem Fall in der Lage sein möchte, spezifische JTAG-Nachrichten (oder spezifische DP/AP-Register schreiben) von der laufenden Anwendung zu senden.

+0

antwortete ich eine andere Frage (http://stackoverflow.com/questions/32123443/how-do-i-capture-and-view-itm-trace-information-on-a-cortex-m4-mcu/32123445# 32123445), die für Sie von Nutzen sein können. Es ist speziell auf die keil-IDE ausgerichtet, aber der ITM-Teil sollte genau das sein, wonach Sie suchen. Was ich nicht weiß ist, wie man die ITM-Informationen auf PC-Seite extrahiert. Es muss einen Doc mit Ihrem Debugging-Tool geben. Vielleicht findest du dort etwas. – jwsc

+0

Zuerst bezweifle ich, das ist Jtag, aber stattdessen SWD, subtilen Unterschied, sicher. Es ist eine Master-Slave-Sache, wie Spi, I2C, USB, etc. Sie wollen etwas an den Master "senden", Sie lassen es irgendwo und haben die Master-Umfrage dafür. Wenn es wirklich JTAG wäre, wäre dies immer noch der Fall, der Master steuert die Uhr und die jtag-Zustandsmaschine tdo ist ein Slave dazu, Sie platzieren die Werte in ein Register im jtag-Raum und lassen ihn dann vom Master abfragen. –

+0

Lesen Sie Ihre Armdokumentation, in der diese Themen behandelt werden. –

Antwort

0

Es gibt mehrere Möglichkeiten, wie Sie Host tun können I/O über den JTAG-Port. Die erste, an die ich mich normalerweise gewöhne, heißt Semihosting. Semihosting verwendet Prozessor-Breakpoints, um die debugged-Karte mit IO zum Host zu bringen. Der Mechanismus wird hier ein wenig mehr erklärt: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471h/Bgbjjgij.html.

Wie Sie semihosting auf Ihrem Debugger auf welchem ​​Werkzeug wird sich ändern Sie verwenden könnte ermöglichen basiert. Zum Beispiel kann ein Thread für den Aufbau semihosting in der LPCXpresso IDE finden Sie hier: https://www.lpcware.com/content/forum/configure-lpcxpresso-use-semihosting und ein Leitfaden für GNU Arm Eclipse kann hier gefunden werden: https://mcuoneclipse.com/2014/09/11/semihosting-with-gnu-arm-embedded-launchpad-and-gnu-arm-eclipse-debug-plugins/.

Der Nachteil der Semihosting ist, dass es langsam im Vergleich zu ITM ist.

Eine andere Methode, wie Sie in Ihrer Frage anspielen, ist durch die ITM (Instrumentation Trace Macrocell) Funktion verwenden. Im Gegensatz zum Semihosting kann das ITM ohne Warten auf den JTAG-Adapter arbeiten, um Daten abzufragen, wenn der SWO-Pin aktiviert oder ein separater UART-Ausgang konfiguriert wurde. Wie beim Semihosting ändern sich die Details basierend auf den von Ihnen verwendeten Tools.

Ein Leitfaden für ITM als Standardausgabe in der LPCXpresso IDE finden Sie hier: https://www.lpcware.com/content/faq/lpcxpresso/how-use-itm-printf.

Verwandte Themen