网站大量收购闲置独家精品文档,联系QQ:2885784924

framebuffer 简介.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
framebuffer 简介

framebuffer 简介 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。Linux 工作在保护模式下, 所以用户态进程是无法象 DOS 那样使用显卡 BIOS 里提供的中断调用来实现直接写屏, Linux 抽象出 FrameBuffer 这个设备来供用户态进程实现直接写屏。Framebuffer 机制模 仿显卡的功能,将显卡硬件结构抽象掉,可以通过 Framebuffer 的读写直接对显存进行操 作。用户可以将 framebuffer 看成是显示内存的一个映像,将其映射到进程地址空间之后, 就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的。 用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由 framebuffer 设备驱 动来完成的。 framebuffer 本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池.CPU 将 运算后的结果放到这个水池,水池再将结果流到显示器.中间不会对数据做处理. 应用程序也 可以直接读写这个水池的内容.在这种机制下,尽管 framebuffer 需要真正的显卡驱动的支 持,但所有显示任务都有 CPU 完成,因此 CPU 负担很重. 帧缓冲驱动应用广泛,在 linux 的桌面系统中,Xwindow 服务器就是利用帧缓冲进行窗口 的绘制。尤其是通过帧缓冲可显示汉字点阵,成为Linux 汉化的唯一可行方案。 在开发者看来,FrameBuffer 本质上是一块显示缓存,往显示缓存中写入特定格式的数据就 意味着向屏幕输出内容。所以说 FrameBuffer 就是一块白板。例如对于初始化为 16 位色 的 FrameBuffer 来说, FrameBuffer 中的两个字节代表屏幕上一个点,从上到下,从左 至右,屏幕位置与内存地址是顺序的线性关系。 帧缓存可以在系统存储器(内存的任意位置,视频控制器通过访问帧缓存来刷新屏幕。 帧 缓存也叫刷新缓存 Framebuffer 或 refreshbuffer, 这里的帧(frame是指整个屏幕范围。 帧缓存有个地址,是在内存里。我们通过不停的向 frame buffer 中写入数据,显示控制器 就自动的从 frame buffer 中取数据并显示出来。全部的图形都共享内存中同一个帧缓存。 CPU 指定显示控制器工作,则显示控制器根据CPU 的控制到指定的地方去取数据和指令, 目前的数据一般是从显存里取,如果显存里存不下,则从内存里取,内存也放不下,则从 硬盘里取,当然也不是内存放不下,而是为了节省内存的话,可以放在硬盘里,然后通过 指 令控制显示控制器去取。帧缓存 FrameBuffer 里面存储的东西是一帧一帧的, 显卡会不 停的刷新 FrameBuffer, 这每一帧如果不捕获的话, 则会被丢弃,也就是说是实时的。这 每一帧不管是保存在内存还是显存里, 都是一个显性的信息, 这每一帧假设是 800x600 的分辨率, 则保存的是 800x600 个像素点,和颜色值。 如何启用 framebuffer 首先确认内核是否支持 framebuffer ,查看 /proc/fb 文件是否存在,存在则说明支持,否 则,说明不支持。其次查看 framebuffer 设备是否已激活,若 /dev/fbx 文件存在,则说明 已经激活;否则说明没有激活。 在系统启动时可通过向 kernel 传送 vga=mode-number 的参数来激活 FrameBuffer 设 备,如 vga=0x314,将会启动 800*600*16bpp 模式要 linux 缺省激活 framebuffer 设备, 需要将/etc/grub.conf 改成如下形式: #grub.confgeneratedbyanaconda # # Notethatyoudonothaveto rerungrubaftermakingchangestothisfile # NOTICE: Youdonothavea/boot partition. Thismeansthat # allkernelandinitrdpathsarerelativeto/,eg. # root(hd0,0 # kernel/boot/vmlinuz-version roroot=/dev/sda1 # initrd/boot/initrd-version.img #boot=/dev/sda default=0 timeout=10 splas

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档