Other Parts Discussed in Thread: TMS320C6455
I am using SRIO message mode to pass data between 2 TMS320C6455 chips.
The size of the data is consistent and can be as large as 4096 bytes depending on the application configuration.
I am using a dedicated queue (2) to do the segmentation and reassembly by the peripheral (multi-segment mode).
For a 768 byte message I have the following configuration for the transmit descriptors:
offset 2:
Mailbox 2
32 Double-word payload (ssize)
port 0
priority 2
destination address (x1113)
16bit device IDs
offset 3:
Set SOP, EOP, Ownership bits
Retry count 0
message size 96 double words
This seems to work OK but no data is ever transmitted.
When I set the message_length to 0 (512 double words) the data is transmitted and received completely and correct.
The documentation in spru976e indicates this field needs to be set:
"Message Length: Written by the DSP core to specify the number of double-words to transmit.
Message payloads are limited to a maximum size of 512 double-words (4096 bytes)."
There also seems to be something similar amiss with the receive descriptor.
The documentation states for its message_length fields:
"Message Length: Initially written by the DSP core to specify the maximum number of double-words
the buffer can receive. Updated by the peripheral (after receiving a message) to indicate the actual
number of double-words in the entire message. Message payloads are limited to a maximum size
of 512 double-words (4096 bytes)."
When this field is read, it is always 0.
My questions are:
Why is the message_length field not working as documented for both transmit and receive?
Am I really just sending/receiving 4096 bytes instead?
Do these queues need torn down? - This does not seem possible for this application since data is sent continuously every 125 microseconds.