OpenOCD
|
Go to the source code of this file.
Macros | |
#define | DMI_SCAN_BUF_SIZE (DIV_ROUND_UP(DMI_SCAN_MAX_BIT_LENGTH, 8)) |
#define | DMI_SCAN_MAX_BIT_LENGTH (DTM_DMI_MAX_ADDRESS_LENGTH + DTM_DMI_DATA_LENGTH + DTM_DMI_OP_LENGTH) |
#define | DTM_DMI_MAX_ADDRESS_LENGTH ((1<<DTM_DTMCS_ABITS_LENGTH)-1) |
#define | get_field(reg, mask) (((reg) & (mask)) / ((mask) & ~((mask) << 1))) |
#define | set_field(reg, mask, val) (((reg) & ~(mask)) | (((val) * ((mask) & ~((mask) << 1))) & (mask))) |
Functions | |
static void | dump_field (int idle, const struct scan_field *field) |
size_t | riscv_batch_add_dmi_read (struct riscv_batch *batch, unsigned address) |
void | riscv_batch_add_dmi_write (struct riscv_batch *batch, unsigned address, uint64_t data) |
void | riscv_batch_add_nop (struct riscv_batch *batch) |
struct riscv_batch * | riscv_batch_alloc (struct target *target, size_t scans, size_t idle) |
size_t | riscv_batch_available_scans (struct riscv_batch *batch) |
void | riscv_batch_free (struct riscv_batch *batch) |
bool | riscv_batch_full (struct riscv_batch *batch) |
uint32_t | riscv_batch_get_dmi_read_data (struct riscv_batch *batch, size_t key) |
unsigned | riscv_batch_get_dmi_read_op (struct riscv_batch *batch, size_t key) |
int | riscv_batch_run (struct riscv_batch *batch) |
#define DMI_SCAN_BUF_SIZE (DIV_ROUND_UP(DMI_SCAN_MAX_BIT_LENGTH, 8)) |
#define DMI_SCAN_MAX_BIT_LENGTH (DTM_DMI_MAX_ADDRESS_LENGTH + DTM_DMI_DATA_LENGTH + DTM_DMI_OP_LENGTH) |
#define DTM_DMI_MAX_ADDRESS_LENGTH ((1<<DTM_DTMCS_ABITS_LENGTH)-1) |
|
static |
Definition at line 190 of file batch.c.
References buf_get_u64(), debug_level, DTM_DMI_ADDRESS_OFFSET, DTM_DMI_DATA, DTM_DMI_OP, get_field, scan_field::in_value, LOG_LVL_DEBUG, log_printf_lf(), scan_field::num_bits, and scan_field::out_value.
Referenced by riscv_batch_run().
size_t riscv_batch_add_dmi_read | ( | struct riscv_batch * | batch, |
unsigned | address | ||
) |
Definition at line 141 of file batch.c.
References riscv_batch::allocated_scans, riscv_batch::data_in, riscv_batch::data_out, DMI_SCAN_BUF_SIZE, riscv_batch::fields, scan_field::in_value, riscv_batch::last_scan, scan_field::num_bits, scan_field::out_value, riscv_batch::read_keys, riscv_batch::read_keys_used, riscv_dmi_write_u64_bits(), riscv_fill_dmi_nop_u64(), riscv_fill_dmi_read_u64(), RISCV_SCAN_TYPE_READ, riscv_batch::target, and riscv_batch::used_scans.
Referenced by read_memory_progbuf_inner(), and sample_memory_bus_v1().
void riscv_batch_add_dmi_write | ( | struct riscv_batch * | batch, |
unsigned | address, | ||
uint64_t | data | ||
) |
Definition at line 128 of file batch.c.
References riscv_batch::allocated_scans, riscv_batch::data_in, riscv_batch::data_out, DMI_SCAN_BUF_SIZE, riscv_batch::fields, scan_field::in_value, riscv_batch::last_scan, scan_field::num_bits, scan_field::out_value, riscv_dmi_write_u64_bits(), riscv_fill_dmi_nop_u64(), riscv_fill_dmi_write_u64(), RISCV_SCAN_TYPE_WRITE, riscv_batch::target, and riscv_batch::used_scans.
Referenced by sample_memory_bus_v1(), write_memory_bus_v1(), and write_memory_progbuf().
void riscv_batch_add_nop | ( | struct riscv_batch * | batch | ) |
Definition at line 177 of file batch.c.
References riscv_batch::allocated_scans, riscv_batch::data_in, riscv_batch::data_out, DMI_SCAN_BUF_SIZE, riscv_batch::fields, scan_field::in_value, riscv_batch::last_scan, scan_field::num_bits, scan_field::out_value, riscv_dmi_write_u64_bits(), riscv_fill_dmi_nop_u64(), RISCV_SCAN_TYPE_NOP, riscv_batch::target, and riscv_batch::used_scans.
Referenced by riscv_batch_run().
struct riscv_batch* riscv_batch_alloc | ( | struct target * | target, |
size_t | scans, | ||
size_t | idle | ||
) |
Definition at line 20 of file batch.c.
References riscv_batch::allocated_scans, riscv_batch::bscan_ctxt, bscan_tunnel_ir_width, riscv_batch::data_in, riscv_batch::data_out, DMI_SCAN_BUF_SIZE, riscv_batch::fields, riscv_batch::idle_count, riscv_batch::last_scan, LOG_ERROR, NULL, riscv_batch::read_keys, RISCV_SCAN_TYPE_INVALID, target, and riscv_batch::target.
Referenced by read_memory_progbuf_inner(), sample_memory_bus_v1(), write_memory_bus_v1(), and write_memory_progbuf().
size_t riscv_batch_available_scans | ( | struct riscv_batch * | batch | ) |
Definition at line 222 of file batch.c.
References riscv_batch::allocated_scans, and riscv_batch::used_scans.
Referenced by write_memory_bus_v1().
void riscv_batch_free | ( | struct riscv_batch * | batch | ) |
Definition at line 73 of file batch.c.
References riscv_batch::bscan_ctxt, riscv_batch::data_in, riscv_batch::data_out, riscv_batch::fields, and riscv_batch::read_keys.
Referenced by read_memory_progbuf_inner(), sample_memory_bus_v1(), write_memory_bus_v1(), and write_memory_progbuf().
bool riscv_batch_full | ( | struct riscv_batch * | batch | ) |
Definition at line 83 of file batch.c.
References riscv_batch::allocated_scans, and riscv_batch::used_scans.
Referenced by read_memory_progbuf_inner(), and write_memory_progbuf().
uint32_t riscv_batch_get_dmi_read_data | ( | struct riscv_batch * | batch, |
size_t | key | ||
) |
Definition at line 167 of file batch.c.
References buf_get_u32(), riscv_batch::data_in, DMI_SCAN_BUF_SIZE, DTM_DMI_DATA_LENGTH, DTM_DMI_DATA_OFFSET, and riscv_batch::read_keys.
Referenced by read_memory_progbuf_inner(), and sample_memory_bus_v1().
unsigned riscv_batch_get_dmi_read_op | ( | struct riscv_batch * | batch, |
size_t | key | ||
) |
Definition at line 157 of file batch.c.
References buf_get_u32(), riscv_batch::data_in, DMI_SCAN_BUF_SIZE, DTM_DMI_OP_LENGTH, DTM_DMI_OP_OFFSET, and riscv_batch::read_keys.
Referenced by read_memory_progbuf_inner().
int riscv_batch_run | ( | struct riscv_batch * | batch | ) |
Definition at line 88 of file batch.c.
References riscv_batch::bscan_ctxt, bscan_tunnel_ir_width, buffer_shr(), DMI_SCAN_BUF_SIZE, dump_field(), ERROR_FAIL, ERROR_OK, riscv_batch::fields, riscv_batch::idle_count, jtag_add_dr_scan(), jtag_add_runtest(), jtag_execute_queue(), keep_alive(), LOG_DEBUG, LOG_ERROR, riscv_add_bscan_tunneled_scan(), riscv_batch_add_nop(), target::tap, TAP_IDLE, riscv_batch::target, and riscv_batch::used_scans.
Referenced by batch_run().