转 http://hi.baidu.com/leowenj/blog/item/76411bf6237dc429bc31099f.html
Android display架构分析(三)

如上图所示,除了上层的图形应用程序外,和
Kernel
空间有关的包括
Linux FB
设备层以及和具体
HW
相关的驱动层,对应的源文件分别是
fb_mem.c
、
msm_fb.c
、
mddi_toshiba.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
函数
register_framebuffer(struct fb_info *fb_info);
unregister_framebuffer(struct fb_info *fb_info);
这两个是提供给下层
FrameBuffer
设备驱动的接口,设备驱动通过这两函数向系统注册或注销自己。几乎底层设备驱动所要做的所有事情就是填充
fb_info
结构然后向系统注册或注销它
分享到:
相关推荐
#### 三、Kernel Space Display架构介绍 在Kernel Space层,主要关注的是与Display相关的内核模块和驱动程序。这部分涉及的关键组件有: 1. **Fb_mem.c** - Fb_mem.c包含了一系列与Framebuffer相关的函数和数据...
### Android Display 框架分析 #### 一、硬件架构分析 ##### 高通7系列硬件架构概述 根据所提供的信息,我们重点分析高通7系列的Display硬件架构,特别是MSM7200A平台。 - **A、MDP (Mobile Digital Processor)*...
《Android显示框架详细分析》 Android显示框架是一个复杂的系统,涉及到硬件架构、软件架构和流程设计等多个方面。本文将深入探讨这些关键知识点,以便更好地理解Android设备如何呈现图像和视频内容。 首先,让...
本文将从架构图、代码分析和优化建议三个方面对Android WiFi Display功能进行深入分析和讨论。 一、架构图 Android WiFi Display功能的架构图分为两部分,一部分为控制部分,另一部分为数据部分。控制部分通过TCP...
### Android Wifi Display (Miracast) 核心分析 #### 一、概述 在深入探讨Android平台上关于**Wifi Display**(通常称为Miracast)的相关技术之前,我们需要明确几个概念。**Wifi Display**是一种无线显示标准,...
### Windriver针对Android多媒体架构分析 #### Android多媒体架构概述 Windriver在2009年第一次Android技术大会上针对Android系统的多媒体架构进行了深入的探讨与分析。Android作为一个开放且灵活的操作系统,其...
三、Android硬件抽象层(HAL) 在Android系统中,硬件服务层(HIDL)定义了操作系统与硬件之间的接口。对于显示驱动,这是通过Display HAL来实现的。全志H5的display驱动需要遵循Android的HAL规范,为上层系统提供...
### Android显示框架分析 #### 一、硬件架构分析:高通7系列 高通7系列的显示硬件架构主要包括以下几个关键组件: 1. **MDP (Mobile Display Processor)**:这是高通MSM7200A内部的一个核心模块,主要职责在于...
在深入探讨Android原生设置(Setting)的分析之前,我们需要先理解Android系统的基本结构。Android是一个基于Linux内核的操作系统,其应用程序主要由Java编写,使用Android SDK进行开发。原生设置应用(Settings)是...
[WiFiDisplay技术支撑架构](#) #### 二、WiFiDisplay的重要标准及标准 WiFi联盟制定了Miracast支持的视/音频格式标准,包括但不限于: - **显示格式**:如VGA、WXGA、720p、1080p等。 - **视频格式**:如H.264、...
#### 三、系统运行库层 (Libraries & Android Runtime) **系统运行库层**包含了一系列的C/C++库和Dalvik虚拟机,用于支持各种组件。 - **Bionic系统C库**:这是Android的C库,提供了一组核心系统函数,用于底层的...
GDI(Graphics Display Interface)是Android图形子系统的核心部分,负责管理和渲染图形内容。显示缓冲管理确保了图形内容的高效更新。 #### AndroidGDI之共享缓冲区机制 共享缓冲区机制使得多个应用程序能够安全...
### Android核心分析——设计意图与方法论探讨 #### 一、设计意图的探索 在深入研究Android之前,首要任务是理解其背后的设计理念。对于一个跨平台开发者而言,熟悉并掌握Android的核心概念至关重要。Android引入...
- **GDI显示缓冲管理**:Graphics Display Interface(GDI)是Android图形系统的核心,负责屏幕显示效果的渲染。 - **共享缓冲区机制**:为了提高图像渲染效率,Android采用了共享缓冲区技术。 - **SurfaceFlinger**:...
在Android系统中,"Settings"模块是用户与设备设置交互的核心部分,而"Display settings"则是其中至关重要的一环,它涵盖了屏幕亮度、显示分辨率、屏幕方向等与视觉体验相关的选项。"0001-Android-Settings-display...
### Android原生设置应用架构概览 - **存储位置**:Android自带的应用程序位于`packages/apps`目录下,其中包括资源文件(`res`)、源代码(`src`)和测试代码(`tests`),以及用于编译的`Android.mk`和应用程序...
#### 三、Android Framework 组件分析 **1. Android Framework 概览** Android Framework 是 Android 操作系统的核心组件之一,负责处理应用程序层与硬件抽象层之间的通信。它包括了一系列的服务和库,为应用程序...
《Android核心分析》系列文章深度剖析了Android操作系统的关键组成部分与设计思想,对于理解Android系统架构、工作机制以及开发原理具有重要价值。以下是对该系列文章各部分的详细知识点总结: ### 设计意图与方法...
- **GDI简介:** GDI(Graphics Display Interface)是Android图形显示的核心组件,负责图形渲染和显示管理。 - **总体框架:** 描述GDI的整体架构,包括SurfaceFlinger、Surface和Canvas等关键组成部分。 **显示...