jtag
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
jtag [2016/02/02 10:00] – add j-link kingkevin | jtag [2017/03/30 13:38] – [aluminium] kingkevin | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Here I will describe my experiences with JTAG and how I use it. | + | JTAG is a technology to test integrated circuits, mostly micro-controllers and CPUs. |
- | + | It allows to do hardware debugging: | |
- | JTAG is a technology to test electronics. | + | SWD is a more modern version of JTAG and only requires 2 pins instead of 4[+1].\\ |
- | It allows to do hardware debugging: | + | SWJ is a combination of Serial Wire Debug (SWD) and JTAG. |
+ | But they provide the same logical functions. | ||
On one side this functionality must be included in the target device. | On one side this functionality must be included in the target device. | ||
- | Most 32 bits micro-controllers | + | The Debug Port is often called JTAG-DP for JTAG and SW-DP for SWD. |
- | On the other side you need a JTAG adapter so the host can speak to the device | + | SWJ capable |
- | JTAG adapters can go from cheap (<5$) to expensive (> | + | Most 32 bits micro-controllers and SoCs have one of both (or both). |
- | ===== JTAG adapters | + | On the other side you need a SWJ adapter so the host can speak to the device using the JTAG and/or SWD protocol. |
+ | SWJ adapters | ||
- | These are the main JTAG adapters | + | ====== SWJ adapters |
- | ==== ST-Link v2 (clone) | + | These are the main SWJ adapters I am using. |
+ | |||
+ | ===== ST-Link v2 ===== | ||
The [[http:// | The [[http:// | ||
+ | It supports JTAG, SWD, and SWIM (for STM8). | ||
- | I have two cheap clones: | + | These SWJ adapters are based STM32F1xx ARM Cortex M3 micro-controllers. |
- | * one from [[http:// | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | * one [[http:// | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | {{: | + | |
- | + | ||
- | These devices use the Serial Wire Debug (SWD) protocol. | + | |
- | This is newer variant of JTAG which requires only 2 signal lines instead of 4+. | + | |
- | But but aware, they both have different pinouts on the connector. | + | |
- | The second one offers 2 more power ports at the expense of JTAG TDI and TDO/SWO. | + | |
- | + | ||
- | These JTAG adapters are based STM32F1xx ARM Cortex M3 micro-controllers. | + | |
And ironically enough I in turn use them to program and debug STM32F1xx ARM Cortex M3 micro-controllers. | And ironically enough I in turn use them to program and debug STM32F1xx ARM Cortex M3 micro-controllers. | ||
Line 41: | Line 28: | ||
This has only to be done once, before the device is plugged in to be used: | This has only to be done once, before the device is plugged in to be used: | ||
<code bash> | <code bash> | ||
- | echo -n 'STM32F1xx ARM Cortex M3 micro-controllers' | sudo tee -a / | + | echo -n 'ST-Link V2 SWJ adapter' | sudo tee -a / |
echo -n ' | echo -n ' | ||
sudo udevadm control --reload-rules | sudo udevadm control --reload-rules | ||
Line 68: | Line 55: | ||
</ | </ | ||
- | ==== Altera | + | I am using cheap clones. |
+ | |||
+ | ==== ST-LINK/V2 clone ==== | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | This is a complete rip-off of the [[http:// | ||
+ | It comes in the same box, with the same cables, the enclosure is the same, even the board name has been taken over (MB936), but the board isn't the same. | ||
+ | The BOM doesn' | ||
+ | The original adapter come with ESD protection, protection resistors, and a transceiver to allow operating with target signal levels of 1.65V to 5.5V. | ||
+ | This is completely missing on the clone since the connector pins are directly connected to the micro-controller. | ||
+ | Thus it only supports target signal levels of 3.3V and sometimes 5V since the pins are 5V tolerant. | ||
+ | |||
+ | For $9 you can't expect more, and if you want a cheap adapter I recommend the other ones (see below). | ||
+ | |||
+ | ==== ST-LINK V2 aluminium ==== | ||
+ | |||
+ | These adapters come in a small dongle sized aluminium case. | ||
+ | They supports SWD, and SWIM (for STM8), but not JTAG. | ||
+ | |||
+ | At $2.5 they are the cheapest clones you can find.\\ | ||
+ | One trick to get this ridiculously low price is to use STM32F101 micro-controllers. | ||
+ | Compared to the STM32F103 micro-controllers they offer less functionalities, | ||
+ | Well this is because these micro-controllers use the same die, but if not all STM32F103 feature tests pass after production they get packages as STM32F101, and it seems that USB still works well enough ;).\\ | ||
+ | Similarly the STM32F103C8 is only rated having 64 kB of flash because it didn't pass the flash test, compared to the 128 kB for the STM32F103CB, | ||
+ | |||
+ | Several board versions exist and it is hard to know what you will get. | ||
+ | Always check the pinout on the aluminium case since this also varies. | ||
+ | |||
+ | === 2014-06-22 ST-LINK V2 === | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | I've also reversed the {{: | ||
+ | |||
+ | One other nice trick they used is to have twos LEDs on the same pin (PA9): | ||
+ | * when the pin is set to output high, only one LED lights up | ||
+ | * when the pin is set to output low, the other LED light up | ||
+ | * when set to input floating, both LEDs are off | ||
+ | * when PWM output is used, you can mix the two colors (red and blue) quite well due to the persistence of vision (also because the LEDs are next to each other and the small hole in the case is in the center). | ||
+ | |||
+ | === swapped === | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | From the outside this looks very similar to the previous one, except that the connector pinout is very different (except for power).\\ | ||
+ | No markings are on the board. | ||
+ | |||
+ | === 2016-01-18 MX-LINK V2 === | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | This one has an " | ||
+ | ==== BAITE ==== | ||
+ | |||
+ | The first clone is a [[http:// | ||
+ | It supports JTAG, SWD, and SWIM (for STM8). | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | STM32F103C8 connection: | ||
+ | ^ STM32F103C8 signal ^ STM32F103C8 pin ^ adapter pin ^ adapter signal ^ | ||
+ | | PA7 | 17 | 1 | JRST | | ||
+ | | AMS1117 | | 2 | 3V3 | | ||
+ | | USB VCC | | 3 | 5V | | ||
+ | | PA4 | 14 | 4 | JTCK/SWCLK | | ||
+ | | PB11 | 22 | 5 | SWIM | | ||
+ | | PA14 | 37 | 6 | JTMS/SWDIO | | ||
+ | | USB GND | | 7 | GND | | ||
+ | | PA5 | 15 | 8 | JTDO | | ||
+ | | PB6 | 42 | 9 | SWIM_RST | | ||
+ | | PA6 | 16 | 10 | JTDI | | ||
+ | | PB12,PB14 | 25,27 | | 100 ohms | | ||
+ | | PB5 | 41 | | LED | | ||
+ | |||
+ | the adapter pins are protected with a 220 ohms resistor. | ||
+ | |||
+ | ===== Altera USB-Blaster ===== | ||
The [[https:// | The [[https:// | ||
Line 158: | Line 236: | ||
</ | </ | ||
- | ==== SEGGER J-Link | + | ===== SEGGER J-Link |
The [[http:// | The [[http:// | ||
Line 169: | Line 247: | ||
That makes it the most complete JTAG adapter I have. | That makes it the most complete JTAG adapter I have. | ||
- | ===== tricks ===== | + | ====== tricks |
- | ==== scan chain ==== | + | ===== scan chain ===== |
JTAG devices are called Test Access Points (TAP). | JTAG devices are called Test Access Points (TAP). |
jtag.txt · Last modified: 2024/01/07 17:49 by 127.0.0.1