Hello team,
My goal is to conver the SRIO loopback example to a "normal" example that sends packets from one DSP to another DSP. I am choosing this path because I do not need the inter processor support to share memory etc. I just need to prove that the SRIO driver can aid me in sending and recieving packets becuase in my actual application the sender will not be a C6678 but another component and the DSP will just need to recieve the data stream and act on it.
I have my two C6678 EVMs attached to a srio switch in a Vadatech Chassis. The switch only allows a single device to connect to it once. So I had to change the loopback code to only enable one srio port instead of 4. The port is set to be a lane width of 1.
So, I make the above change with the ports first and run it in loopback mode. Program works.
I switch the csl call from CSL_SRIO_SetLoopBackMode to CSL_SRIO_SetNormalMode. Program fails. The SRIO port says "port ok", the drivers initialize and say ok. The first dsp attempts to send a message from Core 1 but the other DSP never receives the message.
I am fairly confident that the following is true:
- My chassis has enable the SRIO on the backplane for the two EVMs to link to the switch.
- I have configured my switch for static routes which contain the destination ids in the given program.
Another point is I am running the two DSPs in big endian. Therefore I compiled the program in big endian.
I added debug statements to the srio driver. It prints out some of the queue numbers, pointers etc so I can try to understand a bit better.
Q1: Are there ideas as to why things aren't working and what to check?
Q2: It looks like the Rx return queue and the Tx free queue are using the "stavation counter" queues (736 thru 743). Is this ok? If yes, why? If no, what should it be?
Q3: The Tx Queues are assigned to the SRIO Tx channels. However Core 1 is assigned to 672, Core 0 is assigned 673, Core 2 is 674 and Core 3 is 675. Is this order ok and why?
Q4: The high priority accumulator queues somehow attached to event 48. I don't quite understand this relationship. I also don't understand why event 48 gets connected to HWI 8? Can you explain more about this relationship and functionality?
Q5: When I send a tx message, what can I check (or where can I add a debug statement) to confirm that the message went out? I notice that the Rx side has an isr when the message comes in, but there is nothing comparable for the tx side. Is there a register I can read with a CSL command or something?
Thanks for your help,
Brandy