Functions

libswd.c File Reference

#include <libswd.h>
#include <urjtag/libswd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

Functions

int swd_bin8_parity_even (char *data, char *parity)
 Data parity calculator, calculates even parity on char type.
int swd_bin32_parity_even (int *data, char *parity)
 Data parity calculator, calculates even parity on integer type.
int swd_bin8_print (char *data)
 Prints binary data of a char value on the screen.
int swd_bin32_print (int *data)
 Prints binary data of an integer value on the screen.
char * swd_bin8_string (char *data)
 Generates string containing binary data of a char value.
char * swd_bin32_string (int *data)
 Generates string containing binary data of an integer value.
int swd_bin8_bitswap (unsigned char *buffer, int bitcount)
 Bit swap helper function that reverse bit order in char *buffer.
int swd_bin32_bitswap (unsigned int *buffer, int bitcount)
 Bit swap helper function that reverse bit order in int *buffer.
int swd_cmdq_init (swd_cmd_t *cmdq)
 Initialize new queue element in memory that becomes a queue root.
swd_cmd_tswd_cmdq_find_root (swd_cmd_t *cmdq)
 Find queue root (first element).
swd_cmd_tswd_cmdq_find_tail (swd_cmd_t *cmdq)
 Find queue tail (last element).
int swd_cmdq_append (swd_cmd_t *cmdq, swd_cmd_t *cmd)
 Append element pointed by *cmd at the end of the quque pointed by *cmdq.
int swd_cmdq_free (swd_cmd_t *cmdq)
 Free queue pointed by *cmdq element.
int swd_cmdq_free_head (swd_cmd_t *cmdq)
 Free queue head up to *cmdq element.
int swd_cmdq_free_tail (swd_cmd_t *cmdq)
 Free queue tail starting after *cmdq element.
int swd_cmd_enqueue (swd_ctx_t *swdctx, swd_cmd_t *cmd)
 Append selected command to a context's command queue.
int swd_cmd_enqueue_mosi_request (swd_ctx_t *swdctx, char *request)
 Appends command queue with SWD Request packet header.
int swd_cmd_enqueue_mosi_trn (swd_ctx_t *swdctx)
 Append command queue with Turnaround activating MOSI mode.
int swd_cmd_enqueue_miso_trn (swd_ctx_t *swdctx)
 Append command queue with Turnaround activating MISO mode.
int swd_cmd_enqueue_miso_nbit (swd_ctx_t *swdctx, char **data, int count)
 Append command queue with bus binary read bit-by-bit operation.
int swd_cmd_enqueue_mosi_nbit (swd_ctx_t *swdctx, char *data, int count)
 Append command queue with bus binary write bit-by-bit operation.
int swd_cmd_enqueue_mosi_parity (swd_ctx_t *swdctx, char *parity)
 Append command queue with parity bit write.
int swd_cmd_enqueue_miso_parity (swd_ctx_t *swdctx, char *parity)
 Append command queue with parity bit read.
int swd_cmd_enqueue_miso_data (swd_ctx_t *swdctx, int *data)
 Append command queue with data read.
int swd_cmd_enqueue_miso_data_p (swd_ctx_t *swdctx, int *data, char *parity)
 Append command queue with data and parity read.
int swd_cmd_enqueue_miso_n_data_p (swd_ctx_t *swdctx, int **data, char **parity, int count)
 Append command queue with series of data and parity read.
int swd_cmd_enqueue_mosi_data (swd_ctx_t *swdctx, int *data)
 Append command queue with data and parity write.
int swd_cmd_enqueue_mosi_data_ap (swd_ctx_t *swdctx, int *data)
 Append command queue with data and automatic parity write.
int swd_cmd_enqueue_mosi_data_p (swd_ctx_t *swdctx, int *data, char *parity)
 Append command queue with data and provided parity write.
int swd_cmd_enqueue_mosi_n_data_ap (swd_ctx_t *swdctx, int **data, int count)
 Append command queue with series of data and automatic parity writes.
int swd_cmd_enqueue_mosi_n_data_p (swd_ctx_t *swdctx, int **data, char **parity, int count)
 Append command queue with series of data and provided parity writes.
