From: Robert Schwebel <r.schwebel@pengutronix.de>
To: linux-embedded@vger.kernel.org
Cc: Juergen Beisert <jbe@pengutronix.de>,
Sascha Hauer <sha@pengutronix.de>,
Wolfram Sang <wsa@pengutronix.de>
Subject: Re: flicker free booting
Date: Fri, 31 Jul 2009 17:53:52 +0200 [thread overview]
Message-ID: <20090731155352.GA29245@pengutronix.de> (raw)
In-Reply-To: <20090731152617.GW29245@pengutronix.de>
On Tue, Jun 02, 2009 at 08:35:35PM -0700, Greg KH wrote:
> On Tue, Jun 02, 2009 at 11:34:52PM +0200, Robert Schwebel wrote:
> > Could flickerfree-bootsplash be a topic? Or is that completely
> > pushed into the userspace these fastboot days?
>
> We have that working today, no in-kernel work needed other than the
> already-present KMS stuff. See the recent Moblin images for proof of
> this.
Well, I assume that the issue you've addressed is being flicker free
between the kernel and x.org; what I mean is flicker-free even with the
bootloader in mind.
What we want to address is another problem which is present on almost
all display-enabled SoC-type embedded hardware. This kind of hardware is
BIOS-free and is booted from an embedded bootloader like u-boot. These
processors are often pretty slow, being in the 200 MHz ARM926 league.
The boot scenario on these boxes looks like this:
1) power-on
2a) on NAND-only systems, pre-bootloader is fetched from NAND block
2b) bootloader starts from NAND or NOR flash
3) the bootloader fetches Linux from NAND/NOR flash
4) kernel starts
5) userspace starts
6) application starts (i.e. app against qt+dfb or gtk+dfb)
These SoCs are usually built into "devices" which don't look like PCs;
think of it as mobile phones (although our applications are usually more
industry-style, like machine controllers, measurement systems etc). Most
industry applications have been built with microcontrollers + 2x16 alpha
numeric displays in the last generation; this type of hardware has a
boot time (from power-on to full operation) of something like 0.5 s.
So what I would like to see is this:
a) power on
b) almost immediately (< 1s) a splash screen appears
c) optionally be able to do some animation, progress bar etc
d) application appears (instantanously or by fading)
At the moment, we do this by using random hacks in the kernel, which is
pretty bad. So what I'm searching for is a clean API which may be
accesptable form the Linux mainline.
Here's a proposal from my kernel team:
- u-boot initializes framebuffer on some <address> + shows image
- kernel commandline: mem=127MB framebuffer=<num>:<address>:<size>
The framebuffer is reserved at the given address (i.e. 1 MB
at the upper end of the memory, so we have to reduce the
overall memory available for Linux)
- kernel driver recognizes that the framebuffer was already set up and
skips the initialisation step (which would otherwhise result in
flicker)
A second step could be:
- Have this initial framebuffer as /dev/fb0 (mem at the end of RAM)
- In order to avoid flicker, the driver sets up a 2nd framebuffer,
in dynamically allocated memory -> /dev/fb1. This framebuffer
continues to display the splash image (or an animation). Switching
from fb0 -> fb1 is done during VSync.
- While the splash image is still visible in fb1, the application
starts, up to the point where it shows it's main screen. This usually
never works flicker-free, but we don't see it, as fb1 is visible.
- switch back to fb0 (during a VSync to avoid flicker)
- optionally discard fb1 ressources
On some hardware, the switch could be done by fading from fb1 to fb0
(i.e. on i.MX27 this should be possible).
Drivers which see the framebuffer= parameter would have to skip their
hardware initialisation step.
What do you think? Would something like this be acceptable? Other ideas?
rsc
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2009-07-31 15:53 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-02 15:22 Representing Embedded Architectures at the Kernel Summit James Bottomley
2009-06-02 17:29 ` Josh Boyer
2009-06-02 17:42 ` James Bottomley
2009-06-02 17:52 ` David VomLehn
2009-06-02 18:25 ` James Bottomley
2009-06-02 18:51 ` Josh Boyer
2009-06-02 19:30 ` Tim Bird
2009-06-02 20:37 ` [Ksummit-2009-discuss] " James Bottomley
2009-06-02 20:44 ` Bill Gatliff
2009-06-02 21:34 ` Robert Schwebel
2009-06-03 3:35 ` Greg KH
[not found] ` <20090731152617.GW29245@pengutronix.de>
2009-07-31 15:53 ` Robert Schwebel [this message]
2009-07-31 18:03 ` flicker free booting David VomLehn
2009-07-31 18:09 ` Robert Schwebel
2009-07-31 18:42 ` Bill Gatliff
2009-08-03 8:19 ` Sascha Hauer
2009-08-03 8:37 ` Geert Uytterhoeven
2009-07-31 18:46 ` Bill Gatliff
2009-07-31 19:48 ` Tim Bird
2009-07-31 19:51 ` Bill Gatliff
2009-07-31 20:05 ` Robert Schwebel
2009-08-01 1:26 ` Tim Bird
2009-07-31 19:25 ` Bill Gatliff
2009-08-01 14:25 ` Jamie Lokier
2009-06-03 0:03 ` [Ksummit-2009-discuss] Representing Embedded Architectures at the Kernel Summit David VomLehn
2009-06-03 0:52 ` Eric W. Biederman
2009-06-03 1:42 ` Steven Rostedt
2009-06-02 22:21 ` Jean-Christophe PLAGNIOL-VILLARD
2009-06-03 6:24 ` [Ksummit-2009-discuss] " Ralf Baechle
2009-06-10 23:13 ` Kumar Gala
2009-06-14 3:48 ` Grant Likely
2009-06-10 23:08 ` Kumar Gala
2009-06-02 17:29 ` Grant Likely
2009-06-02 17:45 ` David VomLehn
2009-06-02 18:46 ` Grant Likely
2009-06-02 17:48 ` James Bottomley
2009-06-03 12:17 ` Mark Brown
2009-06-04 18:18 ` Grant Likely
2009-06-02 21:10 ` Russell King
2009-06-02 21:16 ` Bill Gatliff
2009-06-02 21:18 ` Geert Uytterhoeven
2009-06-02 21:40 ` Robert Schwebel
[not found] ` <20090602214005.GL32630@pengutronix.de>
2009-06-02 21:48 ` Russell King
[not found] ` <10f740e80906021418i1d58f5eer940e7a8ec9fb8b9e@mail.gmail.com>
2009-06-03 7:07 ` [Ksummit-2009-discuss] " Ralf Baechle
2009-06-04 20:08 ` Grant Likely
[not found] ` <4A2596B4.3020309@billgatliff.com>
2009-06-04 20:15 ` Grant Likely
[not found] ` <3340601010994331832@unknownmsgid>
2009-06-04 20:24 ` Grant Likely
2009-06-03 6:53 ` [Ksummit-2009-discuss] " Ralf Baechle
2009-06-03 13:04 ` Catalin Marinas
2009-06-03 13:18 ` Josh Boyer
2009-06-03 13:45 ` Catalin Marinas
2009-06-03 14:11 ` Josh Boyer
2009-06-03 14:06 ` Jean-Christophe PLAGNIOL-VILLARD
2009-06-03 16:19 ` James Bottomley
2009-06-03 17:09 ` Russell King
2009-06-03 18:43 ` Andrew Morton
2009-06-03 19:01 ` James Bottomley
2009-06-04 3:11 ` David VomLehn (dvomlehn)
2009-06-04 3:24 ` Mike Frysinger
2009-06-04 9:23 ` Mel Gorman
2009-06-03 19:08 ` Catalin Marinas
2009-06-10 9:42 ` Thomas Petazzoni
2009-06-16 6:42 ` Mike Rapoport
2009-06-16 8:06 ` Mike Frysinger
2009-06-16 12:19 ` [Ksummit-2009-discuss] " Ralf Baechle
2009-06-17 4:26 ` H. Peter Anvin
2009-06-17 15:04 ` Ralf Baechle
2009-06-17 17:14 ` H. Peter Anvin
2009-06-16 16:06 ` Grant Likely
2009-06-16 18:18 ` Jamie Lokier
2009-06-16 19:28 ` Grant Likely
2009-06-16 20:07 ` Jamie Lokier
2009-06-16 20:10 ` Marcel Holtmann
2009-06-16 21:04 ` Grant Likely
2009-06-18 3:05 ` Paul Mundt
2009-06-17 14:31 ` Kumar Gala
2009-06-18 2:51 ` Paul Mundt
2009-06-19 2:59 ` Kumar Gala
2009-06-19 3:00 ` Paul Mundt
2009-06-19 7:53 ` Kumar Gala
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090731155352.GA29245@pengutronix.de \
--to=r.schwebel@pengutronix.de \
--cc=jbe@pengutronix.de \
--cc=linux-embedded@vger.kernel.org \
--cc=sha@pengutronix.de \
--cc=wsa@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).