Tool/software: Linux
Hi,
I want to use DSP cores while running linux as a co-processor for network applications. As I understood, I should be able to use PKTDMA and QMSS to route the incoming packets from 10GB to DSP and also use it to communicate between the cores. I have found some slides on this topic and how it works, but I could not find any code that includes both ARM and DSP codes. Even I found a not-responded similar thread here:
https://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/590922/2172476
So I want to do the QMSS initialization through Linux, and then use the PKTDMA functions from PDK on the DSP to communicate to XGBE and also ARM cores. These are my questions:
1) As I understood I should setup the QMSS parameters through the DTS file for Linux boot (in arch/arm/boot/dts/keystone-k2hk-netcp.dtsi which has the qmss initialization). I found the set queue numbers for tx and rx of xgbe which right now correspond to ARM interrupts. However reading "KeyStone Architecture Multicore Navigator" I couldn't find any interrupt queue for DSP, and it looks like I should use the low or high priority accumulator. However, I could not find any code for the high priority one. Is there any interrupt queues for DSP or how should I update the DTS file to include the high priority queue in the DTS file?
2) After adding DSP queues to the DTS file, is there some other initialization step I need to do for Linux? I think I can change the rx receive and tx complete queues of xgbe to point to the DSP queues and use the arm interrupt queues to communicate from DSP to ARM. Or should I use the QMSS TX queues to communicate between DSP and ARM (it says between cores, not sure which cores)? Or the EDMA queues?
3) I want the descriptor payloads to be placed in DSP L2 cache (SRAM), can I do it through DTS or Linux initialization? or that part of QMSS initialization needs to be done through DSP since it is local memory?
Thank you in advance,
Moein