linux fb设备驱动,关于linuxfb_framebuffer 设备驱动.pdf

草稿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设定。查看就知道有多少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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值