FrameBuffer 概述

更新时间:
2024-03-14
下载文档

FrameBuffer 概述

图形设备,也称作帧缓冲(FrameBuffer)设备,通过该设备可以直接操作显存本身。

SylixOS 中图形设备名称为/dev/fb0,如果硬件支持多个图层,相应的会有/dev/fb1、/dev/fb2 等设备存在。在使用图形设备之前,需要首先获取其与显示模式相关的信息,比如分辨率,每个像素占用的字节大小及其 RGB 的编码结构、显存的大小等信息,这样才能将需要显示的图像数据正确地写入显存。

FrameBuffer 与应用程序的交互

FrameBuffer 设备是图形硬件的抽象,其代表图形硬件的帧缓冲区,以允许应用程序通过指定的接口访问图形硬件。应用程序调用 mmap 把 FrameBuffer 映射到应用程序空间,将要显示的图像写入此内存空间,图像即可在屏幕上显示出来;应用程序读取此内存空间即可获取当前屏幕显示的内容。

FrameBuffer 设备可通过设备节点进行访问,通常在/dev 目录下有诸如/dev/fb0 的 FrameBuffer 设备节点。

应用程序对 FrameBuffer 的操作主要有两种方式:

  1. 通过映射操作:应用程序使用 mmap 映射后,可以读写显存,修改或获取屏幕显示内容;
  2. 通过 I/O 控制操作:应用程序使用 ioctl 可以读取或设置 FrameBuffer 设备及屏幕的参数,如分辨率、显示颜色数、屏幕大小等。

FrameBuffer 的显示原理

FrameBuffer 与屏幕上显示的像素点存在对应关系,其对应关系由色彩模式规定。色彩模式即指“一个像素的三元色分别有几位数据组成”。

数据位数有以下几种:

  • 8 位:最多能显示 256 种颜色。如果硬件仅支持黑白显示,则一个像素可支持 256 阶灰度值。如果硬件支持彩色显示,通常情况下这 256 个编码值对应 256 种生活中最常用的颜色,即调色板模式(用有限的颜色来近似表达实际的显示需求)。
  • 16 位:最大能显示 65536 种颜色,也称作伪真彩色,支持 16 位色彩的硬件能够显示生活中绝大多数的颜色。16 位数据显示下,有 RGB555 和 RGB565 两种编码方式。
  • 24 位:能够显示多达 1600 万种颜色,用肉眼几乎无法分辨出与实际颜色的差异,因此也叫做真彩色。在 24 位显示下,一个像素的红、绿、蓝三种颜色分别使用 8 位表示。
  • 32 位:相对于 24 位,其多出的 8 位用来表示像素的 256 阶透明度(0 表示不透明,255 表示完全透明。完全透明时,此像素不被显示)。

下面两个表格分别展示了一个像素点 8 位和 16 位情况下显示缓冲区与显示点的对应关系。

LCD 显示原理

LCD(Liquid Crystal Display)是利用液晶分子的物理结构和光学特性进行显示的一种技术。液晶分子具有以下的特性:

  • 液晶分子是介于固体和液体之间的一种棒状结构的大分子物质。
  • 在自然形态下具有光学各向异性的特点,在电(磁)场作用下,呈各向同性的特点。
  • LCD 的显示原理是利用了液晶的特性,将液晶置于两片导电玻璃基板之间,在上下玻璃基板的两个电极作用下,引起液晶分子扭曲变形,改变通过液晶盒光束的偏振状态,实现对背光源光束的开关控制。若在两片玻璃间加上彩色滤光片,玻璃面上即可实现彩色图像显示。
  • LCD 一般有以下几项衡量显示效果的指标:。
  • 物理分辨率:表示 LCD 可以显示的点的数目,为一个固定值。同样的尺寸下,分辨率越高,显示的画面越细致。
  • 色饱和度:表示 LCD 色彩鲜艳的程度。显示器是由红色(R)、绿色(G)、蓝色(B)三种颜色光组合成任意颜色的,如果 RGB 三原色越鲜艳,则 LCD 显示的颜色范围越广。
  • 亮度 表示 LCD 在白色画面下明亮的程度。亮度是直接影响画面品质的重要因素,LCD 的亮度一般由背光脚控制,其电压由 PWM 产生,可以被调节。
  • 对比度:表示 LCD 上同一点最亮时(白色)与最暗时(黑色)的亮度的比值,高的对比度意味着相对较高的亮度和呈现较好的锐利度。
  • TFT-LCD 屏是目前嵌入式系统应用的主流,其时序如下图所示。

显示时序图中的相关名词解释,如下表所示。

名词说明
VSYNC每发出一个脉冲,表明屏幕上刷入一帧新的数据
HSYNC每发出一个脉冲,表明屏幕上刷入一行新的数据
VBPD每帧开始时需要插入的帧同步周期无效行数
VFPD每帧结束时到下一帧同步周期之前的无效行数
HBPD每行开始时需要插入的像素时钟周期数
HFPD每行结束时需要插入的像素时钟周期数
VSYNC表示帧同步脉冲的宽度
HSYNC表示行同步信号的宽度
VCLK像素时钟信号
VDEN数据有效标志信号

在帧同步以及行同步的头尾都必须留有回扫时间,即上图中的(HBPD + 1)和(HFPD + 1)为行回扫时间,(VBPD + 1)和(VFPD + 1)为帧回扫时间。该时序安排起源于 CRT 显示器电子枪偏转所需要的时间,但后来因其成为实际工业标准,所以 TFT 屏也包含了回扫时间。

根据下面的显示时序图可以得到如下图所示的 FrameBuffer 可见区域表示图。

文档内容是否对您有所帮助?
有帮助
没帮助