设备管理_显示设备接口与帧缓冲概述

上传人:F****n 文档编号:91875430 上传时间:2019-07-03 格式:PPT 页数:41 大小:719KB
返回 下载 相关 举报
设备管理_显示设备接口与帧缓冲概述_第1页
第1页 / 共41页
设备管理_显示设备接口与帧缓冲概述_第2页
第2页 / 共41页
设备管理_显示设备接口与帧缓冲概述_第3页
第3页 / 共41页
设备管理_显示设备接口与帧缓冲概述_第4页
第4页 / 共41页
设备管理_显示设备接口与帧缓冲概述_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《设备管理_显示设备接口与帧缓冲概述》由会员分享,可在线阅读,更多相关《设备管理_显示设备接口与帧缓冲概述(41页珍藏版)》请在金锄头文库上搜索。

1、1,显示设备接口与帧缓冲,2,LCD接口设计,LCD显示模块 液晶显示是一种被动的显示,它不能发光,只能使用周围环境的光。它显示图案或字符只需很小能量。液晶显示所用的液晶材料是一种兼有液态和固体双重性质的有机物,它的棒状结构在液晶盒内一般平行排列,但在电场作用下能改变其排列方向。 LCD的背光: EL(场致发光):2000-3000小时 LED光源:50000小时 新CCFL:60000小时,3,LCD的显示方式,反射型LCD:底偏光片后面加了一块反射板,它一般在户外和光线良好的办公室使用。 透射型LCD:底偏光片是透射偏光片,它需要连续使用背光源,一般在光线差的环境使用。 透反射型LCD:是

2、处于以上两者之间,底偏光片能部分反光,一般也带背光源,光线好的时候,可关掉背光源;光线差时,可点亮背光源使用LCD。,4,常见的液晶显示器物理结构,扭曲向列型(TNTwisted Nematic) 超扭曲向列型(STNSuper TN) 双层超扭曲向列型(DSTNDual Scan Tortuosity Nomograph) 薄膜晶体管型(TFTThin Film Transistor) 其中TNLCD、STNLCD和DSYNLCD的基本显示原理都相同,只是液晶分子的扭曲角度不同而已。而TFTLCD则采用截然不同的显示方式。,5,LCD通常由两种方式 一种是带有LCD扫描芯片的LCD模块 一种

3、是通过LCD控制器,直接扫描LCD屏。 比如:S3C2410处理器,带有LCD控制器,显示缓存和系统内存公用。可以支持STN(彩色/灰度)和TFT两种模式的LCD。 TFT模式下最多支持24位色,800x600分辨率。,LCD的驱动方式,6,嵌入式处理器与LCD的连接,7,片外的LCD控制器,8,集成了LCD控制器的嵌入式处理器体系结构,9,典型的LCD模式信号线,LDD,数据线 L_PCLK,点时钟 L_LCLK,行频 L_FCLK,帧频 L_BIAS,CSTN的AC信号,TFT的开启信号,10,S3C2410的LCD扫描模式,4/8位,单/双扫描模式,CSTN 最多256级灰度 显示缓冲区

4、支持15、16、24位TFT模式 支持RGB格式,11,4位单扫描STN模式,12,4位单扫描显示缓冲的对应关系,1个字节存储两个点的信息 16级灰度,13,8位CSTN屏幕点阵:320x240,14,8位单扫描CSTN模式,15,8位单扫描显示缓冲的对应关系,1个字节存储1个点的信息 可以是用调色板,标准映射:,16,16位单扫描TFT模式,17,16/15位显示缓冲的对应关系,18,Linux系统下Framebuffer设备,帧缓冲(framebuffer)是 Linux 为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作

5、是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer 设备驱动来完成的。 嵌入式系统下大多采用Framebuffer设备来实现显示设备LCD驱动。,19,Linux系统下Framebuffer设备,Framebuffer在系统中的位置,20,Linux系统下Framebuffer设备,帧缓冲设备对应的设备文件为/dev/fb*,如果系统有多个显示卡,Linux 下还可支持多个帧缓冲设备,最多可达 32 个,分别为/dev/fb0 到/dev/fb31,而/dev/fb 则为当前缺省的帧缓冲设备,通常指向/dev/fb0。 当然在嵌入式系统中支持一

6、个显示设备就够了。帧缓冲设备为标准字符设备,主设备号为29,次设备号则从0到31。分别对应/dev/fb0到/dev/fb31。,21,Framebuffer驱动结构,FrameBuffer设备驱动基于如下两个文件: linux/include/linux/fb.h linux/drivers/video/fbmem.c 与平台相关的设备驱动文件: linux/drivers/video/s3c-fb.c,22,Framebuffer驱动结构,FrameBuffer帧缓冲的重要数据结构: fb_info fb_var_screeninfo fb_fix_screeninfo fb_cmap f

