이 매뉴얼은 JK전자(JK Electronics) 에 의해서 수정, 작성 되었고 소유권 또한
JK전자(JK Electronics)
의 것입니다. 소유권자의 허가를 받지 않고 무단으로 수정, 삭제하거나 배포 할 수 없습니다.

 

 

ARM JTAG 사용자 가이드


 
* Update history

- 2012.3.26 : 초기 Release


 
1. ARM JTAG 기능 및 특징
2. ARM JTAG SW 설치 및 제거
3. ARM JTAG SW 설정
4. Flash 다운로드 Guide
5. 디버깅 가이드
6. ARM JTAG 펌웨어 업그레이드 Guide
7. ARM JTAG 문제 해결 Guide


   
 


1.1 ARM JTAG 기능 및 특징

ARM JTAG 는 아래와 같은 다양한 기능을 제공합니다.

(1) 각종 ARM 코어 지원
ARM7, ARM9, ARM11, CORTEX-M0, CORTEX-M1, CORTEX-M3, CORTEX-M4, CORTEX-A8.

(2) 다양한 컴파일러 IDE 지원
ARM AXD, IAR EWARM, KEIL MDK-ARM(uVision), GNU GDB.

(3) Adaptive Clock(RTCK) 지원
RTCK 를 가지는 프로세서(예 : ARM926EJ-S, ARM1176JZF-S)는 RTCK 기능을 지원하는 디버거와 사용해야만 TDO 핀으로 들어오는 Target의 디버깅 정보를 손실 없이 정확하게 받아들일 수 있습니다. ARM JTAG 는 RTCK 기능을 지원하고 있습니다.

(4) SWD (Serial Wire Debugging) 지원
최신의 Cortex-M 코어에서 기존의 JTAG Port 들 대신하여 2개의 핀 (SWDIO, SWCLK)만을 사용해서 디버깅 할 수 있는 최신의 기술입니다.

(5) 다양한 Target Core Voltage 지원
다양한 프로세서를 지원하기 위해서 1.6V~5.0V Range 의 넓은 범위의 Core Voltage 를 지원합니다.

(6) Target Voltage Detection 기능 지원
개발자에게 Target 과 JTAG 간의 연결 상태를 명확하게 알려주기 위해서 ARM JTAG 는 Target Core 의 Voltage 를 JTAG Server 를 통하여 Display 해주고 있습니다.

(7) Multi Core(Tap) 지원
Multi Core, Multi Tap Core 디버깅을 지원합니다.

(8) USB2.0 High Speed 지원
USB2.0 High Speed 를 지원하는 최신의 USB 인터페이스 칩을 사용하여 설계되었습니다. 어떤 디버거와 비교하여도 뒤지지 않는 빠른디버깅 속도를 지원합니다.

(9) JTAG Clock 12MHz ~ 500KHz 지원
JTAG Clock 을 12MHz 까지 지원합니다.

(10) 사후관리 지원
각종 Flash Loader 를 지원하며 최신의 펌웨어를 통한 ARMJTAG 기능 향상 및 고객 사후관리 서비스를 위해서 펌웨어 업그레이드를 지원합니다.
ARMJTAGUpdater(펌웨어 업그레이드 전용 Tool)를 제공합니다.

1.2 ARM JTAG 설명



[주의]
USB Cable 연결은 PC USB 포트와 직접 연결하십시요.
외부 USB 허브를 통한 연결은 전류 부족 현상이 나타날 수 있으므로 권장하지 않습니다.

1.3 PC와 연결

ARM JTAG은 PC 와 USB 로 통신하며 전원 또한 USB 포트로 공급 받습니다. 최초로 JTAG 장비를 USB 와 연결 시에는 USB 드라이버를 설치해 주어야 합니다.
USB 드라이버 설치에 대한 자세한 사항은 2.3 ARM JTAG USB Driver 설치 편을 참조하십시오.

1.4 Target 과 연결

Target 과 20핀 JTAG Connector 로 연결됩니다.
● 20 핀 JTAG Connector 핀 구성 (IEEE-1149.1 이용 시)

jtag

● 20 핀 JTAG Connector 핀 구성 (SWD 이용 시)

jtag

