[RFC] WIP: video: implement quick-n-dirty framebuffer console

Antony Pavlov antonynpavlov at gmail.com
Thu Jul 9 02:42:54 PDT 2015


On Thu, 9 Jul 2015 08:49:20 +0200
Sascha Hauer <s.hauer at pengutronix.de> wrote:

> Hi Antony,
> 
> On Wed, Jul 08, 2015 at 12:15:39PM +0300, Antony Pavlov wrote:
> > This patch realizes very simple framebuffer console for barebox.
> > Minimal ANSI/VT100 Escape Sequence parser is used to ignore color
> > change commands (based on GNU screen parser).
> > 
> > THere are several ANSI/VT100 parsers:
> > 
> >   * GNU screen (git://git.savannah.gnu.org/screen.git);
> >   * st - simple terminal (http://git.suckless.org/st);
> >   * or even mutt (https://github.com/karelzak/mutt-kz).
> 
> There's even one in barebox in drivers/serial/efi-stdio.c
> 
> > 
> > fbconsole mini-HOWTO
> > ====================
> > 
> > 1. compile sandbox barebox with
> > 
> >     CONFIG_VIDEO=y
> >     CONFIG_FBCONSOLE=y
> >     CONFIG_DRIVER_VIDEO_SDL=y
> > 
> > 2. run barebox
> > 
> > 3. test fbconsole
> > 
> >     fbconsole0.active=o
> 
> I gave it a try on real hardware. Works nice.
> 
> > 
> > TODO:
> > 
> >    * no visible cursor;
> 
> I couldn't resist and did some hacking on this. The cursor is visible
> now. Also I implemented more control characters and color support. I'll
> send an update patch shortly.
> 
> >    * FIXME: /dev/fb0 is hardcoded;
> >    * FIXME: drop blanckchar() dirty hack;
> >    * Sascha Hauer: character set should be prerendered for the actual framebuffer format
> >                    before printing a string.
> 
> Did I mention that ealier? I don't know if that's a good idea since with
> color support we would need quite some memory and I'm not sure if that
> would really speed up things.
> 
> I'd really love to have framebuffer console in barebox. I wasn't aware
> that this would be relatively straight forward to implement though. I'm
> willing to help working on this job so that we finally have a fbcon.
> 
> Maybe one first step is to simply merge the font so that the patches
> get smaller.

IMHO it is very reasonable to add simple tools and instruction for
font modifing. We even can add several fonts and select one of them
via Kconfig options as linux kernel does. There are some reasons
for that:

   * some people prefere another fonts (e.g. Terminus);
   * in Russia we need a font with cyrillic letters.

Also I prefere fix original font header file.
Here is an example. 

1. original font header file fragment:

+	/* 65 0x41 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x10, /* 00010000 */
+	0x38, /* 00111000 */
+	0x6c, /* 01101100 */
+	0xc6, /* 11000110 */
+	0xc6, /* 11000110 */
+	0xfe, /* 11111110 */
+	0xc6, /* 11000110 */
+	0xc6, /* 11000110 */
+	0xc6, /* 11000110 */
+	0xc6, /* 11000110 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+	0x00, /* 00000000 */
+

2. my version
+	/* 65 0x41 'A' */
+	0x00, /* ........ */
+	0x00, /* ........ */
+	0x10, /* ...#.... */
+	0x38, /* ..###... */
+	0x6c, /* .##.##.. */
+	0xc6, /* ##...##. */
+	0xc6, /* ##...##. */
+	0xfe, /* #######. */
+	0xc6, /* ##...##. */
+	0xc6, /* ##...##. */
+	0xc6, /* ##...##. */
+	0xc6, /* ##...##. */
+	0x00, /* ........ */
+	0x00, /* ........ */
+	0x00, /* ........ */
+	0x00, /* ........ */


-- 
Best regards,
  Antony Pavlov



More information about the barebox mailing list