[X]关闭

LCD液晶显示之fbmem.c(二)

文档创建者:ぉ沙皮狗的忧伤
浏览次数:6137
最后更新:2020-09-11
本帖最后由 ぉ沙皮狗的忧伤 于 2020-9-14 15:33 编辑

截图202009111738569714..png



1、先分析init函数
截图202009111721256470..png

proc_create创建一个proc虚拟文件系统,应用层通过读写该文件,即可实现与内核的交互

register_chrdev申请设备号,实现fb_fops
   主设备号FB_MAJOR = 29

class_create创建类


2、分析fb_fops
截图202009111726008535..png
**********************************************************************************
(1)open函数分析
截图202009140950041631..png
①、从inode节点中获取次设备号
截图202009140949328398..png
②、根据得到的次设备号获取info结构体
    截图202009111752254076..png ③、看看这个fb设备是否被调用
   截图202009140946044927..png

④、将获取到的info信息传入到file里面
   截图202009140947321930..png

**********************************************************************************


**********************************************************************************
(2)read函数分析
截图202009111733497354..png
read函数参数
参数1--------flie要读取的文件
参数2--------buf读取数据的存储位置
参数3--------count读取的大小
参数4--------ppos文件描述符

判断底层传上来的info信息是否被修改,若被修改则无法读取
struct fb_info *info = file_fb_info(file);
截图202009111740067683..png

根据不同的次设备号从结构数组中获取对应的info信息
截图202009111740521807..png

与file->private_data比较,判断是否被修好,若显示屏的参数被修改,则不允许读写操作
截图202009140954239193..png 判断是否存获取到info结构体和内存映射是否成功
截图202009141001382195..png
查询info状态
截图202009141003084784..png
判断底层有没有实现自己的读函数,没有就运行系统的
截图202009141004475560..png

先从info结构体中获取内存大小
截图202009141006224492..png
如果获取不到则从fix结构体中去寻找
截图202009141008438557..png

截图202009141009292762..png
截图202009141009479908..png
**********************************************************************************
**********************************************************************************
(3)、ioctl
截图202009141413153698..png


FBIOGET_VSCREENINFO      从底层获取var结构体信息
FBIOPUT_VSCREENINFO
FBIOGET_FSCREENINFO       从底层获取info结构体
FBIOPUTCMAP
FBIOGETCMAP            从底层获取cmap
FBIOPAN_DISPLAY
**********************************************************************************

**********************************************************************************(4)、fb_mmap

截图202009141433599878..png

截图202009141434409052..png

截图202009141435077416..png

截图202009141436002994..png
**********************************************************************************

截图202009141047427735..png

截图202009141048002095..png

截图202009141048182613..png

截图202009141048345854..png

截图202009141048543135..png
更新中










截图202009111751403798..png
截图202009141046387662..png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则