임베디드 스터디 - JTAG
임베디드 스터디 - JTAG
JTAG (Joint Test Action Group)
- OS도 없고, 소프트웨어 경로가 전혀 없는 상태에서 칩의 동작을 확인하고 플래시 메모리를 굽기 위해 사용되는 하드웨어 디버그 인터페이스
- ARM 코어 전용으로 SWD라는 하드웨어 디버그 인터페이스도 있다.
JTAG의 탄생 배경
- 원래는 PCB 보드 조립 불량 테스트용으로 개발된 규격이었음
- Boundary Scan : 각 칩의 모든 I/O 핀 경계(Boundary)에 작은 레지스터 셀을 하나씩 심어두고, 외부에서 그 셀을 체인으로 연결해서 핀 값을 읽고 쓸 수 있게 한다.
IEEE 1149.1
- 1990년에 JTAG을 공식 표준으로 인정함
- 정식 명칭 : Standard Test Access Port and Boundary-Scan Architecture, TAP(Test Access Port)와 Boundary Scan을 정의한 표준
- IEEE 표준의 핵심
- TAP (Test Access Port) — TCK/TMS/TDI/TDO/TRST 5개 신호의 역할과 전기적 특성을 규정
- TAP 컨트롤러 — 16상태 FSM의 상태 전이 규칙을 정의. 어느 벤더의 칩이든 이 FSM을 따르기 때문에 같은 디버거로 여러 칩을 제어 가능
- Boundary Scan 레지스터 구조 — 각 핀 경계에 심는 BSR(Boundary Scan Register) 셀의 구조와, BYPASS/IDCODE/EXTEST 등 표준 명령어를 정의
- JTAG은 1~20MHz, 시스템 클럭의 1/6 이하로 동작시킬 것을 권장함
JTAG 신호선
- TCK(Test Clock) : 시스템 클럭과 독립된 별도의 클럭
- 시스템 오류가 발생해도 외부에서 접근할 수 있도록 클럭 발생
- TDI(Test Data In) : 데이터 입력 신호
- TDO(Test Data Out) : 데이터 출력 신호
- TMS(Test Mode Select) : TAP FSM 제어
- TRST(Test Reset) : TAP 강제 리셋(선택적)
- TMS 신호를 통한 JTAG FSM 설정만으로도 Reset이 가능하지만, 시스템이 완전히 불안정한 최악의 상황에 대비한 보험용 신호
Daisy Chain
- Daisy Chain 구조로 여러 칩을 연결하여 직렬로 통신함
1
2
3
4
Host
TDI ──→ [칩A TDI/TDO] ──→ [칩B TDI/TDO] ──→ [칩C TDI/TDO] ──→ TDO
TMS ──────────────────────────────────────────────────────────────→ (전체 공유)
TCK ──────────────────────────────────────────────────────────────→ (전체 공유)
TAP 컨트롤러
- JTAG의 동작 모드를 결정하는 모듈
- TMS의 신호에 따라 FSM이 전환된다.
- Test-Logic-Reset — TMS=1을 5번 치면 어느 상태에서든 초기화 상태로 전환.
- Run-Test/Idle — 아무것도 안 하는 대기 상태
- 나머지 14개 상태는 DR/IR 경로 안에서 Capture → Shift → Update 흐름이 있다.
1
2
3
4
5
6
7
Test-Logic-Reset
│ TMS=0
Run-Test/Idle
│ TMS=1
┌──┴──────────────┐
[DR 경로] [IR 경로]
(데이터 레지스터) (명령어 레지스터)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.