|
Framebuffer 字面意思就是帧缓存的意思,即显存,里面保存着一帧图像。事实上,对于嵌入式系统而言。没有真正意义上的显存,Framebuffer 是通过内存模拟出来的。 一、LCD FrameBuffer 里的若干字节表示(具体根据驱动适配),LCD 屏幕上的一个像素点。 (1)RGB888:32bpp,占4字节,分别是A8、R8、G8、B8,一般只用其中低24位,高8位表示透明度。 (2)RGB565:16bpp,占2字节,分别是R5、G6、B5,比较常用的一种颜色 (3)RGB555:很少用。 假设LCD屏幕分辨率是800x600,每个像素占4字节,那么framebuffer 大小就是: 800x600x4=1920000字节 二、fb与应用程序的互交: 对于应用程序而言,它和其它的设备并没有什么区别,用户可以把fb看成是一块内存,既可以向内存中写数据,也可以读数据。fb的显示缓冲区位于内核空间。应用程序可以把此空间映射到自己的用户空间,再进行操作。 三、在应用程序中,操作/dev/fbn的一般步骤如下: (1)打开/dev/fbn设备文件。 (2)用ioctl()操作取得当前显示屏幕的参数,如屏幕的分辨率、每个像素点的比特数。根据屏幕的参数可计算屏幕缓冲区的大小。 (3)用mmap()函数,将屏幕缓冲区映射到用户空间。 (4)映射后就可以直接读/写屏幕缓冲区,进行绘图和图片显示。
|