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.

  • Resolved

RTOS/PROCESSOR-SDK-AM57X: PRU-ICSS does not work on A15 with DSP1 on SDK 05.01.00.11

Intellectual 510 points

Replies: 23

Views: 1322

Part Number: PROCESSOR-SDK-AM57X

Tool/software: TI-RTOS

Hello

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?

With regards,
Alex

  • Hi,

    We are looking into this.

    Best Regards,
    Yordan

     


     Please make sure you read the forum guidelines first.

  • In reply to Yordan Kovachev:

    Alex,

    What's configured in your DSP1 core? Is it conflicting or breaking the ICSS initialization, e.g. interrupt?

    Regards,
    Garrett
  • In reply to Garrett Ding:

    Hello, Garrett

    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.

    With regards,
    Alex

  • In reply to Alex Overchenko:

    Alex,

    Did you check the followings is not overwritten with IPC enabled?

    CSL_xbarMpuIrqConfigure(CSL_XBAR_INST_MPU_IRQ_120, CSL_XBAR_PRUSS2_IRQ_HOST8); /* link ISR */
    CSL_xbarMpuIrqConfigure(CSL_XBAR_INST_MPU_IRQ_121, CSL_XBAR_PRUSS2_IRQ_HOST2); /* RX PKT ISR */
    switchEmacCfg->linkIntNum=CSL_armGicGetGicIdForIrqInputLine(120);
    switchEmacCfg->rxIntNum = CSL_armGicGetGicIdForIrqInputLine(121);

    as well as the emacInitcfg?
    ((ICSS_EmacObject*)emachandle->object)->emacInitcfg = switchEmacCfg;


    Regards,
    Garrett
  • In reply to Garrett Ding:

    Hello Garrett,

    Firstly, I'm using a dual mac configuration.
    Secondly, I checked PRU2.x interrupt crossbar configuration in registers with JTAG debugger after few time (1-2 minutes after starting) for interrupts, that I used (CSL_XBAR_INST_MPU_IRQ_120, CSL_XBAR_INST_MPU_IRQ_121, CSL_XBAR_INST_MPU_IRQ_122, CSL_XBAR_INST_MPU_IRQ_123) - and all was correct.

    emacInitcfg handles were valid too (as I see values info in the debugger).

    With regards,
    Alex
  • In reply to Alex Overchenko:

    Alex,

    Is the ping broken after your do IPC communication, i.e. messageQ_get or put from/to DSP? or it's broken without even doing mesageQ_open() and simply ipc_start()/ipc_attach()? which ipc procSync mode are you using? ProcSync_ALL or ProcSync_PAIR? processors.wiki.ti.com/.../Ipc_Module

    Regards,
    Garrett
  • In reply to Garrett Ding:

    Garrett,

    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');

    With regards,
    Alex

  • In reply to Alex Overchenko:

    Alex,

    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:

    Regards,

    Garrett

  • In reply to Garrett Ding:

    Hello Garrett,

    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.

    With regards
    Alex

    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.

  • In reply to Alex Overchenko:

    Alex,

    The ICSS_EmacRxInterruptHandler function is probably still not called. You can add the icss_emacDrv.c from PDK icss emac driver to your project and check. It might be worth to dump all the CTRL_CORE_MPU_IRQ_XX registers and compare the values before and after adding IPC.

    You can ignore that link - I just wanted to reiterate that crossbar setting typically is the culprit of such integration issues, but it appears to not help : -(

    Regards,
    Garrett

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.