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 [2018/01/06 12:08] – [Altera USB-Blaster] add clones kingkevin | jtag [2019/04/04 22:19] – [ST-LINK V2 aluminium] add two variants kingkevin | ||
---|---|---|---|
Line 61: | Line 61: | ||
{{: | {{: | ||
{{: | {{: | ||
- | {{: | ||
{{: | {{: | ||
{{: | {{: | ||
Line 78: | Line 77: | ||
These adapters come in a small dongle sized aluminium case. | These adapters come in a small dongle sized aluminium case. | ||
They supports SWD, and SWIM (for STM8), but not JTAG. | They supports SWD, and SWIM (for STM8), but not JTAG. | ||
+ | Also the RST signal (required for SWIM) is not controllable as SRST in SWD mode (at least not by OpenOCD). | ||
- | At $2.5 they are the cheapest | + | For less than $2, they are the cheapest |
- | One trick to get this ridiculously low price is to use STM32F101 micro-controllers. | + | I also like to use them as development board when I just need a USB dongle |
- | 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, but it seems that USB still works well enough. | + | |
- | At least this is my guess. | + | |
- | It would be interesting to check if the other STM32F103 peripherals normally not present on the STM32F101 work as well, but I wouldn' | + | |
- | After all, they are probably marked as STM32F101 for a good reason.\\ | + | |
- | Similarly the STM32F103C8 is only rated having 64 kB of flash because it didn't pass the flash test, compared | + | |
- | Several | + | Numerous |
- | Always check the pinout on the aluminium case since this also varies. | + | Always check the pinout on the aluminium case and on the PCB since this also varies. |
+ | Here are the board variants I got, in chronological order. | ||
=== 2014-06-22 ST-LINK V2 === | === 2014-06-22 ST-LINK V2 === | ||
Line 97: | Line 92: | ||
{{: | {{: | ||
- | I' | + | I've reversed the {{: |
+ | |||
+ | 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, but it seems that USB still works well enough. | ||
+ | At least this is my guess. | ||
+ | It would be interesting to check if the other STM32F103 peripherals normally not present on the STM32F101 work as well, but I wouldn' | ||
+ | After all, they are probably marked as STM32F101 for a good reason.\\ | ||
+ | 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, | ||
One other nice trick they used is to have twos LEDs on the same pin (PA9): | One other nice trick they used is to have twos LEDs on the same pin (PA9): | ||
Line 105: | Line 108: | ||
* 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). | * 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 | + | === alternative pinout |
{{: | {{: | ||
Line 121: | Line 124: | ||
This one has an " | This one has an " | ||
+ | |||
+ | === SWDIO/SWCLK swap === | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | This variant uses an STM32F103. | ||
+ | It seems this micro-controller got so popular that it is now cheaper than the STM32F101 (with less features). | ||
+ | The annoying details of this variant is that the SWDIO and SWCLK signal described on the pinout engraved in the aluminium case are swapped. | ||
+ | This shows again the importance of also checking the pinout on the board itself, else you can waste a couple of hours debugging. | ||
+ | |||
+ | === QFN === | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | This variant uses an STM32F103 in the UFQFN-48 package. | ||
+ | This is just a couple of cents cheaper than the more traditional TQFP-48 package, but this is enough en mass to change the footprint on the board. | ||
==== Baite ==== | ==== Baite ==== | ||
Line 174: | Line 197: | ||
git submodule init | git submodule init | ||
git submodule update | git submodule update | ||
- | git checkout baite-platform | ||
- | # if you are usgin GCC >= 7 | ||
- | git cherry-pick 2ebcffa2a4911090b43c36594dae6b58d4bb2f27 | ||
make | make | ||
cd src | cd src | ||
Line 210: | Line 230: | ||
stm32flash -o / | stm32flash -o / | ||
# flash the DFU bootloader | # flash the DFU bootloader | ||
- | stm32flash -w src/blackmagic_dfu.bin -v / | + | stm32flash -w blackmagic_dfu.bin -v / |
# flash the main firmware | # flash the main firmware | ||
- | stm32flash -w src/blackmagic.bin -v -S 0x08002000 / | + | stm32flash -w blackmagic.bin -v -S 0x08002000 / |
</ | </ | ||
- | |||
- | Since this adapter is based on an STM32F103C8 micro-controller with 64 kB of flash the DFU bootloader only advertises 56 kB of flash available for the main application. | ||
- | Because the blackmagic firmware exceeds this size it will not be possible to flash it through if the DFU software doesn' | ||
- | STM32F103C8 micro-controllers often have 128 kB of flash though, thus it is still possible to flash the blackmagic firmware using the serial bootloader (at address 0x08002000). | ||
- | Verification during flashing ensured the whole firmware has been written successfully. | ||
Unplug and re-plug the Baite dongle. | Unplug and re-plug the Baite dongle. | ||
The adapter should be running the main application and two USB CDC ACM ports will appear. | The adapter should be running the main application and two USB CDC ACM ports will appear. | ||
- | You can re-flash the device from the main application using dfu-util (if you can bring dfu-util to ignore | + | You can re-flash the device from the main application using the DFU bootloader with: |
<code bash> | <code bash> | ||
- | dfu-util -d 1d50:6018 -s 0x08002000: | + | python2 ../ |
</ | </ | ||
+ | |||
+ | Note: Since this adapter is based on an STM32F103C8 micro-controller with 64 kB of flash the DFU bootloader only advertises 56 kB of flash available for the main application. | ||
+ | Because the blackmagic firmware exceeds this size it will not be possible to flash it through if the DFU software doesn' | ||
+ | STM32F103C8 micro-controllers often have 128 kB of flash though, thus it is still possible to flash the blackmagic firmware using the serial bootloader (at address 0x08002000, with verification enbaled ot ensured the whole firmware has been written successfully) or '' | ||
Here is the new "BMP Baite" {{ : | Here is the new "BMP Baite" {{ : | ||
Line 260: | Line 279: | ||
</ | </ | ||
- | To be able to use it I had to recompile OpenOCD for the USB-Blaster to use libftdi (probable | + | To be able to use it I had to recompile OpenOCD for the USB-Blaster to use libftdi (maybe because it's a clone). |
<code bash> | <code bash> | ||
git clone http:// | git clone http:// | ||
Line 355: | Line 374: | ||
{{: | {{: | ||
{{: | {{: | ||
+ | |||
===== SEGGER J-Link ===== | ===== SEGGER J-Link ===== | ||
- | The [[http://www.aliexpress.com/item/ | + | The [[https://www.segger.com/jlink_base.html|SEGGER J-Link]] |
+ | That makes it one of the most complete JTAG adapter. | ||
+ | The differences between the versions are documented [[https://wiki.segger.com/ | ||
+ | |||
+ | There are plenty of different J-Link v8 and v9 clones available, from light version with the minimum number of components, to full version with all features. | ||
+ | But v8 and v9 are not supported anymore by J-Link, meaning no new feature will be added to them. | ||
+ | Instead I recommend to get the [[https:// | ||
+ | |||
+ | The come in the same case: | ||
{{: | {{: | ||
{{: | {{: | ||
- | {{: | ||
- | It supports | + | Here a J-Link v8 with large passives: |
- | That makes it the most complete | + | |
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | Here a J-Link v8 with smaller and a bit less passives: | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | Here a light J-Link v9. | ||
+ | v9 uses a STM32F205 (providing 20 MHz JTAG/15 MHz SWD) while v8 uses a AT91SAM7S (providing 10 MHz JTAG/4 MHz SWD): | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | ===== Texas Instruments XDS100v3 ===== | ||
+ | |||
+ | The [[http:// | ||
+ | |||
+ | Note: this adapter uses the [[http:// | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | ===== DISTORTEC JTAG-lock-pick Tiny 2 ===== | ||
+ | |||
+ | The [[http:// | ||
+ | {{: | ||
+ | {{: | ||
====== tricks ====== | ====== tricks ====== | ||
jtag.txt · Last modified: 2024/01/07 17:49 by 127.0.0.1