OpenOCD
ulink_cmd Struct Reference

OpenULINK command (OpenULINK command queue element). More...

Collaboration diagram for ulink_cmd:

Data Fields

struct jtag_commandcmd_origin
 Pointer to corresponding OpenOCD command for post-processing. More...
 
bool free_payload_in_start
 Indicates if ulink_clear_queue() should free payload_in_start
More...
 
uint8_t id
 ULINK command ID. More...
 
bool needs_postprocessing
 Indicates if this command needs post-processing. More...
 
struct ulink_cmdnext
 Pointer to next command (linked list) More...
 
uint8_t * payload_in
 Pointer where IN payload shall be stored. More...
 
uint8_t payload_in_size
 IN direction payload size for this command. More...
 
uint8_t * payload_in_start
 Pointer to first element of IN payload array. More...
 
uint8_t * payload_out
 OUT direction payload data. More...
 
uint8_t payload_out_size
 OUT direction payload size for this command. More...
 

Detailed Description

OpenULINK command (OpenULINK command queue element).

For the OUT direction payload, things are quite easy: Payload is stored in a rather small array (up to 63 bytes), the payload is always allocated by the function generating the command and freed by ulink_clear_queue().

For the IN direction payload, things get a little bit more complicated: The maximum IN payload size for a single command is 64 bytes. Assume that a single OpenOCD command needs to scan 256 bytes. This results in the generation of four OpenULINK commands. The function generating these commands shall allocate an uint8_t[256] array. Each command's payload_in pointer shall point to the corresponding offset where IN data shall be placed, while payload_in_start shall point to the first element of the 256 byte array.

The last command sets needs_postprocessing to true.

Definition at line 111 of file ulink.c.

Field Documentation

◆ cmd_origin

struct jtag_command* ulink_cmd::cmd_origin

Pointer to corresponding OpenOCD command for post-processing.

Definition at line 128 of file ulink.c.

Referenced by ulink_post_process_queue(), and ulink_post_process_scan().

◆ free_payload_in_start

bool ulink_cmd::free_payload_in_start

Indicates if ulink_clear_queue() should free payload_in_start

Definition at line 125 of file ulink.c.

Referenced by ulink_allocate_payload(), and ulink_clear_queue().

◆ id

uint8_t ulink_cmd::id

ULINK command ID.

Definition at line 112 of file ulink.c.

Referenced by ulink_execute_queued_commands(), and ulink_print_command().

◆ needs_postprocessing

bool ulink_cmd::needs_postprocessing

Indicates if this command needs post-processing.

Definition at line 122 of file ulink.c.

Referenced by ulink_post_process_queue().

◆ next

struct ulink_cmd* ulink_cmd::next

Pointer to next command (linked list)

Definition at line 130 of file ulink.c.

Referenced by ulink_clear_queue(), ulink_execute_queued_commands(), ulink_get_queue_size(), ulink_post_process_queue(), and ulink_print_queue().

◆ payload_in

uint8_t* ulink_cmd::payload_in

Pointer where IN payload shall be stored.

Definition at line 118 of file ulink.c.

Referenced by ulink_allocate_payload(), ulink_clear_queue(), ulink_execute_queued_commands(), and ulink_init().

◆ payload_in_size

uint8_t ulink_cmd::payload_in_size

IN direction payload size for this command.

Definition at line 119 of file ulink.c.

Referenced by ulink_allocate_payload(), ulink_append_queue(), ulink_execute_queued_commands(), ulink_get_queue_size(), and ulink_print_command().

◆ payload_in_start

uint8_t* ulink_cmd::payload_in_start

Pointer to first element of IN payload array.

Definition at line 117 of file ulink.c.

Referenced by ulink_allocate_payload(), ulink_clear_queue(), and ulink_post_process_scan().

◆ payload_out

uint8_t* ulink_cmd::payload_out

OUT direction payload data.

Definition at line 114 of file ulink.c.

Referenced by ulink_allocate_payload(), ulink_clear_queue(), ulink_execute_queued_commands(), and ulink_print_command().

◆ payload_out_size

uint8_t ulink_cmd::payload_out_size

OUT direction payload size for this command.

Definition at line 115 of file ulink.c.

Referenced by ulink_allocate_payload(), ulink_append_queue(), ulink_execute_queued_commands(), ulink_get_queue_size(), and ulink_print_command().


The documentation for this struct was generated from the following file: