以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除。
一、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驱动框架分析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
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
(3)fb_add_videomode
2、注册登记该fb设备
(1)registered_fb[i] = fb_info;
(2)结合fb_read等函数中对fb_info的使用
(3)关键点:数据如何封装、数据由谁准备由谁消费、数据如何传递