LCD驱动框架分析

在内核里面 有驱动 Fbmem.c 用现成的驱动 写出自己的LCD驱动

Fbmenm.c 分析

app调用open

假设app open("/dev/fb0",…) 主设备号29 次设备号0
在内核中找到 注册驱动的程序在这里插入图片描述
找到 fp_open 函数
在这里插入图片描述
在这里插入图片描述
得到设备节点的次设备号
int fbidx = iminor(inode);
构建fb_info 结构体
struct fb_info *info;
让fb_info结构体等于registered_fb[次设备号]

当app里面调用read()

在这里插入图片描述
在这里插入图片描述
用次设备号在register_info[] 数组里面寻找
在这里插入图片描述
有读函数调用读函数
没有读函数 就让src = screen_base 再copy_to_usr
在这里插入图片描述

所以用到了register_info[] 数组找找它在哪

在这里插入图片描述
在fbmem.c 中的register_framebuffer()
在这里插入图片描述

整个框架的流程

在这里插入图片描述
因为上面的fbmem.c 已经构建好 自己就写硬件相关的驱动

分析s3c2410fb.c

注册一个平台driver
在这里插入图片描述
由于是总线驱动设备模型 就要找到probe函数
在这里插入图片描述
根据name 从内核里面找到同名的平台设备 调用probe函数
在这里插入图片描述
根据平台设备找到相关信息 分配一个`fb_info结构体
总结出硬件相关的驱动操作
在这里插入图片描述

跟据上图的硬件相关第四步写出硬件相关操作框架

在这里插入图片描述

发布了23 篇原创文章 · 获赞 6 · 访问量 3626
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览