lcd设备驱动之全解析.docx

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lcd设备驱动之全解析

/tianxiawuzhei/article/details/7593292linux中LCD设备驱动(1)——framebuffer(帧缓冲)1、framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。 framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构,可以通过framebuffer的读写直接对显存进行操作。用户可以将framebuffer看成是显存的一个映像,将其映射到进程空间后,就可以直接进行读写操作,写操作会直接反映在屏幕上。 framebuffer是个字符设备,主设备号为29,对应于/dev/fb%d 设备文件。通常,使用如下方式(前面的数字表示次设备号) 0 = /dev/fb0 第一个fb 设备 1 = /dev/fb1 第二个fb 设备 fb 也是一种普通的内存设备,可以读写其内容。例如,屏幕抓屏:cp /dev/fb0 myfilefb 虽然可以像内存设备(/dev/mem)一样,对其read,write,seek 以及mmap。但区别在于fb 使用的不是整个内存区,而是显存部分。2、fb与应用程序的交互对于用户程序而言,它和其他的设备并没有什么区别,用户可以把fb看成是一块内存,既可以向内存中写数据,也可以读数据。fb的显示缓冲区位于内核空间,应用程序可以把此空间映射到自己的用户空间,在进行操作。在应用程序中,操作/dev/fbn的一般步骤如下:(1)打开/dev/fbn设备文件。(2)用ioctl()操作取得当前显示屏幕的参数,如屏幕分辨率、每个像素点的比特数。根据屏幕参数可计算屏幕缓冲区的大小。(3)用mmap()函数,将屏幕缓冲区映射到用户空间。(4)映射后就可以直接读/写屏幕缓冲区,进行绘图和图片显示了。3、fb的结构及其相关结构体在linux中,fb设备驱动的源码主要在Fb.h (linux2.6.28\include\linux)和Fbmem.c (linux2.6.28\drivers\video)两个文件中,它们是fb设备驱动的中间层,为上层提供系统调用,为底层驱动提供接口。在fb.h文件中有fb驱动需要使用的很多结构,我们先对这些结构体进行说明:本章共介绍5个结构体:(1)、struct fb_info结构体(2)、struct fb_ops结构体(3)、struct fb_fix_screeninfo结构体(4)、struct fb_var_screeninfo结构体(5)、struct fb_cmap结构体(1)、struct fb_info结构体介绍一个帧缓冲区对应一个struct fb_info结构,它包括了帧缓冲设备的属性和操作的完整集合,每个帧设备都有一个fb_info结构体。源码如下:struct fb_info {int node;int flags;struct mutex lock;/* Lock for open/release/ioctl funcs */互斥锁struct fb_var_screeninfo var;/* Current var */当前缓冲区的可变参数struct fb_fix_screeninfo fix;/* Current fix */固定参数struct fb_monspecs monspecs;/* Current Monitor specs */当前显示器标志struct work_struct queue;/* Framebuffer event queue */帧缓冲事件队列struct fb_pixmap pixmap;/* Image hardware mapper */图像硬件mapperstruct fb_pixmap sprite;/* Cursor hardware mapper */光标硬件mapperstruct fb_cmap cmap;/* Current cmap */当前的调色板struct list_head modelist; ? ? ?/* mode list */struct fb_videomode *mode;/* current mode */当前的视频模式#ifdef CONFIG_FB_BACKLIGHT如果配置了LCD支持背光灯/* assigned backlight device *//* set before framebuffer registration,? remove after unregister */背光调

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档