LCD驱动及framebuffer子系统解析

本文深入探讨了LCD设备的framebuffer子系统,包括核心层和驱动层的职责。核心层通过fbmem.c提供API,维护fb_info结构体,而驱动层负责初始化fb_info并注册到内核。fb_info包含fb_var_screeninfo、fb_fix_screeninfo和fb_ops等关键信息。驱动层的fb_ops与核心层的交互主要通过register_framebuffer和fb_read等函数实现。
摘要由CSDN通过智能技术生成

之前实现了lcd上显示图片,现在来看看framebuffer子系统的主要结构

在这里插入图片描述与input设备相同,lcd设备也有自己的子系统framebuffer子系统,内核空间部分分为核心层和驱动层,核心层负责提供API给应用调用,提供API给驱动层,每个帧缓冲设备都对应一个fb_info的结构体,而驱动层就进行fb_info结构体的初始化,并注册到内核中

核心层

fbmem.c
fbmem.c 处于Framebuffer设备驱动技术的中心位置.它为上层应用程序提供系统调用也为下一层的特定硬件驱动提供接口;那些底层硬件驱动需要用到这儿的接口来向系统内核注册它们自己. fbmem.c 为所有支持FrameBuffer的设备驱动提供了通用的接口,避免重复工作.

fb_info结构体 linux/include/fb.h 这个结构体贯穿整个子系统,非常重要。

在这里插入图片描述
fb_info中重要的三个结构体fb_var_screeninfo、fb_fix_screeninfo、fb_ops。fb_var_screeninfo结构体记录了用户可以修改的显示参数,比如屏幕分辨率,屏幕颜色位域等,比如画图的时候需要得知屏幕的参数的时候就需要用到它,fb_fix_screeninfo结构体则记录了用户不可修改的参数,比如屏幕缓冲区的物理地址和缓存的长度等。fb_ops结构体记录了对底层硬件操作的函数指针

在probe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值