int swd_cmd_enqueue_miso_ack (swd_ctx_t *swdctx, char *ack)
 Append queue with ACK read.
int swd_cmd_enqueue_mosi_control (swd_ctx_t *swdctx, char *ctlmsg, int len)
 Append command queue with len-octet size control seruence.
int swd_cmd_enqueue_mosi_dap_reset (swd_ctx_t *swdctx)
 Append command queue with SW-DP-RESET sequence.
int swd_cmd_enqueue_mosi_jtag2swd (swd_ctx_t *swdctx)
 Append command queue with JTAG-TO-SWD DAP-switch sequence.
int swd_cmd_enqueue_mosi_swd2jtag (swd_ctx_t *swdctx)
 Append command queue with SWD-TO-JTAG DAP-switch sequence.
int swd_bus_setdir_mosi (swd_ctx_t *swdctx)
 Append command queue with TRN WRITE/MOSI, if previous command was READ/MISO.
int swd_bus_setdir_miso (swd_ctx_t *swdctx)
 Append command queue with TRN READ/MISO, if previous command was WRITE/MOSI.
int swd_bitgen8_request (swd_ctx_t *swdctx, char *APnDP, char *RnW, char *addr, char *request)
 Generate 8-bit SWD-REQUEST packet contents with provided parameters.
int swd_bus_transmit (swd_ctx_t *swdctx, swd_cmd_t *cmd)
 Transmit selected command from the command queue to the interface driver.
int swd_cmdq_flush (swd_ctx_t *swdctx, swd_operation_t operation)
 Flush command queue contents into interface driver.
int swd_mosi_request (swd_ctx_t *swdctx, swd_operation_t operation, char *APnDP, char *RnW, char *addr)
 Perform Request.
int swd_miso_ack (swd_ctx_t *swdctx, swd_operation_t operation, char *ack)
 Perform ACK read into *ack and verify received data.
int swd_mosi_data_p (swd_ctx_t *swdctx, swd_operation_t operation, int *data, char *parity)
 Perform (MOSI) data write with provided parity value.
int swd_mosi_data_ap (swd_ctx_t *swdctx, swd_operation_t operation, int *data)
 Perform (MOSI) data write with automatic parity calculation.
int swd_miso_data_p (swd_ctx_t *swdctx, swd_operation_t operation, int *data, char *parity)
 Perform (MISO) data read.
int swd_mosi_jtag2swd (swd_ctx_t *swdctx, swd_operation_t operation)
 Switch DAP into SW-DP.
int swd_mosi_dap_reset (swd_ctx_t *swdctx, swd_operation_t operation)
 Debug Access Port Reset sends 50 CLK with TMS high that brings both SW-DP and JTAG-DP into reset state.
int swd_idcode (swd_ctx_t *swdctx, swd_operation_t operation, int *idcode, char *ack, char *parity)
 Read target's IDCODE register value.
int swd_dap_select_swj (swd_ctx_t *swdctx, swd_operation_t operation)
 Activate SW-DP by sending out JTAG-TO-SWD sequence on SWDIOTMS line.
int swd_dap_idcode (swd_ctx_t *swdctx, swd_operation_t operation)
 Macro: Read out IDCODE register and return its value on function return.
int swd_dap_reset_select_idcode (swd_ctx_t *swdctx, swd_operation_t operation)
 Macro: Reset target DAP, select SW-DP, read out IDCODE.
int swd_log (swd_loglevel_t loglevel, char *msg)
char * swd_error_string (swd_error_code_t error)
swd_ctx_tswd_init (void)
 LibSWD initialization routine.
int swd_deinit_ctx (swd_ctx_t *swdctx)
 De-initialize selected swd context and free its memory.
int swd_deinit_cmdq (swd_ctx_t *swdctx)
 De-initialize command queue and free its memory on selected swd context.
int swd_deinit (swd_ctx_t *swdctx)
 De-initialize selected swd context and its command queue.

Detailed Description


Function Documentation

int swd_bin32_bitswap ( unsigned int *  buffer,
int  bitcount 
)

Bit swap helper function that reverse bit order in int *buffer.

Most Significant Bit becomes Least Significant Bit. It is possible to swap only n-bits from int (32-bit) *buffer.

