3.4.6. jtag_soft — Software JTAG


Source code: src/drivers/network/jtag_soft.h, src/drivers/network/jtag_soft.c

Test code: tst/drivers/software/network/jtag_soft/master/main.c


Functions

int jtag_soft_module_init(void)

Initialize JTAG soft module. This function must be called before calling any other function in this module.

The module will only be initialized once even if this function is called multiple times.

Return
zero(0) or negative error code.

int jtag_soft_init(struct jtag_soft_driver_t *self_p, struct pin_device_t *tck_p, struct pin_device_t *tms_p, struct pin_device_t *tdi_p, struct pin_device_t *tdo_p)

Initialize given driver object.

Return
zero(0) or negative error code.
Parameters
  • self_p: Driver object to initialize.
  • tck_p: Test clock (TCK) pin device.
  • tms_p: Test mode select (TMS) pin device.
  • tdi_p: Test data input (TDI) pin device (our out).
  • tdo_p: Test data output (TDO) pin device (our in).

int jtag_soft_start(struct jtag_soft_driver_t *self_p)

Start given JTAG soft driver. Configures all pins and enters the idle state in the JTAG TAP controller state machine.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.

int jtag_soft_stop(struct jtag_soft_driver_t *self_p)

Stop given JTAG soft driver. Enters the reset state in the JTAG TAP controller state machine and then configures all pins as inputs.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.

int jtag_soft_reset(struct jtag_soft_driver_t *self_p)

Reset the JTAG device and then enter the idle state.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.

int jtag_soft_instruction_write(struct jtag_soft_driver_t *self_p, const void *buf_p, size_t number_of_bits)

Write given instruction to given JTAG device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Instruction to write.
  • size: Number of bits to write.

int jtag_soft_data_transfer(struct jtag_soft_driver_t *self_p, void *rxbuf_p, const void *txbuf_p, size_t number_of_bits)

Simultaniuos data read/write operation from/to given JTAG device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • rxbuf_p: Buffer to read into.
  • txbuf_p: Buffer to write.
  • size: Number of bits to transfer.

int jtag_soft_data_read(struct jtag_soft_driver_t *self_p, void *buf_p, size_t number_of_bits)

Read data from given JTAG device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Buffer to read into.
  • size: Number of bits to read.

int jtag_soft_data_write(struct jtag_soft_driver_t *self_p, const void *buf_p, size_t number_of_bits)

Write given data to the JTAG device.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Buffer to write.
  • size: Number of bits to write.

int jtag_soft_make_transition(struct jtag_soft_driver_t *self_p, int transition)

Make given transition in the JTAG TAP controller state machine.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.
  • transition: Transition to take in the state machine (one(1) or zero(0)).

struct jtag_soft_driver_t

Public Members

struct pin_driver_t tck
struct pin_driver_t tms
struct pin_driver_t tdi
struct pin_driver_t tdo