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.

PROCESSOR-SDK-DRA8X-TDA4X: About rpmsg_char only some devices can communicate

Part Number: PROCESSOR-SDK-DRA8X-TDA4X

Hi,

This is all the device, why can only one device succeed, and why "./rpmsg_char_simple.out -r 2 -d rpmsg_chrdev -p 13" can only be sent but not received, see the pic below:


The following picture shows the device that works:

How to fix it? Look forward to your reply.

Best regards,

Yonghui

  • Hi Yonghui,

    Please provide details on

    1. Which SDK version you are using?

    2. Have you run the tests with the default remote core images from SDK? or with your custom build images?

    Thanks & Regards,

    Sunita.

  • Hi,

    The SDK version is psdk_rtos_auto_j7_07_00_00_11. I have run the tests with the default remote core images from SDK.It succeed.But there are some devices do not succeed.So I want to know that :

    1.The picture below shows all the devices. What do they mean? and the port ID means.

    2. We use the following source code link:

    git.ti.com/.../

    Best Regards,

    Jingwu Zhao

  • Hi Jingwu,

    The ti-rpmsg-char library is the userspace library to talk to rpmsg devices probed with the kernel rpmsg-char driver. The official support for this library was added in 7.1 SDK release. The library can work on 7.0 kernels, but you would need to ensure that your kernel has the following 2 commits:

    8085b723287a rpmsg: char: Update local endpt address for virtio-rpmsg backend
    16f94e564716 rpmsg: char: Add device id_table for auto-probe

    The library can support any rpmsg devices that are probed with the kernel rpmsg_char driver. Any rpmsg device with the name "rpmsg_chrdev" is probed by default with the rpmsg_char driver. If you want other rpmsg devices to probe with this driver, you would have to bind that device with the rpmsg_char driver. Please note that not all devices may be fit to be bound to the rpmsg_char driver.

    You should see the rpmsg devices probed with the rpmsg_char driver listed under

    ls -l /sys/bus/rpmsg/drivers/rpmsg_chrdev/

    The picture you posted above in 1 lists all the rpmsg devices published by various remote processors. There can be multiple rpmsg drivers as well, and the rpmsg device probes a corresponding matching rpmsg driver.

    For example, the rpmsg device virtio0.rpmsg_chrdev.-1.13 can be deconstructed as follows:

    virtio0 -> virtio device id associated with a remoteproc, the number is dynamically assigned by kernel

    rpmsg_chrdev -> name of the rpmsg device published (the one that goes in the -d option to rpmsg_char_simple)

    13 -> endpoint number for the device on the firmware-side (the one that goes with the -p option)

    The full path of the rpmsg device does include the actual remote processor that it belongs to.

    The R5F Core1 in a cluster is not seen as a remoteproc if that cluster is configured in LockStep-mode (eg: 41400000.r5f). Your list above has rpmsg devices only on 4d80800000.dsp (C66_0), 4d81800000.dsp (C66_1), 64800000.dsp (C71_0) and 5c00000.r5f (Main R5FSS Core0). So, the example failed with all other remoteprocs.

    regards

    Suman