Forums » Software Development »
Getting the Splash Screen to Appear Earlier
Added by Holden Wozniak about 1 hour ago
Good morning,
I am finding that the psplash screen comes up very late while the kernel is initializing to the point where it sometimes does not appear because it is started as the kernel boot is completed.
After running systemd-analyze I found that /dev/fb0 is created very late in the kernel initialization
root@mitysom-am62ax:~# systemd-analyze critical-chain psplash-start.service
The time when unit became active or started is printed after the "@" character.
The time the unit took to start is printed after the "+" character.
psplash-start.service +105ms
`-dev-fb0.device @5.487s
What I have tried doing so far is to build the display drivers into the kernel instead of modules but it does not appear to have much effect on the time the splash screen appears
root@mitysom-am62ax:~# zcat /proc/config.gz | grep -E "TIDSS|KMS_HELPER|PANEL_SIMPLE"
CONFIG_DRM_KMS_HELPER=y
CONFIG_DRM_PANEL_SIMPLE=y
CONFIG_DRM_TIDSS=y
root@mitysom-am62ax:~# dmesg | grep -E "tidss|drm|fb0"
[ 1.772009] systemd[1]: Expecting device /dev/fb0...
[ 1.886444] systemd[1]: Starting Load Kernel Module drm...
[ 2.017347] systemd[1]: modprobe@drm.service: Deactivated successfully.
[ 2.018395] systemd[1]: Finished Load Kernel Module drm.
[ 4.427148] [drm] Initialized tidss 1.0.0 20180215 for 30200000.dss on minor 0
[ 4.482835] tidss 30200000.dss: [drm] fb0: tidssdrmfb frame buffer device
I was wondering if anyone ever looked into this and had any insight on how to bring up the display quicker? I found U-boot SPL takes ~2-3 seconds to get through and U-boot takes another ~2 seconds eith the bootdelay set to -2 to skip the prompt altogether. With the delay in /dev/fb0 being created the splash screen does not show up for ~10 seconds. Some ti documentation I'm looking at now seems to suggest a framebuffer can be created before the kernel starts and then handed off make the display earlier sooner? https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/latest/exports/docs/linux/Foundational_Components/U-Boot/UG-Splash-Screen.html
Thanks,
Holden
Replies (3)
RE: Getting the Splash Screen to Appear Earlier - Added by Jonathan Cormier 30 minutes ago
There was some change I think around TI's SDK 9, that greatly delayed the /dev/fb0 creation. I didn't dig into it at the time, but I agree its not ideal.
I do think that getting the u-boot splash screen support working would make the most sense. I integrated some of TI's changes when they started adding the feature but haven't tried testing it to see what parts I'm missing to get it fully supported. I'm probably only missing a few small changes.
If your looking into it, i'd be happy to review and integrate any fixes you find. If you'd like me to look into it, we just need to look into getting it on my schedule as I have a few urgent tasks i'm working on.
RE: Getting the Splash Screen to Appear Earlier - Added by Holden Wozniak 14 minutes ago
Sounds good. Getting an early image on the display is one of the last big things I need to do to get our device in a good state so I'll be looking at it a lot this week. My initial plan was to just try and get the framebuffer created by U-boot that the Linux kernel can use as soon as it's started but if it ends up not being too much more to get the splash screen started in U-boot then that would be even better.
I'll leave updates here once I get some things functional
RE: Getting the Splash Screen to Appear Earlier - Added by Jonathan Cormier 8 minutes ago
Holden Wozniak wrote in RE: Getting the Splash Screen to Appear Earlier:
Sounds good. Getting an early image on the display is one of the last big things I need to do to get our device in a good state so I'll be looking at it a lot this week. My initial plan was to just try and get the framebuffer created by U-boot that the Linux kernel can use as soon as it's started but if it ends up not being too much more to get the splash screen started in U-boot then that would be even better.
From my read of their doc and my own experience, usually getting u-boot to show the splash screen is the first step. Getting u-boot to gently pass that frame buffer to linux (so the screen doesn't flicker when linux takes over) is trickier and usually happens later, though they do document how to do it.
I'll leave updates here once I get some things functional
Sounds good