第1页共53页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共53页linux中LCD设备驱动(1)——framebuffer(帧缓冲)1、framebuffer帧缓冲帧缓冲(framebuffer)是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作
用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成
framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构,可以通过framebuffer的读写直接对显存进行操作
用户可以将framebuffer看成是显存的一个映像,将其映射到进程空间后,就可以直接进行读写操作,写操作会直接反映在屏幕上
framebuffer是个字符设备,主设备号为29,对应于/dev/fb%d设备文件
通常,使用如下方式(前面的数字表示次设备号)0=/dev/fb0第一个fb设备1=/dev/fb1第二个fb设备fb也是一种普通的内存设备,可以读写其内容
例如,屏幕抓屏:cp/dev/fb0myfilefb虽然可以像内存设备(/dev/mem)一样,对其read,write,seek以及mmap
但区别在于fb使用的不是整个内存区,而是显存部分
2、fb与应用程序的交互对于用户程序而言,它和其他的设备并没有什么区别,用户可以把fb看成是一块内存,既可以向内存中写数据,也可以读数据
fb的显示缓冲区位于内核空间,应用程序可以把此空间映射到自己的用户空间,在进行操作
在应用程序中,操作/dev/fbn的一般步骤如下:(1)打开/dev/fbn设备文件
(2)用ioctl()操作取得当前显示屏幕的参数,如屏幕分辨率、每个像素点的比特数
根据屏幕参数可计算屏幕缓冲区的大小
(3)用mmap()函