LCD驱动的学习
简介:
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驱动的学习的更多相关文章
- FL2440驱动添加(3)LCD驱动添加学习笔记
FL2440 LCD内置控制器,320*240 TFT型LCD. 自我理解总结的两种添加驱动模式: 非platform方式添加驱动: 加载驱动: 1,硬件初始化,申请内存,并作地址映射 2,分配设备号 ...
- 嵌入式Linux驱动学习之路(十八)LCD驱动
驱动代码: /************************************************************************* > File Name: lcd ...
- Smart210学习-----lcd驱动
帧缓冲设备 1.1帧缓冲设备:帧缓冲(framebuffer)是 Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行 ...
- AM335x(TQ335x)学习笔记——LCD驱动移植
TI的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,与按键一样,我们可以通过DTS配置完成LCD的显示.下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路. (1)初步分析 由 ...
- Linux学习: LCD驱动
一.LCD驱动框架: 1.分配一个fb_info结构体:s3c_lcd = framebuffer_alloc(0,NULL); 2.设置fb_info(s3c_lcd): ID.固定参数.可变参数. ...
- S3C2440 LCD驱动(FrameBuffer)实例开发<一>(转)
1. 背景知识 在多媒体的推动下,彩色LCD越来越多地应用到嵌入式系统中,PDA和手机等大多都采用LCD作为显示器材,因此学习LCD的应用很有实际意义! LCD工作的硬件需求:要使一块LCD正常的显示 ...
- sc7731 Android 5.1 LCD驱动简明笔记之三
此篇笔记基于sc7731 - android 5.1,对lcd的gralloc库做一个简明笔记. 第一部分 调用gralloc.sc8830.so所谓的Gralloc模块,它就是一个模块,一个操作ke ...
- sc7731 Android 5.1 LCD驱动简明笔记之二
此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebu ...
- android系统平台显示驱动开发简要:LCD驱动调试篇『四』
平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...
随机推荐
- Oracle索引 详解
作者:Dave 一.索引介绍 1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <sc ...
- Spring Boot与ActiveMQ的集成
Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ.Artemis等.本节中,将以Active ...
- [ kvm ] 学习笔记 9:WebVirtMgr 基础及安装使用
目录- 1. 前言- 2. webvirtmgr 简介- 3. webvirtmgr 部署实践 - 3.1 配置 webvirtmgr 主机 - 3.2 kvm node节点配置 - ...
- 线性回归:boston房价
from sklearn.linear_model import LinearRegression,Lasso,Ridge from sklearn.datasets import load_bost ...
- dockerfile中设置环境变量
设置环境变量要用 ENV ENV JAVA_HOME /usr/local/jdk1.8.0_171 ENV PATH $JAVA_HOME/bin:$PATH 用 echo "JAVA_H ...
- Win10利用CodeBlocks搭建Objective-C开发环境(一)
为了学习ios开发,而手头没有苹果机,若在windows平台下学习objective-c编程.则需要安装OC开发环境, 经过在网上查阅各种相关资料,历经多次失败,终于安装并测试成功,特将安装过程和经验 ...
- Docker快速安装
目前装Docker得最简单方式就是脚本安装了,方法如下: curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh 安装后 ...
- windows server 2012 r2 无法安装 .net 3.5
服务器需安装SQL 2012 ,因需安装.net3.5,没有想到2012出于安全竟然不让手动安装,对于源文件也是把控比较严,折腾了好一会儿才解决问题 有参才一下powershell等安装命令,均失败. ...
- LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
171. Excel表列序号 171. Excel Sheet Column Number 题目描述 给定一个 Excel 表格中的列名称,返回其相应的列序号. 每日一算法2019/5/25Day 2 ...
- [转帖]EPOLL和IOCP比较
EPOLL和IOCP比较 https://blog.csdn.net/educast/article/details/15503179 IOCP 异步非阻塞EPOLL 异步阻塞 EPOLL是半成品 ...