显示技术介绍(1)_概述
作者:wowo 发布于:2015-11-22 21:44 分类:显示
1. 前言
本文是显示子系统的第一篇文章,介绍嵌入式系统显示有关的硬件组成,进而拆分为相对独立的模块,以便在后续的文章中一一介绍。
2. 显示的本质
人类和外界进行信息交互的方法有如下几种:
1)通过听觉、视觉、触觉、嗅觉从外界接收信息。
2)通过声音、动作(包括表情)、直接接触、气味向外界发送信息。
“显示”是相对人的视觉而言的,凡是人可以看到的东西,都可以称作“显示”。而在嵌入式系统(其它系统也相同)中,特指通过视觉,向人传递信息的过程。因此,显示的本质是,两个系统之间进行信息交互的一种手段,其中一个系统是人类,为信息接收方,另外一个是各种产品,为信息的发送方,如下:
上图系统1,将是显示子系统需要描述的对象。而系统2,就是大家比较熟悉(又非常陌生)的人类自身,“可视信号接收”就是眼睛,“可视信号解析”就是大脑。
这里之所以把这么简单的过程通过框图的形式表示出来,其实是想让大家的思考:
系统2(人类),之所以是这个形态(视觉),是因为这是和这个世界交互的一种好方法。但和我们的产品交互,就不一定了,想象一下图中的红色虚线?是不是很有意思?
3. 显示相关的硬件组成
由第2章的图片可知,对一个系统来说,要生成人眼可以看到的显示信号,必须具备“显示内容生成”和“将显示内容转换为人眼可见的光信号”两个部分,在我们比较熟悉的消费类电子产品中(如电脑、手机),主要由如下硬件组成:
说明如下:
1)我们通常所说的显示屏(或者显示器),称作显示模组(display module),主要由显示面板(display panel)和显示驱动器(display driver)两部分组成。
2)display panel的主要任务就是发光,但发光可是个技术活,一般人还做不了。这就是display module通常以独立的硬件模块的形式存在的原因:做面板的,专心研究怎么发光、怎么发好光就行了;而做产品的,直接把模组拿来用即可。既经济,又实惠,皆大欢喜。
3)display driver有两个功能:按照一定的格式(由display interface规定),接收显示内容;控制显示面板发光,将显示内容显示在屏幕上。
4)display interface充当了通信协议的角色,通过它,主控和显示模组按照协商好的方式沟通,就可以分开了。
5)display controller和display driver的极角色类似,功能也有两个:以一定的方式,接收主控发送过来的显示数据;将显示数据转换为display interface规定的格式,发送给display driver。
6)剩下的最重要的事情,就是显示内容的生成了。在很长的一段时间内,显示屏的像素还比较小(如320x240),UI界面还比较简单,一般都是通过CPU直接绘制,生成需要显示的图像数据,交给display controller显示。
7)慢慢的,显示屏像素变大了(如1920x1080),与此同时,UI界面变得越来越复杂,显示内容生成的过程中,可以需要其它额外操作,例如多个UI画面的叠加、颜色格式转换、旋转、缩放、透明度处理、等等。这个时候,再让CPU做这些事情,就会严重影响CPU处理其它事情的能力,因此一个单独的硬件模块产生了。这个硬件模块就是一个协处理器,协助CPU处理显示相关的数据处理,不同厂商对这个模块的命名不同,一般称作2D加速模块(相对于GPU的3D绘制而言)。
8)再后来,更复杂的场景出现了,例如大型游戏,需要实时产生很多带有特殊效果的图像,例如带3D特效的图像等等,单独的显示处理模块出现了。它也是一个协处理器,和CPU拥有相同的总线地位,负责处理所有图形相关的操作,通过称作GPU或者显卡。
9)GPU(或显卡)的功能是如此强大,以至于所有2D加速模块的任务都可以通过GPU完成,所以有些平台就不再单独提供2D加速模块,转而实用GPU内部的2D功能。这也是上面图片2D模块为虚线框的原因。但GPU的强大是需要付出代价的,就是功耗代价。对于对功耗敏感的嵌入式平台,2D模块通常是有保留的必要的(在Android平台称作H/W composer)。
10)在GPU和2D加速模块共存的系统中,GPU一般处理图像绘制、3D生成、特效处理等和图像内容有关的事情,2D模块处理后期的合成、缩放、格式转换等操作。
11)最后,有些产品有多屏互动的需求,如带有HDMI功能的手机,在显示屏上显示的同时,通过HDMI线将显示内容投射到电视上。此时系统内可能存在多个不同形式、不同技术的display controller。
4. 后续工作
本文只是对显示技术进行一个简单的介绍,后续将会通过硬件和软件两条线,进行更详细的分析。
硬件方面,将会包括如下的系列文章:
显示面板有关的技术介绍,介绍不同的面板技术,如之前的CRT,现在的液晶、等离子,未来的激光等等。
显示接口有关的技术介绍,如RGB、HDMI、EDP等等。
2D、3D加速有关的技术介绍,如GPU等。
软件方面,将会以原生linux平台为例,介绍显示有关的软件框架以及各个软件模块实现方法,具体可以参考后续“linux显示子系统”的文章。
原创文章,转发请注明出处。蜗窝科技,www.wowotech.net。

评论:
功能
最新评论
文章分类
随机文章
文章存档
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)
2020-06-24 16:36
这些硬件地址空间有两种方式
1. 在uboot 进入 kernel时 通知kernel 预留 部分内存供2D模块使用
2. 通过Linux自带的机制来分配硬件地址空间
但是,这块硬件地址需要是连续的,也比较大,所以目前我接触到的嵌入式设备基本都是采用了方式一
在使用方法上面,基本都是下面的架构模式:
1. 提供MMA driver 来分配和管理 预留的硬件地址空间
2. 应用层通过ioctl来申请硬件地址,并mmap为用户空间地址
3. 最后将应用层数据写入到申请的硬件地址中,ioctl提交给2D 加速模块
提交时可以指定dst addr为framebuffer的硬件地址,这样的话,2D模块绘制完成后就直接送给linux framebuffer去显示了。