H-JTAG 이란 ?

H-JTAG은 ARM용 Free JTAG 디버그 툴 이다. Multi_ICE와 유사한 기능을 제공한다.

그리고 SDT 2.51, ADS 1.2, REALVIEW, IAR과 같은 유명한 디버거들을 많이 지원해준다.

시중에 싼 가격으로 판매하는 ARM7/ARM9 기반의 JTAG 위글러만 있으면 사용이 가능하다.

 

H-JTAG 홈페이지 : http://www.hjtag.com/

 

 

H-JTAG 세팅 방법

H-JTAG 현재 최신 버전 : 0.9.0 을 기준으로 설명

보드는 다인시스(주)사의 DEP2410 을 사용

JTAG은 위글러 호환으로 사용(Jtag Probe)

ADS  v1.2 사용

 

설치

  1. H-JTAG 홈페이지에서 H-JTAG V0.9.0 버전을 다운 받는다.
  2. 두개의 압축 파일이 있다. H-JTAG V0.9.0.part1.rar,  H-JTAG V0.9.0.part2.rar 을 압축을 푼다.
  3. H-JTAG V0.9.0.EXE 실행하여 H-JTAG을 설치한다.
  4. 컴퓨터를 재시작한다.

 

HJTAG Server에서 Target Board 인식

  1. Jtag 위글러를 DEP2410의 Jtag 포트에 연결하고 전원을 on 시킨다.
  2. 설치된 H-JTAG 프로그램(H-JTAG Server)을 실행시킨다.
  3. 이 때 H-Jtag에서 자동으로 Target Detect를 시작한다. 성공적으로 Target을 인식하면 아래의 화면 처럼 나온다.

hjtag_Server.png 

ARM920T, 0x0032409D(ARM core ID이기 때문에 CPU마다 다 틀리다)가 표시 되어야 정상이다. 만약에 H-JTAG 프로그램에서 Target을 인식하지 못한다면 Jtag 위글러와 보드와의 연결상태를 확인해야 한다. 그리고 다시 시도하자(Operations 메뉴 -> Target Detect 선택).

 

HJTAG Server에서  Init Script 설정

 ARM용 프로그램을 ADS에서 컴파일을 하여 바로 Target 보드의 RAM영역에 다운로딩을 시켜 실행할 수가 있다(JTAG의 아주 편리한 기능). 이 때 HJTAG에서는 Jtag 위글러를 이용해서 SDRAM에 접근해야 한다. 처음 S3C2410 CPU에 전원이 인가되면 SDRAM을 제어하는 메모리 콘트롤러에 제대로 SDRAM을 접근할 수 있도록 설정(엑세스 타이밍, 데이터 버스 폭, 등등)을 해줘야한다(이런 일을 Startup code에서 해준다). 하지만 HJTAG이 ARM용 이미지를 RAM영역에 다운로딩을 할 땐 Startup code가 실행되기 이전이다. 때문에 HJTAG Sever 프로그램에서는 메모리 콘트롤러가 SDRAM에 접근할 때 필요한 설정을 할 수 있는 Init script를 지원한다(이런 것이 가능한 이유는 HJTAG에서 S3C2410 CPU의 레지스터(메모리 콘트롤러 레지스터)에 바로 접근할 수 있기 때문이다). 따라서 Init script를 반드시 설정해줘야 한다. 이것을 해주지 않는다면 S3C2410 CPU의 메모리 콘트롤러 설정 레지스터의 기본 값으로 작동하기 때문에 오작동할 수가 있다.

 

- Init Script 작성

Setmem+32-Bit+0x48000000+0x2045550
Setmem+32-Bit+0x48000004+0x700
Setmem+32-Bit+0x48000008+0x700
Setmem+32-Bit+0x4800000C+0x700
Setmem+32-Bit+0x48000010+0x700
Setmem+32-Bit+0x48000014+0x700
Setmem+32-Bit+0x48000018+0x700
Setmem+32-Bit+0x4800001C+0x18005
Setmem+32-Bit+0x48000020+0x700
Setmem+32-Bit+0x48000024+0x8D0459
Setmem+32-Bit+0x48000028+0x32
Setmem+32-Bit+0x4800002C+0x30
Setmem+32-Bit+0x48000030+0x30

 

이 내용을 "2410.his" 로 만든다(파일 이름은 어떤 것이던지 상관없다).

H-JTAG Server 프로그램에서 Script 메뉴 -> Init Script 선택 -> Load 버튼을 클릭 하여 "2410.his"파일을 선택한다.  Init script 내용이 load된 것을 확인했으면 OK 버튼을 누른다. Init Script를 Load 후 Script 메뉴 -> Auto Init를 반드시 체크 한다.

 

위의 Init Script 의 내용은 메모리 콘트롤러 레지스터 값을 초기화 해주는 것이다.

Setmem+32-Bit+0x48000000+0x2045550  : 0x48000000은 BWSCON 레지스터 주소, 0x2045550은 BWSCON의 데이터 값

