你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
Framebuffer的LCD驱动程序设计(三)
 

本结构中的所有成员函数都实现了应用程序对帧缓冲区设备的控制。重点介绍其中的三种比较重要的操作[5]

(1) /(read/write)操作,相当于读/写屏幕缓冲区。

(2) 映射(map)操作:由于Linux工作在保护模式,每个应用程序都有自己的虚拟地址空间,在应用程序中不能直接访问物理缓冲区地址。为此,Linux在文件操作 file_operations结构中提供了mmap函数,可将文件的内容映射到用户空间。对于帧缓冲设备,通过映射操作,将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址中,用户就可以通过读写这段虚拟地址访问屏幕缓冲区,在屏幕上显示图形。

(3) I/O控制:对于帧缓冲设备,对设备文件的ioctl操作可读取/设置显示设备及屏幕的参数,如分辨率、显示颜色数、屏幕大小等等。ioctl的操作是由底层的驱动程序来完成的。

4 帧缓冲驱动程序

通过上文的分析可知,编写帧缓冲设备驱动程序要完成的工作其实不多,主要有以下步骤:

(1) 编写初始化程序。首先初始化结构体fb_info,填充其中成员变量参数,包括屏幕的显示模式和显示色彩数。然后分配LCD显示缓冲区,在Linux下,可以通过Kmalloc函数来分配一片连续的空间。采用的LCD显示方式是320*240像素,8位灰度,因此分配的缓冲区大小为320*240*88=75KBite。缓冲区通常分布在片外SDRAM中,起始地址在LCD控制寄存器中。最后设置LCD控制器参数。调用一个register_framebuffer(&fb_info)fb_info登记入内核初始化部分代码如下:

int __init s3c2410fb_int(void)

{ 

  struct s3c2410fb_info *fbi;

  int ret;

fbi=s3c2410fb_int_fbinfo(); // 初始化结构s3c2410fb,包括结构fb_infoLCD硬件参数保存到结构中。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089