You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
491 lines
17 KiB
XML
491 lines
17 KiB
XML
<?xml version="1.0" standalone="no"?>
|
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
<!ENTITY datafilespecs SYSTEM "internals.xml">
|
|
<!ENTITY FDL SYSTEM "fdl.xml">
|
|
<!ENTITY GPL SYSTEM "gpl.dbk">
|
|
<!ENTITY LGPL SYSTEM "lgpl.dbk">
|
|
]>
|
|
|
|
<book>
|
|
<bookinfo>
|
|
<title>Universal JTAG library, server and tools</title>
|
|
<authorgroup>
|
|
<author><firstname>Kolja</firstname><surname>Waschk</surname></author>
|
|
</authorgroup>
|
|
|
|
<legalnotice>
|
|
<para>
|
|
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free
|
|
Documentation License, Version 1.2 or any later version published by the Free
|
|
Software Foundation. A copy of the license is included in the section entitled
|
|
"GNU Free Documentation License".
|
|
</para>
|
|
</legalnotice>
|
|
|
|
<copyright>
|
|
<year>2007</year>
|
|
<year>2008</year>
|
|
<holder>Kolja Waschk and the respective authors</holder>
|
|
</copyright>
|
|
|
|
</bookinfo>
|
|
|
|
<toc/>
|
|
|
|
<chapter><title>General</title>
|
|
|
|
<section><title>About UrJTAG</title>
|
|
<para>
|
|
UrJTAG Tools is a software package which enables working with JTAG-aware
|
|
(IEEE 1149.1) hardware devices (parts) and boards through JTAG adapter.
|
|
</para>
|
|
<para>
|
|
This package has open and modular architecture with ability to write
|
|
miscellaneous extensions (like board testers, flash memory programmers,
|
|
and so on).
|
|
</para>
|
|
<para>
|
|
JTAG Tools package is free software, covered by the GNU General Public
|
|
License, and you are welcome to change it and/or distribute copies of it
|
|
under certain conditions. There is absolutely no warranty for JTAG Tools.
|
|
Please read COPYING file for more info.
|
|
</para>
|
|
<para>
|
|
<emphasis>Warning: This software may damage your hardware!</emphasis>
|
|
</para>
|
|
<para>
|
|
Feedback and contributions are welcome.
|
|
</para>
|
|
</section>
|
|
|
|
<section><title>UrJTAG Website</title>
|
|
<para>
|
|
The most current version of this documentation and UrJTAG sourcecode
|
|
is always available from the project page at Sourceforge, http://urjtag.sourceforge.net
|
|
</para>
|
|
</section>
|
|
|
|
<section><title>The name "UrJTAG"</title>
|
|
<para>
|
|
I (Kolja) favour short names, so I thought about adding only a few
|
|
letters to "JTAG". The prefix "Ur" in German means "ancestral", an "Ur-Vater"
|
|
is a forefather. UrJTAG shall become the forefather, the basis for many other
|
|
JTAG tools.
|
|
</para>
|
|
</section>
|
|
|
|
<section><title>Authors, contributors, ... thanks</title>
|
|
<para>
|
|
At the moment, please see the files AUTHORS and THANKS in the source distribution.
|
|
</para>
|
|
</section>
|
|
|
|
<section><title>UrJTAG/openwince history</title>
|
|
<para>
|
|
The JTAG Tools originally were developed by Marcel Telka as part of the openwince project. Still
|
|
a large portion of the source code is his work. However, the last release of the JTAG tools was
|
|
version 0.5.1 in 2003. After a few years the development completely stalled. Every few months or
|
|
so on the project's mailing list someone asked about continuing, but a critical mass wasn't
|
|
reached before late 2007. A fork of the JTAG tools was created under the wings of the UrJTAG
|
|
project at Sourceforge.
|
|
</para>
|
|
</section>
|
|
|
|
<section><title>System requirements</title>
|
|
<section><title>Supported host operating systems</title>
|
|
<para>
|
|
JTAG Tools should run on all Unix like operating systems including
|
|
MS Windows with Cygwin installed.
|
|
</para>
|
|
</section>
|
|
<section><title>Required software for running UrJTAG</title>
|
|
<para>
|
|
More software is needed if you want to compile UrJTAG (which you probably want because
|
|
currently no pre-compiled binaries are avaible...). See "For developers..." below.
|
|
</para>
|
|
<para>
|
|
Required only for MS Windows:
|
|
<itemizedlist>
|
|
<listitem><para>current Cygwin net installation from http://cygwin.com</para></listitem>
|
|
<listitem><para>ioperm package (a part of the standard Cygwin net installation)</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
<para>
|
|
Required for all systems:
|
|
<itemizedlist>
|
|
<listitem><para>readline (it is probably a standard part of your distribution)</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</section>
|
|
<section><title>Supported JTAG adapters/cables</title>
|
|
<para>See 'help cable' command for up-to-date info.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem><para>Arcom JTAG Cable</para></listitem>
|
|
<listitem><para>Altera ByteBlaster/ByteBlaster II/ByteBlasterMV Parallel Port Download Cable</para></listitem>
|
|
<listitem><para>Xilinx DLC5 JTAG Parallel Cable III</para></listitem>
|
|
<listitem><para>ETC EA253 JTAG Cable</para></listitem>
|
|
<listitem><para>ETC EI012 JTAG Cable</para></listitem>
|
|
<listitem><para>Keith & Koep JTAG Cable</para></listitem>
|
|
<listitem><para>Lattice Parallel Port JTAG Cable</para></listitem>
|
|
<listitem><para>Mpcbdm JTAG Cable</para></listitem>
|
|
<listitem><para>Ka-Ro TRITON (PXA255/250) JTAG Cable</para></listitem>
|
|
<listitem><para>Macraigor Wiggler JTAG Cable</para></listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<section><title>JTAG-aware parts (chips)</title>
|
|
<itemizedlist>
|
|
<listitem><para>Altera EP1C20F400</para></listitem>
|
|
<listitem><para>Altera EPM7128AETC100</para></listitem>
|
|
<listitem><para>Analog Devices Sharc-21065L</para></listitem>
|
|
<listitem><para>Atmel ATmega128 (partial support)</para></listitem>
|
|
<listitem><para>Broadcom BCM1250</para></listitem>
|
|
<listitem><para>Broadcom BCM3310 (partial support)</para></listitem>
|
|
<listitem><para>Broadcom BCM5421S</para></listitem>
|
|
<listitem><para>Broadcom BCM4712 (partial support)</para></listitem>
|
|
<listitem><para>DEC SA1100</para></listitem>
|
|
<listitem><para>Hitachi HD64465</para></listitem>
|
|
<listitem><para>Hitachi SH7727</para></listitem>
|
|
<listitem><para>Hitachi SH7729</para></listitem>
|
|
<listitem><para>IBM PowerPC 440GX</para></listitem>
|
|
<listitem><para>Intel IXP425</para></listitem>
|
|
<listitem><para>Intel SA1110</para></listitem>
|
|
<listitem><para>Intel PXA250/PXA255/PXA260/PXA261/PXA262/PXA263</para></listitem>
|
|
<listitem><para>Lattice LC4032V</para></listitem>
|
|
<listitem><para>Lattice M4A3-64/32</para></listitem>
|
|
<listitem><para>Lattice M4A3-256/192</para></listitem>
|
|
<listitem><para>Motorola MPC8245</para></listitem>
|
|
<listitem><para>Samsung S3C4510B</para></listitem>
|
|
<listitem><para>Sharp LH7A400</para></listitem>
|
|
<listitem><para>Toshiba TX4925/TX4926</para></listitem>
|
|
<listitem><para>Xilinx XC2C256-TQ144</para></listitem>
|
|
<listitem><para>Xilinx XCR3032XL-VQ44</para></listitem>
|
|
<listitem><para>Xilinx XCR3128XL-CS144</para></listitem>
|
|
<listitem><para>Xilinx XCR3128XL-VQ100</para></listitem>
|
|
<listitem><para>Xilinx XCR3256XL-FT256</para></listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
<section><title>Flash chips</title>
|
|
<itemizedlist>
|
|
<listitem><para>- Intel 28FxxxJ3A (28F320J3A, 28F640J3A, 28F128J3A)</para></listitem>
|
|
<listitem><para>- Intel 28FxxxK3 (28F640K3, 28F128K3, 28F256K3)</para></listitem>
|
|
<listitem><para>- Intel 28FxxxK18 (28F640K18, 28F128K18, 28F256K18)</para></listitem>
|
|
<listitem><para>- AMD Am29LV64xD (Am29LV640D, Am29LV641D, Am29LV642D)</para></listitem>
|
|
<listitem><para>- AMD Am29xx040B (Am29F040B, Am29LV040B)</para></listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
</section>
|
|
|
|
<section><title>Installation </title>
|
|
<section><title>Required software for compiling UrJTAG</title>
|
|
<para/>
|
|
</section>
|
|
|
|
<section><title>Installing from source tar.gz</title>
|
|
<para>
|
|
<programlisting>
|
|
tar xzvf urjtag.tar.gz
|
|
cd urjtag/include
|
|
./configure
|
|
make
|
|
make install
|
|
cd ../jtag
|
|
./configure
|
|
make
|
|
make install
|
|
</programlisting>
|
|
</para>
|
|
</section>
|
|
<section><title>Installing from Subversion repository</title>
|
|
<para>
|
|
<programlisting>
|
|
svn co http://urjtag.svn.sourceforge.net/svnroot/urjtag/trunk urjtag
|
|
|
|
cd urjtag/include ./autogen.sh
|
|
# ./configure is run by autogen.sh
|
|
make
|
|
make install
|
|
|
|
cd ../jtag
|
|
./autogen.sh
|
|
# ./configure is run by autogen.sh
|
|
make
|
|
make install
|
|
</programlisting>
|
|
</para>
|
|
</section>
|
|
|
|
<section><title>Cygwin/MinGW specifics</title>
|
|
<para/>
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section><title>Getting updates </title><para/></section>
|
|
<section><title>Further info / support</title><para/></section>
|
|
</chapter>
|
|
|
|
<chapter><title>Usage</title>
|
|
|
|
<section><title>Quick start</title>
|
|
<section><title>Run the software</title>
|
|
<para>
|
|
Connect your JTAG adapter between your PC and target device and turn
|
|
on your device.
|
|
</para><para>
|
|
To run JTAG Tools type "jtag" and press Enter. jtag should start and
|
|
display some initial informations. Output should end with line like this:
|
|
</para><programlisting>
|
|
jtag>
|
|
</programlisting><para>
|
|
This is "jtag command prompt". Type "help" and press Enter for initial help
|
|
about available commands. To exit JTAG Tools type "quit" and press Enter.
|
|
</para>
|
|
</section>
|
|
<section><title>Configure the cable</title>
|
|
<para>
|
|
Type "help cable" for list of supported JTAG cables.
|
|
Type "cable" command with arguments. Example:
|
|
</para><programlisting>
|
|
jtag> cable parallel 0x378 EA253
|
|
Initializing ETC EA253 JTAG Cable on parallel port at 0x378
|
|
</programlisting>
|
|
</section>
|
|
<section><title>Detect parts on the JTAG chain</title>
|
|
<para>
|
|
Type "detect" at the jtag command prompt:
|
|
</para><programlisting>
|
|
jtag> detect
|
|
</programlisting><para>
|
|
Your output should look like this:
|
|
</para>
|
|
<programlisting>
|
|
IR length: 5
|
|
Chain length: 1
|
|
Device Id: 01011001001001100100000000010011
|
|
Manufacturer: Intel
|
|
Part: PXA250
|
|
Stepping: C0
|
|
Filename: /usr/local/share/jtag/intel/pxa250/pxa250c0
|
|
</programlisting>
|
|
<para>
|
|
If you get empty output or an error message your JTAG adapter is not connected
|
|
properly, or your target board doesn't work, or it is turned off.
|
|
</para>
|
|
<para>
|
|
"detect" command is required before all other commands.
|
|
</para>
|
|
</section>
|
|
<section><title>Print current JTAG chain status</title>
|
|
<para>
|
|
Type "print" at the jtag command prompt. Here is an output example:
|
|
</para>
|
|
<programlisting>
|
|
jtag> print chain
|
|
No. Manufacturer Part Stepping Instruction Register
|
|
---------------------------------------------------------------------------------------------
|
|
0 Intel PXA250 C0 BYPASS BR
|
|
jtag>
|
|
</programlisting>
|
|
</section>
|
|
<section><title>Sample device pin status</title>
|
|
<programlisting>
|
|
jtag> instruction SAMPLE/PRELOAD
|
|
jtag> shift ir
|
|
jtag> shift dr
|
|
jtag> dr
|
|
10001100100000100001100101111111111111111110011011100000111011111111111111111111
|
|
11111111111111111111111111111111111111111111101111111101100000100010101000000000
|
|
00011111000000111010111111100000100001100100000000000000000111000011100000000000
|
|
00000000000000000000000000000001000000000000000000000000000000000000000000000000
|
|
11110000000000000000000000000000000000000000001000000000000000000000000000000000
|
|
0000000000
|
|
jtag> print chain
|
|
No. Manufacturer Part Stepping Instruction Register
|
|
---------------------------------------------------------------------------------------------
|
|
0 Intel PXA250 C0 SAMPLE/PRELOAD BSR
|
|
jtag> get signal BOOT_SEL[0]
|
|
BOOT_SEL[0] = 0
|
|
jtag>
|
|
</programlisting>
|
|
<para>
|
|
Note: BSR is "Boundary Scan Register"
|
|
</para>
|
|
</section>
|
|
<section><title>Burn flash connected to the part</title>
|
|
<programlisting>
|
|
jtag> flashmem 0 brux.b
|
|
0x00000000
|
|
Note: Supported configuration is 2 x 16 bit only
|
|
BOOT_SEL: Asynchronous 32-bit ROM
|
|
|
|
2 x 16 bit CFI devices detected (QRY ok)!
|
|
|
|
program:
|
|
block 0 unlocked
|
|
erasing block 0: 0
|
|
addr: 0x00002854
|
|
verify:
|
|
addr: 0x00002854
|
|
Done.
|
|
jtag>
|
|
</programlisting>
|
|
<para>
|
|
or:
|
|
</para>
|
|
<programlisting>
|
|
jtag> flashmem msbin xboot.bin
|
|
Note: Supported configuration is 2 x 16 bit only
|
|
BOOT_SEL: Asynchronous 32-bit ROM
|
|
|
|
2 x 16 bit CFI devices detected (QRY ok)!
|
|
|
|
block 0 unlocked
|
|
erasing block 0: 0
|
|
program:
|
|
record: start = 0x00000000, len = 0x00000004, checksum = 0x000001EB
|
|
record: start = 0x00000040, len = 0x00000008, checksum = 0x000001B0
|
|
record: start = 0x00001000, len = 0x00002B30, checksum = 0x00122CAB
|
|
record: start = 0x00004000, len = 0x00000160, checksum = 0x0000684B
|
|
record: start = 0x00005000, len = 0x00000054, checksum = 0x000008EE
|
|
record: start = 0x00005054, len = 0x00000030, checksum = 0x00000DA9
|
|
record: start = 0x00000000, len = 0x00001000, checksum = 0x00000000
|
|
|
|
verify:
|
|
record: start = 0x00000000, len = 0x00000004, checksum = 0x000001EB
|
|
record: start = 0x00000040, len = 0x00000008, checksum = 0x000001B0
|
|
record: start = 0x00001000, len = 0x00002B30, checksum = 0x00122CAB
|
|
record: start = 0x00004000, len = 0x00000160, checksum = 0x0000684B
|
|
record: start = 0x00005000, len = 0x00000054, checksum = 0x000008EE
|
|
record: start = 0x00005054, len = 0x00000030, checksum = 0x00000DA9
|
|
record: start = 0x00000000, len = 0x00001000, checksum = 0x00000000
|
|
|
|
Done.
|
|
jtag>
|
|
</programlisting>
|
|
</section>
|
|
</section>
|
|
|
|
<section><title> Memory I/O </title><para/></section>
|
|
<section><title> FPGA configuration </title><para/></section>
|
|
<section><title> SVF Player </title><para/></section>
|
|
<section><title> bsdl2jtag, data files </title><para/></section>
|
|
<section><title> target specific documentation</title><para/></section>
|
|
<section><title> EJTAG support </title><para/></section>
|
|
<section><title> Blackfin support (when available) </title><para/></section>
|
|
</chapter>
|
|
|
|
<chapter><title>For developers</title>
|
|
<section><title>Source code directory layout</title>
|
|
<para>
|
|
<programlisting>
|
|
data/
|
|
./include/
|
|
../include/
|
|
libbrux/
|
|
cmd/ flash/
|
|
src/
|
|
bus/ cmd/ lib/ tap/ svf/
|
|
</programlisting>
|
|
</para>
|
|
</section>
|
|
|
|
<section><title>Internal structure</title>
|
|
<section><title>Parport drivers</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>Cable drivers</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>TAP drivers</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>Chain drivers</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>Bus drivers</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>Flash drivers</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>Commands</title>
|
|
<para/>
|
|
</section>
|
|
</section>
|
|
|
|
<section><title>How to contribute</title>
|
|
<section><title>Use Subversion, stay up to date</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>Create and submit a patch</title>
|
|
<para/>
|
|
</section>
|
|
<section><title>Use the SourceForge trackers</title>
|
|
<para/>
|
|
</section>
|
|
</section>
|
|
|
|
</chapter>
|
|
|
|
<chapter><title> Frequently asked questions </title>
|
|
<programlisting>
|
|
Q. When I type "cable parallel 0x378 DLC5" on Windows XP I get
|
|
"Error: Cable initialization failed!". Where is the problem?
|
|
A. Please install ioperm.sys driver using `ioperm -i` command.
|
|
</programlisting>
|
|
<programlisting>
|
|
|
|
To run autogen.sh, you need autoconf and automake. Furthermore, libtool should be available. And if you plan to use any USB adapter with Linux, libusb-dev and probably libftdi-dev are a good choice (that are Debian package names; other distributions certainly have similar packages).
|
|
|
|
Can't exec "autopoint": No such file or directory
|
|
You need gettext-devel.
|
|
|
|
svf_bison.y: No such file or directory
|
|
You need "bison".
|
|
|
|
flex: can't open ... src/svf/svf_flex.l
|
|
You need "flex"
|
|
|
|
"src/svf/svf_flex.l", line 27: unrecognized %option: bison-locations
|
|
You need a newer version of flex. It should be 2.5.31 or newer,
|
|
Unfortunately, Cygwin comes with only 2.5.4a. You may try to compile and install a newer version of flex from source to solve this.
|
|
|
|
</programlisting>
|
|
</chapter>
|
|
|
|
<chapter><title>Future plans</title>
|
|
|
|
<section><title> API and library package
|
|
</title><para/></section><section><title> Bindings for Python, Perl, ...
|
|
</title><para/></section><section><title> TCP/IP access
|
|
</title><para/></section><section><title> New cable drivers
|
|
</title><para/></section><section><title> ...
|
|
</title><para/></section>
|
|
</chapter>
|
|
|
|
&datafilespecs;
|
|
|
|
<appendix><title>UrJTAG shell quick reference sheet</title><para/> </appendix>
|
|
<appendix><title>man pages</title>
|
|
<section><title>jtag(1)</title><para/></section>
|
|
<section><title>bsdl2jtag(1)</title><para/></section>
|
|
</appendix>
|
|
|
|
<appendix><title> Exkurs: JTAG </title><para/></appendix>
|
|
|
|
<appendix><title>UrJTAG Revision information</title><para/>
|
|
<section><title>UrJTAG 0.6</title><para/></section>
|
|
<section><title>openwince JTAG Tools 0.5.1</title><para/></section>
|
|
</appendix>
|
|
|
|
&FDL;
|
|
&GPL;
|
|
&LGPL;
|
|
|
|
</book>
|
|
|
|
|