www.ti.com
SRIO Functional Description
If a RX message’s length is greater than that of the targeted buffer descriptor, an ERROR response is sent back to the source device. In addition, the DSP is notified with the use of the CC field of the RX CPPI buffer descriptor, described as follows. This situation can result from a DSP software error (misallocating a buffer for the queue), or as a result of sender error (sending to a wrong mailbox).
An RX transaction timeout is used by all
The buffer descriptor points to the corresponding data buffer in memory and also points to the next buffer descriptor in the queue. As segments of a received message arrive, the msgseg field of each segment is monitored to detect the completion of the received message. Once a full message is received, the OWNERSHIP bit is cleared in the packet’s buffer descriptor to give control to the host. At this point, a host interrupt is issued. This interface works with programmable interrupt rate control. There is an ICSR bit for each supported queue. On interrupt, the CPU processes the RX buffer queue, detecting received packets by the status of the OWNERSHIP bit in each buffer descriptor. The host processes the RX queue until it reaches a buffer descriptor with a set OWNERSHIP bit, or set EOQ bit. Once processing is complete, the host updates the RX DMA State Completion Pointer, allowing the peripheral to reuse the buffer.
Figure 19 shows the RX buffer descriptor fields and Table 18 describes them. A RX buffer descriptor is a contiguous block of four 32-bit data words aligned on a 32-bit boundary. Accesses to these registers are restricted to 32-bit boundaries.
Figure 19. RX Buffer Descriptor Fields
Word |
|
|
|
|
|
|
|
|
|
|
|
|
|
| BitFields |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Offset | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
| 7 | 6 | 5 | 4 | 3 | 2 |
| 1 | 0 |
|
|
| ||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
| next_descriptor_pointer |
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| buffer_pointer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||
2 |
|
|
|
|
|
|
| src_id |
|
|
|
| pri | tt |
| reserved |
|
|
|
| mailbox |
|
|
o
wt
ne
| s | e | e | e | a |
|
|
| |
| r |
|
|
| |||||
3 | o | o | r | o | reserved | cc | message_length | ||
d | |||||||||
| p | p | s | q |
|
|
| ||
|
|
|
|
|
ho
iw
p n
| Table 18. RX Buffer Descriptor Field Descriptions |
Field | Description |
next_descriptor_pointer | Next Descriptor Pointer: The |
| descriptor in the RX queue. This references the next buffer descriptor from the current |
| buffer descriptor. If the value of this pointer is zero, then the current buffer is the last |
| buffer in the queue. The DSP core sets the next_descriptor_pointer. |
buffer_pointer | Buffer Pointer: The byte aligned memory address of the buffer associated with the |
| buffer descriptor. The DSP core sets the buffer_pointer. |
sop = 1 | Start of Message: Indicates that the descriptor buffer is the first buffer in the message. |
| ∙ This bit will always be set, as this device only supports one buffer per message. |
eop = 1 | End of Message: Indicates that the descriptor buffer is the last buffer in the message. |
| ∙ This bit will always be set, as this device only supports one buffer per message. |
SPRUE13A | Serial RapidIO (SRIO) | 47 |
Submit Documentation Feedback |
|
|