`

Android display架构分析(四)

 
阅读更多

http://hi.baidu.com/leowenj/blog/item/37e1a8521e35522842a75b99.html

 

Android display架构分析(四)

 

该文件为高通显卡的驱动文件,比较重要的函数接口和数据结构如下:

A 、高通msm fb 设备的文件操作函数接口

static struct fb_ops msm_fb_ops = {

.owner = THIS_MODULE,

.fb_open = msm_fb_open,

.fb_release = msm_fb_release,

.fb_read = NULL,

.fb_write = NULL,

.fb_cursor = NULL,

.fb_check_var = msm_fb_check_var,     /* 参数检查 */

.fb_set_par = msm_fb_set_par,       /* 设置显示相关参数 */

.fb_setcolreg = NULL, /* set color register */

.fb_blank = NULL,       /* blank display */

.fb_pan_display = msm_fb_pan_display,       /* 显示 */

.fb_fillrect = msm_fb_fillrect,     /* Draws a rectangle */

.fb_copyarea = msm_fb_copyarea, /* Copy data from area to another */

.fb_imageblit = msm_fb_imageblit,   /* Draws a image to the display */

.fb_cursor = NULL,

.fb_rotate = NULL,

.fb_sync = NULL, /* wait for blit idle, optional */

.fb_ioctl = msm_fb_ioctl,    /* perform fb specific ioctl (optional) */

.fb_mmap = NULL,

};

B 、高通msm fbdriver 接口

static struct platform_driver msm_fb_driver = {

.probe = msm_fb_probe,// 驱动探测函数

.remove = msm_fb_remove,

#ifndef CONFIG_ANDROID_POWER

.suspend = msm_fb_suspend,

.suspend_late = NULL,

.resume_early = NULL,

.resume = msm_fb_resume,

#endif

.shutdown = NULL,

.driver = {

            /* Driver name must match the device name added in platform.c. */

            .name = "msm_fb",

            },

};

C、 msm_fb_init ()

向系统注册 msm fb driver ,初始化时会调用

Dmsm_fb_add_device

     向系统中添加新的 lcd 设备,在 mddi_toshiba.c 中会被调用

mddi_toshiba.c 函数和数据结构介绍

    该文件包含了所有和具体 LCD Toshiba )相关的信息和驱动,重点的数据结构和函数结构如下:

ALCD 设备相关信息

static struct platform_device this_device_0 = {

.name   = "mddi_toshiba_vga",

.id   = TOSHIBA_VGA_PRIM,

.dev       = {

         .platform_data = &toshiba_panel_data0,

}

};

        其中 toshiba_panel_data0 包含了硬件 LCD 的控制函数,如开关、初始化等等

BLCD driver 接口

static struct platform_driver this_driver = {

.probe = mddi_toshiba_lcd_probe,

.driver = {

         .name   = "mddi_toshiba_vga",

},

};

       其中 mddi_toshiba_lcd_probe 中会调用 msm_fb_add_device 接口把具体 LCD 添加到系统中去。

Cmddi_toshiba_lcd_init

      注册 LCD 设备及 driver 到系统中去,同时也把 LCD 的固有信息(大小、格式、位率等)一并注册到系统中去。

DLCD 相关控制函数

toshiba_common_initial_setup ():初始化 MDDI bridge

toshiba_prim_start ():初始化 LCD

   Display Kernel 数据流分析

本部分来看一下应用层以下,显示数据的流程是怎样的。

先来分析一下传统的Linux 平台下FB 设备是如果调用的,如下图所示:

上层调用FB API (主要是fb_ioctl() ),fb_ioctl() 会调用具体显卡的驱动,这里是高通的显卡驱动,其实就是MDP DMA 的驱动,通过MDP DMA 把显示数据经MDDI 接口送到外围LCD 组件。

Note :这里的MDP DMA 并不对数据进行任何处理(可以完成简单的格式转换,如RGB565->RGB666 )。


 

接下来再分析一下Android 平台下显示数据是如何处理的,如下图所示:


同样上层也是调用FB API ,不过这里其实把FB bypass 了,相当于直接调用的是高通MDP PPP 的驱动,然后数据经PPP 处理后再经MDDI 接口送出到外围LCD 组件。

Note :这里的MDP PPP 可以完成很多显示数据处理功能,如YUV->RGBScaleRotateBlending 等。

Display Kernel 初始化过程分析

    Kernel 部分 display 的初始化包含下面几个步骤:

1 )、在 linux fb 设备初始化时会向系统中注册 msm_fb_driver Name msm_fb

msm_fb_init > msm_fb_register_driver-> platform_driver_register(&msm_fb_driver)

其中的 probe 函数会对 msm fb 进行初始化 分配显存等 msm_fb_probe 函数 )。

2 、在 LCD 模块初始化时会先向系统中注册驱动 mddi_toshiba_lcd_init 函数中

platform_driver_register(&this_driver); 名字为 mddi_toshiba_vga

this_driver probe 函数为 mddi_toshiba_lcd_probe 其内部会调用 msm_fb_add_device 向系统中添加 MSM fb 设备

3 、调用 platform_device_register(&this_device_0) 向系统中注册设备 名字为 mddi_toshiba_vga 其中 this_device_0 包含了一些操作 LCD 的接口 on/off

Note:设备和 driver name 需要一致才可以绑定 另外 如果某些设备不需要让 platform 的总线来管理 那么只需要注册驱动即可 而无须向系统中注册 device msm_touch

分享到:
评论

相关推荐

    Android display架构分析

    #### 四、Surfacemanager (SurfaceFlinger) 架构分析 1. **Surfacemanager (SurfaceFlinger)** - SurfaceFlinger是Android系统中负责管理和绘制所有图形表面的核心组件。 - 它维护了一个树形结构,表示了所有可见...

    android__display框架分析

    #### 一、硬件架构分析 ##### 高通7系列硬件架构概述 根据所提供的信息,我们重点分析高通7系列的Display硬件架构,特别是MSM7200A平台。 - **A、MDP (Mobile Digital Processor)** MDP 是高通 MSM7200A 内部的...

    Android显示框架详细分析

    《Android显示框架详细分析》 Android显示框架是一个复杂的系统,涉及到硬件架构、软件架构和流程设计等多个方面。本文将深入探讨这些关键知识点,以便更好地理解Android设备如何呈现图像和视频内容。 首先,让...

    Android wifi display功能优化

    本文将从架构图、代码分析和优化建议三个方面对Android WiFi Display功能进行深入分析和讨论。 一、架构图 Android WiFi Display功能的架构图分为两部分,一部分为控制部分,另一部分为数据部分。控制部分通过TCP...

    android wifi display 分析

    ### Android Wifi Display (Miracast) 核心分析 #### 一、概述 在深入探讨Android平台上关于**Wifi Display**(通常称为Miracast)的相关技术之前,我们需要明确几个概念。**Wifi Display**是一种无线显示标准,...

    windriver针对android多媒体架构

    ### Windriver针对Android多媒体架构分析 #### Android多媒体架构概述 Windriver在2009年第一次Android技术大会上针对Android系统的多媒体架构进行了深入的探讨与分析。Android作为一个开放且灵活的操作系统,其...

    全志 H5 android linux display 驱动

    本文将详细探讨全志H5在Android/Linux环境下如何实现display驱动。 一、全志H5显示硬件架构 全志H5集成了GPU(图形处理器),如Mali400或Mali-G31,用于处理复杂的2D和3D图形任务。此外,它还包含LCD控制器,用于与...

    android显示框架分析

    #### 一、硬件架构分析:高通7系列 高通7系列的显示硬件架构主要包括以下几个关键组件: 1. **MDP (Mobile Display Processor)**:这是高通MSM7200A内部的一个核心模块,主要职责在于处理显示数据的转换和图像处理...

    android原生setting分析

    在深入探讨Android原生设置(Setting)的分析之前,我们需要先理解Android系统的基本结构。Android是一个基于Linux内核的操作系统,其应用程序主要由Java编写,使用Android SDK进行开发。原生设置应用(Settings)是...

    Android下WiFiDisplay功能探究.docx编程资料

    [WiFiDisplay技术支撑架构](#) #### 二、WiFiDisplay的重要标准及标准 WiFi联盟制定了Miracast支持的视/音频格式标准,包括但不限于: - **显示格式**:如VGA、WXGA、720p、1080p等。 - **视频格式**:如H.264、...

    Android的系统架构

    综上所述,Android的系统架构分为四个主要层次:应用层、应用框架层、系统运行库层和Linux内核层,每一层都承担着不同的功能,共同构成了Android系统的完整架构。通过对这些层次的理解,开发者能够更好地利用Android...

    android的核心分析

    GDI(Graphics Display Interface)是Android图形子系统的核心部分,负责管理和渲染图形内容。显示缓冲管理确保了图形内容的高效更新。 #### AndroidGDI之共享缓冲区机制 共享缓冲区机制使得多个应用程序能够安全...

    0001-Android-Settings-displaySettings_RK3288_

    在Android系统中,"Settings"模块是用户与设备设置交互的核心部分,而"Display settings"则是其中至关重要的一环,它涵盖了屏幕亮度、显示分辨率、屏幕方向等与视觉体验相关的选项。"0001-Android-Settings-display...

    android核心分析

    ### Android核心分析——设计意图与方法论探讨 #### 一、设计意图的探索 在深入研究Android之前,首要任务是理解其背后的设计理念。对于一个跨平台开发者而言,熟悉并掌握Android的核心概念至关重要。Android引入...

    Android主要机制深入分析

    - **GDI显示缓冲管理**:Graphics Display Interface(GDI)是Android图形系统的核心,负责屏幕显示效果的渲染。 - **共享缓冲区机制**:为了提高图像渲染效率,Android采用了共享缓冲区技术。 - **SurfaceFlinger**:...

    android原生setting分析(修改版).doc

    ### Android原生设置应用架构概览 - **存储位置**:Android自带的应用程序位于`packages/apps`目录下,其中包括资源文件(`res`)、源代码(`src`)和测试代码(`tests`),以及用于编译的`Android.mk`和应用程序...

    Android_Framework详细分析

    通过对 Android Framework 的详细分析,我们可以更深刻地理解 Android 操作系统的架构设计和技术特点。从设计者的意图出发,通过抽象思考和逐步深入源代码,我们可以更好地把握 Android 的精髓所在。无论是对于初学...

    Android核心分析

    《Android核心分析》系列文章深度剖析了Android操作系统的关键组成部分与设计思想,对于理解Android系统架构、工作机制以及开发原理具有重要价值。以下是对该系列文章各部分的详细知识点总结: ### 设计意图与方法...

    Android核心分析(pdf)

    - **GDI简介:** GDI(Graphics Display Interface)是Android图形显示的核心组件,负责图形渲染和显示管理。 - **总体框架:** 描述GDI的整体架构,包括SurfaceFlinger、Surface和Canvas等关键组成部分。 **显示...

Global site tag (gtag.js) - Google Analytics