转 http://hi.baidu.com/leowenj/blog/item/03aae36137acb8d1e6113a75.html
Android display架构分析(八)
参考上面linux
下fb
设备的软件架构,可以知道,要加入一个新的MDDI
接口的LCM
,Driver
的工作就是要提供自己的mddi_xxxx.c
(在这次porting
的过程中,为了节省时间,我们直接修改了mddi_toshiba.c
),并且完成和这个lcd
相关的HWr
的初始化。主要的工作包括:
A
、初始化和LCD / LCD
背光相关的IO
以及电源;
B
、编写初始化函数 。主要是初始化LCD
控制器,这个一般LCD
厂商会提供;然后分配显存,这个高通release
过来的code
已经包含这个动作了,最后是初始化一个fb_info
的结构体,在这里主要是把LCD
的一些信息登记进来。
C
、把LCD
的设备以及驱动注册到系统中去。(这里因为是替换现有的驱动,所以相关修改的部分不多。)
上述B
、C
部分代码请参考kernel\drivers\video\msm\mddi_toshiba.c
。
更改一些
GPIO
的配置以及一些电源的
电平
配置
;然后通过实际测量,
确保
一下信号正常:
A、
供给
LCD
以及
MDDI Bridge
的电源
;
B、
MDDI Bridge
以及
LCD reset
信号
;
C、
控制背光
IC
的
GPIO
工作正常(背光不打开,无法调试
LCD
)。
1.2.2
Porting
LCD
初始化序列
LCD init
的
code
以及外围
MDDI Bridge
的初始化
code
,
都可以之前
Boston
Windows Mobile
系统
的
code
base
中获得
;
把这部分
code
移植到
mddi_Toshiba.c
中,并更改相应的
图像格式、分辨率等
配置,编译
通过。LCD
初始化
部分就算基本
完成。
由于硬件
在
之前
Boston
load
是可以工作的,
可以认为硬件连接等没有问题,
所以只需
关注
软件部分就
行。
Display
部分软件调试过程如下:
A、
开机后,量一下
GPIO
是否为
code
中
配置
预期
的状态(可确保
code
中的
GPIO
接口工作正常)
;
B、
量一下各个电源是否都
处于Code
中
定义的
电平值。
这些都
OK
后,背光
是会亮的(背光的控制比较简单,一个
GPIO
即可)
;
C、
这个时候如果
LCD
以及
MDDI Bridge
有被正常初始化的话
,
屏幕上是会
看出来的
。反之,
如果
屏幕
没有
显示,
需要用
JTAG
跟一下
mddi_Toshiba.c
中的初始化函数是否在开机的时候有被调用过。
目前
版本中,
是根据外围
MDDI Bridge
中读到的
的厂商号来决定加载哪个驱动模块的
。
在本次调试中,
bootloader
中可以正确读到厂商号,所以
bootloader
中对于
LCD
的初始化是有做的,所以屏幕看到的状态就是
LCD
初始化后的样子(花屏)
。
但
Kernel
起来后,并没有其他显示,用
JTAG
跟了后发现,
Kernel
中
MODULE INIT
中读不到正确的厂商号,所以说后面的
driver
没有被加载。接着发现如果在
bootloader
中如果不做
MDDI Bridge
的初始化,的话后面的
MODULE INIT
就可正常运行,该问题目前还没有澄清(现在暂时先把
bootloader
中的
init disable
掉)。
初始化正常后,屏幕会显示
UI
的相关画面,但明显颜色、位置都不对
。
这个
可能
是数据类型配置不对导致的,即
MDP
输出的类型
、
MDDI
配置的类型以
、
LCD
接收的类型不匹配导致,也有可能是
RGB
的顺序不对导致(可配置成
BGR
)
。
经过调试后,把
MDP
端输出的格式配置成
RGB565,
同时外围
MDDI Bridge
以及
LCD
的
input
格式也配置成
RGB565
,这时显示
色彩
正常了
。
如果位置
或者方向
不对,比如说上下或是左右颠倒,可以更改
LCD
的配置
中的
扫描方向即可。
后续发现一个问题,播放
video
的时候颜色都是黑白的
。
这个问题很容易让人误解,按照正常的理解,
video decode
出来的数据为
YCbCr
,
Y
为亮度信号,
CbCr
为色差信号,如果只有
Y
信号的话颜色应该就是黑白的。所以有
2
个怀疑点,一个是
decode
出来的数据有误,另一个是
MDDI Bridge
误把输入的
YcbCr
信号当作
RGB
信号进行出来,这个也是有可能的
。
但很快第二个怀疑点被排除了(
因为单
更改
MDDI input
格式后还是不能解决问题)。
后来又详细的看了显示部分的代码
,并
用
JTAG
追踪
video
播放的时候用的显示接口,发现目前所有的显示接口输出的格式都是
RGB
格式,也就是说在通过
MDP
之前
YcbCr
已经被转化过
;
而
MDP
里的转换功能并没有使用,
MDP
只是被当作一个
DMA
完成数据的直接传输,文档中叫做
Bypasse
。
YcbCr
到
RGB
的转换是由
Android
的
lib
来完成
。
发了个
SR
给高通,高通的回复也确认了,
在6.3.50
中,
Android
上层
缺少这个lib
(copybit.default.so
)
,
6.3.60
之后的
版本经解决了
这个问题。
分享到:
相关推荐
高通7系列的硬件架构是Android Display架构的重要组成部分,主要包括以下几个部分: 1. **MDP (Mobile Display Processor)** - MDP是高通MSM7200A内部的一个模块,主要负责显示数据的转换和部分图像处理功能,例如...
### 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作为一个开放且灵活的操作系统,其...
本文将详细探讨全志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系统的基本结构。Android是一个基于Linux内核的操作系统,其应用程序主要由Java编写,使用Android SDK进行开发。原生设置应用(Settings)是...
[WiFiDisplay技术支撑架构](#) #### 二、WiFiDisplay的重要标准及标准 WiFi联盟制定了Miracast支持的视/音频格式标准,包括但不限于: - **显示格式**:如VGA、WXGA、720p、1080p等。 - **视频格式**:如H.264、...
### Android的系统架构详解 #### 一、应用层 (Applications) **应用层**是指由Java编写的、运行在Dalvik虚拟机上的程序。这一层主要包括了预装的应用程序,例如联系人管理、邮件客户端等。此外,开发者也可以利用...
GDI(Graphics Display Interface)是Android图形子系统的核心部分,负责管理和渲染图形内容。显示缓冲管理确保了图形内容的高效更新。 #### AndroidGDI之共享缓冲区机制 共享缓冲区机制使得多个应用程序能够安全...
在Android系统中,"Settings"模块是用户与设备设置交互的核心部分,而"Display settings"则是其中至关重要的一环,它涵盖了屏幕亮度、显示分辨率、屏幕方向等与视觉体验相关的选项。"0001-Android-Settings-display...
### Android核心分析——设计意图与方法论探讨 #### 一、设计意图的探索 在深入研究Android之前,首要任务是理解其背后的设计理念。对于一个跨平台开发者而言,熟悉并掌握Android的核心概念至关重要。Android引入...
### Android原生设置应用架构概览 - **存储位置**:Android自带的应用程序位于`packages/apps`目录下,其中包括资源文件(`res`)、源代码(`src`)和测试代码(`tests`),以及用于编译的`Android.mk`和应用程序...
- **GDI显示缓冲管理**:Graphics Display Interface(GDI)是Android图形系统的核心,负责屏幕显示效果的渲染。 - **共享缓冲区机制**:为了提高图像渲染效率,Android采用了共享缓冲区技术。 - **SurfaceFlinger**:...
通过对 Android Framework 的详细分析,我们可以更深刻地理解 Android 操作系统的架构设计和技术特点。从设计者的意图出发,通过抽象思考和逐步深入源代码,我们可以更好地把握 Android 的精髓所在。无论是对于初学...
《Android核心分析》系列文章深度剖析了Android操作系统的关键组成部分与设计思想,对于理解Android系统架构、工作机制以及开发原理具有重要价值。以下是对该系列文章各部分的详细知识点总结: ### 设计意图与方法...
- **GDI简介:** GDI(Graphics Display Interface)是Android图形显示的核心组件,负责图形渲染和显示管理。 - **总体框架:** 描述GDI的整体架构,包括SurfaceFlinger、Surface和Canvas等关键组成部分。 **显示...