本文转载自:http://blog.csdn.net/liuxd3000/article/details/17464779

一、基本概念

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

/**********************************************************************************************************************************/

原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/9338679,作者:gqb666  
/**********************************************************************************************************************************/

帧缓冲设备为标准字符设备,主设备号为29,对应于/dev/fbn设备文件。应用程序可以通过打开读写此设备文件而讲视频及图像数据输出到显示设备上。在接下来的博文中会介绍用户态如果操作帧缓冲设备的方法,linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。 Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操作是抽象的,统一的,用户不必关心物理显存的位置、换页机制等等具体细节,这些都是由Framebuffer设备驱动来完成的,但Framebuffer本身不具备任何运算数据的能力,就只好比是一个暂时存放水的水池,CPU将运算后的结果放到这个水池,水池再将结果流到显示器,中间不会对数据做处理,应用程序也可以直接读写这个水池的内容。在嵌入式系统中一般没有专门的显存,而仅仅是从RAM(SDRAM)空间中分配一段显示缓冲区,典型结构如下图所示:

二、显示缓冲区与显示点的关系

   在介绍显示缓冲区与显示点的关系前,先介绍下SOC或者CPU支持的色彩模式或者叫颜色位域。色彩模式即一个像素的三元色分别有几位数据组成。如RGBA8888则表示一个像素点由32位数据组,红、绿、蓝及透明度分别是8位。再或者ARGB8888则类似,只是在设置有有关数据结构时注意下顺序及偏移即可。帧缓冲设备中,对屏幕显示点的操作通过读写显示缓冲区来完成,在不同的色彩模式下,显示缓冲区和屏幕上的显示点有不同的对应关系,下图展示了一个像素点8位和16位情况下显示缓冲区与显示点的对应关系。

三、LCD的硬件原理及时序关系

利用液晶制成的显示器称为LCD,依据驱动方式可分为静态驱动、简单矩阵驱动、以及主动矩阵驱动3种。其中,简单矩阵型又可再细分为扭转向列型(TN)和超扭转式向列型(STN)2种,而主动型矩阵则以薄膜式晶体管型(TFT)为主流。下表列出这几种显示器的区别

一块LCD屏不但需要LCD驱动器,还需要有相应的LCD控制器。通常LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则由外部电路来实现。许多MCU内部直接集成了LCD控制器,通过LCD控制器可以方便地控制STN和TFT屏。

TFT屏是目前嵌入式系统应用的主流。下图给出了TFT屏的典型时序。时序图中的VCLK、HCYNC、和VSYNC分别为像素时钟信号(用于锁存图像数据的像素时钟)、行同步信号和帧同步信号,VDEN为数据有效标志信号,VD为图像的数据信号。

作为帧同步信号的VSYNC,每发出一个脉冲,都意味着新的一屏图像数据开始发送到屏幕上,而作为行同步信号的HSYNC,每发出一个脉冲都表明新的一行图像数据开始发送到屏幕上。在帧同步以及行同步的头尾都必须留有回扫时间,即图中的(HBPD+1)和(HFPD+1)为行回扫时间,(VBPD+1)和(VFPD+1)为帧回扫时间。这样的时序安排起源于CRT显示器电子枪偏转所需要的时间,但后来成为实际上的工业标准,因此TFT屏也包含了回扫时间。

下图给出一帧数据在实际LCD显示器上显示的映射图。其中的上边界和下边界即为帧切换的回扫时间,左边界和右边界即为行切换的回扫时间,水平同步和帧同步分别是行和帧同步本身需要的时间。x-res和y-res则分别是屏幕的水平和垂直分辨率。

下转博文《Linux Framebuffer驱动框架之二软件架构》。

接下来将有如下博文:

Linux Framebuffer驱动框架之二软件架构
 Linux Framebuffer 驱动框架之三相关数据结构
 Linux Framebuffer 驱动框架之四设备驱动接口
 Linux Framebuffer 驱动框架之五DVI设备驱动的实现
 Linux Framebuffer 驱动框架之六用户态操作framebuffer

Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理【转】的更多相关文章

  1. Linux Framebuffer驱动框架之二软件架构(未完待续)【转】

    本文转载自:http://blog.csdn.net/gqb_driver/article/details/12918547 /************************************ ...

  2. Linux驱动框架之framebuffer驱动框架

    1.什么是framebuffer? (1)framebuffer帧缓冲(一屏幕数据)(简称fb)是linux内核中虚拟出的一个设备,framebuffer向应用层提供一个统一标准接口的显示设备.帧缓冲 ...

  3. Linux Framebuffer驱动剖析之二—驱动框架、接口实现和使用

    深入分析LinuxFramebuffer子系统的驱动框架.接口实现和使用. 一.LinuxFramebuffer的软件需求 上一篇文章详细阐述了LinuxFramebuffer的软件需求(请先理解第一 ...

  4. 【原创】Linux PCI驱动框架分析(二)

    背 景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...

  5. Linux Framebuffer驱动剖析之一—软件需求

    嵌入式企鹅圈将以本文作为2015年的终结篇,以回应第一篇<Linux字符设备驱动剖析>.嵌入式企鹅圈一直专注于嵌入式Linux和物联网IOT两方面的原创技术分享,稍后会发布嵌入式企鹅圈的2 ...

  6. Linux USB驱动框架分析 【转】

    转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...

  7. linux驱动基础系列--linux spi驱动框架分析

    前言 主要是想对Linux 下spi驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.设备模型等也不进行详细说明原理.如果有任何错误地方,请指出,谢谢! spi ...

  8. Linux USB驱动框架分析【转】

    转自:http://blog.csdn.net/jeffade/article/details/7701431 Linux USB驱动框架分析(一) 初次接触和OS相关的设备驱动编写,感觉还挺有意思的 ...

  9. Linux Framebuffer驱动剖析之中的一个—软件需求

    嵌入式企鹅圈将以本文作为2015年的终结篇,以回应第一篇<Linux字符设备驱动剖析>.嵌入式企鹅圈一直专注于嵌入式Linux和物联网IOT双方面的原创技术分享,稍后会公布嵌入式企鹅圈的2 ...

随机推荐

  1. EF code first Acceleration - CodeFirst 加速

    EntityFramework Code First 用起来很方便,可是有时感觉卡,就是有点慢.可以采用以下措施来加速一下,原来取出1万条记录并显示在Winform窗体上第一次需要1.9秒的时间,加速 ...

  2. html中设置浏览器解码方式

    通过添加一行标签: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"& ...

  3. Tomcat服务器安装与第一个jsp网页程序

    1.安装tomcat服务器之前需要,先安装相应版本的jdk,个人理解Tomcat的大部分功能是使用了java的 jdk jar包的. jdk包下载方式网上可以查到 下载完后可以解压到一个指定目录,并在 ...

  4. ELK基本统计图表

    ELK基本统计图表,现在基本在用自带的功能,复杂的功能还需要去摸索了

  5. ubuntu下查看如何配置pycharm

    ubuntu中PyCharm的安装与卸载 https://blog.csdn.net/weixin_31484477/article/details/81133590 pycharm ModuleNo ...

  6. cshtml中字符串中表示特殊字符@

    用“@@”表示字符串中的特殊字符@

  7. 踩过的坑:__file__、__package__和__name__

    不说废话,直接上示例结构图 Path.py内容如下: import os path1 = os.path.dirname(os.path.abspath(__file__)) path2 = os.p ...

  8. Xilinx FPGA的专用时钟引脚及时钟资源相关

    主要参考了https://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html .Xilinx UG471.UG472以及Xilinx Forum ...

  9. Whl自助搜索下载器

    本文转载自以下链接:https://github.com/Light-City/AutoDownloadWhl 源码地址: https://github.com/Light-City/AutoDown ...

  10. mongodb数据库的导出与导入

    数据库的导出 导出类型为json,数据库:mapdb,集合:bike 字段:bikeId,lat,lng,current_time,source ,条件为source字段为ofo第一条数据 mongo ...