2017-04-26 19 views
0

Cortex-M3가 포함 된 NXP LPC1769를 사용하고 있습니다. 지금까지는 JTAG 인터페이스에서만 액세스했지만 지금은 다른 방법으로해야합니다. IT 루틴은 메모리의 특정 부분을 읽고 곧바로 JTAG 포트로 보냅니다. 이것을 할 수있는 방법이 있습니까? Cortex-M3는 JTAG 포트의 TDO 핀을 통해 데이터를 보낼 수있는 ITM (Instrumentation Trace Macrocell)을 지원합니다. 이제 내 질문은 어떻게 그렇게 할 것인가? 필자는 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 정보를 추출하는 방법을 모르겠습니다. 디버깅 도구가있는 문서가 있어야합니다. 어쩌면 당신이 뭔가를 찾을 수 있습니다. – jwsc

+0

처음에는 이것이 jtag가 아니라 SWD, 미묘한 차이라고 확신합니다. 그것은 spi, i2c, usb 등과 같이 주인 노예입니다. 주인에게 무언가를 "보내"원한다면, 그것을 어딘가에 남겨 놓고 주인에게 그것을위한 설문 조사를하게하십시오. 그것이 정말로 JTAG 이었다면, 이것은 여전히 ​​그럴 것입니다. 마스터는 시계를 작동시키고 JTAG 상태 머신은 그것의 노예입니다. 당신은 jtag 공간의 레지스터에 값을 넣은 다음 마스터 폴링을 가지게됩니다. –

+0

이 항목이 적용되는 암 문서를 읽으십시오. –

답변

0

당신이 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 팔 이클립스에 대한 가이드는 여기에서 찾을 수 있습니다 : https://mcuoneclipse.com/2014/09/11/semihosting-with-gnu-arm-embedded-launchpad-and-gnu-arm-eclipse-debug-plugins/를.

세미 호스팅의 단점은 ITM을 사용할 때와 비교하면 이 느림입니다. 당신이 당신의 질문에 암시로

또 다른 방법은,의 ITM (계측 추적 매크로 셀) 기능을 사용하는 것입니다. 세미 호스팅과 달리 ITM은 SWO 핀이 활성화되거나 별도의 UART 출력이 구성된 경우 JTAG 어댑터가 데이터를 폴링 할 때까지 기다리지 않고 작동 할 수 있습니다. 세미 호스팅과 마찬가지로 세부 정보는 사용중인 도구에 따라 변경됩니다.

LPCXpresso IDE 표준 출력으로 ITM을 사용하기위한 설명서는 여기에서 찾을 수있다 : https://www.lpcware.com/content/faq/lpcxpresso/how-use-itm-printf.