Electronic – ST-Link connection suddenly stops responding

eclipsejtagst-linkstm32f10xwindows

While I wanted to upload/debug a new HAL Eclipse System Workbench for STM32 project on my STM32F103 it showed the following message:

OpenOCD child process termination

Reason:
Wrong device detected

Details:

Wrong device detected
  Open On-Chip Debugger 0.10.0-dev-00302-gc211ca5-dirty (2017-07-03-10:41)
  Licensed under GNU GPL v2
  For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
  none separate
  Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
  adapter speed: 950 kHz
  adapter_nsrst_delay: 100
  Info : clock speed 950 kHz
  Info : STLINK v2 JTAG v27 API v2 SWIM v6 VID 0x0483 PID 0x3748
  Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748
  Info : using stlink api v2
  Info : Target voltage: 3.236436
  Error: init mode failed (unable to connect to the target)
  in procedure 'init' 
  in procedure 'ocd_bouncer'

This happens regularly, what I normally do is startup up STLink utility, and select Target/connect. This shows sometimes an error:

Can not connect to target!
If you're trying to connect to an STMW1xx device, please select
Normal or HotPlug mode from Target->Settings menu.
If you're trying to connect a low frequency application, please select
a lower SWD Frequency mode from Target->Settings menu.

Since both do not apply, I remove the USB STLink stick (V2, cheap one) and USB for power to the STM and try again, mostly it works. I close the ST Link utility and continue with Eclipse. This takes normally a few minutes and is annoying, but at least I can continue.

However, now I keep getting the ST Link message and cannot get rid of it (also restarted my computer).

If I try ST-LINK/Firmware Update from the ST-Link utility (to check if I can get connection to the ST Link itself), and press Device Connect, I get:

ST-Link is not in the DFU mode.
Please restart it

I don't know how to 'restart' it, but removing the ST Link from the USB and reinserting does not help.

I also tried another ST-Link, but it has the same behavior.

Than I tried another STM32, that worked. However, as soon as I tried to upload the program via Eclipse, it works once, when retrying, I get the same problems as above and now I have both of my STM's not working anymore. The program is not special, and worked before.

How to restore the connection with Eclipse so I can upload programs for debugging again?

Update:

  • I tried to put BOOT0 to 1 (3V), I could get once connection with ST link, I erased it. I could even debug after uploading, but just once. Than the problems started as before.
  • Also, suddenly, the ST Link utility crashes when trying to connect.
  • When I put BOOT0 to 0 again, and keep pressing the reset button, select erase memory from the ST Link utility and release the reset button, I could erase it. This makes it possible again to upload a program via Eclipse. However, after the first initial breakpoint stepping further, I get continuous the following error:

    Error: JTAG failure: -4

Best Answer

It seems that in the HAL project the SYS / Debug was not set to Serial Wire (this is not default).

However, the first time it was possible to debug, but not afterwards anymore. The reason is that the JTAG/SWDIO is disabled during the application. When it is disabled, even a connection is hard to make.

What worked:

  • Set BOOT0 to 1
  • Keep Reset button pressed
  • Remove / Erase Chip
  • Restart debugging