从零开始之驱动发开、linux驱动(二十八、framebuffer驱动框架)

本文介绍了Linux系统中Framebuffer驱动的开发流程,包括注册framebuffer类、设置主设备号、定义通用的file_operations(fops)、提供注册和卸载接口、处理应用层参数设置、实现show和store接口,以及硬件驱动的编写,如使用平台总线、设备树、probe和remove函数、硬件初始化和中断申请等。重点在于将应用层参数更新到硬件寄存器的机制。

框架

1.注册一个framebuffer类。

2.注册一个主设备号,因为fb个数通常比较少,所以可以用老的接口统一注册。

3.为2中的注册实现通用的fops,注意这里是通用的,特殊的架构在通用的里面还是要调用专门fb注册时实现的操作接口。(参考下面)

4.提供统一的注册,卸载接口。

5.注册卸载中对一些应用层可设的参数提供一些attribute操作接口,比如分辨率,bpp,显示模式等。

6.为5中实现对应的show和store接口。

7.基本所有的store都需要对应用层设置的参数检查,通过之后,调用每个fb注册时专有的设置函数。这种函数就是把写的参数,写到真正的硬件寄存器。

 


static const struct file_operations fb_fops = {
	.owner =	THIS_MODULE,
	.read =		fb_read,            /* 通用的什么都没做,如果特殊架构实现了,则优先使用架构自己的 */
	.write =	fb_write,           /* 通用的写显存,如果特殊架构实现了,则优先使用架构自己的 */
	.unlocked_ioctl = fb_ioctl,
#ifdef CONFIG_COMPAT
	.compat_ioctl = fb_compat_ioctl,
#endif
	.mmap =		fb_mmap,
	.open =		fb_open,
	.release =	fb_release,
#ifdef HAVE_ARCH_FB_UNMAPPED_A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小刺猬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值