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.

AM6442: Linux IPC rpmsg_char_simple userspace application

Part Number: AM6442

Tool/software:

Hello,

I am trying to get the rpmsg_char_simple application to work on yocto linux for the AM6442 that doesn't include the rpmsg drivers by default. I have followed the tutorial to build the application and upload to the device. When trying to run the application, I get the following error.

How can I either enable or install the rpmsg drivers for Linux? For my application I need Linux running on the A53 to communicate to the M4F using IPC. I need to understand how this userspace application works and then implement my own, so any guidance is very appreciated.

Thanks for your help,

Brycen

  • Hello Brycen,

    In the kernel config file, have you searched for RPMsg to see if the driver was enabled?

    You also need the remoteproc driver to load the remote cores. Just to make sure, what is your output when you do dmesg | grep remoteproc?

    Regards,

    Nick

  • Here is my output from the dmesg | grep remoteproc command:


    [ 2.029871] remoteproc remoteproc0: 30034000.pru is available
    [ 2.031036] remoteproc remoteproc1: 30004000.rtu is available
    [ 2.031944] remoteproc remoteproc2: 3000a000.txpru is available
    [ 2.032981] remoteproc remoteproc3: 30038000.pru is available
    [ 2.034309] remoteproc remoteproc4: 30006000.rtu is available
    [ 2.035257] remoteproc remoteproc5: 3000c000.txpru is available
    [ 2.041815] remoteproc remoteproc6: 300b4000.pru is available
    [ 2.042768] remoteproc remoteproc7: 30084000.rtu is available
    [ 2.043540] remoteproc remoteproc8: 3008a000.txpru is available
    [ 2.044387] remoteproc remoteproc9: 300b8000.pru is available
    [ 2.045465] remoteproc remoteproc10: 30086000.rtu is available
    [ 2.046336] remoteproc remoteproc11: 3008c000.txpru is available
    [ 7.052351] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [ 7.066965] remoteproc remoteproc12: 5000000.m4fss is available
    [ 7.080178] remoteproc remoteproc12: powering up 5000000.m4fss
    [ 7.080211] remoteproc remoteproc12: Booting fw image am64-mcu-m4f0_0-fw, size 529064
    [ 7.084485] remoteproc12#vdev0buffer: assigned reserved memory node m4f-dma-memory@a4000000
    [ 7.084715] remoteproc12#vdev0buffer: registered virtio0 (type 7)
    [ 7.084729] remoteproc remoteproc12: remote processor 5000000.m4fss is now up
    [ 7.223433] platform 78000000.r5f: configured R5F for remoteproc mode
    [ 7.232709] remoteproc remoteproc13: 78000000.r5f is available
    [ 7.233024] remoteproc remoteproc13: Direct firmware load for am64-main-r5f0_0-fw failed with error -2
    [ 7.233048] remoteproc remoteproc13: powering up 78000000.r5f
    [ 7.233080] remoteproc remoteproc13: Direct firmware load for am64-main-r5f0_0-fw failed with error -2
    [ 7.233089] remoteproc remoteproc13: request_firmware failed: -2
    [ 7.241867] platform 78200000.r5f: configured R5F for remoteproc mode
    [ 7.242848] remoteproc remoteproc14: 78200000.r5f is available
    [ 7.243121] remoteproc remoteproc14: Direct firmware load for am64-main-r5f0_1-fw failed with error -2
    [ 7.243145] remoteproc remoteproc14: powering up 78200000.r5f
    [ 7.243189] remoteproc remoteproc14: Direct firmware load for am64-main-r5f0_1-fw failed with error -2
    [ 7.243199] remoteproc remoteproc14: request_firmware failed: -2
    [ 7.274005] platform 78400000.r5f: configured R5F for remoteproc mode
    [ 7.275009] remoteproc remoteproc15: 78400000.r5f is available
    [ 7.275430] remoteproc remoteproc15: Direct firmware load for am64-main-r5f1_0-fw failed with error -2
    [ 7.275460] remoteproc remoteproc15: powering up 78400000.r5f
    [ 7.275494] remoteproc remoteproc15: Direct firmware load for am64-main-r5f1_0-fw failed with error -2
    [ 7.275503] remoteproc remoteproc15: request_firmware failed: -2
    [ 7.275854] platform 78600000.r5f: configured R5F for remoteproc mode
    [ 7.276827] remoteproc remoteproc16: 78600000.r5f is available
    [ 7.277080] remoteproc remoteproc16: Direct firmware load for am64-main-r5f1_1-fw failed with error -2
    [ 7.277099] remoteproc remoteproc16: powering up 78600000.r5f
    [ 7.277130] remoteproc remoteproc16: Direct firmware load for am64-main-r5f1_1-fw failed with error -2
    [ 7.277251] remoteproc remoteproc16: request_firmware failed: -2
    [ 8.249741] remoteproc remoteproc6: powering up 300b4000.pru
    [ 8.252046] remoteproc remoteproc6: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 37644
    [ 8.252096] remoteproc remoteproc6: unsupported resource 5
    [ 8.252126] remoteproc remoteproc6: remote processor 300b4000.pru is now up
    [ 8.252169] remoteproc remoteproc7: powering up 30084000.rtu
    [ 8.261338] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 30860
    [ 8.261402] remoteproc remoteproc7: remote processor 30084000.rtu is now up
    [ 8.261445] remoteproc remoteproc8: powering up 3008a000.txpru
    [ 8.270683] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 36948
    [ 8.270747] remoteproc remoteproc8: remote processor 3008a000.txpru is now up
    [ 8.380474] remoteproc remoteproc9: powering up 300b8000.pru
    [ 8.389704] remoteproc remoteproc9: Booting fw image ti-pruss/am65x-sr2-pru1-prueth-fw.elf, size 37920
    [ 8.389750] remoteproc remoteproc9: unsupported resource 5
    [ 8.389781] remoteproc remoteproc9: remote processor 300b8000.pru is now up
    [ 8.389822] remoteproc remoteproc10: powering up 30086000.rtu
    [ 8.398971] remoteproc remoteproc10: Booting fw image ti-pruss/am65x-sr2-rtu1-prueth-fw.elf, size 30100
    [ 8.399031] remoteproc remoteproc10: remote processor 30086000.rtu is now up
    [ 8.399070] remoteproc remoteproc11: powering up 3008c000.txpru
    [ 8.416606] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-txpru1-prueth-fw.elf, size 35596
    [ 8.416668] remoteproc remoteproc11: remote processor 3008c000.txpru is now up

    I have tested loading/starting/stopping remote cores from Linux and it is functional. I cannot find the rpmsg devices.

    The kernel appears to enable the TI RPMsg/IPC as the associated CONFIG variables are set to y and m. I also don't see any rpmsg devices in /dev.

  • Upon uploading the ipc_rpmsg_echo_linux example to the M4F and loading the remote core through Linux, the drivers appear to be working and IPC has been established between Linux and the M4F. It appears I missed a step in the process of enabling IPC.

    Thanks for your help!

  • Hello Brycen,

    Linux error code 2 means "no such file or directory". For more information, please refer to the AM64x Linux academy, page "Booting remote cores"
    https://dev.ti.com/tirex/explore/node?node=A__AdAyuKWUWVV5j4wBc7C6XA__AM64-ACADEMY__WI1KRXP__LATEST

    I'll cover your follow-up question in a separate thread, here:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1378884/am6442-how-to-add-linux-ipc-to-an-mcu-project

    Regards,

    Nick