- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FrameBuffer的嵌入式系统LCD图像显示的实现.doc
基于FrameBuffer的嵌入式系统LCD图像显示的实现
摘要:本文以OMAP3530为处理器,S3C2410 LCD控制器为基础,基于嵌入式Linux 2.6内核,研究了FrameBuffer机制下的LCD驱动程序,介绍了相关的数据结构,FrameBuffer的加载和卸载的完整过程。实现了在LCD上显示字符、图形、图像的应用。
中国 8/vie
关键词: 帧缓冲; LCD; 图像显示
中图分类号: TP311
文献标志码: A
: 2095-2163(2016)06-0127-03
0引言
随着嵌入式技术的发展,显示模块在嵌入式产品中得到了日趋广泛的设计应用。LCD可显示字符、汉字和图形,具有低功耗、体积小、绿色环保等特点,因而在嵌入式产品的显示系统上已然成为重点优先研究首选。LCD的驱动程序针对不同的处理器通用性较差,本文为此研讨提出了一种移植性较好的LCD驱动程序,即基于Linux的FrameBuffer机制,同时采用S3C2410 LCD控制器,进而开发生成了嵌入式LCD的字符、图形、图像显示方法。
[BT4]1基于FrameBuffer的驱动设计
[BT5]1.1FrameBuffer机制
FrameBuffer是Linux操作系统为显示设备提供的一种驱动程序接口,可将显示缓冲区实现抽象处理,屏蔽图像硬件的底层,上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心显示缓冲区的具体物理位置、存放方式。FrameBuffer的显示缓冲区位于Linux核心态地址空间,每个应用程序均有自己的虚拟地址空间。用户通过调用mmap函数,可将文件的内容映射到应用空间。对于FrameBuffer设备而言,通过映射操作,可将屏幕缓冲区的物理地址应用到程序空间的一段虚拟地址中,然后通过读写对应段虚拟地址而访问屏幕缓冲区,从而在屏幕上绘制各种图形、图像、文字等。FrameBuffer的优点是可高度灵活地支持不同的硬件,减少了新处理器的开发工作。
[BT5]1.2基于FrameBuffer的驱动设计
FrameBuffer帧缓冲设备给用户设计指定的读写接口file_operations实际由fbmem.c文件里的特定file_operatins结构对象来展现提供,而特定帧缓冲设备fb_info结构体的注册、注销及其中成员的维护,尤其是fb_ops中的成员函数的实现则由对应的xxxfb.c文件来构造调取显示,fb_ops中的成员函数最终会操作LCD控制器的寄存器。图1即给出了帧缓冲设备驱动的程序结构。
1.2.1FrameBuffer相关的数据结构
本节,将研究给出与帧缓冲相关的数据结构的功能设计概述如下:
1)fb_info。记录了FrameBuffer的全部信息,包括设备的定制参数、状态以及操作函数指针。每一个帧缓冲设备必须对应唯一fb_info。
2)fb_ops。fb_info的成员变量fb_ops即为指向底层操作的函数的指针,这些函数是需要驱动程序开发人员来制定编写的。包括打开、释放函数,用于检查可以修改的屏幕参数并调整到适当值,同时设置color寄存器,使用户设置的屏幕参数在硬件上能够呈现事实有效等具体功能的分配操作。
3)fb_var_screeninfo和fb_fix_screeninfo。这2个结构体也是fb_info的成员。其中,fb_var_screeninfo记录用户可修改的显示控制器参数,包括屏幕分辨率和每个像素点的比特数。fb_fix_screeninfo记录用户不能修改的显示控制器的参数,如屏幕缓冲区的物理地址、长度。当对帧缓冲设备展开执行映射操作的时候,就是从fb_fix_screeninfo中取得缓冲区物理地址的。
4)fb_bitfield。描述每一像素显示缓冲区的组织方式,包括位域偏移、位域长度和MSB指示。
5)fb_cmap。记录设备无关的颜色表信息。
1.2.2FrameBuffer设备驱动的模块加载和卸载
FrameBuffer设备驱动的模块加载,可解析描述为如下4个步骤:
1)申请fb_info结构体的内存空间,初始化fb_info结构体中固定和可变的屏幕参数,即填充fb_info的fb_var_screeninfo var和fb_fix_screeninfo fix成员。
2)根据LCD屏幕的特点,执行LCD控制器硬件的初始化。
3)申请FrameBuffer设备的显示缓冲区空间。
4)注册FrameBuffer设备。
FrameBuffer设备驱动的模块卸载,则需依次释放fb_info结构体内存、关闭LCD、释放显示缓冲区以及
文档评论(0)