博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ubuntu12.04开启Framebuffer
阅读量:4680 次
发布时间:2019-06-09

本文共 1863 字,大约阅读时间需要 6 分钟。

一.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

五. 参考文档

转载于:https://www.cnblogs.com/cainiaoaixuexi/p/3308772.html

你可能感兴趣的文章
QT 制作串口调试小助手----(小白篇)
查看>>
前端MVC实践之hellorocket——by张舒彤
查看>>
OptimalSolution(2)--二叉树问题(3)Path路径问题
查看>>
IPC 之 Messenger 的使用
查看>>
macos 下usb键盘问题.
查看>>
SQL函数学习(十六):STUFF()函数
查看>>
Apache Hadoop 和Hadoop生态圈
查看>>
Ctrl+Enter 选中文本提交
查看>>
android WIFI
查看>>
常用的匹配正则表达式和实例
查看>>
小组成员及其git链接
查看>>
SQL case when else
查看>>
MVc Identity登陆锁定
查看>>
cdn连接失败是什么意思_关于CDN的原理、术语和应用场景那些事
查看>>
ultraedit26 运行的是试用模式_免费试用U盘数据恢复工具 – 轻松找回U盘丢失的各种数据!...
查看>>
plsql 查询存储过程死锁语句_插入语句/存储过程死锁
查看>>
bootstrap table 收缩_bootstrap-table方法之:expandRow-collapseRow,展开或关闭当前行数据...
查看>>
jsp跳转到本身页面_五种JSP页面跳转方法详解
查看>>
mysql r_mysql:’r’是什么意思?
查看>>
无法加载 mysql 扩展_请检查您的 php 配置. - 文档_无法载入 mysql 扩展 请检查 PHP 配置...
查看>>