关于linuxfb_framebuffer 设备驱动.pdf

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
草稿V2.4.0 第一章 framebuffer设备驱动 by good02xaut (email:good02xaut@) 1.1 framebuffer预备知识 framebuffer设备即帧缓冲设备 (简写fb)提供了显示接口的抽象描述。他 同时代表着显示接口的存储区,应用程序通过定义好的函数访问,不需要知道底 层的任何操作。 Framebuffer驱动使用的设备节点,通常位于/dev 目录,如/dev/fb*.从用 户角度看,fb设备和其他/dev下面的设备类似:普通的字符设备,主设备号29, 次设备号定义fb的索引。 通常,使用如下方式 (前面的数字表示次设备号) 0=/dev/fb0 第一个fb设备 1=/dev/fb1 第二个fb设备 考虑到向下兼容,可以创建符号链接: /dev/fb0current -fb0 /dev/fb1current -fb1 fb也是一种普通的内存设备,可以读写其内容。例如,屏幕抓屏: cp /dev/fb0myfile fb虽然可以像内存设备(/dev/mem)一样,对其read,write,seek 以及mmap。 但区别在于fb使用的不是整个内存区,而是显存部分。 通过 ioctl可以读取或设定fb设备参数,很重要的一点,颜色表(cmap)也 要通过Ioctl设定。查看linux/fb.h就知道有多少ioctl应用以及相关数据结 构。这里给出摘要: - 你可以获取设备一些不变的信息,如设备名,屏幕的组织(平面,象素,...) 对应内存区的长度和起始地址。 - 也可以获取能够改变的信息,例如位深,颜色格式,时序等。如果你改变这 些值,驱动程序将对值进行优化,以满足设备特性(如果你的设定,设备不支持, 返回EINVAL)。 - 你也可以获取或设定部分颜色表。 所有这些特性让应用程序十分容易的使用 framebuffer 设备。Xserver 可 以使用/dev/fb*而不需知道硬件的寄存器是如何组织的。XF68_FBDev是一个用 于位映射 (单色)Xserver,唯一要做的就是在应用程序在相应的位置设定是否 显示。 在新内核中,帧缓冲设备可以工作于模块中,允许动态加载。这类驱动必须 调用register_framebuffer()在系统中注册。 1.1.1 视频模式 之所以对视频模式进行介绍,因为在后面的一些数据结构中,会出现对视频 模式的参数描述。 CRT显示器用3个电子枪轰击磷粉完成颜色的显示。电子枪必须完成从左到 1 草稿V2.4.0 右的水平扫描和从上至下的垂直扫描。改变枪的电压,对应显示的颜色可以不同。 当电子枪完成一行扫描重新回到下一行的开始,被称为 “水平折回”。当一屏幕 全部扫描完毕,电子枪从底部回到左上角,被称为 “垂直折回”。在折回的途中 电子枪是关闭的。 电子枪打点的移动速度取决于点时钟。如果点时钟是 28.37516 MHz,打一 个点需要35242 ps。 1/(28.37516E6Hz)=35.242E-9s 如果屏幕分辨率是640x480,那么一行的时间是: 640*35.242E-9s =22.555E-6s 然而水平折回也是需要时间的,通常272个点时钟单位,因此扫描一行需要 的时间就是: (640+272)*35.242E-9s =32.141E-6s 由此得到水平扫描的频率是31KHz: 1/(32.141E-6s)=31.113E3Hz 若屏幕有480行,加上垂直折回时间49个行时钟单位,刷新一屏所需时间: (480+49)*32.141E-6s =17.002E-3s 由此得到垂直扫描的频率是59Hz: 1/(17.002E-3s)=58.815Hz

文档评论(0)

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

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

1亿VIP精品文档

相关文档