Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:reverse-engineering:jtag:start [2013/02/16 07:46] – [Netlist Extraction] alex | en:reverse-engineering:jtag:start [2013/02/18 21:40] (current) – [Links] alex | ||
|---|---|---|---|
| Line 21: | Line 21: | ||
| ===== ftjrev ===== | ===== ftjrev ===== | ||
| - | ftjrev is a powerful JTAG reverse-engineering tool. When coupled with an FTDI based JTAG cable and connected to a target board, ftjrev can be used to extract a netlist of interconnections between JTAG enabled components. | + | [[..: |
| ftjrev performs four main functions: scanning for clocks, scanning for JTAG accessible connections, | ftjrev performs four main functions: scanning for clocks, scanning for JTAG accessible connections, | ||
| - | ==== Clock scanning ==== | + | Please see the [[..:..:projects:ftjrev:|ftjrev]] page for instructions |
| - | + | ||
| - | Scanning for clocks looks for pins that change without any stimulus. | + | |
| - | + | ||
| - | Example: | + | |
| - | + | ||
| - | < | + | |
| - | $ ./ftjrev clocks | + | |
| - | Found 3 devices with total IR length of 26 | + | |
| - | Device 0: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Device 1: IDCODE 21C2E093 (XC3S1200E-FT256) | + | |
| - | Device 2: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Total boundary scan chain: 8572 | + | |
| - | Clock pass... | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Scanning ==== | + | |
| - | + | ||
| - | Scanning for JTAG accessible connections looks for connections between JTAG pins. It works by setting all of the IO pins as inputs, and then walking a toggling output around and reading in all the input pins. Pins that are pulled along with the test output are noted and reported. | + | |
| - | + | ||
| - | Example: | + | |
| - | + | ||
| - | < | + | |
| - | $ ./ftjrev scan | + | |
| - | Found 3 devices with total IR length of 26 | + | |
| - | Device 0: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Device 1: IDCODE 21C2E093 (XC3S1200E-FT256) | + | |
| - | Device 2: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Total boundary scan chain: 8572 | + | |
| - | Clock pass... | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]:IO_AN14 | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]:IO_J13 | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]:IO_K13 | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | Pin pass... | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | .... | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Input probing ==== | + | |
| - | + | ||
| - | Input probing does the same thing as scanning, but instead of walking an output pin around on the board, it toggles a GPIO pin on the FTDI chip in the JTAG cable. | + | |
| - | + | ||
| - | Example: | + | |
| - | + | ||
| - | < | + | |
| - | $ ./ftjrev | + | |
| - | Found 3 devices with total IR length of 26 | + | |
| - | Device 0: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Device 1: IDCODE 21C2E093 (XC3S1200E-FT256) | + | |
| - | Device 2: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Total boundary scan chain: 8572 | + | |
| - | Clock pass... | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | Probing inputs, press ctrl+c to stop... | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | 0[XC5VLX330-FFG1760]: | + | |
| - | .... | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Output probing ==== | + | |
| - | + | ||
| - | Output probing walks a toggling output pin around the board while at the same time printing the name of the pin to STDOUT. | + | |
| - | + | ||
| - | Example: | + | |
| - | + | ||
| - | < | + | |
| - | $ stty -F / | + | |
| - | $ ./ftjrev oprobe > / | + | |
| - | Found 3 devices with total IR length of 26 | + | |
| - | Device 0: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Device 1: IDCODE 21C2E093 (XC3S1200E-FT256) | + | |
| - | Device 2: IDCODE 2295C093 (XC5VLX330-FFG1760) | + | |
| - | Total boundary scan chain: 8572 | + | |
| - | Clock pass... | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 0[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 1[XC3S1200E-FT256]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | CLOCK: 2[XC5VLX330-FFG1760]: | + | |
| - | Probing outputs, press ctrl+c to stop... | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| ===== Links ===== | ===== Links ===== | ||
| + | * [[..: | ||
| * [[https:// | * [[https:// | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| + | * [[http:// | ||