S5PV210的LCD控制器详解

1、FIMD结构框图

(1)Samsung的s5pv210的LCD控制器叫做FIMD(也叫显示控制器)。Display controller(显示控制器)包括用于将图像数据从相机接口控制器的本

地总线或位于系统存储器(例如:显存)中的视频缓冲器传送到外部LCD驱动器接口的逻辑。 LCD驱动接口支持三种接口,即RGB接口,I80接口和YUV

接口。显示控制器使用多达五个覆盖图像窗口(也就是虚拟窗口win0-win4),其支持各种颜色格式,如RGB、YUV。

FIMD在内部与AHB总线等相连接,在外部提供RGB接口、I80接口、YUV接口与外部相连接,我们实际使用的是RGB接口。这个接口就是我在上一篇博文中说的

LCD控制器的数据输出接口。RGB接口传输的是RGB编码的颜色数据,同理YUV接口传输的就是YUV编码的颜色数据,至于I80我不了解。本文讨论也是RGB接口。

(2)RGB接口信号

LCD_HSYNC :水平同步信号

LCD_VSYNC:垂直同步信号

LCD_VCLK:像素时钟,LCD工作时需要主板控制器给LCD模组一个工作时钟信号,就是VCLK

LCD_VDEN:数据有效标志,时序信号,和HSYNC、VSYNC结合使用。

LCD_VD[23:0]:24根数据线,用来传输图像信息。可见LCD是并行接口,速率才够快。

2、LCD显示一帧图像的过程

(1)LCD显示单位:帧(frame)

显示器上一整个画面的内容成为一个帧(frame),整个显示器工作时是一帧一帧的在显示。

帧内数据:一帧分为多行,一行分为多像素,因此一帧图像其实就是多个像素组成的矩阵。

帧外数据:整个视频由很多个帧构成,最终播放视频时逐个播放各个图像帧即可。

(2)显示一帧图像

首先把帧分为行,然后再把行分为像素,然后逐个像素去显示。(显示像素:其实就是LCD驱动器按照接收到的LCD控制器给的显示数据,驱动一个像素的液晶分子旋转,让

这个像素显示出相应的颜色值的过程)。

关键点:LCD控制器和驱动器之间一次只能传一个像素点的显示数据。所以一帧图像在屏幕上其实是串行的依次被显示上去的,不是同一时间显示出来的。

(3)为了向前兼容出现的六个时序参数

HSPW 水平同步信号脉宽

HBPD 水平同步信号前肩
HFPD 水平同步信号后肩
VSPW 垂直同步信号脉宽
VBPD 垂直同步信号前肩
VFPD 垂直同步信号后肩

2、虚拟屏幕叠加

(1)虚拟屏幕的意思是,我们平时看到的屏幕上显示出来的场景实际是很多个屏幕显示叠加在一起的效果(譬如新闻图像、电视台台标、下方飘动的字幕新闻)。

(2)像S5PV210的LCD控制器中有5个虚拟屏幕Window0到Window4,虚拟屏幕不存在于真实而存在于内存中。(之前讲过,LCd显示时实际是显示的是对应的内存

中的显存区域的数值)虚拟屏幕其实就是一个内存中的显存区域,有几个显存区域就有几个虚拟屏幕,但是这些虚拟屏幕都被映射到一个真实的显示屏上面,所以将

来真实的现实效果实际是这几个虚拟屏幕的显示内容的叠加。(叠加时要注意上面一层会覆盖下面一层,所以要注意谁在前谁在后,设置寄存器时有这个选项)。

(3)使用虚拟屏幕而不是整个LCD使用一个显存是有一定好处的:第一,可以保证不污染源图像,方便程序处理;第二,可以减少屏幕刷新,提高显示效率,减少CPU工作量。

3、虚拟显示

(1)如何实现在小分辨率的屏幕上(真实)显示大分辨率的图像?

细节上,我们需要屏幕上看到不同图像时,需要对显存区域进行刷新。即使我们只需要屏幕显示移动一点点,整个屏幕对应的显存空间也需要整个重新刷新,工作量和完全

重新显示一幅图像是一样的。这个显然不好,这样CPU刷新屏幕的工作量太大了,效率很低。

如何能够在显示一个大图片的不同区域时让CPU刷新屏幕工作量减少?

有,方法就是虚拟显示。具体做法就是在内存中建立显示缓存的时候实际建立一个很大的区域,然后让LCD去对应其中的一部分区域作为有效的显示区域。将来要显示大图像

