之前实现了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