On page 65 of the C6474 SRIO manual (sprug23) it states: "There are four DOORBELL registers, each currently with 16 bits, allowing 64 interrupt sources or circular buffers.".
What is meant with "circular buffers" here? The manual further mentions "TID circular buffers" and on page 105:
"When the CPU is interrupted, it reads the ICSR registers to determine the source of the interrupt and appropriate action to take. For example, if it is a DOORBELL interrupt, the CPU will read from an L2 address that is specified by its circular buffer read pointer that is managed by software. There may be more than one circular buffer for each core. The correct circular buffer to read from and increment depends on the bit set in the ICSR register. The CPU then clears the status bit."
What does this stand for (Transfer ID?)?
I assume what is meant is that a doorbell is sent after a WRITE/READ transaction to a buffer has been completed, such that the DSP can do something before the remote party restarts the read-write cycle. However, no specifics are mentioned at all concerning this in the manual. An example would be great. In our setup we use the IDT FIC, which has the capability to generate a doorbell after it wraps the destination address it was writing/reading to/from. This works great and we implemented a type of ping-pong buffer with it.
Reading the TI SRIO manual makes me feel I am missing something and that there is another way to do this when going from one DSP to another. Is there a way in the TI SRIO peripheral to setup an automated circular buffer? If so, I have not seen a reference in the DIO library, apart from streaming examples which send a doorbell after all data is transmitted.
Regards,
Dirk