Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Linux 帧缓冲 北京博创兴业科技有限公司."— Presentation transcript:

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

2 LCD简介 主讲人:张笑天

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

4 LCD 的背光 EL(场致发光):2000-3000小时 LED光源:50000小时 成本低、寿命长、支流供电,发光电压低、体积小
CCFL(冷阴极荧光灯):60000小时 需要高压交流,体积大

5 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——数据有效控制

14 16位单扫描TFT模式 列0 列1 行0 LDD[15:0] 行1

15

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

17 8位单扫描显示缓冲的对应关系 标准映射: 1个字节存储1个点的信息 可以是用调色板 RGB 7 6 5 4 3 2 1 R[2:0]
R[2:0] G[2:0] B[1:0] BGR 7 6 5 4 3 2 1 B[1:0] G[2:0] R[2:0] 1个字节存储1个点的信息 可以是用调色板

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

19 Linux framebuffer

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

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

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

23 常用接口 在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 };

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

25 常用接口 常用的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; }

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


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

Similar presentations


Ads by Google