当前位置: 首页 > news >正文

ubuntu12.04开启Framebuffer

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

五. 参考文档

http://coffeee.iteye.com/blog/1285180

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

http://blog.csdn.net/gogor/article/details/5848352

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

相关文章:

  • 软考--操作系统
  • 计算机数据结构之——什么是艺术品?
  • 开发人员如何了解用户和需求
  • list 导出为excel
  • 软考--系统开发与软件工程
  • 分布式设计与开发(六)------让memcached分布式
  • poj 2421 Constructing Roads 解题报告
  • 发布一个基于 Reactor 模式的 C++ 网络库
  • 定长度结构体数组、不定长度结构体指针初始化
  • 软考--数据库SQL
  • C++默认参数不能是一个引用
  • 【转】一致性哈希算法
  • 面试时,我说谎了——Leo网上答疑44
  • 转载百度百科上的强回复,关于spring的IOC和DI
  • CakePHP 编程笔记
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • cookie和session
  • JSDuck 与 AngularJS 融合技巧
  • js操作时间(持续更新)
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Python学习笔记 字符串拼接
  • spring security oauth2 password授权模式
  • 从重复到重用
  • 跨域
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端技术周刊 2019-01-14:客户端存储
  • 使用 Docker 部署 Spring Boot项目
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • Spring Batch JSON 支持
  • ​学习一下,什么是预包装食品?​
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)ssm高校实验室 毕业设计 800008
  • (转)Mysql的优化设置
  • .NET 8.0 中有哪些新的变化?
  • .Net Web项目创建比较不错的参考文章
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NetCore部署微服务(二)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET企业级应用架构设计系列之技术选型
  • .NET正则基础之——正则委托
  • /bin/bash^M: bad interpreter: No such file or directory
  • /boot 内存空间不够
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [.net] 如何在mail的加入正文显示图片
  • [hdu4622 Reincarnation]后缀数组
  • [LeetCode] Longest Common Prefix 字符串公有前序
  • [Leetcode] 寻找数组的中心索引
  • [NHibernate]条件查询Criteria Query
  • [nlp] id2str的vocab.json转换为str2id