From d4ae308f9fd06baad7a2c54074e01ff623baaa3d Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Fri, 22 Oct 2021 18:36:23 +0200 Subject: [PATCH] cmsis: implement srst_set_val() --- src/platforms/hosted/cmsis_dap.c | 5 +++++ src/platforms/hosted/cmsis_dap.h | 2 ++ src/platforms/hosted/dap.c | 7 ++----- src/platforms/hosted/dap.h | 1 + src/platforms/hosted/platform.c | 2 ++ 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/platforms/hosted/cmsis_dap.c b/src/platforms/hosted/cmsis_dap.c index d9fff760..d3c17466 100644 --- a/src/platforms/hosted/cmsis_dap.c +++ b/src/platforms/hosted/cmsis_dap.c @@ -135,6 +135,11 @@ int dap_init(bmp_info_t *info) return 0; } +void dap_srst_set_val(bool assert) +{ + dap_reset_pin(!assert); +} + static void dap_dp_abort(ADIv5_DP_t *dp, uint32_t abort) { /* DP Write to Reg 0.*/ diff --git a/src/platforms/hosted/cmsis_dap.h b/src/platforms/hosted/cmsis_dap.h index a060d585..ed5c6c78 100644 --- a/src/platforms/hosted/cmsis_dap.h +++ b/src/platforms/hosted/cmsis_dap.h @@ -31,6 +31,7 @@ int dap_swdptap_init(ADIv5_DP_t *dp); int dap_jtag_dp_init(ADIv5_DP_t *dp); uint32_t dap_swj_clock(uint32_t clock); void dap_swd_configure(uint8_t cfg); +void dap_srst_set_val(bool assert); #else int dap_init(bmp_info_t *info) { @@ -47,6 +48,7 @@ int cmsis_dap_jtagtap_init(jtag_proc_t *jtag_proc) {return -1;} int dap_swdptap_init(ADIv5_DP_t *dp) {return -1;} int dap_jtag_dp_init(ADIv5_DP_t *dp) {return -1;} void dap_swd_configure(uint8_t cfg) {}; +void dap_srst_set_val(assert) {}; # pragma GCC diagnostic pop #endif diff --git a/src/platforms/hosted/dap.c b/src/platforms/hosted/dap.c index 1db94824..565d576a 100644 --- a/src/platforms/hosted/dap.c +++ b/src/platforms/hosted/dap.c @@ -200,7 +200,7 @@ void dap_disconnect(void) uint8_t buf[65]; buf[0] = ID_DAP_DISCONNECT; - dbg_dap_cmd(buf, sizeof(buf), 65); + dbg_dap_cmd(buf, sizeof(buf), 1); } static uint32_t swj_clock; @@ -277,10 +277,7 @@ void dap_reset_pin(int state) buf[1] = state ? DAP_SWJ_nRESET : 0; // Value buf[2] = DAP_SWJ_nRESET; // Select buf[3] = 0; // Wait - buf[4] = 0; - buf[5] = 0; - buf[6] = 0; - dbg_dap_cmd(buf, sizeof(buf), 7); + dbg_dap_cmd(buf, sizeof(buf), 4); } void dap_trst_reset(void) diff --git a/src/platforms/hosted/dap.h b/src/platforms/hosted/dap.h index d7e11249..5d655d85 100644 --- a/src/platforms/hosted/dap.h +++ b/src/platforms/hosted/dap.h @@ -69,6 +69,7 @@ void dap_transfer_configure(uint8_t idle, uint16_t count, uint16_t retry); void dap_swd_configure(uint8_t cfg); int dap_info(int info, uint8_t *data, int size); void dap_reset_target(void); +void dap_srst_set_val(bool assert); void dap_trst_reset(void); void dap_reset_target_hw(int state); void dap_reset_pin(int state); diff --git a/src/platforms/hosted/platform.c b/src/platforms/hosted/platform.c index abb6557c..a90294d4 100644 --- a/src/platforms/hosted/platform.c +++ b/src/platforms/hosted/platform.c @@ -292,6 +292,8 @@ void platform_srst_set_val(bool assert) return jlink_srst_set_val(&info, assert); case BMP_TYPE_LIBFTDI: return libftdi_srst_set_val(assert); + case BMP_TYPE_CMSIS_DAP: + return dap_srst_set_val(assert); default: break; }