Parameters:
*buffer unsigned char (32-bit) data pointer.
bitcount how many bits to swap.
Returns:
swapped bit count (positive) or error code (negative).
int swd_bin32_parity_even ( int *  data,
char *  parity 
)

Data parity calculator, calculates even parity on integer type.

Parameters:
*data source data pointer.
*parity resulting data pointer.
Returns:
negative value on error, 0 or 1 as parity result.
int swd_bin32_print ( int *  data  ) 

Prints binary data of an integer value on the screen.

Parameters:
*data source data pointer.
Returns:
number of characters printed.
char* swd_bin32_string ( int *  data  ) 

Generates string containing binary data of an integer value.

Parameters:
*data source data pointer.
Returns:
pointer to the resulting string.
int swd_bin8_bitswap ( unsigned char *  buffer,
int  bitcount 
)

Bit swap helper function that reverse bit order in char *buffer.

Most Significant Bit becomes Least Significant Bit. It is possible to swap only n-bits from char (8-bit) *buffer.

Parameters:
*buffer unsigned char (8-bit) data pointer.
bitcount how many bits to swap.
Returns:
swapped bit count (positive) or error code (negative).
int swd_bin8_parity_even ( char *  data,
char *  parity 
)

Data parity calculator, calculates even parity on char type.

Some comments on the function behavior.

Parameters:
*data source data pointer.
*parity resulting data pointer.
Returns:
negative value on error, 0 or 1 as parity result.
int swd_bin8_print ( char *  data  ) 

Prints binary data of a char value on the screen.

Parameters:
*data source data pointer.
Returns:
number of characters printed.
char* swd_bin8_string ( char *  data  ) 

Generates string containing binary data of a char value.

Parameters:
*data source data pointer.
Returns:
pointer to the resulting string.
int swd_bitgen8_request ( swd_ctx_t swdctx,
char *  APnDP,
char *  RnW,
char *  addr,
char *  request 
)

Generate 8-bit SWD-REQUEST packet contents with provided parameters.

Note that parity bit value is calculated automatically.

Parameters:
*swdctx swd context pointer.
*APnDP AccessPort (high) or DebugPort (low) access type pointer.
*RnW Read (high) or Write (low) operation type pointer.
*addr target register address value pointer.
*request pointer where to store resulting packet.
Returns:
number of generated packets (1), or SWD_ERROR_CODE on failure.
int swd_bus_setdir_miso ( swd_ctx_t swdctx  ) 

Append command queue with TRN READ/MISO, if previous command was WRITE/MOSI.

Parameters:
*swdctx swd context pointer.
Returns:
number of elements appended, or SWD_ERROR_CODE on failure.
int swd_bus_setdir_mosi ( swd_ctx_t swdctx  ) 

Append command queue with TRN WRITE/MOSI, if previous command was READ/MISO.

Parameters:
*swdctx swd context pointer.
Returns:
number of elements appended, or SWD_ERROR_CODE on failure.
int swd_bus_transmit ( swd_ctx_t swdctx,
swd_cmd_t cmd 
)

Transmit selected command from the command queue to the interface driver.

