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/AM5718: PRU firmware loading and rpmsg failure

Part Number: AM5718

Tool/software: Linux

Hi,

a customer is trying to port to the latest PSDK and are having problems with the PRU operation. They are using custom PRU firmware and not the prueth firmware from the OOB. The software is running on the customer HW, but has successfully run previous PSDKs.

One difference we are seeing is a mbox request failure we are getting.

Customer board

[    6.787477] ti-pruss 4b280000.pruss: creating PRU cores and other child platform devices
[    6.843271] davinci_mdio 4b2b2400.mdio: davinci mdio revision 1.6
[    6.843284] libphy: 4b2b2400.mdio: probed
[    6.904041] davinci_mdio 4b2b2400.mdio: phy[0]: device 4b2b2400.mdio:00, driver unknown
[    6.904055] davinci_mdio 4b2b2400.mdio: phy[1]: device 4b2b2400.mdio:01, driver unknown
[    6.907343] pru-rproc 4b234000.pru0: memory     iram: pa 0x000000004b234000 size 0x3000 va f20a8000
[    6.907370] pru-rproc 4b234000.pru0: memory  control: pa 0x000000004b222000 size 0x400 va f20ac000
[    6.907390] pru-rproc 4b234000.pru0: memory    debug: pa 0x000000004b222400 size 0x100 va f20ae400
[    6.907402] pru-rproc 4b234000.pru0: mbox_request_channel failed: -19
[    6.907585]  remoteproc3: 4b234000.pru0 is available
[    6.907594]  remoteproc3: Note: remoteproc is still under development and considered experimental.
[    6.907601]  remoteproc3: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[    6.912453] pru-rproc 4b234000.pru0: booting the PRU core manually
[    6.912467]  remoteproc3: powering up 4b234000.pru0
[    6.912556]  remoteproc3: Booting fw image am57xx-pru1_0-fw, size 27828
[    6.912588]  remoteproc3: starting PRU0: entry-point = 0x0
[    6.912595]  remoteproc3: remote processor 4b234000.pru0 is now up
[    6.912614] pru-rproc 4b234000.pru0: PRU rproc node /ocp/pruss@4b200000/pru0@4b234000 probed successfully
[    6.912757] pru-rproc 4b238000.pru1: memory     iram: pa 0x000000004b238000 size 0x3000 va f20c0000
[    6.912790] pru-rproc 4b238000.pru1: memory  control: pa 0x000000004b224000 size 0x400 va f20c4000
[    6.912807] pru-rproc 4b238000.pru1: memory    debug: pa 0x000000004b224400 size 0x100 va f20c6400
[    6.912817] pru-rproc 4b238000.pru1: mbox_request_channel failed: -19

OOB AM572x IDK

[    7.895174] ti-pruss 4b280000.pruss: creating PRU cores and other child platform devices
[    7.926648] davinci_mdio 4b2b2400.mdio: GPIO lookup for consumer reset
[    7.926660] davinci_mdio 4b2b2400.mdio: using device tree for GPIO lookup
[    7.926681] of_get_named_gpiod_flags: parsed 'reset-gpios' property of node '/ocp/pruss@4b280000/mdio@4b2b2400[0]' - status (0)
[    7.926737] davinci_mdio 4b2b2400.mdio: GPIO lookup for consumer reset
[    7.926744] davinci_mdio 4b2b2400.mdio: using device tree for GPIO lookup
[    7.926773] of_get_named_gpiod_flags: parsed 'reset-gpios' property of node '/ocp/pruss@4b280000/mdio@4b2b2400[1]' - status (0)
[    7.967778] davinci_mdio 4b2b2400.mdio: davinci mdio revision 1.6
[    7.977028] libphy: 4b2b2400.mdio: probed
[    8.031001] davinci_mdio 4b2b2400.mdio: phy[0]: device 4b2b2400.mdio:00, driver TI TLK10X 10/100 Mbps PHY
[    8.083046] davinci_mdio 4b2b2400.mdio: phy[1]: device 4b2b2400.mdio:01, driver TI TLK10X 10/100 Mbps PHY
[    8.217792] ata1: SATA link down (SStatus 0 SControl 300)
[    8.273628]  remoteproc4: 4b234000.pru0 is available
[    8.291802]  remoteproc4: Note: remoteproc is still under development and considered experimental.
[    8.341212]  remoteproc4: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[    8.412380]  remoteproc4: registered virtio4 (type 7)
[    8.419465] pru-rproc 4b234000.pru0: PRU rproc node /ocp/pruss@4b200000/pru0@4b234000 probed successfully


And again we are trying to not have the pru ethernet at all, but it is still trying to run

[    6.938095] prueth pruss2_eth: port 1: using random MAC addr: b2:e9:88:ce:bf:ad
[    7.014267] prueth pruss2_eth: port 2: using random MAC addr: f6:92:7c:9c:34:f4

Finally, the /dev/rpmsgX files are not being created.

root@seahawk:/var/log# ls /dev/rp*
/dev/rpc_example_2  /dev/rpmsg-dce
expected files are
 10 #define DEVICE_NAME             "/dev/rpmsg_pru33"                                                                
 11 #define DEVICE_NAME_SECONDARY   "/dev/rpmsg_pru32"       
Could someone take a look at the comparison of customer trace "dmesg.remoteprocs" vs an IDK OOB "dmesg.am572xIdkOob" to see what we are missing?
Attached are also the device tree files (dts and flat dts). The included device tree files are unchanged.
Regards,
--Gunter

  • When you include the am57xx-idk-common.dtsi file at the top of your file you are bringing in the pruss2_eth node which is going to probe drivers/net/ethernet/ti/prueth.c and try to boot the PRUs. This node can be seen in your flattened device tree file.

    Please try adding the following to the end of your dts file to disable the pruss2_eth device tree node:

    /{

    pruss2_eth {

    status = "disabled";

    };

    };

    Let me know if this helps.

    Jason Reeder