ST Microelectronics recently announced that the ST-Link debug interfaces on their boards can be reprogrammed as Segger/J-Link interfaces. Curious, I flashed the firmware on to such a debugger as directed here https://www.segger.com/jlink-st-link.html .
I then wired the debugger to an stm32f030 as shown in the pictures below (the debugger had been snapped off the Nucleo board because the target MCU had been damaged)
The SWD connections are taken from CN4 and joined to the corresponding pins on the STM32F030. Note the way the 3.3V is taken from the top of the jumper JP1: The jumper must remain in place to power the debug interface.
Important: The Boot0 pin must be pulled to ground with a resistor or the CPU will boot to ISP mode and you won’t be able to run your test program.
In addition to the SWD connections, the STM32F030’s UART is connected to the TX and RX pins on the debug interface. This allows an application running on the STM32F030 to send data to the host PC.
All of this was done in Ubuntu Linux using OpenOCD. The OpenOCD configuration script (tbrd.cfg) is shown below:
# This is for the STM32F030 connected to the ST-Link Nucleo # programmer that has been reflashed with the J-Link firmware source [find interface/jlink.cfg] transport select swd source [find target/stm32f0x.cfg] adapter_khz 1000 reset_config srst_nogate
The debug arrangement worked well: programs loaded quickly, registers could be examined and breakpoints set etc.
To run openocd type the following:
sudo openocd -f tbrd.cfg
In a new terminal window, run arm-none-eabi-gdb
The transcript for a simple session is shown below.
GNU gdb (GNU Tools for ARM Embedded Processors) 184.108.40.20660923-cvs Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-linux-gnu --target=arm-none-eabi". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word". (gdb) target remote :3333 Remote debugging using :3333 0x00000000 in ?? () (gdb) monitor reset halt target state: halted target halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0x080000b4 msp: 0x20001000 (gdb) load main.elf Loading section .text, size 0x328 lma 0x8000000 Start address 0x8000000, load size 808 Transfer rate: 3 KB/sec, 808 bytes/write. (gdb) continue Continuing.