오늘은 임베디드 개발에서 디버깅 장비로 많이 쓰이는 JTAG 표준 포트 종류에 대해서 알아보도록 하겠습니다.

일단 JTAG에 대해서는 아래 wiki 사이트에서 아주 잘 설명되어 있습니다. 반도체 업계에서는 Boundary scan이라는 용어로 알려져 있죠 검사장비에서 많이 활용된다고 하는데 저같이 임베디드 개발하시는 분들은 거의 디버깅 용도로 사용하실 것 같습니다.


http://ko.wikipedia.org/wiki/JTAG


주요 기능은 CPU의 상태와 관계 없이 CPU 내부의 모든 IP 블럭들을 구동시키거나 읽어 들일 수 있고 플래시 메모리(플래시도 CPU 내부 블럭이니까) 퓨징까지도 할 수 있습니다.


연결은 보통 아래와 같이 표준 20핀(간격은 2.54mm pitch, 100mil)으로 CPU와 연결합니다. ARM 계열의 CPU는 반드시 JTAG 인터페이스가 있죠. 최근에 많이 쓰이는 Cortex-M시리즈 계열의 마이컴들도 이러한 인터페이스가 다 내장되어 있습니다.

이 중에서 5개의 핀(TDI, TMS, RTCK, TRST, TDO)를 통해 제어를 하게 됩니다.

1.PNG

2.PNG

http://www.keil.com/support/man/docs/ulinkpro/ulinkpro_hw_if_jtag20.htm


하지만 핀 간격이 2.54mm라서 보드 사이즈가 크지 않으면 공간적으로 실장하기 어려운 것이 단점입니다.

그래서 요즘처럼 매우 작은 사이즈의 보드에도 쉽게 실장 가능한 1.27mm 간격의 10핀 JTAG 인터페이스도 나오게 되었습니다.

혹시 커넥터 데이터 시트가 알고 싶으시면 아래의 pdf를 보시면 되겠습니다.

http://www.samtec.com/ftppub/pdf/FTSH_MT.PDF


 3.PNG

위의 2가지가 많이 사용되고 있지만 14핀, 16핀 커넥터(2.54mm)도 있습니다. 아래처럼...

4.PNG


하지만 이렇게 다양한 JTAG 인터페이스가 있음에도 여전히 핀이 많이 쓰이는 것이 단점입니다. 그래서 또 등장한 것이

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

GND까지 포함하면 3개의 핀으로 완벽한 JTAG 디버깅이 가능합니다. 물론 전원은 따로 넣어주시면 됩니다. 만약 전원까지 포함하신다면 4핀으로도 가능합니다.

핀맵은 이미 위의 표준 20핀과 10핀 커넥터 핀맵에서 노란색으로 SWD~로 시작하는 핀들이 모두 SWD에서 사용되는 것들입니다.SWO나 EXTb도 SWD관련 핀으로 표시되지만 옵션핀일 뿐입니다. 필수적인 핀은 위에서도 언급했지만 SWCLK과 SWDIO핀입니다.


5.PNG


여기까지가 JTAG 핀맵과 SWD에 대한 팁이었습니다. 보드 사이즈가 작을 경우 SWD 인터페이스만 실장해도 개발할 때 전혀 무리가 없을 것 같습니다. 최소 3핀(SWCLK, SWDIO, GND)만 있으면 가능하기 때문입니다.

이상입니다.