• 5.7.5.framebuffer驱动框架总览


    参考http://www.cnblogs.com/EaIE099/p/5175979.html
    本节对内核的framebuffer驱动框架做整体介绍,各部分涉及哪些文件,每个文件是谁写的,具体功能是什么,详细的代码分析在后面。

    5.7.5.1、驱动框架部分
    (1)drivers/video/fbmem.c。主要任务:1、创建graphics类、注册FB的字符设备驱动、提供register_framebuffer接口给具体framebuffer驱动编写着来注册fb设备的。本文件相对于fb来说,地位和作用和misc.c文件相对于杂散类设备来说一样的,结构和分析方法也是类似的。
    (2)drivers/video/fbsys.c。这个文件是处理fb在/sys目录下的一些属性文件的。
    (3)drivers/video/modedb.c。这个文件是管理显示模式(譬如VGA、720P等就是显示模式)的
    (4)drivers/video/fb_notify.c
    5.7.5.2、驱动部分
    (1)drivers/video/samsung/s3cfb.c,驱动主体
    (2)drivers/video/samsung/s3cfb_fimd6x.c,里面有很多LCD硬件操作的函数
    (2)arch/arm/mach-s5pv210/mach-x210.c,负责提供platform_device的
    (3)arch/arm/plat-s5p/devs.c,为platform_device提供一些硬件描述信息的
    5.7.5.3、如何分析
    (1)经验
    (2)分析menuconfig、Makefile、Kconfig等
    (3)内核编译后检查编译结果中的.o文件

    从上面这幅图看,帧缓冲设备在Linux中也可以看做是一个完整的子系统,大体由fbmem.c和xxxfb.c组成。向上给应用程序提供完善的设备文件操作接口(即对FrameBuffer设备进行read、write、ioctl等操作),接口在Linux提供的fbmem.c文件中实现;向下提供了硬件操作的接口,只是这些接口Linux并没有提供实现,因为这要根据具体的LCD控制器硬件进行设置,所以这就是我们要做的事情了(即xxxfb.c部分的实现)。
    由上图可以看出 lcd的应用层 通过 内核的fbmem接口 再调用驱动xxxfb.c的内容。而fbmem接口是内核提供的,所有驱动设计人员主要的任务就是定义一个fb_info 结构体(该结构由内核提供),然后填充结构体中的内容做好相应的初始化后,提交给内核就可以了。

    帧缓冲设备为标准的字符型设备,在linux中主设备号29,定义在/include/linux/major.h中的FB_MAJOR,次设备号定义帧缓冲的个数,最大允许有32个framebuffer,定义在/include/linux/fb.h中的FB_MAX,定义文件系统下/dev/fb%d设备

  • 相关阅读:
    【老孙随笔】项目经理要如何看待技术?
    从菜鸟到CTO——你的目标需要管理
    FormatX源代码格式化插件V2.0版
    JavaScript面向对象之静态与非静态类
    FormatX源代码格式化插件
    正确捕获 WCF服务调用中发生的异常及处理技巧
    2010,应该感谢的那些人以及那些未完成的事
    使用IErrorHandle对WCF服务器进行异常处理
    代码重构之路的艰辛
    从读取Excel文件引申出的问题(上)
  • 原文地址:https://www.cnblogs.com/Ocean-Star/p/9250841.html
Copyright © 2020-2023  润新知