안녕하세요. 블루 돼지입니다. 

왕초보 개발자가 SWD 관련 블로그를 작성합니다.

궁금하거나 필요한 내용이 있으면 댓글로 남겨주세요! 

 

SWD (Serial Wire Debug)

 

 ARM Cortex-M 프로세서와 같은 ARM 프로세서의 디버깅을 위해 개발된 프로토콜로, 임베디드 시스템에서 사용됩니다

 

SWD는 JTAG(전통적인 디버깅 인터페이스)의 대안으로, 더 간단하고 핀 수가 적은 인터페이스를 제공합니다

JTAG과 달리 SWDIO와 SWCLK 두 개의 핀만 사용해 기존 5핀 JTAG 디버그 인터페이스를 대체할 수 있습니다.

 

JTAG 대신 SWD를 선택하는 이유는 

PCB 크기 제약이 있는 경우 / MCU에 추가적으로 JTAG 핀을 할당할 수 없는 경우에 사용합니다.

 

JTAG / SWD 프로토콜을 지원하는 디버깅 도구 중 하나가 ST-LINK입니다.

 

SWD Pinout

PIN 내용
SWDIO [Serial Wire debug Data Input/Output] 양방향 데이터 입출력  
JTAG/SWD를 지원하는 대상에서는 TMS와 공유됨
SWO [Serial Wire trace Output] 직렬 와이어 출력
비동기식으로 printf 출력과 같은 데이터 출력시 활용
JTAG/SWD를 지원하는 대상에서는 TDO와 공유됨
SWCLK [Serial Wire Clock] 클럭
데이터 전송을 동기화

JTAG/SWD를 지원하는 대상에서는 TCK와 공유됨

내부에 Pull-up 저항이 있지만, 인터페이스의 안정성과 신뢰성을 높이기 위해 풀업 저항을 사용하는 경우가 많습니다.

풀업 저항을 사용하여 floating state를 방지할 수 있습니다.

신호의 상태를 일관되게 유지하려면, SWDIO에 풀업 저항을 추가하세요.   

 

SWD Connector

아래와 같이 10PIN, 20PIN 등 다양한 커넥터로 사용할 수 있습니다.


JTAG 커넥터에 [SWDIO→TMS] / [SWCLK→TCK] 을 연결하여 사용할 수 있습니다.


JTAG VS SWD 

  JTAG SWD
호환성 다양한 MCU/프로세서 Cortex-M 기반 ARM 전용
핀 수
최소 4개의 신호 핀(TMS, TDI, TDO, TCK) 기본 신호 핀(SWDIO, SWCLK)
선택적으로 1개의 추가 핀(SWO)
전송 방식 병렬 데이터 전송  직렬 데이터 전송

 

 

참고 링크
https://community.silabs.com/s/article/serial-wire-debug-swd-x?language=en_US

 

 

이상 마치겠습니다.

궁금한 내용이나 틀린 내용은 바로바로 댓글 남겨주세요!! 

감사합니다.

 

+ Recent posts