We are running a custom u-boot which is able to boot the PRU. We can see in the board that the PRU is running while u-boot is running its shell.
The image is built using poky kirkstone with meta-ti-bsp and kernel linux-ti-staging_5.10
From u-boot we load the text and data segments from the firmware file, and also load a blob into the shared ram of the PRU. Then we boot the PRU and can confirm that it does run by watching the board's behaviour.
However, the moment that the kernel starts booting, we see that the PRU stops working in the initial settings.
If we configure the devicetree for the correct firmware and patch pru-rproc.c to set `rproc->auto_boot = true` the PRU does start during kernel boot, but there is a big gap between the time is stops (~3s mark) and the time it starts again (~17s).
Is there anything we can try to understand:
a) why/where the PRU is being stopped as part of the kernel boot
b) what can be done to prevent it from happening and preserve the PRU state during boot.
Notes:
It is OK if we can restart the PRU from the kernel as long as the gap between STOP/START is less than, say, 500ms.
It is also OK-ish to have the rproc driver coming up with state not maching the actual PRU operation as long as we can restart it from userspace to finally converge. While not elegant it is a tradeoff that we can accept.
At this point we have validated that the pinmux settings are OK and that the PRU runs both from u-boot and from the kernel. What is missing is the ability to run continuously (or with a minor interruption <500ms) when booting the kernel from u-boot.
Any other hints about where to look to are greatly appreciated.
Thanks!