您的位置:首页 > Web前端

ubuntu12.04开启Framebuffer

2013-09-08 20:39 295 查看
一.framebuffer概述

Framebuffer在Linux中是作为设备来实现的,它是对图形硬件的一种抽象,代表着显卡中的帧缓冲区(Framebuffer)。通过Framebuffer设备,上层软件可以通过一个良好定义的软件接口访问图形硬件,而不需要关心底层图形硬件是如何工作的,比如,上层软件不用关心应该如何读写显卡寄存器,也不需要知道显卡中的帧缓冲区从什么地址开始,所有这些工作都由Framebuffer去处理,上层软件只需要集中精力在自己要做的事情上就是了。
Framebuffer的优点在于它是一种低级的通用设备,而且能够跨平台工作,比如Framebuffer既可以工作在x86平台上,也能工作在PPC平台上,甚至也能工作在m68k和SPARC等平台上,在很多嵌入式设备上Framebuffer也能正常工作。诸如Minigui之类的GUI软件包也倾向于采用Framebuffer作为硬件抽象层(HAL)。
从用户的角度来看,Framebuffer设备与其它设备并没有什么不同。Framebuffer设备位于/dev下,通常设备名为fb*,这里*的取值从0到31。对于常见的计算机系统而言,32个Framebuffer设备已经绰绰有余了(至少作者还没有看到过有32个监视器的计算机)。最常用到的Framebuffer设备是/dev/fb0。通常,使用Framebuffer的程序通过环境变量FRAMEBUFFER来取得要使用的Framebuffer设备,环境变量FRAMEBUFFER通常被设置为”/dev/fb0”。
从程序员的角度来看,Framebuffer设备其实就是一个文件而已,可以像对待普通文件那样读写Framebuffer设备文件,可以通过mmap()将其映射到内存中,也可以通过ioctl()读取或者设置其参数,等等。最常见的用法是将Framebuffer设备通过mmap()映射到内存中,这样可以大大提高IO效率。

二.开启framebuffer

1) $ sudo gedit /etc/initramfs-tools/modules
加入如下两行内容
fbcon
vesafb
2) $ sudo gedit /etc/modprobe.d/blacklist-framebuffer.conf
将里面的vesafb这两行给注释掉。
3) $ sudo update-initramfs -u 更新initramwfs文件。
4) 重启系统
三.设定默认分辨率和颜色位数
1) $ sudo gedit /etc/default/grub
2) 在GRUB_CMDLINE_LINUX_DEFAULT = “quiet splash” 后面增加vga参数。

比如: GRUB_CMDLINE_LINUX_DEFAULT = “quiet splash vga=788” (其实这里可以不设置,根据环境运行的需要,通过fbset工具设置分辨率和色深)

vga参数和分辨率的对照表为
640x480 800x600 1024x768 1280x1024
8bit 769 771 773 775
15bit 784 787 790 793
16bit 785 788 791 794
24bit 786 789 792 795
3)$ sudo grub-mkconfig
4)$ sudo update-grub

5)重启系统

四. 其他设置

开机后,fb0设备可能默认为不可访问。输入命令 $ chmod 775 /dev/fb0 可以打开fb0设备。

fbset是用来设置framebuffer的工具,包括设置分辨率,色深等信息。

$ sudo apt-get install fbset

安装好之后,运行 $ fbset 显示如下信息

mode "1366x768"
geometry 1366 768 1366 768 32
timings 0 0 0 0 0 0 0
accel true
rgba 8/16,8/8,8/0,0/0
endmode

则表示framebuffer可以运行。

通过 $ fbset --help 查看fbset的设置参数。

例如:设置分辨率和色深 $ fbset -xres 800 -yres 600 -depth 16

五. 参考文档

/article/4235059.html

http://tldp.org/HOWTO/Framebuffer-HOWTO/

http://blog.csdn.net/gogor/article/details/5848352
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: