FrameBuffer的原理及应用

FrameBuffer的原理及应用

当前绝大多数开源图形界面库都是基于framebuffer编写,了解framebuffer的使用,可以方便的将一个图形界面库移植到SylixOS下,此外framebuffer还可以方便的用来测试硬件驱动。

     framebuffer中文名称为帧缓冲,framebuffer是SylixOS系统为显示设备提供的一个标准设备接口模型,它将显示缓冲区抽象,屏蔽图形硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由framebuffer设备驱动本身完成。对于framebuffer设备而言,只需要在framebuffer中与显示点对应的区域写入颜色值,对应的颜色会自动在屏幕上显示。

     例如具备LCD控制器的处理器在打开framebuffer设备后,DMA控制器会持续将内存中的数据送到LCD控制器,LCD控制器将得到的数据配以时钟和场行信号送往LCD显示设备,LCD像素点根据得到的数据显示相应颜色组成显示图像。

framebuffer显示原理

显示器一般是一块矩形区域,每个像素点都有其对应的二维坐标(x,y)。在内存中的一块存储区域往往是一维的一段线性地址(addr)。内存中的地址与显示器上的像素坐标对应关系一般如公式所示:

addr = y*显示器一行的像素点 + x;(0< x <行像素点,0< y <列像素点 )

显示器的(0,0)坐标是在显示器的左上角,而不是数学中常用坐标系的左下角。

示例:在屏幕上,使用 framebuffer 显示白、灰、黑条纹,并绘制一条直线

实现:

见附件应用示例

    • Related Articles

    • SylixOS 设备实现双屏或多屏图形图像显示

      前置条件:    1、SylixOS 设备硬件上需要支持两个或更多的显示通道,可以是不同种类的显示接口,也可以是同一种显示接口,常见的显示接口有HDMI、VGA、DVI、DP、RGB、LVDS。 2、SylixOS设备已经支持两个或更多的显示外设驱动,比如支持一个LVDS和HDMI,如果是一种接口的多个硬件接口,只需要支持一种也可以。 3、已经在 SylixOS 系统中,创建了两个或更多的fb设备(fb即 framebuffer), 这些fb设备与硬件显示通道一一对应。 实现步骤: ...