LCD驱动系统

LCD系统

标准的设备显示驱动是FrameBuffer

LCD驱动系统_第1张图片
Paste_Image.png

FrameBuffer内核层

FrameBuffer驱动涉及文件:
include/linux/fb.h头文件
drivers/video/fbmem.c是FrameBuffer驱动的核心实现文件
fb_info 核心数据结构

硬件抽象层

Gralloc模块是显示部分的硬件抽象层
1.头文件:hardware/libhardware/include/hardware/gralloc.h
2.硬件帧缓冲区:
Gralloc模块由gralloc_module_t,alloc_device_t和framebuffer_device_t 结构体描述,Gralloc模块是由UI库文件framework/native/include/ui/FramebufferNativeWindow.cpp调用
类FramebufferNativeWindow继承了android_native_buffer_t,是上层的接口,表示一个本地窗口

LCD驱动系统_第2张图片
Paste_Image.png

3.显示缓冲区的分配:
framework/native/libs/ui/GraphicBufferAllocator.cpp调用Gralloc模块和gralloc_module_t显示缓冲区的分配
4.显示缓冲映射:
framework/native/libs/ui/GraphicBufferMapper.cpp调用Gralloc模块显示缓冲的映射,并注册显示缓冲内容,使用完后可以注销显示的缓冲内容
5.SurfaceFlinger库调用Gralloc
暂未了解

Gralloc模块驱动程序

Android Gralloc动态库抽象的任务是消除不同设备之间的差别,Module层隐藏缓冲区操作细节,动态链接库gralloc.xxx.so封装底层细节
Gralloc模块的实现hardware/libhardware/modules/gralloc/
gralloc.cpp:实现gralloc_module_t和alloc_device_t
mapper.cpp:实现工具函数
framebuffer.cpp实现alloc_device_t

你可能感兴趣的:(LCD驱动系统)