Framebuffer驱动程序框架

Posted 韦东山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Framebuffer驱动程序框架相关的知识,希望对你有一定的参考价值。

Framebuffer驱动程序框架

1. 怎么编写字符设备驱动程序

  • 驱动主设备号
  • 构造file_operations结构体,填充open/read/write等成员函数
  • 注册驱动:register_chrdev(major, name, &fops)
  • 入口函数
  • 出口函数

2. Framebuffer驱动程序框架

分为上下两层:

  • fbmem.c:承上启下
    • 实现、注册file_operations结构体
    • 把APP的调用向下转发到具体的硬件驱动程序
  • xxx_fb.c:硬件相关的驱动程序
    • 实现、注册fb_info结构体
    • 实现硬件操作

调用关系:

例子1:
app:  open("/dev/fb0", ...)   主设备号: 29, 次设备号: 0
--------------------------------------------------------------
kernel:
         fb_open
         	int fbidx = iminor(inode);
         	struct fb_info *info = = registered_fb[0];


例子2:
app:  read()
---------------------------------------------------------------
kernel:
		fb_read
			int fbidx = iminor(inode);
			struct fb_info *info = registered_fb[fbidx];
			if (info->fbops->fb_read)
				return info->fbops->fb_read(info, buf, count, ppos);
         	
			src = (u32 __iomem *) (info->screen_base + p);
			dst = buffer;
			*dst++ = fb_readl(src++);
			copy_to_user(buf, buffer, c)         	

3. 怎么编写Framebuffer驱动程序

核心:

  • 分配fb_info

    • framebuffer_alloc
  • 设置fb_info

    • var
    • fbops
    • 硬件相关操作
  • 注册fb_info

    • register_framebuffer

以上是关于Framebuffer驱动程序框架的主要内容,如果未能解决你的问题,请参考以下文章

Framebuffer驱动程序框架

4 linux lcd驱动框架分析

Linux Framebuffer驱动框架之二软件架构(未完待续)

Linux 帧缓冲子系统详解:LCD介绍framebuffer驱动框架LCD驱动源码分析

Linux Framebuffer 驱动框架之一概念介绍及LCD硬件原理

11.1 Android显示系统框架_framebuffer原理及改进