* 참고
1. 20 핀 JTAG Connector 핀 중 NC 와 SRST_N 을 제외한 모든 핀은 Target 과 연결되어야 정상적인 디버깅이 됩니다.
(단 20 핀 JTAG Connector 핀 중 GND 핀은 4, 6, 8, 10, 12, 14 16, 18, 20 중 하나만 Target GND 와 연결되어도 됩니다.)

2. SRST_N 은 연결되지 않아도 정상적으로 디버깅 되지만 다음의 기능을 이용하려면 20 핀 JTAG Connector 와 연결되어야 합니다.
1) Target 을 Reset 하는 기능을 이용할 때
2) Target 이 System Reset 된 것을 ARM JTAG이 인식하고자 할 때

2. ARM JTAG SW 설치 및 제거


2.1 ARM JTAG SW Package 설치

제공된 설치 디스켓을 CD롬에 넣은 후 아래를 "ARM_JTAG_SW_Package_V1.xxx.exe" 를 Click 하십시오. 이후에는 설치 마법사의 지시를 따릅니다.

2.2 USB 드라이버 설치

ARM JTAG 장비를 를 PC 의 USB 포트에 연결하십시오.
PC 윈도우가 장비를 인식하고 우측 하단에 아래와 같은 메시지를 보여줍니다.

(1) Windows XP 에서 설치

jtag

jtag

jtag

jtag




찾아보기 버튼을 Click 하여 경로를
"C:\Program Files\JICE\usb_driver\CDM20802 WHQL Certified" 로 지정합니다. 이후 다음 버튼을 Click 합니다.

jtag

이후 동일한 과정으로 JK ARM Emulator B 설치 과정을 진행합니다.

(2) Windows 7 에서 설치

Windows 7에서는 XP에서와는 설치 과정이 약간 다릅니다. 우선 제어판에서 장치관리자를 실행 합니다. 그리고 JTAG 장비를 PC 의 USB 포트에 연결하십시오.
이후 아래 순서를 따르십시오.

jtag

jtag

찾아보기 버튼을 Click 하여 경로를
"C:\Program Files\JICE\usb_driver\CDM20802 WHQL Certified" 로 지정합니다.

jtag

jtag

jtag

jtag

이후 동일한 과정으로 JK ARM Emulator B 설치 과정을 진행합니다.

jtag

정상적으로 드라이버 설치가 완료되었을때의 화면 입니다.

jtag

2.3 ARM JTAG SW Package 구성

ARMJTAG 설치 시 생기는 디렉토리는 아래와 같습니다.

jtag

● bin
각종 ARM JTAG 실행파일이 있는 폴더입니다.

● examples
각종 테스트 펌웨어, Flash Agent Source 코드와 ARM JTAG 스크립트가 있는 폴더입니다.

● flashloader
플래쉬 메모리 다운로드에 사용하는 Flash Agent 바이너리와 스크립트가 있는 폴더입니다.

● armjtag_firmware
ARM JTAG 펌웨어 바이너리가 있는 폴더입니다.

● usb_driver
ARM JTAG USB 드라이버가 있는 폴더입니다.

2.4 ARM JTAG USB Driver 제거

ARM JTAG USB 드라이버는 아래와 같이 제거 할 수 있습니다.

[주의]
우선 ARM JTAG USB Cable 을 PC 에서 제거합니다.
"C:\Program Files\JICE\usb_driver\CDM20802 WHQL Certified" 폴더에 있는 CDMuninstallerGUI.exe 프로그램을 Click 합니다.
이후 아래와 같은 순서로 진행하면 됩니다.

jtag

"Add" 버튼을 클릭 합니다.

jtag

"Remove Devices " 버튼을 클릭 합니다.

jtag

2.3 ARM JTAG SW Package 제거

설치한 ARM JTAG SW Package 는 아래와 같이 제거 할 수 있습니다.
" 시작 메뉴 -> 프로그램 -> ARM JTAG V1.x.x" 에서 ARM JTAG 제거 를 Click 합니다. 이후 설치 마법사의 지시를 따르십시요.

jtag


3. ARM JTAG SW설정


3.1 ARM JTAG Server 메뉴

jtag

3.1.1 Target Detect

jtag
Target 의 CORE ID 를 찾고 동시에 CORE Voltage 를 읽어서 Display 합니다. Target을 제대로 Detech 하기 위해서는 TAP 설정을 제대로 수행 해야 합니다. 자세한 사항은
TAP Configure Guide 를 참조하시기 바랍니다.

