cmsis-dap: Various fixes
- decrease report size to 64, otherwise MIMRXT10x0-EVK crashed when reading larger memory block - dp_read_reg acts direct, fixing CortexM core register read. - length of data to write with read_block.
This commit is contained in:
parent
f15b1d7763
commit
0995fe1288
|
@ -47,7 +47,7 @@ uint8_t mode;
|
||||||
/*- Variables ---------------------------------------------------------------*/
|
/*- Variables ---------------------------------------------------------------*/
|
||||||
static hid_device *handle = NULL;
|
static hid_device *handle = NULL;
|
||||||
static uint8_t hid_buffer[1024 + 1];
|
static uint8_t hid_buffer[1024 + 1];
|
||||||
static int report_size = 512 + 1; // TODO: read actual report size
|
static int report_size = 64 + 1; // TODO: read actual report size
|
||||||
/* LPC845 Breakout Board Rev. 0 report invalid response with > 65 bytes */
|
/* LPC845 Breakout Board Rev. 0 report invalid response with > 65 bytes */
|
||||||
int dap_init(bmp_info_t *info)
|
int dap_init(bmp_info_t *info)
|
||||||
{
|
{
|
||||||
|
@ -129,14 +129,7 @@ static uint32_t dap_dp_low_access(struct ADIv5_DP_s *dp, uint8_t RnW,
|
||||||
|
|
||||||
static uint32_t dap_dp_read_reg(ADIv5_DP_t *dp, uint16_t addr)
|
static uint32_t dap_dp_read_reg(ADIv5_DP_t *dp, uint16_t addr)
|
||||||
{
|
{
|
||||||
uint32_t res;
|
uint32_t res = dap_dp_low_access(dp, ADIV5_LOW_READ, addr, 0);
|
||||||
if (addr & ADIV5_APnDP) {
|
|
||||||
dap_dp_low_access(dp, ADIV5_LOW_READ, addr, 0);
|
|
||||||
res = dap_dp_low_access(dp, ADIV5_LOW_READ,
|
|
||||||
ADIV5_DP_RDBUFF, 0);
|
|
||||||
} else {
|
|
||||||
res = dap_dp_low_access(dp, ADIV5_LOW_READ, addr, 0);
|
|
||||||
}
|
|
||||||
DEBUG_PROBE("dp_read %04x %08" PRIx32 "\n", addr, res);
|
DEBUG_PROBE("dp_read %04x %08" PRIx32 "\n", addr, res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -394,7 +394,7 @@ unsigned int dap_read_block(ADIv5_AP_t *ap, void *dest, uint32_t src,
|
||||||
buf[2] = sz & 0xff;
|
buf[2] = sz & 0xff;
|
||||||
buf[3] = (sz >> 8) & 0xff;
|
buf[3] = (sz >> 8) & 0xff;
|
||||||
buf[4] = SWD_AP_DRW | DAP_TRANSFER_RnW;
|
buf[4] = SWD_AP_DRW | DAP_TRANSFER_RnW;
|
||||||
dbg_dap_cmd(buf, 1023, 5 + 1);
|
dbg_dap_cmd(buf, 1023, 5);
|
||||||
unsigned int transferred = buf[0] + (buf[1] << 8);
|
unsigned int transferred = buf[0] + (buf[1] << 8);
|
||||||
if (buf[2] >= DAP_TRANSFER_FAULT) {
|
if (buf[2] >= DAP_TRANSFER_FAULT) {
|
||||||
DEBUG_WARN("dap_read_block @ %08" PRIx32 " fault -> line reset\n", src);
|
DEBUG_WARN("dap_read_block @ %08" PRIx32 " fault -> line reset\n", src);
|
||||||
|
|
Loading…
Reference in New Issue