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.

AM5728: IPC problem

Part Number: AM5728

Hi All,

  Currently am trying to use IPC example listed under 

  http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/How_to_Guides.html#create-dsp-and-ipu-firmware-using-pdk-drivers-and-ipc-to-load-from-arm-linux-on-am57xx-devices

  Am able to build & run uart application for DSP, but not able to run IPC messageQ example.

  A15 is running with Linux & RTOS running on DSP core.

  when I run app_host on target for DSP1, getting below data on console:

./app_host DSP1
--> main:
--> Main_main:
--> App_create:

after this no further message.

My trace0 log is:

cat /sys/kernel/debug/remoteproc/remoteproc2/trace0
[ 0.000] 17 Resource entries at 0x95000000
[ 0.000] [t=0x00025a08] xdc.runtime.Main: --> main:
[ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST
[ 0.000] [t=0x0003d3b4] xdc.runtime.Main: NameMap_sendMessage: HOST 53, port=61

Where DSP application which I build using CCS, already started before I run host application. 

So can I know how to communicate between host and DSP1 core.

 My main requirement is to communicate between DSP and A15 core using any mechanism. 

I tried with ex02_message example as mention under above link. Is there any other way to communicate like Rpmsg or any other approach with/without using RTOS

Regards,

Geek13

 

  • Hello,

    What version of Processor SDK are you using?

    Regards,

    Nick

  • Hello,

    Also have you followed the IPC quick start guide below for steps on loading the remote cores?

    http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_IPC.html#ipc-quick-start-guide

    When the ARM is running Linux, Rpmsg is the transport used to communicate between cores. 

    Regards,
    Sahin

  • Hi Sahin,

     Am using ti-processor-sdk-linux-am57xx-evm-05.01.00.11. Also I follow the same ipc quick atart guide, you mention above. 

      But didn't find any example related to rpmsg. ex02message is using messageQ, that I tried with building UART basic example with IPC as mention. 

      What are the steps to run example after successful build?

      What will be the host side application, is that App-host same application will be used??

       Tried with ./App_host DSP1 but it stuck somewhere 

        --> main:
        --> Main_main:
        --> App_create: 

    That application is using MessageQ. Is there any document where I can find steps for rpmsg. As I want to communicate between different cores like M4 & DSP, DSP and A15 .

    Regards,

    Geek13

         

  • Hello,

    Rpmsg is the underlying transport used by IPC on this device when the ARM is running Linux. You can view the source code at ~\ipc_3_50_03_05\packages\ti\ipc\rpmsg\. There is also some information on it in the training here: https://training.ti.com/intro-to-ipc-for-keystone-and-sitara?cu=519066 

    App_Host is the ARM side application that should be used with the example. Can you attach to the DSP core with CCS and post the ROV loggerbuf output here so that we can see where it's hanging? 

    If you wish to communicate between slave cores, the ex41_forwardmsg is a good example to refer to. In this example the host sends a message to each slave core with a dummy payload. Each slave then forwards the message to the other slave. After a slave receives a message from both the host and the other slave, it allocates a new message that it sends back to the host. The slave then shuts itself down and reinitializes itself for future runs.

    Regards,
    Sahin

  • Hi Sahin,

     Thanks now am able to communicate between DSP & A15 core using IPC messageQ .

     Problem is with in UART task I created.

    Is that possible to use messageQ if DSP core not having RTOS, it simple execute algorithm using baremetal approach and Linux running on A15.

    And what will be fastest mode of communication between core:

    sharedmemory/MessageQ/MailBox/ or any other approach.

    As per my requirement sometimes I need only signalling from A15 to DSP core and sometimes I have to send data between DSP & A15.

    what will be the best approach you suggest in both scenario.

    Regards,

    Geek13 

      

  • Hello,

    IPC does not support baremetal on the DSP core, so you will need to implement a custom driver for this. I believe Linux already has mailbox drivers that you can use.

    There is also a baremetal Mailbox example in the Processor SDK RTOS PDK that you can reference. The example showcases mailbox sending and receiving between the a15 and m4/dsp cores. It is located at the following directory.

    ~\pdk_am57xx_1_0_16\packages\ti\csl\example\mailbox\mailbox_sender_receiver_app

    It can be built by following the steps here: http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_device_drv.html

    I hope this helps.

    Regards,
    Sahin