3.1.2 Target Manager

jtag
UNKNOWN CORE 일 경우 강제로 CORE 를 선택할 수 있습니다.

jtag

참고
ARM JTAG는 CORE ID 값을 읽은 후 DB 와 비교하여 일치하는 값을 찾아야 어떤 CORE 인지 알 수 있습니다.
CORE ID 가 일반적으로 알려진 것과 다른 CORE 는 이 기능을 이용하여 강제로 CORE ID를 설정해야합니다.

예를 들면, Qualcomm QSC6270 프로세서의 경우 RTCK 설정 후 CORE ID 를 찾으면 아래와 같이 값이 나오지만 이 값은 ARM JTAG DB 에 저장되어 있지 않은 값이므로 UNKNOWN CORE 로 Display 하게 됩니다.

jtag

이때 Target Manager 를 통해 CORE ID 설정 후 디버깅 할 수 있습니다.

jtag
jtag

3.1.3 Target Reset

jtag
ARM JTAG 20 핀 JTAG Connector 핀 중 SRST_N 핀을 통해 Target Core 를 Reset 합니다.

jtag
12MHz ~ 500KHz 까지의 TCK Speed 설정과 ARM926EJ-S, ARM1176JZF-S 와 같은 -S 를 가지는 코어를 위한 RTCK 설정이 이루어집니다.

jtag
참고
ARM JTAG 는 부팅 후 항상 Jtag Clock 이 12MHz 로 Default 설정됩니다.

3.1.5 Debug Port Configure

jtag

기존의 TMS, TCK, TDO, TDI, SRST, TRST 를 이용하는 JTAG Debug Port 와 CORTEX Core 에서 지원하는 2개의 포트(SWDIO, SWCLK)만을 이용하는 SWD Debug Port 중 하나를 선택 할 수 있습니다.

jtag

3.1.6 System Tap Configure

jtag
Multi Tap 으로 만들어진 Target (예 : STMicroelectronics STR9, STM32F 과 SAMSUNG S3C6410 등) 등과
Multi Core Target (예 : ARM9 + ARM11) 을 지원하기 위한 Tap 설정이 이루어집니다.

jtag

참고
1. DEFAULT CORE 는 ARM7, ARM9, CORTEX-M, CORTEX-A 계열의 코어 사용 시 세팅합니다. ARM11 사용 시는 ARM11 으로 CORE 세팅합니다.
2. CoreSight Debug Base Address 는 CORTEX-A8 코어 사용 시 설정하는 값 입니다. 예로 CORTEX-A8 코어를 사용한 SAMSUNG S5PC100 사용 시 0x80005000 으로 세팅해야 합니다.
3. 실제 다양한 프로세서에 대한 Tap Configure 에 대한 정보는 TAP Configure Guide 를 참조 하십시요.

3.1.7 Core Reset Configure

jtag

Debugging 하기 직전에 Target Core 를 Reset 할지, 하기 않을지 선택하고 Reset 한다면 Reset 후 어느 정도의 시간 후 Core Debugging 을 시작할지 선택 합니다.

jtag
jtag

3.1.8 IDE Option

jtag

1) ALL IDE -> Suppress Download
모든 IDE(ARM AXD, IAR Embedded Workbench, KEIL uVision) 에 대해서 적용 되는 항목입니다. RAM 에서 실행되는 코드를 디버깅 할 지, Flash 에서 실행되는 코드를 디버깅할지 선택합니다.
Suppress Download Enable 을 체크하면 Code 는 Load 하지 않고 디버깅 Symbol 만 Load 합니다. Flash 에 있는 Code 디버깅 시에는 이미 Code 가 Flash 에 다운로드 되어있는 상태이므로 Suppress Download Enable 을 체크하고 사용합니다.

jtag

2) IAR -> BreakPoint at 0x00000008
IAR Embedded IDE 에서만 적용되는 항목입니다. 체크하면 0x00000008 에 BP 를 Set 하지 않습니다.

2.1) IAR -> Stack
IAR Embedded IDE 에서만 적용되는 항목입니다. 체크하면 Stack Display 관련 설정을 하지 않습니다.

jtag

