framebuffer驱动详解2——framebuffer驱动框架分析

以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除。


一、framebuffer驱动框架总览

1、驱动框架部分

(1)drivers/video/fbmem.c(主要的文件)

  • 创建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)驱动框架不涉及具体的硬件操作(寄存器级的操作)


2、驱动部分

(1)drivers/video/samsung/s3cfb.c,驱动主体;

(2)drivers/video/samsung/s3cfb_fimd6x.c,里面有很多LCD硬件操作的函数;

(3)arch/arm/mach-s5pv210/mach-x210.c,负责提供platform_device的;

(4)arch/arm/plat-s5p/devs.c,为platform_device提供一些硬件描述信息的;

3、如何分析

(1)经验

(2)分析menuconfig、Makefile、Kconfig等

(3)内核编译后检查编译结果中的.o文件

framebuffer驱动详解2——framebuffer驱动框架分析_第1张图片


六、framebuffer驱动框架分析1

1、fbmem_init函数

(1)#ifdef MODULE这里没有定义,因此这里直接集成在内核中,因此是subsys_initiall;

  • 由于是直接集成的,因此不需要卸载,也就是说这个函数,对应于#ifdef MODULE这种情形

(2)fb_proc_fops和fb在proc文件系统中的表现,即cat /proc/fb的实现;

(3)register_chrdev注册fb设备;

(4)class_create创建graphics类;

(5)fbmem_exit的对应;

2、fb_fops

(1)read/write/mmap/ioctl

(2)registered_fb和num_registered_fb

(3)struct fb_info


七、framebuffer驱动框架分析2

1、register_framebuffer

(1)fb驱动框架开放给驱动编写者的注册接口

(2)fb_check_foreignness:判断大小端模式的

(3)remove_conflicting_framebuffers:去掉冲突的fb

(4)device_create

(5)fb_init_device

framebuffer驱动详解2——framebuffer驱动框架分析_第2张图片

2、fb在sysfs中的接口:fb_init_device

(1)device_attrs

(2)dev_set_drvdata和dev_get_drvdata


八、framebuffer驱动框架分析3

1、fb的mode

(1)什么是mode

(2)fb_var_to_videomode

framebuffer驱动详解2——framebuffer驱动框架分析_第3张图片

(3)fb_add_videomode

2、注册登记该fb设备

(1)registered_fb[i] = fb_info;

(2)结合fb_read等函数中对fb_info的使用

(3)关键点:数据如何封装、数据由谁准备由谁消费、数据如何传递

3、fb_notifier_call_chain





你可能感兴趣的:(驱动学习)