- 23
- 0
- 约3.49万字
- 约 29页
- 2021-11-20 发布于福建
- 举报
framebuffer 驱动全篇
在后续的几篇里面会详细介绍如何编写一个显卡的驱动程序。
framebuffer device 在内核里面作为显卡驱动模型, 许多函数和数据结构都是特定, 正是这些
特定的东西为我们的编程提供了方便。
要开发 frame buffer device 驱动,你应该阅读 Source\Source\Documentation\fb 下面的说明文
件,三个重要文件 00-INDEX ,framebuffer.txt ,internals.txt ,其他文件都是针对具体显卡芯
片的说明了。
文件 00-INDEX 译文
文档 /documentation/fb 的索引文件。如果你对 frame buffer 设备有什么想法, mail :Geert
Uytterhoeven geert@
00-index 这个文件
framebuffer.txt frame buffer 设备介绍
internals.txtframe buffer 设备内部快速浏览
modedb.txt 关于视频模式的资料
aty128fb.txt 关于 ATI Rage128 显卡的 frame buffer 设备
clgenfb.txt 关于 Cirrus Logic 的显卡
matroxfb.txt 关于 Matrox 的显卡
pvr2fb.txt 关于 PowerVR 2 的显卡
tgafb.txt 关于 TGA (DECChip 21030 )显卡
vesafb.txt 关于 VESA 显卡
0.介绍
帧缓冲设备提供了显卡的抽象描述。 他同时代表了显卡上的显存, 应用程序通过定义好的接
口可以访问显卡,而不需要知道底层的任何操作。
该设备使用特殊的设备节点,通常位于 /dev 目录,如 /dev/fb*.
1.用户角度的 /dev/fb*
从用户的角度看,帧缓冲设备和其他位于 /dev 下面的设备类似。他是一个字符设备,通常
主设备号是 29 ,次设备号定义帧缓冲的个数。
通常,使用如下方式(前面的数字代码次设备号)
0 = /dev/fb0 Firstframe buffer
1 = /dev/fb1 Second frame buffer
...
31 = /dev/fb31 32nd frame buffer
考虑到向下兼容,你可以创建符号链接:
/dev/fb0current - fb0
/dev/fb1current - fb1
and so on...
帧缓冲设备也是一种普通的内存设备,你可以读写其内容。例如,对屏幕抓屏:
cp /dev/fb0 myfile
你也可以同时有多个显示设备,例如你的主板上出了内置的显卡还有另一独立的
显卡。对应的帧缓冲设备 (/dev/fb0 and /dev/fb1etc.) 可以独立工作。
应用程序如 X server 一般使用 /dev/fb0 作为默认的显示帧缓冲区。你可以自定
把某个设备作为默认的帧缓冲设备,设置 $FRAMEBUFFER 环境变量即可。在 sh/bash:
export FRAMEBUFFER=/dev/fb1
在 csh 中:
setenv FRAMEBUFFER /dev/fb1
设定后, X server 将使用第二个帧缓冲区设备。
2.程序员角度看 /dev/fb*
正如你所知,一个帧缓冲设备和内存设备类似 /dev/mem ,并且有许多共性。你可以
read,write,seek 以及 mmap() 。不同仅仅是帧缓冲的内存不是所有的内存区,而是显卡
专用的那部分内存。
/dev/fb* 也允许尽心 ioctl 操作,通过 ioctl 可以读取或设定设备参数。颜色映射表
也是通过 Ioctl 设定。查看 就知道有多少 ioctl 应用以及相关数据结构。
这里给出摘要:
-
原创力文档

文档评论(0)