I’m currently booting the M7 core of my Verdin i.MX8MP (TorizonOS 7.1.0) with RemoteProc, using the auto-boot feature I enabled in the device tree: fsl,auto-boot= <1>; and the path set as Kernel argument in the TorizonCore Builder: firmware_class.path=/var/cortex-firmware (and the FW file named rproc-imx-rproc-fw located there).
My understanding is that as soon as the remoteproc kernel module is loaded, the M7 code will be loaded and started (provided the file is at the path). I can see this happening:
torizon@verdin-imx8mp-15337625:~$ dmesg | grep rproc
[ 6.907849] remoteproc remoteproc0: imx-rproc is available
[ 6.911875] remoteproc remoteproc0: powering up imx-rproc
[ 6.914097] remoteproc remoteproc0: Booting fw image rproc-imx-rproc-fw, size 199040
[ 7.433596] remoteproc remoteproc0: remote processor imx-rproc is now up
However, this only happens after ~6.9 seconds. My goal is to start the M7 as soon as possible (without uboot), so what could be the limiting factor here?
Why does is take so long until imx-rproc is available?
Is there some sort of boot sequence (similar to the systemd After/Before), which interferes?
Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!
Did you like my answer?
Hello Tim,
Thank you for reaching out with your question about optimizing the boot time for the M7 core on your Verdin i.MX8MP using RemoteProc. Let’s explore some potential factors and solutions to help you achieve a faster startup.
Kernel Module Loading Order: The delay might be due to the order in which kernel modules are loaded. The RemoteProc module could be waiting for other modules or services to initialize. You can use systemd-analyze to examine the boot sequence and identify dependencies that might be delaying the RemoteProc module.
Systemd Services: Since TorizonCore uses systemd, the boot sequence is managed by systemd services. Running systemd-analyze blame can help you identify services that take the most time during boot. Consider disabling or delaying non-critical services to prioritize the RemoteProc module.
Prioritizing RemoteProc Initialization: You might create or modify a systemd service to ensure the RemoteProc module loads as early as possible. This could involve setting a custom service to start before other less critical services.
Blacklisting Unnecessary Drivers: If there are drivers or modules not needed immediately, consider blacklisting them to prevent early loading. This can be done by creating a configuration file in /etc/modprobe.d/.
Firmware Path and Configuration: Ensure the firmware path is correctly set and accessible early in the boot process. Delays in accessing the firmware can contribute to the overall boot time.
By analyzing the boot sequence and adjusting systemd services and module loading order, you should be able to reduce the time it takes for the M7 core to start. These optimizations can help achieve a faster boot time tailored to your application needs.
I hope these suggestions help you optimize your system’s boot time. If you have further questions, feel free to ask.
Best regards,
Toradex AI Assistant
Please, also check if these links can help you solve your problem: