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

ret= s3c2410fb_map_video_memory()//分配LCD显示缓冲区

if(ret){kfree(fbi); return ret; } //出错返回

s3c2410fb_set_var(&fbi->fb.var ,-1,&fbi->fb); //设置显示控制参数

ret=register_frambuffer(&fbi->fb);   //注册显示驱动程序

if(ret<0){kfree(fbi);return ret;}  //出错返回

printk(“Installed s3c2410 framebuffer \n”);  //控制台显示驱动安装成功

return 0;

}

(2) 编写结构fb_info中函数指针fb_ops对应的成员函数。对于本系统的实现,需要将函数进行如下设置:

static struct fb_ops  s3c2410fb_ops=

{owner:     THIS_MODULE,

fb_get_fix:   s3c2410fb_get_fix,

fb_get_var:   s3c2410fb_get_var,

fb_set_var:   s3c2410fb_set_var,

fb_get_cmp:  s3c2410fb_get_cmp,

fb_set_cmp:  s3c2410fb_set_cmp,

fb_io_ctl:    s3c2410fb_io_ctl,

};

这些函数都是用来设置/获取fb_info结构中的成员变量的。当应用程序对设备文件进行ioctl操作时候会调用它们。对于fb_get_fix()函数,应用程序传入的是fb_fix_screeninfo结构,在函数中对其成员变量smem_start(缓冲区起始地址)和smem_len(缓冲区长度)赋值,最终返回给应用程序。fb_set_var()函数的传入参数是fb_var_screeninfo,函数中xres变量赋值为屏幕一行的像素数目,yres赋值为屏幕一列像素点的数目,bits_per_pixel赋值为每个点用多少个字节表示。

LCD驱动程序的框架就是上述提到的几个部分,下面的工作就是把一些调用的函数编写完整,然后选择将其编译为动态或静态加载模块,编译到内核中。

 

5 结语

ARM平台上,嵌入式Linux操作下编写LCD驱动程序的原理和程序框架。虽然图形设备种类多种多样,但是其驱动的编写都是有一定可以遵循的模式。研究图形驱动程序的编写,对于嵌入式系统的图形化界面的应用,有很大的借鉴意义。

 

参考文献

 

[1] RUBINI A, CORBET J.LINUX设备驱动程序[M].魏永明,骆勇,姜均 译.北京:中国电力出版社,2002

[2] 王粉花.基于Linux字符设备驱动程序的设计与实现[J].计算机工程,2006,31(4):88-90.

[3] 熊敏,万频,等.基于AT91ARM9200LCD驱动程序设计[J].微计算机信息,2007,23(10-2):81-83.

[4] 田泽.ARM9嵌入式开发与实践[M].北京:北京航空航天出版社,2006.

[5] 雷洪,熊文龙,等.基于FrambufferLCD驱动程序的实现[J].武汉理工大学学报(交通科学与工程版),2006301):106-109.
  推荐精品文章

·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