JTAG

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색

JTAG(Joint Test Action Group)는 임베디드 시스템 개발 시에 사용하는 디버깅 장비이다. 또, JTAG('제이택'으로 발음)은 임베디드 시스템을 개발하기 위해 통합한 회로로 사용되는 IEEE 1149.1의 일반적인 이름이지만, 보통 디버거를 가리킨다.

개념[편집]

다층기판 보드가 등장하면서 기존의 보드 테스트 방식은 안정성과 비용에 문제를 일으키게 되었고, 이러한 문제점을 해결하기 위해 80년대 중반에 joint European Test Access Group이란 단체가 결성되어 a serial shift register around the boundary of the device라는 개념을 발전시켜 탄생하게 되었다. 일반적으로 JTAG이란 말보다는 Boundary-Scan이란 말을 더 많이 사용한다.

JTAG의 작동 방식은 칩 내부에 Boundary Cell을 만들어 이것이 외부의 핀과 일대 일로 연결되어, 프로세서가 할 수 있는 동작을 중간의 Cell을 통해 인위적으로 수행할 수 있도록 하는 것이다. 이런 방식으로 JTAG은 다양한 하드웨어의 테스트나 연결 상태등을 체크할 수 있다.

구성[편집]

JTAG 인터페이스는 다음과 같은 핀으로 칩 안에 구성된다.

  1. TDI (데이터 입력) : Test하기 위한 데이터 신호. TMS에 의해 전이된 TAP state에 따라, TDI가 command/data 가 결정됨
  2. TDO (데이터 출력) : Test한 결과를 외부에서 모니터링 하기 위한 pin, 이 역시 TAP state에 따라 address/data가 될 수 있음.
  3. TCK (클럭) : Test clock
  4. TMS (모드) : Test Mode 전환하기 위한 제어 신호
  5. TRST (리셋)

더 자세한 것은 아래의 그림을 참고하라. (테스트 리셋 신호를 표시하지 않았음)

Example of JTAG chain

또, JTAG 라인(엄밀하게 이야기 하면 boundary scan cell)을 통해 칩 내부를 조사(Capture 기능) 및 제어(INTEST 기능)를 할 수 있다.

데이터 라인은 한개만이 유효하기 때문에, 프로토콜은 시리얼 방식을 사용한다. 클럭 입력은 TCK 핀으로 , 설정은 TMS 핀을 사용하며, 동작 주파수는 10-100MHz (10-100ns/bit)가 일반적으로 사용된다.

그 밖에도 EXTEST 기능을 이용하여 임베디드 시스템의 다른 칩을 제어 할 수도있다. 예로는 임베디드 시스템의 ROM(NOR Flash일 경우 등), NAND Flash 등의 내용을 기록하거나 읽어 낼 수 있다. 리눅스의 부트로더등을 다운로드하여 아무런 코드도 없는 임베디드 시스템을 부팅하게 만들 수 있다.

기능[편집]

프로세서(CPU)의 상태와는 상관 없이 디바이스의 모든 외부 핀을 구동시키거나 값을 읽어 들일 수 있는 기능을 제공한다.

JTAG은 디바이스 내에서 모든 외부와의 연결점, 즉 각각의 핀들을 Boundary Cell과 일대일로 연결하고, 각각의 Cell은 boundary scan register를 형성하기 위해 서로 연결한다. 전체적인 인터페이스는 5개의 핀(TDI, TMS, TCK, nTRST, TDO)을 통해 제어한다. 이렇게 준비한 상태에서 디바이스 간의 연결 상태를 테스트하거나, 플래시 메모리에 퓨징(fusing)하는 기능을 한다.

같이 보기[편집]