S3C2410 데이터 시트를 참고하여 분석하기 바란다. 각자 보드에 맞게끔 수정해주면 된다. 하지만 저 값을 그대로 사용해도 별 문제 없다.

 

AXD설정

 AXD를 실행한다. Option 메뉴 -> Configure Target 선택 한다.

우측에 ADD 버튼을 클릭하여 H-JTAG이 설치되어있는 폴더(기본 설치 폴더 : C:\Program Files\H-JTAG\)로 이동한다. 여기에서 H-JTAG.dll 파일을 선택하고 열기 버튼을 클릭한다. 마지막으로 OK 버튼을 누르면 AXD에서의 설정이 끝났다.

AXD 프로그램의 하단에 RDI Log 부분에 아래와 같이 뜨면 AXD설정이 성공적으로 끝났다. 만약에 아래의 로그가 뜨지 않는다면 처음부터 다시 천천히 따라해 본다.

axd_rdilog.png 

 

이미지를 NOR 플래시에 굽기

H-JTAG을 설치하면 H-Flasher라는 프로그램도 같이 설치된다. 이는 SJF2410 프로그램과 동일하게 이미지를 플래시에 구울수 있는 프로그램이다. NOR 플래시에 이미지를 굽기 위해서는, ADS에서 이미지를 생성할 때 RO Base를 반드시 0x0으로 바꾸어야 한다(NOR 플래시의 시작위치가 0x0이기 때문). AXD를 이용하여 디버그 할 경우엔 0x30000000(SDRAM 시작 주소)으로 RO Base를 사용하는것이 편하다.

 

H-Flasher 프로그램에서 NOR 플래시에 접근할 때도 설정이 필요하다(위부분의 Init Script가 필요한 이유와 동일).  아래의 내용은 NOR 플래시 메모리 선택, 메모리 시작 번지, 메모리 콘트롤러 초기화 스크립트 등이다.

아래의 내용을 "2410.hfc"(파일 명을 자유롭게 지정이 가능하다) 로 만든다.

 

FLASH SECTION:
AMD
AM29LV160DB
MEMORY SECTION:
16-BIT X 1-CHIP
0x0
0x30000000
XTAL SECTION:
NULL
TCK SECTION:
-1
-1
SCRIPT SECTION:
Setmem+32-Bit+0x48000000+0x2045550
Setmem+32-Bit+0x48000004+0x700
Setmem+32-Bit+0x48000008+0x700
Setmem+32-Bit+0x4800000C+0x700
Setmem+32-Bit+0x48000010+0x700
Setmem+32-Bit+0x48000014+0x700
Setmem+32-Bit+0x48000018+0x700
Setmem+32-Bit+0x4800001C+0x18005
Setmem+32-Bit+0x48000020+0x700
Setmem+32-Bit+0x48000024+0x8D0459
Setmem+32-Bit+0x48000028+0x32
Setmem+32-Bit+0x4800002C+0x30
Setmem+32-Bit+0x48000030+0x30
PGMOPTION SECTION:
ENABLE_RESET

만약 해당 보드의 NOR플래시 메모리가 DEP2410의 NOR플래시 메모리(AM29LV160DB)와 틀리다면 H-Flasher에서 지원해주는 NOR플래시 메모리의 이름과 데이터 버스 폭을 설정하면된다.

 

H-JTAG Server를 띄운 상태에서 H-Flasher 프로그램을 실행 시킨다. Load 메뉴를 선택하여 좀 전에 저장한 "2410.hfc"를 선택한다. 설정파일이 load되면 Flash Selection, Configuration, Init Script, Pgm Options이 모두 설정되어 있는 것을 확인할 수 있다.

그런 후, Programe Wizard에서 Programming을 선택한다. Check 버튼을 클릭해 본다. 정상적으로 설정이 끝났다면 아래의 화면 처럼 나온다.

 hflasher_config.png

Flash에 Target 보드(DEP2410)의 NOR 플래시 메모리 이름과 ID가 출력된다.

만약 위의 화면처럼 NOR 플래시 메모리의 이름과 ID가 출력되지 않는다면, 위의 과정 중 빠진게 없는지 확인하고, OM0, OM1이 NOR플래시 부팅인지, nGCS0이 NOR 플래시의 CS와 연결되어있는지 확인한다(DEP2410일 경우 J4,J5 점퍼가 OM1, OM0을 선택할 수있고, J6 점퍼로 nGCS0, nGCS1을 선택할 수 가 있다).

 

 Type을 Plain Binary Format을 선택하고, Src File에서 ... 버튼을 클릭하여 바이너리 이미지(*.bin)을 선택한다. Dsr Addr에는 0x0을 입력한다. 마지막으로 Program 버튼을 클릭하면 0x0번지에 바이너리 이미지가 구워진다.

 


작성자 : 조경래

문서 버전 : 090215

작성일 : 2009년 2월 15일 (최초 작성)

 

이 문서는 출처만 밝히시면 자유롭게 배포가 가능하며, 수정도 가능합니다.

 

 

 

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts