SWJ Frequency: Implement for cmsis-dap
This commit is contained in:
parent
1ca9f234f7
commit
13e8a262e4
|
@ -271,7 +271,6 @@ int dap_enter_debug_swd(ADIv5_DP_t *dp)
|
|||
if (!(dap_caps & DAP_CAP_SWD))
|
||||
return -1;
|
||||
mode = DAP_CAP_SWD;
|
||||
dap_swj_clock(2000000);
|
||||
dap_transfer_configure(2, 128, 128);
|
||||
dap_swd_configure(0);
|
||||
dap_connect(false);
|
||||
|
@ -340,7 +339,6 @@ int cmsis_dap_jtagtap_init(jtag_proc_t *jtag_proc)
|
|||
mode = DAP_CAP_JTAG;
|
||||
dap_disconnect();
|
||||
dap_connect(true);
|
||||
dap_swj_clock(2000000);
|
||||
jtag_proc->jtagtap_reset = cmsis_dap_jtagtap_reset;
|
||||
jtag_proc->jtagtap_next = cmsis_dap_jtagtap_next;
|
||||
jtag_proc->jtagtap_tms_seq = cmsis_dap_jtagtap_tms_seq;
|
||||
|
|
|
@ -29,6 +29,7 @@ void dap_exit_function(void);
|
|||
void dap_adiv5_dp_defaults(ADIv5_DP_t *dp);
|
||||
int cmsis_dap_jtagtap_init(jtag_proc_t *jtag_proc);
|
||||
int dap_jtag_dp_init(ADIv5_DP_t *dp);
|
||||
uint32_t dap_swj_clock(uint32_t clock);
|
||||
#else
|
||||
int dap_init(bmp_info_t *info)
|
||||
{
|
||||
|
@ -36,19 +37,15 @@ int dap_init(bmp_info_t *info)
|
|||
(void)info;
|
||||
return -1;
|
||||
}
|
||||
int dap_enter_debug_swd(ADIv5_DP_t *dp) {(void)dp; return -1;}
|
||||
void dap_exit_function(void) {return;};
|
||||
void dap_adiv5_dp_defaults(ADIv5_DP_t *dp) {(void)dp; return; }
|
||||
int cmsis_dap_jtagtap_init(jtag_proc_t *jtag_proc)
|
||||
{
|
||||
(void)jtag_proc;
|
||||
return -1;
|
||||
}
|
||||
int dap_jtag_dp_init(ADIv5_DP_t *dp)
|
||||
{
|
||||
(void)dp;
|
||||
return -1;
|
||||
}
|
||||
# pragma GCC diagnostic push
|
||||
# pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||
int dap_enter_debug_swd(ADIv5_DP_t *dp) {return -1;}
|
||||
uint32_t dap_swj_clock(uint32_t clock) {return 0;}
|
||||
void dap_exit_function(void) {};
|
||||
void dap_adiv5_dp_defaults(ADIv5_DP_t *dp) {};
|
||||
int cmsis_dap_jtagtap_init(jtag_proc_t *jtag_proc) {return -1;}
|
||||
int dap_jtag_dp_init(ADIv5_DP_t *dp) {return -1;}
|
||||
# pragma GCC diagnostic pop
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -203,18 +203,27 @@ void dap_disconnect(void)
|
|||
dbg_dap_cmd(buf, sizeof(buf), 1);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void dap_swj_clock(uint32_t clock)
|
||||
static uint32_t swj_clock;
|
||||
/* Set/Get JTAG/SWD clock frequency
|
||||
*
|
||||
* With clock == 0, return last set value.
|
||||
*/
|
||||
uint32_t dap_swj_clock(uint32_t clock)
|
||||
{
|
||||
if (clock == 0)
|
||||
return swj_clock;
|
||||
uint8_t buf[5];
|
||||
|
||||
buf[0] = ID_DAP_SWJ_CLOCK;
|
||||
buf[1] = clock & 0xff;
|
||||
buf[2] = (clock >> 8) & 0xff;
|
||||
buf[3] = (clock >> 16) & 0xff;
|
||||
buf[4] = (clock >> 24) & 0xff;
|
||||
dbg_dap_cmd(buf, sizeof(buf), 5);
|
||||
|
||||
if (buf[0])
|
||||
DEBUG_WARN("dap_swj_clock failed\n");
|
||||
else
|
||||
swj_clock = clock;
|
||||
return swj_clock;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -65,7 +65,6 @@ enum
|
|||
void dap_led(int index, int state);
|
||||
void dap_connect(bool jtag);
|
||||
void dap_disconnect(void);
|
||||
void dap_swj_clock(uint32_t clock);
|
||||
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);
|
||||
|
|
|
@ -328,6 +328,9 @@ void platform_max_frequency_set(uint32_t freq)
|
|||
case BMP_TYPE_BMP:
|
||||
remote_max_frequency_set(freq);
|
||||
break;
|
||||
case BMP_TYPE_CMSIS_DAP:
|
||||
dap_swj_clock(freq);
|
||||
break;
|
||||
default:
|
||||
DEBUG_WARN("Setting max SWJ frequency not yet implemented\n");
|
||||
break;
|
||||
|
@ -339,6 +342,9 @@ uint32_t platform_max_frequency_get(void)
|
|||
switch (info.bmp_type) {
|
||||
case BMP_TYPE_BMP:
|
||||
return remote_max_frequency_get();
|
||||
case BMP_TYPE_CMSIS_DAP:
|
||||
return dap_swj_clock(0);
|
||||
break;
|
||||
default:
|
||||
DEBUG_WARN("Reading max SWJ frequency not yet implemented\n");
|
||||
break;
|
||||
|
|
|
@ -290,7 +290,6 @@ void cl_init(BMP_CL_OPTIONS_t *opt, int argc, char **argv)
|
|||
DEBUG_WARN("Ignoring filename in reset/test mode\n");
|
||||
opt->opt_flash_file = NULL;
|
||||
}
|
||||
DEBUG_WARN("opt freq %" PRIu32 "\n", opt->opt_max_swj_frequency);
|
||||
}
|
||||
|
||||
static void display_target(int i, target *t, void *context)
|
||||
|
|
Loading…
Reference in New Issue