米联客技术答疑系统
微信客服01
微信客服02
微信客服03
QQ售前
QQ售后
提交问题
常见问题
联系我们
客服时间
周一至周五
8:00~18:00
[X]关闭
联系在线客服
首页
BBS
技术答疑系统
VIP视频课程
VIP板卡资料包
VIP会员购买
米联客-天猫店
米联客-京东店
发表
发布文章
提问答疑
搜索
您还未登录
登录后即可体验更多功能
立即登录
我的收藏
提问答疑
我要投稿
客服中心
工单中心
操作系统Linux
主题分类
学习提问
自学笔记
经验总结
资料分享
LCD液晶显示之fbmem.c(二)
文档创建者:
ぉ沙皮狗的忧伤
浏览次数:
6256
最后更新:
2020-09-11
操作系统Linux
6256 人阅读
|
0 人回复
本帖最后由 ぉ沙皮狗的忧伤 于 2020-9-14 15:33 编辑
1、先分析init函数
proc_create创建一个proc虚拟文件系统,应用层通过读写该文件,即可实现与内核的交互
register_chrdev申请设备号,实现fb_fops
主设备号FB_MAJOR = 29
class_create创建类
2、分析fb_fops
**********************************************************************************
(1)open函数分析
①、从inode节点中获取次设备号
②、根据得到的次设备号获取info结构体
③、看看这个fb设备是否被调用
④、将获取到的info信息传入到file里面
**********************************************************************************
**********************************************************************************
(2)read函数分析
read函数参数
参数1--------flie要读取的文件
参数2--------buf读取数据的存储位置
参数3--------count读取的大小
参数4--------ppos文件描述符
判断底层传上来的info信息是否被修改,若被修改则无法读取
struct fb_info *info = file_fb_info(file);
根据不同的次设备号从结构数组中获取对应的info信息
与file->private_data比较,判断是否被修好,若显示屏的参数被修改,则不允许读写操作
判断是否存获取到info结构体和内存映射是否成功
查询info状态
判断底层有没有实现自己的读函数,没有就运行系统的
先从info结构体中获取内存大小
如果获取不到则从fix结构体中去寻找
**********************************************************************************
**********************************************************************************
(3)、ioctl
FBIOGET_VSCREENINFO 从底层获取var结构体信息
FBIOPUT_VSCREENINFO
FBIOGET_FSCREENINFO 从底层获取info结构体
FBIOPUTCMAP
FBIOGETCMAP 从底层获取cmap
FBIOPAN_DISPLAY
**********************************************************************************
**********************************************************************************(4)、fb_mmap
**********************************************************************************
更新中
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
上一个主题
下一个主题
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页