1 / 26

Linux 帧缓冲

Linux 帧缓冲. 北京博创兴业科技有限公司. LCD 简介. 主讲人:张笑天. zhangxt_uptech@126.com. LCD 简介. 液晶显示是一种被动的显示,它不能发光,只能使用周围环境的光。它显示图案或字符只需很小能量。液晶显示所用的液晶材料是一种兼有液态和固体双重性质的有机物,它的棒状结构在液晶盒内一般平行排列,但在电场作用下能改变其排列方向. LCD 的背光. EL (场致发光): 2000-3000 小时 以黄绿色为主,常用于小型灰度 LCD 背光 LED 光源: 50000 小时 成本低、寿命长、支流供电,发光电压低、体积小

keola
Download Presentation

Linux 帧缓冲

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linux 帧缓冲 北京博创兴业科技有限公司

  2. LCD简介 主讲人:张笑天 zhangxt_uptech@126.com

  3. LCD 简介 液晶显示是一种被动的显示,它不能发光,只能使用周围环境的光。它显示图案或字符只需很小能量。液晶显示所用的液晶材料是一种兼有液态和固体双重性质的有机物,它的棒状结构在液晶盒内一般平行排列,但在电场作用下能改变其排列方向

  4. LCD 的背光 • EL(场致发光):2000-3000小时 以黄绿色为主,常用于小型灰度LCD背光 • LED光源:50000小时 成本低、寿命长、支流供电,发光电压低、体积小 • CCFL(冷阴极荧光灯):60000小时 需要高压交流,体积大

  5. LCD的显示方式 • 反射型LCD:底偏光片后面加了一块反射板,它一般在户外和光线良好的办公室使用。 • 透射型LCD:底偏光片是透射偏光片,它需要连续使用背光源,一般在光线差的环境使用。 • 透反射型LCD:是处于以上两者之间,底偏光片能部分反光,一般也带背光源,光线好的时候,可关掉背光源;光线差时,可点亮背光源使用LCD。

  6. LCD驱动方式 • 一种是带有LCD扫描芯片的LCD模块 • 一种是通过LCD控制器,直接扫描LCD屏。 比如:S3C2410处理器,带有LCD控制器,显示缓存和系统内存公用。可以支持STN(彩色/灰度)和TFT两种模式的LCD TFT模式下最多支持18位色,800x600分辨率。

  7. 嵌入式处理器 数据总线 LCD模块 寄存器选择 使能信号 LCD 有LCD控制器的嵌入式处理器 LCD控制信号线 嵌入式处理器与LCD的连接

  8. S3C2410的LCD扫描模式 • 4/8位,单/双扫描模式,CSTN • 最多256级灰度 • 显示缓冲区支持15、16、24位TFT模式 • 支持RGB格式

  9. 典型的LCD模式信号线 • LDD<17:0>,数据线 • L_PCLK,点时钟 • L_LCLK,行频 • L_FCLK,帧频 • L_BIAS,CSTN的AC信号,TFT的开启信号

  10. 4位单扫STN模式

  11. 8位CSTN屏幕点阵:320x240

  12. 8位单扫描CSTN模式

  13. TFT常见信号线 • VSYNC——帧同步信号(垂直) • HSYNC——行同步信号(水平) • VCLK——时钟 • VDEN——数据有效控制 • VD——数据信号

  14. 16位单扫描TFT模式

  15. 显示缓冲与显示点的对应 • 4位单扫描显示缓冲的对应关系 • 1个字节存储两个点的信息 • 16级灰度

  16. 8位单扫描显示缓冲的对应关系 标准映射: • 1个字节存储1个点的信息 • 可以是用调色板

  17. 16/15位显示缓冲的对应关系

  18. Linux framebuffer

  19. Framebuffer的结构 • 在Linux系统下,把显示缓冲区映射给用户空间 • 应用程序直接操作显示缓冲区(mmap) • Linux中,有对framebuffer的专门支持,提供系统的ioctl • X86下就有支持,软件容易移植

  20. Framebuffer的应用 • Linux的framebuffer接口提供给用户访问显示设备的通用接口 • 通过mmap映射显示缓冲给用户 • 不包括任何绘图接口

  21. Framebuffer使用练习 • 常用接口 • 重要结构体: 在fb.h文件中定义了下列结构: fb_info 、fb_fix_screeninfo、fb_var_screeninfo、fb_cmap等 /usr/src/linux-2.4.20-8/include/linux/fb.h /usr/src/linux-2.4.20-8/drivers/video/fbmem.c /usr/src/linux-2.4.20-8/drivers/video/fbcmap.c

  22. 常用接口 • 在fbmem.c文件中定义了对framebuffer的操作 static struct file_operations fb_fops = { owner: THIS_MODULE, read: fb_read, write: fb_write, ioctl: fb_ioctl, mmap: fb_mmap, open: fb_open, release: fb_release, #ifdef HAVE_ARCH_FB_UNMAPPED_AREA get_unmapped_area: get_fb_unmapped_area, #endif };

  23. 常用接口 • mmap • 说明: 一般情况下是将设备内存映射到用户空间 #include <sys/mman.h> void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);

  24. 常用接口 • 常用的ioctl if (ioctl(fb, FBIOGET_VSCREENINFO, &fb_vinfo)) { printf("Can't get VSCREENINFO: %s\n", strerror(errno)); close(fb); return -1; } if (ioctl(fb, FBIOGET_FSCREENINFO, &fb_finfo)) { printf("Can't get FSCREENINFO: %s\n", strerror(errno)); return 1; }

  25. 感谢您参加博创嵌入式教学培训!

More Related