3) KEIL -> Configure TOOLS.INI
KEIL uVision 을 사용하기 위한 TOOLS.INI 파일 설정이 이루어집니다. c:\keil\tools.ini 파일을 로딩한 이후에 "OK" 버튼을 누릅니다.
이 과정을 생략하면 Keil 에서 ARM-JTAG(JICE) 장비가 올라오지 않습니다.

jtag

* KEIL 4.02 이상 버젼에서는 위의 과정을 거친 이후에 수동으로 tools.ini 파일에 아래와 같은 내용을 추가해 주어야 합니다.

[ARM]
CPUDLL0=SARMC.DLL, CPUDLL1=SARMCM3.DLL, CPUDLL2=SARMCM4.DLL 항목의 () 안의 리스트에 "JICE Debugger" 의 TDRVXX 부분을 추가해 주어야 합니다.


jtag

마찬가지로
[ARMADS]
CPUDLL0=SARMC.DLL, CPUDLL1=SARMCM3.DLL, CPUDLL2=SARMCM4.DLL 항목의 () 안의 리스트에 "JICE Debugger" 의 TDRVXX 부분을 추가해 주어야 합니다.

jtag


3.1.9 Run ARM JTAG Commander

jtag
ARM JTAG Commander 를 실행시킵니다.

3.1.10 Run ARM JTAG Editor

jtag
ARM JTAG Editor 를 실행시킵니다.

3.1.11 Run ARM JTAG GdbServer

jtag
ARM JTAG GdbServer 를 실행시킵니다.

3.2 ARM JTAG Commander 메뉴

jtag

3.2.1 Log Clear

jtag
LOG 창을 Clear 합니다.

3.2.2 Log Save

jtag
LOG Data 를 저장합니다.

jtag
Script 를 실행합니다. 아래와 같이 실행 시킬 Script 파일을 Open 해주어야 합니다.

jtag

3.2.4 Run Script Editor

jtag
ARM JTAG Editor 를 실행시킵니다.

3.2.5 Multiline Command

jtag
Multiline Command Dialog 를 실행합니다.

jtag

- Run 메뉴 버튼 : Multiline Command 창에 있는 명령을 실행합니다.
- Open 메뉴 버튼 : *.jcs 스크립트를 열어서 보여줍니다.
- Save 메뉴 버튼 : Multiline Command 창에 있는 명령을 *.jcs 스크립트로 저장합니다.
- End 메뉴 버튼 : Multiline Command Dialog 를 종료합니다.

3.2.7 Easy FlashLoader

jtag
Easy FlashLoader 를 실행시킵니다.

jtag
사용하고 있는 디바이스를 선택 후 Start Download 버튼을 눌러서 다운로드하고자하는 이미지를 선택하면 다운로드 과정을 수행합니다.

3.3 ARM JTAG Editor 메뉴

jtag

3.3.1 Function / Output Converter

아래와 같은 Function / Output Converter 기능을 제공합니다. 이 기능을 통해 Hex 파일을 Bin 파일로 변경할 수 있습니다.

jtag
jtag

4. Flash 다운로드 Guide

(1) Cortex-M3 STM32F103 시리즈
(2) Cortex-M4 STM32F4 시리즈
(3) ARM9 S3C2413 + NAND Flash
(4) ARM11 S3C6410 + NAND Flash
(5) Cortex-A8 S5PC100 + NAND Flash
(6) NXP LPC 시리즈
(7) ATMEL AT91SAM 시리즈
(8) 기타 위에서 명시되지 않은 Core, Flash


5. 디버깅 가이드

(1) ARM ADS 1.2 에서 디버깅 하는 방법
(2) IAR Workbench 에서 디버깅 하는 방법
(3) KEIL MDK 에서 디버깅 하는 방법
(4) GDB Server 에서 디버깅 하는 방법


6. ARM JTAG 펌웨어 업그레이드 Guide

최신의 펌웨어를 통한 ARM JTAG 기능 향상 및 고객 사후관리 서비스를 위해서 ARM JTAG 펌웨어 업그레이드를 지원합니다. 보다 자세한 내용을 아래 문서를 참조하십시요.

(1) ARM JTAG Firmware Upgrade Guide
ARM JTAG 펌웨어 업그레이드에 대해서 상세한 설명을 하고 제공하고 있습니다.