JTAG란?
이반적으로 JTAG라는 말 보다는 Boundary-Scan이란 말을 더 많이 사용한다. JTAG는 칩 내부에 Boundary Cell이란 것을 두어 외부의 핀과 일대 일로 연결시켜 프로세서가 할 수있는 동작을 중간에  Cell을 통해 모든 동작을 인위적으로 수행할 수 있어 여러가지 하드웨어 테스트나 연결 상태 등을 체크 할 수있다.

JTAG 기능
프로세서 상태와는상관없이 디바이스의 모든 외부 핀을 구동시키거나 값을 읽어 들일 수 있는 기능을 제공한다.
  • 디바이스 내에서 모든 외부와의 연결점을 가로챈다.(외부로 나가는 각각의 핀들과 일대 일로 연결)
  • 각각의 sell은 serial-regisher(boundary scan register)형성하기 위해서 서로 연결되어 있다.
  • 전체적인 인터페이스는 5개의 핀에 의해서 제어된다 (TDI, TMS, TCK, nTRST, TDO)
  • 회로의 배선과 소자의 저기적 연결상태 Test
  • 디바이스간의 연결상태 Test
  • Flash memory fusing

JTAG Building
#cd /home/embed/xhyper/Jflash-PXA255
#vi Compile_switches.h
/*****************************************                                                                   
**  FILENAME:       Compile_switches.h
**
**  PURPOSE:        collects the optional switches for this program.
**
**  LAST MODIFIED:  2003.06.03
*****************************************/
//#define DEBUG
//#define INSIGHT_JTAG
#define PARALLEL_JTAG
                                              
/*
* HyBus pxa255 board platform
*/
#define XHYPER255A   // 16bit flash memory
//#define XHYPER255B   // 32bit flash memory

레드헷 리눅스 9.0에서는 void main() 함수를 쓰지 않고 int main() 함수를 씀으로 바꿔줘야 한다. 아래 빨간색 int로 바꿔 주자.
#vi main.c
/*
*******************************************************************************
*
* FUNCTION:         main
*
* DESCRIPTION:      Entry point for utility
*
* INPUT PARAMETERS: uses optional input parameters:
*                       argv[1] = filename to flash (binary files only)
*                       argv[2] = program options, currently only 'P' for Program
*                       argv[3] = block number (used to compute base_address)*
* RETURNS:          void
*
*******************************************************************************
*/
int main( int argc, char *argv[] )
{
   time_t start;
       DWORD fsize = 0;
       DWORD last_non_zero = 0 ;
       DWORD last_non_ff = 0;
//      DWORD li;
       int block_number = 0;
#make clean
rm -f *.o Jflash-Xhyper255
#make
g++ -O2 -s -g -D__linux__ Jflash.cpp -o Jflash-Xhyper255
/tmp/ccp8kA4v.o(.text+0x42b): In function `main':
/home/embed/xhyper/Jflash-PXA255/Jflash.cpp:199: the `gets' function is dangerous and should not be used.
#ls
Compile_switches.h  Jflash.dsw  RelNote_Jflash_CL.htm  jflash
Debug               Jflash.h    SWLicense.pdf          jflash_cl.exe
Giveio.zip          Jflash.ncb  giveio.inf             load_sample.bat
Jflash-Xhyper255    Jflash.opt  giveio.ini             xhyper255jtag.h
Jflash.cpp          Jflash.plg  giveio.sys
Jflash.dsp          Makefile    instdrv.exe

Jflash-Xhyper255 바이너리 파일이 만들어 져 있을 것이다. Bootloader Compile 한 후 간단한 사용 방법을 보자.

'X-Hyper255A' 카테고리의 다른 글

개발 환경 구축에 대한 문제점  (0) 2006.08.10
Bootp 설정  (0) 2006.08.09
Toolchain Test  (0) 2006.08.09
Toolchain 설치  (0) 2006.08.08
임베디드 리눅스 교육과정  (0) 2006.08.05

+ Recent posts