IMX6ull Boot time optimization

Hello Sir,
We are working on optimising boot time for IMX6ull.we observed that uboot takes around 10seconds after power on to start kernel.

1. kindly let us know why booting from NAND takes such a long time ?
2. Any possible way to reduce this duration ?

It’s hard to tell especially not knowing which Linux image you are talking about.
In general - try to reduce kernel size and increase NAND clock speed. But in last case you may start having issue with stability of NAND communication.

Thank you for the Reply alex

1.cat /etc/issue/

TDX Wayland with XWayland 5.2.0-devel-20210409103243+build.0 (dunfell) \n \l Colibri-iMX6ULL_Reference-Minimal-Image

2.uname-r
5.4.91-5.2.0-devel+git.c59b3c2da1e9

3.systemd-analyze time

Startup finished in 4.496s (kernel) + 23.648s (userspace) = 28.144s (plus 8 to 10sec extra booting from nand) graphical.target reached after 20.178s in userspace

Same advice remove all unnecessary from Linux kernel and RootFS. Another thing - by default U_Boot set 396 MHz CPU frequency instead of 792 MHz to make boot more reliable. You can try to modify U_Boot to run on full CPU speed.

Thank you for the Reply.
I am working on Removing the kernel modules and i will let you know once I get the Result.
One thing I want to tell you that we are using i.MX6ULL Cortex™-A7 (Single core) RAM: 256MB Processor speed=528MHz.Does the modification of uboot from 396MHz to 792MHz will work?

Thank you for the Reply lkoziarz
systemd-analyze blame
5.745s systemd-logind.service
4.722s ofono.service
4.187s systemd-udev-trigger.service
1.695s user@0.service
1.279s iptables.service
5.745s systemd-logind.service
4.722s ofono.service
4.187s systemd-udev-trigger.service
1.695s user@0.service
1.279s iptables.service
1.274s systemd-journald.service
898ms systemd-backlight@backlight:backlight.service
897ms sys-kernel-debug.mount
889ms kmod-static-nodes.service
874ms tmp.mount
861ms dev-mqueue.mount
785ms systemd-udevd.service
720ms systemd-update-utmp.service
703ms systemd-remount-fs.service
703ms systemd-modules-load.service
647ms systemd-networkd.service
647ms connman.service
531ms rpcbind.service
441ms wpa_supplicant.service
388ms systemd-tmpfiles-setup.service
374ms sys-fs-fuse-connections.mount
342ms sys-kernel-config.mount
339ms systemd-update-utmp-runlevel.service
313ms user-runtime-dir@0.service
303ms systemd-sysctl.service
301ms systemd-tmpfiles-setup-dev.service
276ms systemd-journal-flush.service
192ms systemd-random-seed.service
161ms var-volatile.mount
156ms systemd-user-sessions.service
103ms systemd-tmpfiles-clean.service
And we tried with turn off console logging during boot it will reduce 3 seconds.And we want to know where are the bootup information messages will store?
we checked with var/log/ but there is no such file to store the bootup information.

Yes, CPU spped for Colibri iMX6ULL 256MB is limited to 528MHz. What CPU speed is reported by U_Boot on your module?

CPU speed is reported as 396 MHz by U_Boot.

Try systemd-analyze blame to see why your userspace is taking so long.
Kernel will also boot faster if you turn off console logging during boot (add quiet to bootargs)

Yes, this is correct. iMX6ULL is switched to full speed once the booting process is finished.

HI @Gowthami

Is your issue solved now?

Best regards,
Jaski

Thank you for the reply @jaski.tx …Why the CPU is taking 396MHz initially ?

@jaski.tx No… we are trying to reduce the IMX6ull boot time…Initially it is taking 48 sec to load the application.we tried with disable the services which we are not using and also disable the boot messages…Now it is taking 35 seconds to load the application.But the issue is Initially uboot takes around 8sec to 10sec after power on to start kernel…If the uboot takes less time then the boot time also reduced… Any other solutions for the issue kindly suggest.

Because it was chosen to have a frequency for all different iMX6ULL SoCs variant at the start-up. What is your application? You might need to switch to a different SoM.

Thanks for your Input.
Could you share your kernel config and all the services you disabled?
Further did you disable the console output?

@jaski.tx This SOM is used for medical device which gathers information from Serial communication, process them and display onto the LCD.

Does this mean this is the limit of the SOM ? There can be no improvements for boot time optimization ?

@jaski.tx
Running Services

3.624s systemd-udev-trigger.service
1.312s systemd-journald.service
1.061s systemd-hostnamed.service
1.024s systemd-backlight@backlight:backlight.service
823ms systemd-udevd.service
806ms sys-kernel-debug.mount
802ms dev-mqueue.mount
802ms kmod-static-nodes.service
780ms tmp.mount
724ms connman.service
666ms dev-sdd1.device
633ms systemd-remount-fs.service
620ms systemd-networkd.service
619ms systemd-modules-load.service
556ms systemd-update-utmp.service
514ms sys-fs-fuse-connections.mount
479ms wpa_supplicant.service
474ms rpcbind.service
462ms sys-kernel-config.mount
412ms systemd-update-utmp-runlevel.service
380ms systemd-tmpfiles-setup.service
372ms iptables.service
352ms systemd-sysctl.service
303ms systemd-journal-flush.service
302ms systemd-tmpfiles-setup-dev.service
200ms systemd-random-seed.service
161ms var-volatile.mount
82ms systemd-user-sessions.service

Disabled Service

systemd-timesyncd.service

systemd-logind.service

ofono.service

ip6tables.service

YES we disabled the console output also.

@jaski.tx can you send me the mail id to send the kernel config and https://share.toradex.com/2z5ji8zu6quj9ac not uploading the file.

@jaski.tx kernel config

HI @Gowthami

Thanks for the kernel config. I will have a look and come back to you.

Best regards,
Jaski

Hello @jaski.tx

Any updates on this ?