JTAG vs SWD 디버깅


41

를 감추고 후 이 글 , 나는 JTAG 디버깅을 통해 디버깅 SWD의 장점은 무엇입니까 궁금?

SWD가 적은 와이어 / 핀을 사용하고 공간을 덜 차지한다는 것을 알고 있습니다. 그러나 하드웨어 프로그래머 / 디버거 장치의 성능, 기능 및 비용 측면에서 어떻게 작동합니까? IDE와 같은 Eclipse에서 코드를 여전히 중단 / 일시 중지하고 단계별로 실행할 수 있습니까?

JTAG에서 할 수 있다고 생각하는 것처럼 SWD 인터페이스를 사용하여 ARM 칩을 프로그래밍 할 수 있습니까?


최신 코어가있는 ARM 기반 칩 (예 : Cortex)을 SWD를 통해 프로그래밍하고 디버깅 할 수 있습니다.
B Pete

@BPete : SWD를 사용하면 절전 모드를 사용하는 ST 기반 칩을 디버깅하기 어렵다는 것을 알았습니다. 현재 보드에는 JTAG에 사용할 수있는 핀이 없지만 JTAG가 더 좋은지 궁금합니다.
supercat

2
이 (SWD)는 TI가 MSP430 프로세서의 하위 세트에 적용한 Spy Bi-Wire 인터페이스와 약간 비슷합니다. SBWTCLK와 SBWTDIO가 예제 장치의 2 개의 비 GPIO 핀 (TEST 및 RST / NMI)에 멀티플렉싱 된 2 와이어 JTAG 유사 (플러스 전력 및 접지)입니다. EZ430 devkit에서 지원합니다. 그리고 그것은 (SBW) 스테핑과 중단 점을 지원합니다! TI의 ARM이 동일한 인터페이스를 가지고 있는지는 모르겠지만, 프로그래밍 / 디버그 도구를 공유 할 수있는 공통점이 있다면 흥미로울 것입니다.
Brian Drummond

기사 링크가 종료되었지만 기사일까요? arm.com/files/pdf/Serial_Wire_Debug.pdf
Gabriel Staples

답변:


12

SWD는 ARM 칩셋을 프로그래밍 할 수 있어야하며 중단 점을 디버깅하고 추가 할 수 있습니다. SWD의 또 다른 좋은 점은 printf 문에 직렬 와이어 뷰어를 사용하여 디버깅 할 수 있다는 것입니다. Keil 컴파일러에서만 사용했습니다.


직렬 와이어 뷰어에서이 링크를보십시오. keil.com/download/files/swv_on_cortex-m3.pdf
user468662

37

전기적으로

  • 핀 수
    • JTAG에는 4 개의 신호 라인이 필요합니다
    • SWD에는 2 개의 신호선 만 필요
    • IEEE 1149.7에 지정된 2 와이어 JTAG 인터페이스는 핀 수를 줄이지 만 많은 IC에서 널리 사용되지 않는 것 같습니다. 또한 대역폭을 줄입니다.
  • 위상
    • JTAG는 칩 간 데이터 라인에 데이지 체인 구성을 사용합니다. 따라서 JTAG의 속도는 체인에서 가장 느린 칩에 의해 제한됩니다. 재설정 및 클리어 라인은 버스로 연결되어 있지만 (체인이 아님) SWDJ-DP를 통한 상호 운용이 가능합니다 (아래 설명 참조).
    • 2 와이어 JTAG는 스타 토폴로지를 허용하지만 자주 사용되지는 않습니다.
    • SWD는 스타 토폴로지를 허용합니다

기능적으로

  • SWD는 마이크로 디버깅을 위해 특별히 설계된 ARM 특정 프로토콜입니다.
  • JTAG (Joint Test Action Group)는 칩 및 보드 테스트를 위해 크게 설계되었습니다. 경계 스캔에 사용 되어 생산중인 칩 / 보드의 결함을 검사합니다. 마이크로 디버깅 및 플래싱은 시간이 지남에 따라 응용 프로그램의 발전이었습니다.
  • JTAG는 ARM 외에 여러 마이크로 컨트롤러 / 프로세서 아키텍처에 사용되고 있습니다.

일반 토론

JTAG는 2017 년 현재 비 ARM 마이크로, 프로그래머 및 생산 라인에서 더 광범위하게 지원됩니다. JTAG의 프로그래머는 FT232H [*] 브레이크 아웃 및 기타 프로그래밍 장치 형태로 저렴하게 구입할 수 있습니다 . 그러나 SWD는 ARM 칩 디버깅에서 속도 및 기타 영역에서 뚜렷한 이점이 있습니다.

ARM은 테스트에서 JTAG의 의도 된 특성과 디버깅에서 SWD의 분리로 인해 SWD 핀을 JTAG의 클록 및 리셋 라인에 매핑하는 CoreSight 기술을 통해 SWJ-DP (직렬 와이어 / jtag 디버그 포트)를 제공합니다. 따라서 SWJ-DP를 사용하면 JTAG 및 SWD를 제 시간에 멀티플렉싱해야 할 때와 동일한 프로그래머 또는 프로그래머와 동일한 물리적 연결에서 두 프로토콜을 모두 사용할 수 있습니다.

유용한 참고 자료



7

OP에 대해 너무 늦을 수도 있지만 같은 질문을 가진 다른 사람들에게 유용 할 수 있습니다. SWD를 사용하여 프로그래밍 및 디버그 (메모리 가져 오기 / 맵 등록, 중단, 특정 지점에서 실행 등)가 가능합니다. J-Link EDU를 통해 GDB와 함께 Eclipse를 사용하면 ~ 50 유로가됩니다. 버그가 있습니다 (디버거를 통해 대상을 재설정하고 때로는 연결하거나 맵을 가져 오지 않습니다).


7

오래된 질문이지만 성능 비교에 대한 답변은 없습니다. SWD와 JTAG (CoreSight DAP를 사용하는 경우) 사이의 기능은 거의 동일하지만 SWD 시퀀스는 동등한 JTAG 시퀀스보다 약 10 % 짧습니다.

대부분의 경우 데이터 대역폭 손실이 없습니다 (특히 대역폭이 가장 중요한 스트리밍 읽기 또는 쓰기).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.