草稿V2.4.0
1framebuffer设备即帧缓冲设备(简写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()在系统中注册。
之所以对视频模式进行介绍,因为在后面的一些数据结构中,会出现对视频
模式的参数描述。
CRT显示器用3个电子枪轰击磷粉完成颜色的显示。电子枪必须完成从左到草稿V2.4.0 2右的水平扫描和从上至下的垂直扫描。改变枪的电压,对应显示的颜色可以不同。 当电子枪完成一行扫描重新回到下一行的开始,被称为“水平折回”。当一屏幕
全部扫描完毕,电子枪从底部回到左上角,被称为“垂直折回”。在折回的途中
电子枪是关闭的。
电子枪打点的移动速度取决于点时钟。如果点时钟是28.37516MHz,打一
个点需要35242ps。
1/(28.37516E6Hz)=35.242E-9s
如果屏幕分辨率是640x480,那么一行的时间是:
640*35.242E-9s=22.555E-6s