lcd设资料备驱动跟全解析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux中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 */图像硬件mapper struct fb_pixmap sprite;/* Cursor hardware mapper */光标硬件mapper struct 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,? ? remo

文档评论(0)

lau158 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档