Hi,
We're developing our own PRU firmware and want it to be loaded and booted when linux boots.
We build our own yocto based on linux kernel 5.20.
In the logs I get:
[ 3.321170] pru-rproc 4b234000.pru: PRU rproc node /ocp/target-module@4b226000/pruss@0/pru@34000 probed successfully
[ 3.337707] pru-rproc 4b238000.pru: PRU rproc node /ocp/target-module@4b226000/pruss@0/pru@38000 probed successfully
[ 3.354255] pru-rproc 4b2b4000.pru: PRU rproc node /ocp/target-module@4b2a6000/pruss@0/pru@34000 probed successfully
[ 3.370772] pru-rproc 4b2b8000.pru: PRU rproc node /ocp/target-module@4b2a6000/pruss@0/pru@38000 probed successfully
All the /sys/class/remoteproc/remoteprocX/state that are PRU have state offline.
In the source of pru_rproc I read a comment:
/*
* rproc_add will auto-boot the processor normally, but this is
* not desired with PRU client driven boot-flow methodology. A PRU
* application/client driver will boot the corresponding PRU
* remote-processor as part of its state machine either through
* the remoteproc sysfs interface or through the equivalent kernel API
*/
This explains why IPU and DSP are started at boot, but not the PRU.
Is there some example where PRU application starts the PRU? All I've seen in the examples are echo start > /sys/class/remoteproc/remoteprocX/state.
A good start for us would be to use the rpmsg_client_sample code, but that one does not start the PRU.
A little hint would be much appreciated!