You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, I have tried searching Xilinx forums and various other places, but still struggle with some things related to remoteproc in our application. Some background: our system runs on Zynq-7000, with Linux on CPU0 and FreeRTOS on CPU1. The FreeRTOS application sets up various interrupts, e.g. timer interrupts connected to TTC. Previously we used a Linux buildroot installation, where we could set maxcpus=1 in bootargs, and keep a strict separation between Linux/FreeRTOS on cpu cores. Now we moved on to Petalinux (r2022.1), and it seems remoteproc will not run with maxcpus=1, and instead will dynamically assign CPU1 to our FreeRTOS application when starting it.
My problem now is that when we stop the RT application using remoteproc (echo stop >/sys/class/remoteproc/remoteproc0/state) then CPU1 is handed over to Linux, but continues to receive ttc_clockevent interrupts that are not handled, severely lagging the system. When we could assign CPU1 exclusively to FreeRTOS this was not an issue, I guess.
I have integrated the rpc-demo functionality in our project, and I can now shut down our application somewhat gracefully through the RPMsg functionality, by disabling "our" interrupts in e.g. the cleanup_system() function. But I would really like to do this when sending the stop command into remoteproc. I have tried adding functions to the remoteproc_ops struct (rproc->ops->stop, rproc->ops->shutdown), but these don't seem to be called when issuing the 'stop' command. The only output I get to console is remoteproc remoteproc0: stopped remote processor remoteproc@0.
Any suggestions or best practice recommendations for a solution would be very welcome. Our system must be able to recover from faults, and it would be best if we could achieve this without having to reboot the Linux system each time the application is restarted.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hi, I have tried searching Xilinx forums and various other places, but still struggle with some things related to remoteproc in our application. Some background: our system runs on Zynq-7000, with Linux on CPU0 and FreeRTOS on CPU1. The FreeRTOS application sets up various interrupts, e.g. timer interrupts connected to TTC. Previously we used a Linux buildroot installation, where we could set maxcpus=1 in bootargs, and keep a strict separation between Linux/FreeRTOS on cpu cores. Now we moved on to Petalinux (r2022.1), and it seems remoteproc will not run with maxcpus=1, and instead will dynamically assign CPU1 to our FreeRTOS application when starting it.
My problem now is that when we stop the RT application using remoteproc (echo stop >/sys/class/remoteproc/remoteproc0/state) then CPU1 is handed over to Linux, but continues to receive ttc_clockevent interrupts that are not handled, severely lagging the system. When we could assign CPU1 exclusively to FreeRTOS this was not an issue, I guess.
I have integrated the rpc-demo functionality in our project, and I can now shut down our application somewhat gracefully through the RPMsg functionality, by disabling "our" interrupts in e.g. the cleanup_system() function. But I would really like to do this when sending the stop command into remoteproc. I have tried adding functions to the remoteproc_ops struct (rproc->ops->stop, rproc->ops->shutdown), but these don't seem to be called when issuing the 'stop' command. The only output I get to console is
remoteproc remoteproc0: stopped remote processor remoteproc@0
.Any suggestions or best practice recommendations for a solution would be very welcome. Our system must be able to recover from faults, and it would be best if we could achieve this without having to reboot the Linux system each time the application is restarted.
Beta Was this translation helpful? Give feedback.
All reactions