=Introduction=

A JTAG interface is designed for on-chip debugging. It can also be used to flash your firmware if you do not have a means to upload software via USB already. If you want to upload your own software or want to do serious Paparazzi development work, you will need a JTAG adapter like this.

See also:
* [[FirmwareFlashing#JTAG|firmware flashing via JTAG]]
* [[DevGuide/GDB_OpenOCD_Debug|debugging with JTAG]]

=JTAG Adapters=
There are multiple Paparazzi-compatible devices available that support JTAG.

Below you will find a list of JTAG devices that you can use in combination with Paparazzi UAV Hardware like the [[Lisa/MX]] boards. 


== Black Magic Probe ==

[[Image:BMPM_1_top.jpg|500x500px]][[Image:BMPM_1_bottom.jpg|500x500px]]

This is the original [http://www.blacksphere.co.nz/main/blackmagic Black Magic Probe] from [http://www.blacksphere.co.nz Black Sphere Technologies], a JTAG and SWD Adapter used for programming and debugging ARM Cortex MCUs.
The Black Magic Probe is available for purchase in the [http://1bitsquared.com/products/black-magic-probe 1BitSquared Store]. 


To use Black Magic Probe instead of FLOSS-JTAG or Luftboot for firmware flashing, append the following string to the upload command:

On Linux:
 FLASH_MODE=JTAG_BMP BMP_PORT=/dev/ttyACM0
On Mac OS:
 FLASH_MODE=JTAG_BMP BMP_PORT=/dev/cu.usbmodem<serial>

To make this the default flash method add this in the airframe file firmware section:
    <configure name="FLASH_MODE" value="JTAG_BMP"/>
    <configure name="BMP_PORT" value="/dev/ttyACM0"/>

See the [[FirmwareFlashing]] page for other methods.

=== Benefits ===

There are good reasons to use the Black Magic Probe Mini instead of FLOSS-JTAG:

*Lower cost
*No need for OpenOCD as BMPM has a built in GDB server
*Orders of magnitude faster as all the high speed protocol logic happens on the built-in STM32
*Supports Serial Wire Debug (SWD)
*Supports tracing using the SWD trace pin
*No need for loading and unloading of FTDI drivers on Mac OS X

===UART port===
The pinout for the UART port on the back side of the BMP as seen on the image above and starting from the top is ground,rx,tx,3.3v . You can use this for receiving telemetry.

===Upgrade BMP firmware===

Check firmware version:
 $ sudo /usr/bin/arm-none-eabi-gdb
 (gdb)  target extended-remote /dev/ttyACM0
 (gdb)  monitor version

To upgrade the brain of your Black Magic Probe, a.k.a. its firmware:

 - Download the compiled firmware from http://blacksphere.co.nz/builds/  (more info at https://github.com/blacksphere/blackmagic/wiki/Frequently-Asked-Questions)
 - Connect the Black Magic Probe while pressing the button
 - Download and run the stm32_mem.py script:
   $ git clone git://blackmagicdebug.git.sourceforge.net/gitroot/blackmagicdebug/blackmagicdebug
   $ cd blackmagicdebug/scripts
   $ ./stm32_mem.py blackmagic-XXXX.bin   (this is the .bin file you downloaded in previous step)

===Where to Purchase===

The Black Magic Probe is available through the [[File:1bitsquared_logo.png|50px|link=http://1bitsquared.com/products/black-magic-probe]] [http://1bitsquared.com/products/black-magic-probe 1BitSquared Store].

== FLOSS JTAG ==
 
The FLOSS JTAG is based on an FTDI chip that allows two simultaneous USB connections, which means that FLOSS JTAG allows JTAG and UART/COM connections.

Let's take a look at upper side of the board. It contains JTAG connector (which is connected on photo) and two sets of RX/TX LEDs for JTAG and UART/COM interface separately. The JTAG connector is 2x5 pins, 0.05-inch pitch, and is compatible with the Samtec FFSD-05-D-06.00-01-N-RW-R ribbon cable.

[[Image:Jtag-up.jpg]]

On the other side of the board there is 4 pin UART/COM connector, which contains (from top to bottom in the image below): Ground (black), RX (orange), TX (yellow), and +5V (red)

[[Image:Jtag-down.jpg]]

Usage of board is pretty simple: JTAG can be used to upload firmware into the board and/or repair board with broken bootloader, and UART/COM interfaced can be used to make "COM port style" connection to the board. COM connection can be used for example for telemetry debug.

More info available on the [http://randomprojects.org/wiki/Floss-JTAG randomprojects.org wiki].

=== Availability ===

Floss JTAG is currently discontinued and not in production. We recommend buying the [http://1bitsquared.com/products/black-magic-probe Black Magic Probe] instead.

== FT2232H Mini Module ==

Use ftdi prog to change the Description String into: FLOSS-JTAG. <br/>
More information for this board at [[Serial_Adapter]].

[[Image:AlternativeFlossJtag.png|400px]]

[[Category:Hardware]] [[Category:Software]] [[Category:Developer_Documentation]]