/** */
struct hl_layout_api_s {
/** */
- int (*open) (struct hl_interface_param_s *param, void **fd);
+ int (*open) (struct hl_interface_param_s *param, void **handle);
/** */
- int (*close) (void *fd);
+ int (*close) (void *handle);
/** */
- int (*reset) (void *fd);
+ int (*reset) (void *handle);
/** */
- int (*assert_srst) (void *fd, int srst);
+ int (*assert_srst) (void *handle, int srst);
/** */
- int (*run) (void *fd);
+ int (*run) (void *handle);
/** */
- int (*halt) (void *fd);
+ int (*halt) (void *handle);
/** */
- int (*step) (void *fd);
+ int (*step) (void *handle);
/** */
- int (*read_regs) (void *fd);
+ int (*read_regs) (void *handle);
/** */
- int (*read_reg) (void *fd, int num, uint32_t *val);
+ int (*read_reg) (void *handle, int num, uint32_t *val);
/** */
- int (*write_reg) (void *fd, int num, uint32_t val);
+ int (*write_reg) (void *handle, int num, uint32_t val);
/** */
int (*read_mem) (void *handle, uint32_t addr, uint32_t size,
uint32_t count, uint8_t *buffer);
*/
int (*idcode) (void *handle, uint32_t *idcode);
/** */
- enum target_state (*state) (void *fd);
+ enum target_state (*state) (void *handle);
};
/** */
switch (num) {
case 0 ... 18:
/* read a normal core register */
- retval = adapter->layout->api->read_reg(adapter->fd, num, value);
+ retval = adapter->layout->api->read_reg(adapter->handle, num, value);
if (retval != ERROR_OK) {
LOG_ERROR("JTAG failure %i", retval);
* in one Debug Core register. So say r0 and r2 docs;
* it was removed from r1 docs, but still works.
*/
- retval = adapter->layout->api->read_reg(adapter->fd, 20, value);
+ retval = adapter->layout->api->read_reg(adapter->handle, 20, value);
if (retval != ERROR_OK)
return retval;
*/
switch (num) {
case 0 ... 18:
- retval = adapter->layout->api->write_reg(adapter->fd, num, value);
+ retval = adapter->layout->api->write_reg(adapter->handle, num, value);
if (retval != ERROR_OK) {
struct reg *r;
* it was removed from r1 docs, but still works.
*/
- adapter->layout->api->read_reg(adapter->fd, 20, ®);
+ adapter->layout->api->read_reg(adapter->handle, 20, ®);
switch (num) {
case ARMV7M_PRIMASK:
break;
}
- adapter->layout->api->write_reg(adapter->fd, 20, reg);
+ adapter->layout->api->write_reg(adapter->handle, 20, reg);
LOG_DEBUG("write special reg %i value 0x%" PRIx32 " ", (int)num, value);
break;
static int hl_dcc_read(struct hl_interface_s *hl_if, uint8_t *value, uint8_t *ctrl)
{
uint16_t dcrdr;
- int retval = hl_if->layout->api->read_mem(hl_if->fd,
+ int retval = hl_if->layout->api->read_mem(hl_if->handle,
DCB_DCRDR, 1, sizeof(dcrdr), (uint8_t *)&dcrdr);
if (retval == ERROR_OK) {
*ctrl = (uint8_t)dcrdr;
* to signify we have read data */
/* atomically clear just the byte containing the busy bit */
static const uint8_t zero;
- retval = hl_if->layout->api->write_mem(hl_if->fd, DCB_DCRDR, 1, 1, &zero);
+ retval = hl_if->layout->api->write_mem(hl_if->handle, DCB_DCRDR, 1, 1, &zero);
}
}
return retval;
adapter_load_context(target);
/* make sure we clear the vector catch bit */
- adapter->layout->api->write_debug_reg(adapter->fd, DCB_DEMCR, TRCENA);
+ adapter->layout->api->write_debug_reg(adapter->handle, DCB_DEMCR, TRCENA);
r = arm->cpsr;
xPSR = buf_get_u32(r->value, 0, 32);
struct armv7m_common *armv7m = target_to_armv7m(target);
enum target_state prev_target_state = target->state;
- state = adapter->layout->api->state(adapter->fd);
+ state = adapter->layout->api->state(adapter->handle);
if (state == TARGET_UNKNOWN) {
LOG_ERROR("jtag status contains invalid mode value - communication failure");
if ((jtag_reset_config & RESET_HAS_SRST) &&
(jtag_reset_config & RESET_SRST_NO_GATING)) {
jtag_add_reset(0, 1);
- res = adapter->layout->api->assert_srst(adapter->fd, 0);
+ res = adapter->layout->api->assert_srst(adapter->handle, 0);
srst_asserted = true;
}
- adapter->layout->api->write_debug_reg(adapter->fd, DCB_DHCSR, DBGKEY|C_DEBUGEN);
+ adapter->layout->api->write_debug_reg(adapter->handle, DCB_DHCSR, DBGKEY|C_DEBUGEN);
/* only set vector catch if halt is requested */
if (target->reset_halt)
- adapter->layout->api->write_debug_reg(adapter->fd, DCB_DEMCR, TRCENA|VC_CORERESET);
+ adapter->layout->api->write_debug_reg(adapter->handle, DCB_DEMCR, TRCENA|VC_CORERESET);
else
- adapter->layout->api->write_debug_reg(adapter->fd, DCB_DEMCR, TRCENA);
+ adapter->layout->api->write_debug_reg(adapter->handle, DCB_DEMCR, TRCENA);
if (jtag_reset_config & RESET_HAS_SRST) {
if (!srst_asserted) {
jtag_add_reset(0, 1);
- res = adapter->layout->api->assert_srst(adapter->fd, 0);
+ res = adapter->layout->api->assert_srst(adapter->handle, 0);
}
if (res == ERROR_COMMAND_NOTFOUND)
LOG_ERROR("Hardware srst not supported, falling back to software reset");
if (use_srst_fallback) {
/* stlink v1 api does not support hardware srst, so we use a software reset fallback */
- adapter->layout->api->write_debug_reg(adapter->fd, NVIC_AIRCR, AIRCR_VECTKEY | AIRCR_SYSRESETREQ);
+ adapter->layout->api->write_debug_reg(adapter->handle, NVIC_AIRCR, AIRCR_VECTKEY | AIRCR_SYSRESETREQ);
}
- res = adapter->layout->api->reset(adapter->fd);
+ res = adapter->layout->api->reset(adapter->handle);
if (res != ERROR_OK)
return res;
LOG_DEBUG("%s", __func__);
if (jtag_reset_config & RESET_HAS_SRST)
- adapter->layout->api->assert_srst(adapter->fd, 1);
+ adapter->layout->api->assert_srst(adapter->handle, 1);
/* virtual deassert reset, we need it for the internal
* jtag state machine
if (target->state == TARGET_UNKNOWN)
LOG_WARNING("target was in unknown state when halt was requested");
- res = adapter->layout->api->halt(adapter->fd);
+ res = adapter->layout->api->halt(adapter->handle);
if (res != ERROR_OK)
return res;
breakpoint->unique_id);
cortex_m_unset_breakpoint(target, breakpoint);
- res = adapter->layout->api->step(adapter->fd);
+ res = adapter->layout->api->step(adapter->handle);
if (res != ERROR_OK)
return res;
}
}
- res = adapter->layout->api->run(adapter->fd);
+ res = adapter->layout->api->run(adapter->handle);
if (res != ERROR_OK)
return res;
target_call_event_callbacks(target, TARGET_EVENT_RESUMED);
- res = adapter->layout->api->step(adapter->fd);
+ res = adapter->layout->api->step(adapter->handle);
if (res != ERROR_OK)
return res;
LOG_DEBUG("%s 0x%08" PRIx32 " %" PRIu32 " %" PRIu32, __func__, address, size, count);
- return adapter->layout->api->read_mem(adapter->fd, address, size, count, buffer);
+ return adapter->layout->api->read_mem(adapter->handle, address, size, count, buffer);
}
static int adapter_write_memory(struct target *target, uint32_t address,
LOG_DEBUG("%s 0x%08" PRIx32 " %" PRIu32 " %" PRIu32, __func__, address, size, count);
- return adapter->layout->api->write_mem(adapter->fd, address, size, count, buffer);
+ return adapter->layout->api->write_mem(adapter->handle, address, size, count, buffer);
}
static const struct command_registration adapter_command_handlers[] = {