본문 바로가기

전자 공학/기타

JTAG이란? SWD란?

반응형

안녕하세요. 취업한 공대누나입니다.

펌웨어 코딩을 하다가 JTAG과 SWD에 대해 포스팅하면 좋을 것 같다라는 생각이 들어서 글을 작성하게 되었습니다.


우선 JTAG과 SWD 모두 MCU의 디버깅을 하기 위한 인터페이스입니다.

우리가 코딩한대로 동작을 잘 하는지 일일이 MCU 핀을 찍어가면서 하기에는 너무 힘들기 때문에 이러한 표준이 만들어지게 되었습니다.

 

1. JTAG이란?

Joint Test Action Group의 약자입니다.

 

연결은 보통 아래 왼쪽 그림과 같이 표준 20핀을 사용하나 오른쪽과 같이 10핀짜리 JTAG 인터페이스도 나오게 되었습니다.

JTAG JTAG

 

핀에 대해서 간략하게 설명드리도록 하겠습니다.

TMS (Test Mode State Pin)

TDO (Test Data Out Pin)

RTCK (JTAG Return Test Clock)

TDI (Test Data In Pin)

TRST (Test Reset Pin)

TCLK (Test Clock Pin)

VCC

GND

RESET

전체적인 인터페이스는 5개의 핀 (TDI, TMS, TCK NRST, TDO)를 통해 제어합니다.

 

펌웨어에 Break문을 걸어가면서 변수에 값이 잘 쓰여있는지 해당 구문이 잘 실행되는지 확인하는 용도로 사용합니다.

 

또한 JTAG은 플래시 메모리에 소스 코드를 다운로더 하는 용으로도 사용이 됩니다.

프로그램을 컴파일하고 나면 통합 바이너리 파일이 만들어지는데 이 파일을 플래시 메모리에 넣기 위해서 JTAG 포트를 사용합니다.

반대로 내용을 읽어올 수도 있습니다.

 

이 외에도 여러가지 인터페이스가 있는데 JTAG은 기본적으로 핀을 많이 사용하는 것이 단점입니다. 

그래서 또 많이 사용하는 것중 하나가 아래의 SWD 입니다.

 


2. SWD란?

Serial Wire Debug의 약자입니다.

SWD는 시리얼 방식으로 통신하기 때문에 클럭(SWCLK)과 데이터(SWDIO) 2개의 핀만을 사용합니다.

 

SWD

 

마찬가지로 핀에 대해서 간략하게 설명드리겠습니다.

SWDIO : Data I/O Pin. 

SWO Opational trace output pin

SWCLK : Clock Pin

VCC

GND

RESET

 


저는 주로 JTAG을 이용하여 펌웨어를 다운로드를 하고 디버깅을 진행하고 있습니다.

딱히 특별한 이유는 없고 이전부터 사용해서 그대로 사용하고 있을 뿐입니다.

이런게 없었을 때는 디버깅을 어떤 방식으로 했을지 감도 잡히지 않네요.

디버깅 하는 일은 싫지만 없었을 때보다 훨씬 쉽게 하고 있구나 생각하면서 하고 있습니다.

다들 개발 및 디버깅 잘 하시길 바랍니다.

반응형

'전자 공학 > 기타' 카테고리의 다른 글

CAN 통신이란?  (0) 2021.03.24
윈도우(Windows)란?  (0) 2021.02.04
Atmega128이란?  (0) 2021.01.26
펠티어 소자란(열전 소자)?  (1) 2021.01.20
RoHS란?  (0) 2021.01.18