CuVoodoo

the sorcery of copper

User Tools

Site Tools


jtag

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
jtag [2017/03/30 13:52] – [BAITE] kingkevinjtag [2017/03/30 15:46] – add BMP kingkevin
Line 119: Line 119:
 This one has an "M" logo instead of the ST logo, probably corresponding to the "MX-LINK V2" marking on the board. This one has an "M" logo instead of the ST logo, probably corresponding to the "MX-LINK V2" marking on the board.
 ==== Baite ==== ==== Baite ====
- 
  
 {{:jtag:baite_dongle_front.jpg?0x100|dongle front}} {{:jtag:baite_dongle_front.jpg?0x100|dongle front}}
Line 136: Line 135:
 The connector pins are all protected with 220 ohms resistors. The connector pins are all protected with 220 ohms resistors.
  
-STM32F103C8 connection+===== Black Magic Probe ===== 
-^ STM32F103C8 signal ^ STM32F103C8 pin ^ adapter pin ^ adapter signal ^ + 
-| PA7 | 17 | 1 | JRST | +The [[https://github.com/blacksphere/blackmagic/wiki|Black Magic Probe]] (aka. BMP) is a quite nice SWJ adapter because it comes with an embedded GDB server. 
-| AMS1117 |  | 2 | 3V3 | +Thus no need to have an OpenOCD server to control the SWJ adapter
-| USB VCC |  | 3 | 5V | +You can directly connect GDB to this adapter (over USB CDC ACM).\\ 
-| PA4 | 14 | 4 | JTCK/SWCLK +It also comes with a UART port (over a second USB CDC ACM). 
-PB11 22 5 | SWIM +This is very useful while developing (for printf debugging). 
-PA14 | 37 | 6 | JTMS/SWDIO + 
-USB GND  | 7 | GND +The hardware comes with some disadvantages though: 
-PA5 15 | 8 | JTDO +  * the ARM Cortex SWJ connector uses a small header (not very dupont-wire friendly) 
-PB6 42 | 9 | SWIM_RST +  * the separate UART is not always populated (UART is also available on the SWJ connector) 
-PA6  16 | 10 | JTDI +  * it is quite expensive (> $50) 
-PB12,PB14 25,27 |  |  100 ohms +  * it is always sold out (and V2.1 on pre-order will take a bit of time until it is available) 
-PB5 | 41 |  | LED |+ 
 +But because the firmware is open source it is possible to port it to other hardware, and [[https://github.com/blacksphere/blackmagic/wiki/Debugger-Hardware|people already did it]].\\ 
 +It has been [[https://medium.com/@paramaggarwal/converting-an-stm32f103-board-to-a-black-magic-probe-c013cf2cc38c|ported]] on the [[stm32f1xx#blue_pill|blue pill]], but I don't find this board as handy as a dongle.\\ 
 +It has also been [[http://blog.linuxbits.io/2016/02/15/cheap-chinese-st-link-v-2-programmer-converted-to-black-magic-probe-debugger/|ported]] to the [[#st-link_v2_aluminium|ST-Link V2 clone]], but then there is no additional UART anymore.\\ 
 +So I decided to port it to the [[#baite|baite]]. 
 +This has less power pins (who needs 2xGND, 2x5V, 3x3.3V anyway), but provides enough function pins to add UART (and SRST). 
 + 
 +To build the firmware: 
 +<code bash> 
 +git clone https://github.com/blacksphere/blackmagic 
 +cd blackmagic 
 +git submodule init 
 +git submodule update 
 +make 
 +cd src 
 +make clean 
 +make PROBE_HOST=baite 
 +</code> 
 + 
 +First we need to re-program the Baite dongle.\\ 
 +As you can see on the {{:jtag:baite_schematic.pdf|schematic}} the JTAG and SWD pins of the micro-controller are not connected (there even are no pads on the board for the pins to be soldered on). 
 +But on the back of the board you can find test points so to program the device using the serial bootloader: 
 + 
 +^ pin ^ signal ^ 
 +1 (square) RX 
 +TX 
 +BOOT0 
 ++5V 
 +GND 
 + 
 +Use any USB to UART converter and connect the corresponding pins to this port. 
 +Don't power the Baite dongle over USB since it might then boot the normal application. 
 +Instead let the USB to UART converter power it. 
 +To start the serial bootloader when powering the dongle you need to set BOOT0 high by connecting it to +3.3V or DTR (or any high signal present on the USB to UART converter). 
 + 
 +To flash the Black Magic DFU bootloader I used [[https://sourceforge.net/p/stm32flash/wiki/Home/|stm32flash]]. 
 +Since the flash is read/write protected you first need to clear these option bits. 
 + 
 +<code bash> 
 +# disable flash read protection 
 +stm32flash -k /dev/ttyUSB0 
 +# disable flash write protection 
 +stm32flash -u /dev/ttyUSB0 
 +# erase flash 
 +stm32flash -o /dev/ttyUSB0 
 +# flash DFU bootloader 
 +stm32flash -w blackmagic/src/blackmagic_dfu.bin /dev/ttyUSB0 
 +</code> 
 + 
 +Unplug and re-plug the Baite dongle and you should see the device in DFU bootlader mode. 
 +Flash the main application firmware using dfu-util: 
 +<code bash> 
 +dfu-util -d 1d50:6017 -s 0x08002000:leave -D blackmagic.bin 
 +</code> 
 + 
 +Unplug and re-plug the Baite dongle. 
 +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: 
 +<code bash> 
 +dfu-util -d 1d50:6018 -s 0x08002000:leave -D blackmagic.bin 
 +</code>
  
 +or short RX to ground (pin 5 and 7) to force the DFU bootloader start when plugin in the dongle (in case the main application is buggy).
  
 +Here is the new "BMP Baite" pinout:
 +^ signal ^ pin ^ pin ^ signal ^
 +| SRST | 1 | 2| +3.3V |
 +| +5V | 3 | 4 | JTCK/SWCLK |
 +| RX | 5 (key) | 6 | JTMS/SWDIO |
 +| GND | 7 | 8 | JTDO/TRACESWO |
 +| TX | 9 | 10 | JTDI |
  
 +If you connect SRST to the target NRST, it is even possible to reset the target board without having to press on the on-board reset button (of there is any):
 +<code bash>
 +gdb --eval-command="target extended-remote /dev/ttyACM0" --eval-command="monitor hard_srst" --eval-command="quit"
 +</code>
 ===== Altera USB-Blaster ===== ===== Altera USB-Blaster =====
  
jtag.txt · Last modified: 2024/01/07 17:49 by 127.0.0.1