简介:

LCD是基于液晶的。

LCD(liquid crystal display)按驱动方式分类可以分为静态驱动,简单矩阵驱动,主动矩阵驱动。其中,简单矩阵又可以分为扭转向列型(TN)和超转向列型(STN),而主动矩阵驱动则以TFT(用的最多)为主。

TN型液晶驱动:是LCD中最基本的,他只能将入射光旋转90度,视角只有30度。

STN型驱动液晶:可以讲入射光旋转180度至270度,也改善了视角。

TFT解决了上述两种液晶屏的缺陷,属于比较常用的。

一块lcd屏显示图像不但需要lcd驱动器,还需要lcd控制器。很多主芯片cpu继承了lcd控制器。其显示原理为:作为帧同步信号的vsync,每发出一个脉冲,就意味着一幅图像开始传输。作为行同步信号的hsync,每发出一个信号,代表新的一行图像资料开始发送。图像为从左向右,从上向下显示。

一个完整的时序图如下:

下面是lcd的技术参数:

1. 可视面积

2. 可视角度

3. 点距

4. 色彩度

5. 对比值

6. 亮度值

7. 响应时间

显存:

Framebuffer(帧缓冲)从本质上讲是图形设备的硬件抽象。对开发者而言,framebuffer是一块显示缓存,往显示缓存中陷入特定格式的数据就意味着向屏幕中输出内容。通过不断地向framebuffer中写数据,显示控制器就自动的从framebuffer中读数据并显示出来。

在嵌入式一般没有专门的芯片做显存,一般是从内存中分一部分做显存。Framebuffer其实就是显存。

帧缓冲设备对应的设备文件是/dev/fb*,如果系统中有多个显示卡,linux下还可支持多个帧缓冲设备,最多可达32个。帧缓冲设备的主设备号为29,次设备号是0到31.

下面是使用帧缓冲设备文件的演示。

帧缓冲设备编程:

整个编程的系统架构如下:

可以看出,我们实现帧缓冲设备主要需要完成两个任务:

1. 实现一个fb_info结构体,这其中包括可变参数,固定参数,操作列表等。

2. 使用register_frambuffer注册一个帧缓冲设备。

Fb_info

register_frambuffer

寻找lcd驱动对应的设备:

在lcd驱动的init函数中,主要是初始化一个平台驱动。

平台驱动的结构体如下,其匹配的参数为“s3c2410-lcd”,可以查询同样名称为s3c2410-lcd的平台设备。

下面可以看到,确实能查到这个设备,资源有两个,一个是寄存器起始地址,另一个是中断号。

通过mach-s3c2440.c文件,这个设备被上报给内核。

驱动文件:

应用程序:

LCD驱动的学习的更多相关文章

  1. FL2440驱动添加(3)LCD驱动添加学习笔记

    FL2440 LCD内置控制器,320*240 TFT型LCD. 自我理解总结的两种添加驱动模式: 非platform方式添加驱动: 加载驱动: 1,硬件初始化,申请内存,并作地址映射 2,分配设备号 ...

  2. 嵌入式Linux驱动学习之路(十八)LCD驱动

    驱动代码: /************************************************************************* > File Name: lcd ...

  3. Smart210学习-----lcd驱动

    帧缓冲设备 1.1帧缓冲设备:帧缓冲(framebuffer)是 Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行 ...

  4. AM335x(TQ335x)学习笔记——LCD驱动移植

    TI的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,与按键一样,我们可以通过DTS配置完成LCD的显示.下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路. (1)初步分析 由 ...

  5. Linux学习: LCD驱动

    一.LCD驱动框架: 1.分配一个fb_info结构体:s3c_lcd = framebuffer_alloc(0,NULL); 2.设置fb_info(s3c_lcd): ID.固定参数.可变参数. ...

  6. S3C2440 LCD驱动(FrameBuffer)实例开发<一>(转)

    1. 背景知识 在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此学习LCD的应用很有实际意义! LCD工作的硬件需求:要使一块LCD正常的显示 ...

  7. sc7731 Android 5.1 LCD驱动简明笔记之三

    此篇笔记基于sc7731 - android 5.1,对lcd的gralloc库做一个简明笔记. 第一部分 调用gralloc.sc8830.so所谓的Gralloc模块,它就是一个模块,一个操作ke ...

  8. sc7731 Android 5.1 LCD驱动简明笔记之二

    此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebu ...

  9. android系统平台显示驱动开发简要:LCD驱动调试篇『四』

    平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...

随机推荐

  1. test20190904

  2. 中标麒麟+Qt+mysql解决驱动无法加载的问题

    问题描述:都安装了Qt,Mysql之后,发现Qt始终不能连接Mysql 1.安装Qt 2.写程序直接连接QMysql 打印QSqlDatabase: * driver not loaded ,进入/h ...

  3. iOS 控制输入框的字数?(textFliedView,textFlied等)

    //控制输入框的字数 - (void)textViewDidChange:(UITextView *)textView { NSInteger number = [textView.text leng ...

  4. iOS 给view,button,text filed,label等添加边框和颜色

    self.tfaaa.layer.borderWidth = 2; self.tfaaa.layer.borderColor = [UIColor blueColor].CGColor;

  5. 报错:Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

    报错背景: 启动kafka消费者之后出现这种报错,持续打印相同信息. 报错现象: [root@master kafka_2.-]# /opt/kafka/kafka_2.-/bin/kafka-con ...

  6. C#中Invoke的用法(转)

    invoke和begininvoke 区别 一直对invoke和begininvoke的使用和概念比较混乱,这两天看了些资料,对这两个的用法和原理有了些新的认识和理解. 首先说下,invoke和beg ...

  7. (十)进度条媒体对象和 Well 组件

    一.Well 组件 有 lg 和 sm 两种可选值 <div class="well well-lg"> Bootstrap </div> 二.进度条组件 ...

  8. 条件概率和链式法则 conditional probability & chain rule

    顾名思义, 条件概率指的是某个事件在给定其他条件时发生的概率, 这个非常符合人的认知:我们通常就是在已知一定的信息(条件)情况下, 去估计某个事件可能发生的概率. 概率论中,用 | 表示条件, 条件概 ...

  9. 【JS新手教程】JS中的split()方法,拆分字符串

    该方法具体如代码和图中的注释,直接在语句后面加注释了.格式:要拆分的字符串.split(拆分依据的字符)例如该文中的例子,拆分人名,电话,地址.该文中用了个文本框,文本框中需要输入的格式是:人名,电话 ...

  10. C-LODOP回调多个返回值On_Return_Remain

    c-lodop默认一次只能回调一个值,回调后会销毁,如果想回调多个值,可加该语句:LODOP.On_Return_Remain=true;之前有博文:lodop和c-lodop通过打印状态和任务不在队 ...