There are two places where screen splashing takes place in a typical
The first place where screen splashing happens is within u-boot itself.
A modified u-boot for Beagleboard typically contains the splash image
within the u-boot image itself. A patch to do that is here:
Another way I have seen splashes done under u-boot is to program the
image into a well-known flash memory area, and then use a command within
u-boot to copy that memory to the framebuffer during startup. I don't
know if anyone is doing that with Beagleboards or not. It would in fact
be better to do it this way, because then you could change the splash
image without rebuilding u-boot.
If the Beagleboard boots into Angstrom, then the psplash utility is used
to post an initial splash image and to provide the progress bar
updates. The details on how that all works are still not quite clear to
me, so I'll post them later. For those who want to investigate on their
own, the psplash source code is here:
I think Angstrom probably modifies that source code somewhat, to
integrate it into their SysV-style initialization procedure. In
particular, there is an /etc/init.d/psplash, and a file
/etc/default/splashfuncs contains helper macros for updating the
After browsing the source code for the upstream psplash, it looks like
the splash screen is compiled into the psplash executable. So the
Angstrom guys modified the code at least in order to change the splash
image from the one used by Poky Linux (which is what psplash mainline
sources appear to enclose by default).
Thanks you Bill for this sumary on splash screen.
But maybe I want to add this information :
it seems that the kernel linux can don't initialize the DSS if U-boot
already did it correctly.
So the U-Boot splash will not be removed after the kernel uncompress
(only 2 or 3 seconde of life time.... poor U-Boot splash)
There is a documentation in the U-boot doc : http://www.denx.de/wiki/DULG/LinuxSplashScreen
And also, when navigating in the kernel menu config, I found something
equivalent, I don't remember clearly where....
I hope this will help,
I am trying to make a bootscreen or splashscreen for my new system. I
used the dss_init(void) function from
to copy the logo from my company to framebuffer in u-boot.
Unfortunately the kernel initializes a new framebuffer and the logo gets
My idea is to write some extra code into the DSS driver that copies the
logo from u-boot's framebuffer to the new initialized one.
Can anyone tell me where especially in which function the new
framebuffer gets initialized?
Actually another problem arose during kernel executed. The framebuffer
from u-boot got overwritten by kernel (cracy pixel on the display). The
u-boot's dss_init() allocates the framebuffer at 0x80500000, which is
5MB after memory start and about 3MB after the kernel's area in memory.
Does someone know what memory region kernel uses when executed? Maybe it
is possible to change u-boot's framebuffer region to a memory area,
which will not be overwritten by kernel.
Greetings from the cold Bavarian countryside