우선 위키백과에 설명이 잘 되어있어 정리하겠습니다.

 

JTAG(Joint Test Action Group)으로 디지털 회로에서 특정 노드의 디지털 입출력을 위해 직렬 통신 방식으로 출력 데이터를 전송하거나 입력데이터를 수신하는 방식을 말함. IEEE 1149.1 표준임, 회로 설계에 따라 디지털 회로의 내부로 저송하거나 핀의 외부로 데이터를 출력할 수도 있고 상태를 읽을 수도 있음

 

임베디드시스템 개발 시에는 디버깅 장비가 대표적인 활용 예임, CPU의 기계어 코드를 실행하지 않고 MCU 내부의 플래시 메모리나 임베디드 장치에서 CPU의 외부 플래시 메모리에 코드를 쓰거나 읽을 수 있음

또한 디버거가 CPU 동작과 연동하여 특정 기계어 코드 위치에서 멈추고 상태를 읽어 내부의 상태를 알 수 있음

 

JTAG의 작동 방식은 칩 내부에 Boundary Cell을 만들어 이것이 외부의 핀과 일대 일로 연결되어 프로세서가 할 수 있는 동작을 중간의 Cell을 통해 인위적으로 수행할 수 있도록 하는 것임

 

인터페이스

1. TDI(데이터 입력) : Test 하기 위한 신호

2. TDO(데이터 출력) : Test 한 결과를 외부에서 모니터링 하기 위한 Pin

3. TCK(클럭)

4. TMS(모드) : Test 모드로 전환하기 위한 제어 신호

5. TRST(리셋)

 

-위키 백과

 

자 정리하자면 제품을 만들때 제품이 잘 동작하는지 테스트를 해야합니다.

 

그러면 핀 마다 잘 동작을 확인을 해야하는데 핀이 너무 작고, 숨어 있을 수 있기 때문에

 

이걸 표준으로 만들어 테스트하기 용이하게 만들어 놓은걸 JTAG이라고 합니다. 

 

그리고 JTAG는 임베디드 시스템의 MCU 자체를 테스트 한다기 보단 보드 자체를 테스트 한다고 보시면 됩니다.

 

해당 핀에 신호가 잘 들어가는데 왜 동작이 이상한지, 아니면 코드에 문제가 있는지 등등을 확인할 수 있습니다.

 

또한 JTAG은 하드웨어 디버거에 속합니다. 개발자가 직접 CPU를 조절하며 디버깅이 가능하죠.

 

쉽게 말하자면 if문 안에 printf("if"); 같이 하여 확인하는 것이 소프트웨어 디버깅

 

실행, Break를 통해서 특정 변수의 값, Memory에 값이 잘 쓰였는지 확인하는 것이 하드웨어 디버깅입니다.

또한 JTAG를 통해 플래시 다운로드가 가능합니다.

 

Hex파일이나 Elf파일을 MCU에 다운로드가 가능합니다.

 

Boundary Scan에 대해서는 아직 잘 모르니 잘 설명해놓은 블로그 링크를 걸어두겠습니다.

 

Boundary Scan 설명 : http://forum.falinux.com/zbxe/index.php?document_srl=405972&mid=lecture_tip

 

강좌와 팁 - [JTAG]01 JTAG 이란?

 

forum.falinux.com

 

JTAG Interface

 

 

 

+ Recent posts