概述
二、Linux的LCD驱动架构
FrameBuffer只是提供了统一的LCD驱动设计模型,而具体的液晶屏显示、控制、参数设置等则需要具体的LCD控制器驱动完成,而对于LCD驱动开发者来说,FrameBuffer已经由内核完成了,其主要工作就是进行LCD控制器驱动设计。LCD控制器驱动和FrameBuffer主要通过structfb_info数据结构进行协作,该数据结构主要包含了以下重要成员:
- fb_var_screeninfo:描述了fb的可变参数,如宽、高、颜色深度等。
- fb_fix_screeninfo:定义了fb的固定参数,如framebuffer内存的起始地址,地址长度等;
- fb_cmap:颜色表信息,可以通过ioctl的FBIOGETCMAP和FBIOPUTCMAP命令访问;
-
fb_ops:定义的方法用于支持对LCD控制器的操作;
三、Linux的LCD驱动实现
对于当前大多数开发板,其LCD控制器驱动都是通过platform总线进行挂载的,在platform总线的probe函数中完成fb_info结构的设置及注册、LCD控制器的初始化等工作,其流程如下图所示:
LCD驱动开发需要重点完成的是structfb_ops的接口函数实现,这些接口函数是实现用户可以控制LCD硬件的基础。比如应用程序在调用ioctl(fbx)进行液晶屏设置操作,其最终会调用fb_ops->fb_ioctl()函数,其调用流程图如下图所示:
对于TTL RGB接口的液晶屏,做完上述工作,LCD驱动程序基本就完成了,但对于LVDS和MIHIDSI接口的液晶屏,从之前的LCD接口图可以看出,还需要完成LVDS和DSI接口控制器的驱动,LCD才能工作。
最后
以上就是仁爱飞鸟为你收集整理的Linux的LCD驱动分析的全部内容,希望文章能够帮你解决Linux的LCD驱动分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复