디지털 장치들을 디버깅할 때 많이 사용하는 JTAG(Joint Test Action Group)과 SWD(Serial Wire Debug)에 대해서 알아보자. MCU나 CPU의 장치를 디버깅할 때 많이 사용한다. 이러한 JTAG이나 SWD에 연결하여 디버깅을 하기 위해서는 Debugger 또는 Emulator가 필요하다.

* JTAG과 SWD 소개
JTAG과 SWD는 디바이스 장치의 디버깅용 인터페이스 이다. JTAG interface는 IEEE-1149.1-2001에 표준으로 정의되어 있다.
JTAG과 SWD는 모두 디지털 디바이스의 디버깅을 위한 효과적인 인터페이스이다. 핀 수, 지원 CPU, 고급 기능, SWO 핀 등 다양한 요소를 고려하여 적합한 인터페이스를 선택하는 것이 좋다.
JTAG은 1980년대 중반에 개발된 인터페이스로, 현재까지 가장 널리 사용되는 디버깅 인터페이스이다. 반면, SWD는 2000년대 중반에 ARM에서 개발된 인터페이스로, JTAG에 비해 핀 수가 적고 보드의 면적을 절약할 수 있다는 장점이 있다.
JTAG과 SWD는 모두 MCU(Microcontroller Unit)의 디버깅을 위한 인터페이스다. JTAG은 병렬 방식으로 데이터를 전송하는 반면, SWD는 시리얼 방식으로 데이터를 전송한다.
* JTAG과 SWD 장단점 비교
JTAG과 SWD를 비교하면 다음과 같다.

JTAG과 SWD는 각각 장단점이 있다. JTAG은 다양한 디버깅 기능을 지원하고 속도가 빠르지만, 필요한 핀 수가 많고 비싸다. 반면 SWD는 필요한 핀 수가 적고 저렴하지만, JTAG에 비해 지원하는 기능이 적고 속도가 상대적으로 느리다.
JTAG과 SWD 중 어느 인터페이스를 선택할지는 다음과 같은 요소를 고려하여 결정할 수 있다.
- 디버깅 기능: JTAG은 SWD에 비해 다양한 디버깅 기능을 지원한다 따라서 고급 디버깅 기능이 필요한 경우 JTAG을 선택하는 것이 좋다.
- 핀 수: SWD는 JTAG에 비해 필요한 핀 수가 적다. 따라서 보드 공간을 절약해야 하는 경우 SWD를 선택하는 것이 좋다.
- 가격: SWD는 JTAG에 비해 비용이 저렴하다. 따라서 비용을 절감해야 하는 경우 SWD를 선택하는 것이 좋다.
* SWO (Serial Wire Output)
SWD에는 디버깅 정보를 시리얼로 출력할 수 있는 1핀 짜리 SWO 인터페이스가 있다. SWO는 Cortex-M0/M0+ 에서는 사용할 수 없으며, Cortex-M3/M4 에서 부터 지원된다.
JTAG의 실제 테스트 속도는 최대 8Mbps를 지원하며 SWD의 실제 테스트 속도는 최대 3.2Mbps를 지원한다고 한다.