时,直接将大图像全部一次性加载入显示缓存区,然后通过移动有效显示区域就可以显示大图像的不同区域了。

4、

时间: 2024-08-04 22:23:01

S5PV210的LCD控制器详解的相关文章

s5pv210的启动方式详解(二)

s5pv210的启动流程参考s5pv210_iROM_ApplicationNote_Preliminary_20091126.pdf这篇文档. s5pv210支持Moveinand/iNand.SD/MMC.NandFlash.eSSD.UART.USB等多种启动方式. s5pv210启动流程详解: 1.在cpu上电后,首先执行iROM(类似于NorFlash,可以直接读数据)中的代码,iROM中的代码被称为BL0,BL0会初始化一些SoC内部的硬件资源. 2.BL0会根据OM pin上的电平

s5pv210的启动方式详解(一)

普通的PC机中: BIOS+硬盘来配合启动,见笔记“Linux基础知识->PC机的启动流程分析”. 嵌入式系统中: 可以用来作为启动的介质有:NorFlash.SRAM. 不能用来作为启动介质的有:NandFlash(数据和地址复用,需要发送命令才能读写数据,还要初始化寄存器).DRAM(需要初始化控制寄存器才能使用). 由此可以推出在嵌入式系统中,有如下几种启动方式: 1.NorFlash(存放bootloader)+NandFlash(存放操作系统内核镜像) 这种方式就是从NorFlash中

MVC 控制器详解

Controller: Controllers 文件夹包含负责处理用户输入和响应的控制器类. MVC 要求所有控制器的名称必须以 "Controller" 结尾. 控制器的职责: 处理跟用户的交互 处理业务逻辑的调用 指定具体的视图显示数据,并且把数据传递给视图 约定: 必须是非静态类    必须实现IController接口            必须是以Controller结尾命名 Action: 在Action中,可以访问任何的当前请求的数据,以及干涉响应的内容,几乎可以将Act

MVC 5 + EF6 完整教程16 -- 控制器详解

Controller作为持久层和展现层的桥梁, 封装了应用程序的逻辑,是MVC中的核心组件之一. 本篇文章我们就来谈谈 Controller, 主要讨论两个方面: Controller运行机制简介 Controller数据传递方式 Controller运行机制简介 实现自定义的Controller 我们自己要实现一个控制器有两种方法:一种是继承IController接口,一种是继承Controller或ControllerBase.Controller继承了ControllerBase, 另外C

MVC控制器详解

原文地址:http://www.cnblogs.com/SeeYouBug/p/6441934.html#3628606 目录 一.理解控制器 1.1.什么是控制器 1.2.控制器的作用 1.3.创建实现IController接口的控制器 1.4.创建继承于Controller类的控制器 二.控制器对数据的接收 2.1.数据来源 2.2.通过上下文对象获取数据 2.3.使用动作(Action)方法参数 2.3.1.使用Action方法参数 2.3.2.理解参数对象实例化 2.3.3.理解可选参数

Controller接口控制器详解(1)——SpringMVC

4.1.Controller简介 Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分: 1.收集.验证请求参数并绑定到命令对象: 2.将命令对象交给业务对象,由业务对象处理并返回模型数据: 3.返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名). 还记得DispatcherServlet吗?主要负责整体的控制流程的调度部分: 1.负责将请求委托给控制器进行处理: 2.根据控制器返回的逻辑视图名选择具体的视

UISegmentedControl 分段控制器 详解

SegmentedControl又被称作分段控制器,是IOS开发中经常用到的一个UI控件. 初始化方法:传入的数组可以是字符串也可以是UIImage对象的图片数组 - (instancetype)initWithItems:(NSArray *)items; 设置控件风格: @property(nonatomic) UISegmentedControlStyle segmentedControlStyle 注意:这个属性已经废弃,不再起任何作用,它的枚举如下: typedef NS_ENUM(N

【SpringMVC】注解驱动的控制器详解

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka Spring2.5引入注解式处理器支持,通过@Controller和@RequestMapping注解定义我们的处理器类.并且提供了一组强大的注解需要通过处理器映射DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter来开启支持@Controller和@RequestMapping注解的处理器. @Contro

(三)Controller接口控制器详解(一)

4.1.Controller简介 Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分: 1.收集.验证请求参数并绑定到命令对象: 2.将命令对象交给业务对象,由业务对象处理并返回模型数据: 3.返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名). 还记得DispatcherServlet吗?主要负责整体的控制流程的调度部分: 1.负责将请求委托给控制器进行处理: 2.根据控制器返回的逻辑视图名选择具体的视