Part Number: SK-TDA4VM
Other Parts Discussed in Thread: TFP410
I am trying to run the ipc echo test between rtos and linux.
Environment:
I have flashed the tisdk-edgeai-image-j721e-evm.wic.xz image.
For RTOS: I have used the default rtos binaries present in the /lib/firmware/ti-ipc/j721e directory. I have linked the following firmwares:
0 lrwxrwxrwx 1 root root 53 Nov 29 05:16 j7-main-r5f0_0-fw -> ti-ipc/j721e/ipc_echo_test_mcu2_0_release_strip.xer5f
0 lrwxrwxrwx 1 root root 53 Nov 29 05:19 j7-main-r5f0_1-fw -> ti-ipc/j721e/ipc_echo_test_mcu2_1_release_strip.xer5f
0 lrwxrwxrwx 1 root root 53 Nov 29 05:20 j7-main-r5f1_0-fw -> ti-ipc/j721e/ipc_echo_test_mcu3_0_release_strip.xer5f
0 lrwxrwxrwx 1 root root 53 Nov 29 05:19 j7-main-r5f1_1-fw -> ti-ipc/j721e/ipc_echo_test_mcu3_1_release_strip.xer5f
For Linux: I am using the default rpmsg_char_simple binary present in /usr/bin.
Observation:
As per the enum present in the rpmsg_char_simple codebase (ti-rpmsg-char/include/rproc_id.h), I need to communicate with r2 (R5F_MAIN0_0), r3 (R5F_MAIN0_1), r4 (R5F_MAIN1_0), r5 (R5F_MAIN1_1)
enum rproc_id {
R5F_MCU0_0 = 0,
R5F_MCU0_1,
R5F_MAIN0_0,
R5F_MAIN0_1,
R5F_MAIN1_0,
R5F_MAIN1_1,
DSP_C66_0,
DSP_C66_1,
DSP_C71_0,
M4F_MCU0_0,
DSP_C71_1,
R5F_MAIN2_0,
R5F_MAIN2_1,
DSP_C71_2,
DSP_C71_3,
R5F_WKUP0_0,
RPROC_ID_MAX,
};
Issue:
But while running the command rpmsg_char_simple -r<rproc_id> -n10 for any id other than 2, I am either getting virtio device not created or matching rpmsg_ctrl device not created error.
for r3:
_rpmsg_char_find_ctrldev: could not find the matching rpmsg_ctrl device for virtio5.rpmsg_chrdev.-1.14
for r4:
_rpmsg_char_find_rproc: 5e00000.r5f does not have any virtio devices!
for r5:
_rpmsg_char_find_rproc: 5f00000.r5f does not have any virtio devices!
Extra information:
I digged a little into the rtos code (ti-processor-sdk-rtos-j721e-evm-08_01_00_13/pdk_jacinto_08_01_00_36/packages/ti/drv/ipc/examples/common/src/ipc_testsetup.c) and linux code (ti-rpmsg-char/src/rpmsg_char.c) and found out the following:
A directory like this has to exist if a virtio device is created: /sys/devices/platform/bus@100000/bus@100000:r5fss@5c00000/5d00000.r5f/remoteproc/remoteproc5/rproc-virtio.5.auto/virtio5
And a folder named virtio5.rpmsg_chrdev.-1.14 needs to be present in there to have a matching rpmsg_ctrl device.
Objective/Question:
How to make sure that virtio devices and rpmsg_ctrl devices get created?
OR
How to make sure these aforementioned directories are getting created / What is responsible for creating these directory structures?