Android display架构分析三-Kernel Space Display架构介绍
2013-01-29 16:43
330 查看
Android display架构分析三-Kernel Space Display架构介绍
如上图所示,除了上层的图形应用程序外,和Kernel空间有关的包括Linux FB设备层以及和具体HW相关的驱动层,对应的源文件分别是fb_mem.c、msm_fb.c、mddi_toshiba.c。下面会一一介绍。
fb_mem.c 函数和数据结构介绍
这个文件包含了Linux Fb设备的所有接口,主要函数接口和数据结构如下:
A、Fb设备的文件操作接口
B、3个重要的数据结构
FrameBuffer中有3个重要的结构体,fb.h中定义,如下:
1) 、frame_var_screeninfo
该结构体定义了显卡的一些可变的特性,这些特性在程序运行期间可以由应用程序动态改变,比较典型的如xrex和yres表示在显示屏上显示的真实分辨率、显示的bit数等,该结构体user space可以访问。
2) 、frame_fix_screeninfo
该结构体定义了显卡的一些固定的特性,这些特性在硬件初始化时就被定义了以后不可以更改。其中最重要的成员就是smem_len和smem_start,前者指示显存的大小(目前程序中定义的显存大小为整屏数据RGB565大小的2倍),后者给出了显存的物理地址。该结构体user space可以访问。
Note:smem_start是显存的物理地址,应用程序是不可以直接访问的,必须通过fb_ops中的mmp函数映射成虚拟地址后,应用程序方可访问。
3) 、fb_info
FrameBuffer中最重要的结构体,它只能在内核空间内访问。内部定义了fb_ops结构体(包含一系列FrameBuffer的操作函数,Open/read/write、地址映射等).
C、其他
1)、一个重要的全局变量
struct fb_info *registered_fb[FB_MAX];
这变量记录了所有fb_info 结构的实例,fb_info 结构描述显卡的当前状态,所有设备对应的fb_info 结构都保存在这个数组中,当一个FrameBuffer设备驱动向系统注册自己时,其对应的fb_info 结构就会添加到这个结构中,同时num_registered_fb 为自动加1。
2)、注册framebuffer函数
1 2 | register_framebuffer(struct fb_info *fb_info); unregister_framebuffer(struct fb_info *fb_info); |
原文链接:http://hi.baidu.com/leowenj/blog/item/76411bf6237dc429bc31099f.html
Tags:
AndroidAndroid
display架构分析Android-displayAndroid-tutorfb_mem.cKernel
Space Display
相关文章推荐
- Android display架构分析四-msm_fb.c 函数和数据结构介绍
- Android display架构分析五-Display接口介绍
- Android display架构分析六-Surface manager介绍
- Android display架构分析四-msm_fb.c 函数和数据结构介绍
- Android display架构分析五-Display接口介绍
- Android display架构分析六-Surface manager介绍
- Android display架构分析(5-8)
- (转)Android display架构分析(三)
- Qualcomm Android display架构分析(一)
- Android display架构分析
- Android Display架构分析--侧重高通平台 .
- 高通Android display架构分析
- Android display架构分析-SW架构分析(1-4) .
- Android display架构分析
- Android display架构分析-SW架构分析(1-4)
- Android系统架构分析 和 Android应用程序组件介绍
- Android display架构分析
- Android display架构分析一-高通7系列硬件架构分析
- Android display架构分析七-Surfaceflinger process流程分析
- android display架构分析