新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 高清嵌入式系统中的DVI驱动开发

高清嵌入式系统中的DVI驱动开发

作者:时间:2012-05-08来源:网络收藏

②初始化帧缓冲信息结构体fb_info的固定和可变参数,填充fb_var_screeninfo var和fb_fix_screeninfo fix成员。
定义fbi为struct fb_info类型的指针,通过fbi->fbops=&mxcfb_ops语句,将已定义的文件操作接口mxcfb_ops赋予fb-info结构的fbops成员。
调用mxcfb_check_var(&fbi->var,fbi)函数,检查和调整fb_info结构中变量var的值。var是一个struct fb_var_screeninfo类型的变量,表示显示控制器参数,其中与显示输出状态有关的信息,如屏幕分辨率等将在后面的中设置。
调用mxcfb_set_fix(fbi)函数,用于填充一个struct fb_fix_screeninfo结构变量fbi->fix,它描述了显示输出设备自身的属性。
③调用register_framebuffer(fbi)函数,注册帧缓冲程序,该函数只有一个参数,即前面已定义的、指向struct fb_info结构的指针fbi。
4.2.2 设备
LCD控制器将芯片作为它所连接的显示外设,在完成LCD控制器驱动后还需编写DVI设备驱动。在文件drivers/video/mxc/mxcfb_ dvi.c中定义驱动结构体:
f.jpg
然后,在外设驱动入口函数dvi_init(void)中调用platform_driver_regtster(&dvi_driver)注册DVI驱动,驱动加载后,自动调用探测函数dvi_probe,该函数主要实现以下操作:一是指定framebuffer设备,由于MX51IPU(图像处理单元)支持多个framebuffer设备,此处要确定DVI究竟使用Mx51 IPU framebuffer的哪一个设备;二是填充fb_var_screeninfo结构变量var中有关显示输出状态的信息,如屏幕的显示分辨率、画面位置等,为此在程序中定义结构数组video_modes:
g.jpg
结构struct fb_videomode用于描述显示输出状态,调用函数“fb_videomode_to_var(&var,&video_modes[0])”将屏幕显示参数转换为var结构变量的相关成员,由于var的部分成员值已在前面LCD控制器驱动中确定,此处完成了对var全部成员的设置。
一个frambuffer设备由一个struct fb_info结构表示,本设计用fb_info结构的全局变量regtstered_fb表示注册的frambuffer设备,驱动程序的主要任务之一是填充这个结构变量。LCD控制器驱动与DVI外设驱动之间的信息传递,通过该全局变量实现。

5 DVI驱动测试
首先,通过显示一幅图片测试DVI输出是否正常。通过转换工具(如Image21cd)把一幅1024×768大小的jpg图片转换为RGB 888分辨率、1024x 768的RGB格式的二进制图片。然后键入命令:cp pic.bin/dev/fb0,此时图片显示于屏幕上。接下来,再使用MX51的视频解码测试程序播放一个720P的视频H.264文件,可以看到视频播放清晰流畅,效果很好。

结语
经测试,DVI驱动程序在MX51平台上成功实现。framebuffer是Linux提供给用户的一个直接面向显示缓冲区的接口,本设计是一个面向应用的framebuffer驱动,文中给出了DVI驱动的整体架构,对主要模块的设计思想和实现方法进行了详细的介绍。

本文引用地址:http://www.eepw.com.cn/article/149120.htm
linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