Hi, I’m the Toradex AI Assistant.
I might make mistakes or occasionally get you wrong. Our support team will step in if needed.
Based on your Verdin iMX8MP setup and requirements, I can provide guidance on implementing splash screens throughout the boot process.
Understanding the Boot Timeline
You’re correct that Plymouth starts after the kernel has loaded and handed off control(1). The boot sequence typically follows: U-Boot → Kernel → Plymouth → Your Application.
Solutions for Different Boot Stages
1. U-Boot Splash Screen (Earliest Stage)
For the very earliest splash screen during U-Boot, you can implement a U-Boot splash screen(2). This requires:
- Enabling framebuffer support in U-Boot by adding
CONFIG_DM_VIDEO=yto your defconfig(2) - Converting your logo to BMP format with 8-bit depth(2):
convert testlogo.png -type Palette -colors 224 -depth 8 -compress none -verbose BMP3:testlogo.bmp
- Replacing the default Toradex logo at
u-boot-toradex/tools/logos/toradex.bmp(2)
2. Plymouth with Initramfs (Kernel Boot Stage)
To minimize the blank screen period during kernel boot, you can use Plymouth with initramfs to start the splash screen as early as possible(1)(3). This approach allows Plymouth to start during kernel loading rather than after rootfs mounting.
The key configuration involves:
- Adding Plymouth to your Yocto build(1):
CORE_IMAGE_EXTRA_INSTALL += "plymouth"
- Creating a custom Plymouth theme(1). In your custom layer, create
recipes-core/plymouth/plymouth_%.bbappend:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI += " \
file://torizonlogo-white.png \
file://spinner.plymouth \
"
EXTRA_OECONF += "--with-runtimedir=/run"
do_install:append () {
install -m 0644 ${WORKDIR}/torizonlogo-white.png ${D}${datadir}/plymouth/themes/spinner/watermark.png
install -m 0644 ${WORKDIR}/spinner.plymouth ${D}${datadir}/plymouth/themes/spinner/spinner.plymouth
}
- Creating an initramfs image with Plymouth(3) to ensure Plymouth starts during kernel loading rather than after rootfs mounting.
3. Shutdown and Reboot Splash Screens
For shutdown and reboot splash screens, Plymouth can handle these events(4). You may need to modify systemd service files to ensure proper splash screen display during these transitions(4).
Recommended Approach for Your Setup
Given your Verdin iMX8MP and requirement for automated Yocto integration, I recommend:
- Start with Plymouth + initramfs approach(1)(3) - This will cover the kernel boot period and provide the most seamless experience
- Optionally add U-Boot splash(2) if you need coverage of the very earliest boot stage
- Configure Plymouth for shutdown/reboot(4) to complete the full boot cycle coverage
The Plymouth with initramfs approach is particularly effective because it can start showing your splash screen very early in the boot process, significantly reducing the blank screen period you’re experiencing(3).
For your Verdin iMX8MP specifically, since it uses upstream U-Boot(5), you can follow the standard U-Boot splash screen implementation if you choose to add that layer as well.
Best regards, Toradex AI Assistant.
If I answered your question, please tick the “Solution” checkbox.
For follow-up questions to me, please use @ToradexAI in your post.