Table of contents
JTAG(Joint Test Action Group)
JTAG은 임베디드시스템 개발 시, 대표적으로 활용되는 디버거의 통신 방식입니다.
IEEE 1149.1에 표준으로 정해져 있습니다.
MCU에 프로그램을 다운로드 하거나 레지스터를 읽거나 컴퓨터 환경에서 개발하는 것처럼 break를 걸어, 특정 변수의 값을 읽을 수도 있습니다.
JTAG 인터페이스
JTAG 인터페이스는 아래와 같은 종류의 PIN들로 구성되어 있니다.
PIN | 내용 |
TDI(데이터 입력) | 테스트하기 위한 데이터 신호 TMS에 의해 TAP State가 전이되고, TDI가 Command와 Data로 결정됨 |
TDO(데이터 출력) | 테스트 결과를 외부에서 모니터링하기 위한 신호 TAP State에 따라, TDO가 Address와 Data로 결정됨 |
TCK(클럭) | 테스트 클럭 |
TMS(모드) | 테스트모드로 전환하기 위한 제어 신호 |
TRST(리셋) | 리셋 신호 |
JTAG 인터페이스 종류
JTAG은 아래와 같이 10PIN, 14PIN, 16PIN, 20PIN 등의 인터페이스가 있습니다.
SWD(Serial Wire Debug)
SWD는 ARM사의 코어 기반 MCU들에서 주로 활용되는 디버깅 통신 방식입니다.
SWD는 JTAG과 달리, 클럭(SWCLK)과 단일 양방향 데이터 핀(SWDIO)만 있어도, 기존의 5핀 JTAG 디버그 인터페이스를 대체할 수 있습니다.
또한, SWDIO와 SWCLK는 TMS 및 TCK 핀에 오버레이 되어 동일한 커넥터도 사용할 수 있다고 하는데, 추후 시간이 되면 확인해봐야겠네요.
SWD 인터페이스
PIN | 내용 |
SWDIO | 데이터 입출력 JTAG/SWD를 지원하는 대상에서는 TMS와 공유됨 |
SWO(Optional) | 직렬 와이어 출력 비동기식으로 printf 출력과 같은 데이터 출력시 활용 JTAG/SWD를 지원하는 대상에서는 TDO와 공유됨 |
SWCLK | 클럭 JTAG/SWD를 지원하는 대상에서는 TCK와 공유됨 |