Difference between revisions of "Framebuffer"

From ArmadeusWiki
Jump to: navigation, search
(Kernel configuration)
(Kernel configuration)
Line 19: Line 19:
 
         [*]  Support for console on virtual terminal
 
         [*]  Support for console on virtual terminal
 
</pre>
 
</pre>
* activates:
+
* '''on APF9328''' activates:
 
<pre class="config">
 
<pre class="config">
 
  Device Drivers   
 
  Device Drivers   
Line 25: Line 25:
 
         <*> Support for frame buffer devices  --->
 
         <*> Support for frame buffer devices  --->
 
             <*>  Motorola i.MX LCD support
 
             <*>  Motorola i.MX LCD support
 +
</pre>
 +
* '''on APF27''' activates:
 +
<pre class="config">
 +
Device Drivers 
 +
    ---> Graphics support 
 +
        <*> MXC Framebuffer support (Freescale driver)
 
</pre>
 
</pre>
 
* and choose your LCD in:
 
* and choose your LCD in:
Line 39: Line 45:
 
             <*> Framebuffer Console support
 
             <*> Framebuffer Console support
 
</pre>
 
</pre>
* deactivates VGA stuff & add some fonts, then choose Armadeus boot logo
+
* deactivates VGA stuff & add some fonts, then choose Armadeus boot logo:
 
<pre class="config">
 
<pre class="config">
 
  Device Drivers  --->  
 
  Device Drivers  --->  

Revision as of 08:00, 30 August 2010

On this page you will find usefull informations to have a working Linux Framebuffer on your board.

Introduction

Linux Framebuffer is the lowest level (standardized) API for userspace programs to access video capabilities of the system you're running on. It allows you to directly "draw" your graphics in the video memory. Some higher level librairies can be put on top of the Framebuffer for more portability: SDL, Qt, GTK, etc...

Kernel configuration

Note Note: Framebuffer is already configured (for Sharp LQ043 LCD) in standard/default Armadeus kernel image.

Following instructions are only given as references or if you want to change the default LCD:

  • launch Linux kernel configuration:
 [armadeus]$ make linux26-menuconfig
  • activates:
 Device Drivers  
    ---> Character devices  ---> 
        [*] Virtual terminal
        [*]   Support for console on virtual terminal
  • on APF9328 activates:
 Device Drivers  
    ---> Graphics support  
        <*> Support for frame buffer devices  --->
             <*>   Motorola i.MX LCD support
  • on APF27 activates:
 Device Drivers  
    ---> Graphics support  
        <*> MXC Framebuffer support (Freescale driver)
  • and choose your LCD in:
 Device Drivers  
    ---> Graphics support  
        ---> LCD Panel (xxxx)  --->
  • activates:
 Device Drivers  
    ---> Graphics support  
        ---> Console display driver support
            <*> Framebuffer Console support
  • deactivates VGA stuff & add some fonts, then choose Armadeus boot logo:
 Device Drivers  ---> 
    Graphics support  ---> 
        [*] Bootup logo
        [*]   224-color Armadeus Linux logo
  • recompiles the kernel:
 [armadeus]$ make linux26
  • now to have console on serial port, you will have to add "console=ttySMX0,115200n8" to your boot parameters
  • reflash kernel image on your board and enjoy ! (you should see Linux logo on screen at startup)

Userland

  • Framebuffer device can be accessed with /dev/fb0.
  • You can activate some tools from the Buildroot's menuconfig:
 $ make menuconfig
 Package Selection for the target
 ...
     [ ] fbtest
 ...
    ---> Graphic libraries and applications (graphic/text)  
        ---> fbset/fbv/fbgrab
Note Note: As explain on LinuxInstall page, to compile fbtest, libnetpbm10-dev must be installed in your host system


  • For example to grab a snapshot of the framebuffer:
# fbgrab /tmp/snapshot.png

Tips

  • To stop blinking cursor:
 # echo 0 > /sys/class/graphics/fbcon/cursor_blink
  • To make it blinking again:
 # echo 1 > /sys/class/graphics/fbcon/cursor_blink
  • To grab a screenshot of a running Framebuffer application, use FBGrab
  • To enter in Framebuffer sleep mode:
 # echo 1 > /sys/class/graphics/fb0/blank
  • To leave Framebuffer sleep power mode:
 # echo 0 > /sys/class/graphics/fb0/blank
  • To set sleep mode entering time (where X is a time in minute; 0 = never):
 # echo -e '\033[9;X]' > /dev/tty1    (from serial console)

or

 # echo -e '\033[9;X]'    (from framebuffer console)

or to set it at each boot, use /etc/inittab:

 tty1::sysinit:echo -e '\033[9;X]'

Other usefull ESC sequences

  • To (definitly) hide cursor:
 # echo -e '\033[?17;0;0c' > /dev/tty1    (from serial console)

or

 # echo -e '\033[?17;0;0c'    (from framebuffer console)
  • inverse screen on:
 # echo -e '\033[?5h' > /dev/tty1
  • inverse screen off:
 # echo -e '\033[?5l' > /dev/tty1

Links