7、b_ops 在fb.h中定义,23,Framebuffer驱动结构,struct fb_info int node; int flags; struct fb_var_screeninfo var; /* Current var */ struct fb_fix_screeninfo fix; /* Current fix */ struct fb_monspecs monspecs; /* Current Monitor specs */ ; 该结构是LINUX系统定义的framebuffer设备驱动接口。定义了当前显卡framebuffer设备状态,一个显卡可能有两个framebuffer

8、,在这种情况下,就需要两个fb_info结构。这个结构是唯一在内核空间可见的。在这个结构中有一个fb_ops指针,指向驱动设备工作所需的函数集。,24,Framebuffer驱动结构,struct fb_fix_screeninfo char id16; /* identification string eg “TT Builtin“ */ unsigned long smem_start; /* Start of frame buffer mem */ /* (physical address) */ _u32 smem_len; /* Length of frame buffer mem

9、*/ _u32 type; /* see FB_TYPE_* */ _u32 visual; /* see FB_VISUAL_* */ ; 该结构用来描述设备无关,不可变更的信息。可以使用FBIOGET_FSCREENINFO 命令来获取该结构相应信息。,25,Framebuffer驱动结构,struct fb_var_screeninfo _u32 xres; /* visible resolution */ _u32 yres; _u32 xres_virtual; /* virtual resolution */ _u32 yres_virtual; _u32 xoffset; /*

10、offset from virtual to visible */ _u32 yoffset; ; 该结构用来描述设备无关,用户可变更的信息。可以使用FBIOGET_VSCREENINFO 命令来获取该结构相应信息,使用FBIOPUT_VSCREENINFO 命令来设置该结构相应信息。,26,Framebuffer驱动结构,struct fb_cmap _u32 start; /* First entry */ _u32 len; /* Number of entries */ _u16 *red; /* Red values */ _u16 *green; _u16 *blue; _u16

11、*transp; /* transparency, can be NULL */ ; 该结构描述设备无关的颜色映射信息。可以通过FBIOGETCMAP和FBIOPUTCMAP 对应的ioctl操作设定或获取颜色映射信息.,27,Framebuffer驱动API,Linux系统中对帧缓冲设备的操作是通过,fb_ops结构来完成和定义的。用户可以通过ioctl接口来完成对fb_ops结构中定义的功能函数的调用。 帧缓冲驱动程序的主要工作就是编写fb_ops结构中的接口函数。,28,Framebuffer驱动API,struct fb_ops /* open/release and usage ma

12、rking */ struct module *owner; int (*fb_open)(struct fb_info *info, int user); int (*fb_release)(struct fb_info *info, int user); ssize_t (*fb_read)(struct fb_info *info, char _user *buf, size_t count, loff_t *ppos); ssize_t (*fb_write)(struct fb_info *info, const char _user *buf, size_t count, loff

13、_t *ppos); int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma); int (*fb_ioctl)(struct fb_info *info, unsigned int cmd,unsigned long arg); ;,29,Framebuffer驱动API,fb_ops结构中常见的接口函数: fb_open: 打开帧缓冲设备 fb_release: 关闭帧缓冲设备 fb_read: 帧缓冲设备的读操作 fb_write: 帧缓冲设备的写操作 fb_mmap: 帧缓冲设备的内存映射操作 fb_ioctl:

14、帧缓冲设备的ioctl操作,30,Framebuffer帧缓冲内核驱动核心,fbmem.c 实现了如下函数. register_framebuffer(struct fb_info *fb_info); unregister_framebuffer(struct fb_info *fb_info); 这两个是提供给下层FrameBuffer设备驱动的接口,设备驱动通过这两函数向系统注册或注销自己。几乎底层设备驱动所要做的所有事情就是填充fb_info结构然后向系统注册或注销它。,31,Framebuffer帧缓冲设备驱动程序分析,内核源码目录(driver/video/)下的s3c-fb.c文

15、件是S5PV210处理器帧缓冲设备硬件相关的驱动程序。 s3c-fb.c驱动程序主要完成以下工作: 初始化LCD控制器、设置显示模式、分配显示缓存。 分配并初始化fb_info结构,填充其成员函数。 调用 register_framebuffer(struct fb_info *fb_info),函数向系统注册帧缓冲设备驱动程序。,32,Linux内核对framebuffer帧缓冲的支持,Linux内核对framebuffer帧缓冲设备有着良好的支持。 make menuconfig配置菜单: - Device Drivers - Graphics support - Support for frame buffer devices (FB =y),33,Linux内核对framebuffer帧缓冲的支持, Support for frame buffer devices -,34,Linux内核对framebuffer帧缓冲的支持, Samsung S3C framebuffer support,35,Framebuffer帧缓冲设备的操作,应用程序对framebuffer帧缓冲设备的

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号