JTAG란?
JTAG 기능
JTAG Building
레드헷 리눅스 9.0에서는 void main() 함수를 쓰지 않고 int main() 함수를 씀으로 바꿔줘야 한다. 아래 빨간색 int로 바꿔 주자.
Jflash-Xhyper255 바이너리 파일이 만들어 져 있을 것이다. Bootloader Compile 한 후 간단한 사용 방법을 보자.
이반적으로 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
#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
** 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;
*******************************************************************************
*
* 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
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 |