Browse Source

stlink: improve swd hardware reset

Treat SWD wait result as success, otherwise hardware reset will sometimes fail.

Change-Id: I0dbdbe9e75924fe0dde547a72883c60c3db7b15e
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/799
Tested-by: jenkins
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
tags/v0.6.0-rc2
Spencer Oliver 9 years ago
committed by Freddie Chopin
parent
commit
897817b331
1 changed files with 8 additions and 1 deletions
  1. +8
    -1
      src/jtag/drivers/stlink_usb.c

+ 8
- 1
src/jtag/drivers/stlink_usb.c View File

@@ -94,7 +94,10 @@ struct stlink_usb_handle_s {
};

#define STLINK_DEBUG_ERR_OK 0x80
#define STLINK_DEBUG_ERR_FAULT 0x81
#define STLINK_DEBUG_ERR_FAULT 0x81
#define STLINK_SWD_AP_WAIT 0x10
#define STLINK_SWD_DP_WAIT 0x14

#define STLINK_CORE_RUNNING 0x80
#define STLINK_CORE_HALTED 0x81
#define STLINK_CORE_STAT_UNKNOWN -1
@@ -784,6 +787,10 @@ static int stlink_usb_reset(void *handle)

LOG_DEBUG("RESET: 0x%08X", h->databuf[0]);

/* the following is not a error under swd (using hardware srst), so return success */
if (h->databuf[0] == STLINK_SWD_AP_WAIT || h->databuf[0] == STLINK_SWD_DP_WAIT)
return ERROR_OK;

return h->databuf[0] == STLINK_DEBUG_ERR_OK ? ERROR_OK : ERROR_FAIL;
}



Loading…
Cancel
Save