Parameters:
*swdctx swd context pointer.
*cmd pointer to the command to be sent.
Returns:
number of commands transmitted (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue ( swd_ctx_t swdctx,
swd_cmd_t cmd 
)

Append selected command to a context's command queue.

Parameters:
*swdctx swd context pointer containing the command queue.
*cmd command to be appended to the context's command queue.
Returns:
number of elements appended or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_miso_ack ( swd_ctx_t swdctx,
char *  ack 
)

Append queue with ACK read.

Parameters:
*swdctx swd context pointer.
*ack packet value pointer.
Returns:
number of elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_miso_data ( swd_ctx_t swdctx,
int *  data 
)

Append command queue with data read.

Parameters:
*swdctx swd context pointer.
*data data pointer.
Returns:
of elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_miso_data_p ( swd_ctx_t swdctx,
int *  data,
char *  parity 
)

Append command queue with data and parity read.

Parameters:
*swdctx swd context pointer.
*data data value pointer.
*parity parity value pointer.
Returns:
number of elements appended (2), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_miso_n_data_p ( swd_ctx_t swdctx,
int **  data,
char **  parity,
int  count 
)

Append command queue with series of data and parity read.

Parameters:
*swdctx swd context pointer.
**data data value array pointer.
**parity parity value array pointer.
count number of (data+parity) elements to read.
Returns:
number of elements appended (2*count), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_miso_nbit ( swd_ctx_t swdctx,
char **  data,
int  count 
)

Append command queue with bus binary read bit-by-bit operation.

This function will append command to the queue for each bit, and store one bit into single char array element, so read is not constrained to 8 bits. On error memory is released and apropriate error code is returned. Important: Memory pointed by *data must be allocated prior call!

Parameters:
*swdctx swd context pointer.
**data allocated data array to write result into.
count number of bits to read (also the **data size).
Returns:
number of elements processed, or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_miso_parity ( swd_ctx_t swdctx,
char *  parity 
)

Append command queue with parity bit read.

Parameters:
*swdctx swd context pointer.
*parity parity value pointer.
Returns:
number of elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_miso_trn ( swd_ctx_t swdctx  ) 

Append command queue with Turnaround activating MISO mode.

Parameters:
*swdctx swd context pointer.
Returns:
return number of elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_control ( swd_ctx_t swdctx,
char *  ctlmsg,
int  len 
)

Append command queue with len-octet size control seruence.

This control sequence can be used for instance to send payload of packets switching DAP between JTAG and SWD mode.

Parameters:
*swdctx swd context pointer.
*ctlmsg control message array pointer.
len number of elements to send from *ctlmsg.
Returns:
number of elements appended (len), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_dap_reset ( swd_ctx_t swdctx  ) 

Append command queue with SW-DP-RESET sequence.

Parameters:
*swdctx swd context pointer.
Returns:
number of elements appended, or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_data ( swd_ctx_t swdctx,
int *  data 
)

Append command queue with data and parity write.

Parameters:
*swdctx swd context pointer.
*data data value pointer.
Returns:
number of elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_data_ap ( swd_ctx_t swdctx,
int *  data 
)

Append command queue with data and automatic parity write.

Parameters:
*swdctx swd context pointer.
*data data value pointer.
Returns:
number of elements appended (2), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_data_p ( swd_ctx_t swdctx,
int *  data,
char *  parity 
)

Append command queue with data and provided parity write.

Parameters:
*swdctx swd context pointer.
*data data value pointer.
*parity parity value pointer.
Returns:
number of elements appended (2), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_jtag2swd ( swd_ctx_t swdctx  ) 

Append command queue with JTAG-TO-SWD DAP-switch sequence.

Parameters:
*swdctx swd context pointer.
Returns:
number of elements appended, or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_n_data_ap ( swd_ctx_t swdctx,
int **  data,
int  count 
)

Append command queue with series of data and automatic parity writes.

Parameters:
*swdctx swd context pointer.
**data data value array pointer.
count number of (data+parity) elements to read.
Returns:
number of elements appended (2*count), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_n_data_p ( swd_ctx_t swdctx,
int **  data,
char **  parity,
int  count 
)

Append command queue with series of data and provided parity writes.

Parameters:
*swdctx swd context pointer.
**data data value array pointer.
**parity parity value array pointer.
count number of (data+parity) elements to read.
Returns:
number of elements appended (2*count), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_nbit ( swd_ctx_t swdctx,
char *  data,
int  count 
)

Append command queue with bus binary write bit-by-bit operation.

This function will append command to the queue for each bit and store one bit into single char array element, so read is not constrained to 8 bits. On error memory is released and apropriate error code is returned. Important: Memory pointed by *data must be allocated prior call!

Parameters:
*swdctx swd context pointer.
**data allocated data array to write result into.
count number of bits to read (also the **data size).
Returns:
number of elements processed, or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_parity ( swd_ctx_t swdctx,
char *  parity 
)

Append command queue with parity bit write.

Parameters:
*swdctx swd context pointer.
*parity parity value pointer.
Returns:
number of elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_request ( swd_ctx_t swdctx,
char *  request 
)

Appends command queue with SWD Request packet header.

Note that contents is not validated, so bad request can be sent as well.

Parameters:
*swdctx swd context pointer.
*request pointer to the 8-bit request payload.
Returns:
return number elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_swd2jtag ( swd_ctx_t swdctx  ) 

Append command queue with SWD-TO-JTAG DAP-switch sequence.

Parameters:
*swdctx swd context pointer.
Returns:
number of elements appended, or SWD_ERROR_CODE on failure.
int swd_cmd_enqueue_mosi_trn ( swd_ctx_t swdctx  ) 

Append command queue with Turnaround activating MOSI mode.

Parameters:
*swdctx swd context pointer.
Returns:
return number elements appended (1), or SWD_ERROR_CODE on failure.
int swd_cmdq_append ( swd_cmd_t cmdq,
swd_cmd_t cmd 
)

Append element pointed by *cmd at the end of the quque pointed by *cmdq.

After this operation queue will be pointed by appended element (ie. last element added becomes actual quque pointer to show what was added recently).

Parameters:
*cmdq pointer to any element on command queue
*cmd pointer to the command to be appended
Returns:
number of appended elements (one), SWD_ERROR_CODE on failure
swd_cmd_t* swd_cmdq_find_root ( swd_cmd_t cmdq  ) 

Find queue root (first element).

Parameters:
*cmdq pointer to any queue element
Returns:
swd_cmd_t* pointer to the first element (root), NULL on failure
swd_cmd_t* swd_cmdq_find_tail ( swd_cmd_t cmdq  ) 

Find queue tail (last element).

Parameters:
*cmdq pointer to any queue element
Returns:
swd_cmd_t* pointer to the last element (tail), NULL on failure
int swd_cmdq_flush ( swd_ctx_t swdctx,
swd_operation_t  operation 
)

Flush command queue contents into interface driver.

Operation is specified by SWD_OPERATION and can be used to select how to flush the queue, ie. head-only, tail-only, one, all, etc.

Parameters:
*swdctx swd context pointer.
operation tells how to flush the queue.
Returns:
number of commands transmitted, or SWD_ERROR_CODE on failure.
int swd_cmdq_free ( swd_cmd_t cmdq  ) 

Free queue pointed by *cmdq element.

Parameters:
*cmdq pointer to any element on command queue
Returns:
number of elements destroyed, SWD_ERROR_CODE on failure
int swd_cmdq_free_head ( swd_cmd_t cmdq  ) 

Free queue head up to *cmdq element.

Parameters:
*cmdq pointer to the element that becomes new queue root.
Returns:
number of elements destroyed, or SWD_ERROR_CODE on failure.
int swd_cmdq_free_tail ( swd_cmd_t cmdq  ) 

Free queue tail starting after *cmdq element.

Parameters:
*cmdq pointer to the last element on the new queue.
Returns:
number of elements destroyed, or SWD_ERROR_CODE on failure.
int swd_cmdq_init ( swd_cmd_t cmdq  ) 

Initialize new queue element in memory that becomes a queue root.

Parameters:
*cmdq pointer to the command queue element of type swd_cmd_t
Returns:
SWD_OK on success, SWD_ERROR_CODE code on failure
int swd_dap_idcode ( swd_ctx_t swdctx,
swd_operation_t  operation 
)

Macro: Read out IDCODE register and return its value on function return.

Parameters:
*swdctx swd context pointer.
operation operation type.
Returns:
Target's IDCODE value or code error on failure.
int swd_dap_reset_select_idcode ( swd_ctx_t swdctx,
swd_operation_t  operation 
)

Macro: Reset target DAP, select SW-DP, read out IDCODE.

This is the proper SW-DP initialization as stated by ARM Information Center.

Parameters:
*swdctx swd context pointer.
operation type (SWD_OPERATION_ENQUEUE or SWD_OPERATION_EXECUTE).
Returns:
Target's IDCODE, or error code on failure.
int swd_dap_select_swj ( swd_ctx_t swdctx,
swd_operation_t  operation 
)

Activate SW-DP by sending out JTAG-TO-SWD sequence on SWDIOTMS line.

Parameters:
*swdctx swd context.
Returns:
number of control bytes executed, or error code on failre.
int swd_deinit ( swd_ctx_t swdctx  ) 

De-initialize selected swd context and its command queue.

Parameters:
*swdctx swd context pointer.
Returns:
number of elements freed, or SWD_ERROR_CODE on failure.
int swd_deinit_cmdq ( swd_ctx_t swdctx  ) 

De-initialize command queue and free its memory on selected swd context.

Parameters:
*swdctx swd context pointer.
Returns:
number of commands freed, or SWD_ERROR_CODE on failure.
int swd_deinit_ctx ( swd_ctx_t swdctx  ) 

De-initialize selected swd context and free its memory.

Note: This function will not free command queue for selected context!

Parameters:
*swdctx swd context pointer.
Returns:
SWD_OK on success, SWD_ERROR_CODE on failure.
int swd_idcode ( swd_ctx_t swdctx,
swd_operation_t  operation,
int *  idcode,
char *  ack,
char *  parity 
)

Read target's IDCODE register value.

Parameters:
*swdctx swd context pointer.
operation type of action to perform (queue or execute).
*idcode resulting register value pointer.
*ack resulting acknowledge response value pointer.
*parity resulting data parity value pointer.
Returns:
number of elements processed on the queue, or SWD_ERROR_CODE on failure.
swd_ctx_t* swd_init ( void   ) 

LibSWD initialization routine.

It should be called prior any operation made with libswd. It initializes command queue and basic parameters for context that is returned as pointer.

Returns:
pointer to the initialized swd context.
int swd_miso_ack ( swd_ctx_t swdctx,
swd_operation_t  operation,
char *  ack 
)

Perform ACK read into *ack and verify received data.

Parameters:
*swdctx swd context pointer.
operation type of action to perform with generated request.
*ack pointer to the result location.
Returns:
number of commands processed, or SWD_ERROR_CODE on failure.
int swd_miso_data_p ( swd_ctx_t swdctx,
swd_operation_t  operation,
int *  data,
char *  parity 
)

Perform (MISO) data read.

Parameters:
*swdctx swd context pointer.
operation type of action to perform on generated command.
*data payload value pointer.
*parity payload parity value pointer.
Returns:
number of elements processed, or SWD_ERROR_CODE on failure.
int swd_mosi_dap_reset ( swd_ctx_t swdctx,
swd_operation_t  operation 
)

Debug Access Port Reset sends 50 CLK with TMS high that brings both SW-DP and JTAG-DP into reset state.

Parameters:
*swdctx swd context pointer.
operation type (SWD_OPERATION_ENQUEUE or SWD_OPERATION_EXECUTE).
Returns:
number of elements processed or SWD_ERROR_CODE code on failure.
int swd_mosi_data_ap ( swd_ctx_t swdctx,
swd_operation_t  operation,
int *  data 
)

Perform (MOSI) data write with automatic parity calculation.

Parameters:
*swdctx swd context pointer.
operation type of action to perform on generated command.
*data payload value pointer.
Returns:
number of elements processed, or SWD_ERROR_CODE on failure.
int swd_mosi_data_p ( swd_ctx_t swdctx,
swd_operation_t  operation,
int *  data,
char *  parity 
)

Perform (MOSI) data write with provided parity value.

Parameters:
*swdctx swd context pointer.
operation type of action to perform on generated command.
*data payload value pointer.
*parity payload parity value pointer.
Returns:
number of elements processed, or SWD_ERROR_CODE on failure.
int swd_mosi_jtag2swd ( swd_ctx_t swdctx,
swd_operation_t  operation 
)

Switch DAP into SW-DP.

According to ARM documentation target's DAP use JTAG transport by default and so JTAG-DP is active after power up. To use SWD user must perform predefined sequence on SWDIO/TMS lines, then read out the IDCODE to ensure proper SW-DP operation.

int swd_mosi_request ( swd_ctx_t swdctx,
swd_operation_t  operation,
char *  APnDP,
char *  RnW,
char *  addr 
)

Perform Request.

Parameters:
*swdctx swd context pointer.
operation type of action to perform with generated request.
*APnDP AccessPort (high) or DebugPort (low) access value pointer.
*RnW Read (high) or Write (low) access value pointer.
*addr target register address value pointer.
Returns:
number of commands processed, or SWD_ERROR_CODE on failure.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines