This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Part Number: PROCESSOR-SDK-AM57X
I'm using AM572x IDK board with TI-RTOS SDK 05.01.00.11. I need to use network stack on PRU-ICSS in dual mac mode on A15 core with DSP1 core, connected by IPC.
When I try to run A15 core with IPC (without DSP) and network stack (based on your IPC & PRU-ICSS examples), all is good: I can ping two PRU2 cores (in dual mac mode) and A15 can communicate with itself.
But when I add DSP1 core with IPC only, cores can communicate by IPC, but I can't ping PRU2 ETH0 and PRU2 ETH1 core.
What do I need to make it work?
Please make sure you read the forum guidelines first.
We are glad that we were able to resolve this issue, and will now proceed to close this thread.
If you have further questions related to this thread, you may click "Ask a related question" below. The newly created question will be automatically linked to this question.
In reply to Yordan Kovachev:
In reply to Garrett Ding:
Sorry for a long time for an answer.
We are not reconfiguring IPC interrupts at all (neither A15 nor DSP1).
Also, we configure DSP1_IRQ_43 to T15 timer (TIMER15_IRQ, IRQ_CROSSBAR_341).
Adding DSP1 core breaking PRU configuration, as I think, because processor cores (A15 and DSP1) are not generated exceptions.
In reply to Alex Overchenko:
I'm using ProcSync_ALL IPC sync mode.
And I also using NotifySetup and SharedRegion with IPC.
Ping doesn't work, if I call Ipc_start() on A15 and DSP1 cores. No other calls of IPC or MessageQ on any core from my code.
I think that this part of my .cfg file may be useful for you:
var Ipc = xdc.useModule('ti.sdo.ipc.Ipc');Ipc.procSync = Ipc.ProcSync_ALL;Ipc.sr0MemorySetup = true;var MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ');MessageQ.SetupTransportProxy = xdc.useModule('ti.sdo.ipc.transports.TransportShmNotifySetup');xdc.useModule('ti.sdo.ipc.family.vayu.NotifyDriverMbx');var NotifySetup = xdc.useModule('ti.sdo.ipc.family.vayu.NotifySetup');
There are some hard coded cross bar settings in IPC packages/ti/sdo/ipc/family/vayu/NotifySetup.c:
/* connect mailbox interrupts at startup */
IntXbar_connect(127, 286); // eve1 mailbox 0 user 3
IntXbar_connect(128, 295); // eve2 mailbox 0 user 3
IntXbar_connect(129, 251); // system mailbox 5 user 2
Which seems to be conflicting with PRSDK 5.1 -
/* For PRU2 Eth0 */
CSL_xbarMpuIrqConfigure(CSL_XBAR_INST_MPU_IRQ_127, CSL_XBAR_PRUSS2_IRQ_HOST8); /* link ISR */
CSL_xbarMpuIrqConfigure(CSL_XBAR_INST_MPU_IRQ_137, CSL_XBAR_PRUSS2_IRQ_HOST2); /* RX PKT ISR */
CSL_xbarMpuIrqConfigure(CSL_XBAR_INST_MPU_IRQ_129, CSL_XBAR_PRUSS2_IRQ_HOST4); /* TX PKT ISR */
While the ping is failing, is the link even up?
see similar cross bar issue here:
I remapped default PRU2.x interrupts to custom (CSL_XBAR_INST_MPU_IRQ_120, CSL_XBAR_INST_MPU_IRQ_121, CSL_XBAR_INST_MPU_IRQ_122, CSL_XBAR_INST_MPU_IRQ_123). That I wrote about above.
With that config link indication works fine, but ICSS_EmacLinkISR function not calls.
Then I remapped PRU2.x interrupts to CSL_XBAR_INST_MPU_IRQ_145, CSL_XBAR_INST_MPU_IRQ_146, CSL_XBAR_INST_MPU_IRQ_147, CSL_XBAR_INST_MPU_IRQ_148. With that config link indication works fine too, ICSS_EmacLinkISR function calls, but ping doesn't work yet.
Thanks, but I cannot find anything useful from your link to the simular issue.
P.S. CSL_XBAR_INST_MPU_IRQ_xxx interrupt used for link & Rx packet interrupts on PRU2.0 and for link & Rx packet interrupts on PRU2.1 respectively.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.