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.

Linux/AM5728: IPC HOST App gets transport errors after DSP is reloaded

Part Number: AM5728

Tool/software: Linux

I am using IPC message queue example 2 on AM57 (PSDK 3.2)

when I rebind the DSP, IPC HOST App gets transport errors: 

TransportRpmsg_put: send failed: 108 (Cannot send after transport endpoint shutdown)

If I restart the Host App, it works fine, 

How can I refresh the IPC Transport  to get the DSP MessageQ after DSP is reloaded without restarting Host App?

Thanks

  • when I rebind the DSP, IPC HOST App gets transport errors:

    TransportRpmsg_put: send failed: 108 (Cannot send after transport endpoint shutdown)


    I'm a little confused here. I understand that your host app is running, when you rebind the dsp, right? Could you share your sequence, so I can test it on my AM57xx GP EVM.

    Best Regards,
    Yordan
  • Yes, on startup DSP is loaded, and Host App is running.
    if the DSP is reloaded (unbind and bind), HOST App gets transport errors.

    The Transport thread (rpmsgThreadFxn) running in a loop, prints
    recvfrom failed: Link has been severed (67)
    rpmsgThreadFxn: transportGet failed on fd 11, returned -20

    when I try to send a message, I get

    TransportRpmsg_put: send failed: 108 (Cannot send after transport endpoint shutdown)

    Somehow I need a way to detect that, and update the Slave MessageQ handle or something.

    Since I get an error from MessageQ_put, I want to reset the MessageQ transport.

    I tried doing Ipc stop/start followed by MessageQ_close and then MessageQ_open using Module.slaveQue,
    but that didnt work.

    Ipc_stop();

    /* configure the transport factory */
    Ipc_transportConfig(&TransportRpmsg_Factory);

    Ipc_start();


    Another way, I can fork a child in the Host App and signal an error to the parent to kill and restart the forked Host App.

    is there a way to do a 'reset' of the connection state?

  • I'd be interested to hear if you found a solution to your problem. I also periodically see the "NameServer_getRemote: send failed: 108, Cannot send after transport endpoint shutdown" error when I unbind/bind a DSP.

    Further, it gets to the point that the 40800000.dsp isn't even recognized:

    -bash-4.3# echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/bind
    -bash: echo: write error: No such device

    Thanks