stlink: add hardware srst functions to stlink/v2
Change-Id: Ib82b6a1116b9f396f1933cc5526733334254fd62 Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/579 Tested-by: jenkins Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com> Reviewed-by: Mathias Küster <kesmtp@freenet.de>__archive__
parent
9cc733ae31
commit
5d1cabb142
|
@ -719,6 +719,8 @@ static enum target_state stlink_usb_v2_get_status(void *handle)
|
|||
|
||||
if (status & S_HALT)
|
||||
return TARGET_HALTED;
|
||||
else if (status & S_RESET_ST)
|
||||
return TARGET_RESET;
|
||||
|
||||
return TARGET_RUNNING;
|
||||
}
|
||||
|
@ -783,6 +785,32 @@ static int stlink_usb_reset(void *handle)
|
|||
return h->databuf[0] == STLINK_DEBUG_ERR_OK ? ERROR_OK : ERROR_FAIL;
|
||||
}
|
||||
|
||||
static int stlink_usb_assert_srst(void *handle, int srst)
|
||||
{
|
||||
int res;
|
||||
struct stlink_usb_handle_s *h;
|
||||
|
||||
assert(handle != NULL);
|
||||
|
||||
h = (struct stlink_usb_handle_s *)handle;
|
||||
|
||||
if (h->jtag_api == STLINK_JTAG_API_V1)
|
||||
return ERROR_COMMAND_NOTFOUND;
|
||||
|
||||
stlink_usb_init_buffer(handle, STLINK_RX_EP, 2);
|
||||
|
||||
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_COMMAND;
|
||||
h->cmdbuf[h->cmdidx++] = STLINK_DEBUG_APIV2_DRIVE_NRST;
|
||||
h->cmdbuf[h->cmdidx++] = srst;
|
||||
|
||||
res = stlink_usb_xfer(handle, h->databuf, 2);
|
||||
|
||||
if (res != ERROR_OK)
|
||||
return res;
|
||||
|
||||
return h->databuf[0] == STLINK_DEBUG_ERR_OK ? ERROR_OK : ERROR_FAIL;
|
||||
}
|
||||
|
||||
/** */
|
||||
static int stlink_usb_run(void *handle)
|
||||
{
|
||||
|
@ -1223,6 +1251,8 @@ struct stlink_layout_api_s stlink_usb_layout_api = {
|
|||
/** */
|
||||
.reset = stlink_usb_reset,
|
||||
/** */
|
||||
.assert_srst = stlink_usb_assert_srst,
|
||||
/** */
|
||||
.run = stlink_usb_run,
|
||||
/** */
|
||||
.halt = stlink_usb_halt,
|
||||
|
|
|
@ -37,6 +37,8 @@ struct stlink_layout_api_s {
|
|||
/** */
|
||||
int (*reset) (void *fd);
|
||||
/** */
|
||||
int (*assert_srst) (void *fd, int srst);
|
||||
/** */
|
||||
int (*run) (void *fd);
|
||||
/** */
|
||||
int (*halt) (void *fd);
|
||||
|
|
Loading…
Reference in New Issue