Other Parts Discussed in Thread: SYSBIOS
Tool/software: TI-RTOS
AM5728 DSP running TI-RTOS on a Custom board. Processor speed is 750 MHz.
PDK 1.0.5, IPC 3.44.0, XDC 3.32.1.22, BIOS 6.46.1.38
I've been using the Execution Graph tool to study the timeline of our project. We have a hard real time requirement to service a sample data interrupt from an FPGA every 71 usec. We are using MessageQ via IPC to communicate from the DSP to the Linux ARM Host.
The system runs along fine until we send a message from the ARM to the DSP. The picture below was captured showing the time line of the processing. Looking at the left side of the picture, Hwi.82633508 (blue bar at the top) is the realtime interrupt every 71 usec. After that Hwi, the fpgaDataThread must run to completion. This normally takes 7-8 usec to execute. As you can see, after fpgaDataThread finishes, LogUtilThread runs, which is the lowest priority thread in the system. So that is good.
Moving now to the second execution of Hwi.82633508 (middle of the picture), after the Hwi the fpgaDataThread does start to run, but then it gets interrupted by the EventCombiner Hwi, which must be the interrupt caused by the message arriving from the host. X2-X1 is the Hwi time or 15 usec (which seems like a huge time for a Hwi).
After the Hwi runs, RPMessage_swiFxn Swi runs. Since all Swi's are higher in priority than all Tasks, the RPMessage_swiFxn Swi runs to completion. This takes X4-X3 + X6-X5 or 52 usec. Considering the message is 4 32-bit words long and results in no actual processing in the Swi itself, it would seem that 52 usec is a very excessive amount of time to lock up the processor just to receive a short message. If you add the time for the Hwi, we are at 67 usec out of 71 usec just for the receiving of the mesage.
As you can also see, during the RPMessage Swi we get another Hwi.82633508 interrupt and thus we essentially miss the real time data interrupt since we never finished the previous processing.
Hopefully, I have some unneeded logging enabled or some other issue, or we might need to abandon MessageQ for a more streamlined messaging implementation.