|
发表于 2015-9-25 10:22:33
只看该作者
10#
基本上算是改好了,不过改法也比较暴力,先简单记录一下,供大家参考一下:
屏幕 是微雪的 5inch HDMI LCD 800x480
记录一下修改的过程:
因为对系统的不了解走了很多的弯,先记录几个
首先 参考的是这个:http://developer.t-firefly.com/f ... &highlight=HDMI
/* HDMI default vide mode */
#define HDMI_VIDEO_DEFAULT_MODE HDMI_1280X720P_60HZ
这个模式,头文件定义了很多个,但是就是没有800x480的,改了几个也有效果,但是不能满足需求。放弃这个方法!
接下去参考这个:
http://developer.t-firefly.com/forum.php?mod=viewthread&tid=942&highlight=%B7%D6%B1%E6%C2%CA
虽然没说怎么改,但是提到一个重点:lcd-box.dtsi 修改这个文件。
对这个文件,个人觉得好像是配置LCDC的,也就是说和LCD屏其实应该无关(浪费我一天时间查这个屏的各种资料)。
于是我把timing0改成了:clock-frequency = <30000000>;
hactive = <800>;
vactive = <480>;
hback-porch = <16>;
hfront-porch = <210>;
vback-porch = <10>;
vfront-porch = <22>;
hsync-len = <30>;
vsync-len = <13>;
hsync-active = <1>;
vsync-active = <1>;
de-active = <0>;
pixelclk-active = <0>;
swap-rb = <0>;
swap-rg = <0>;
swap-gb = <0>;
烧写启动之后,开机recovery 屏幕正常显示,出现了几行文字,接下去就启动就是黑屏加中间一条白色条纹。
经过多翻摸索,重新恢复默认的配置,只改hactive和vactive:
timing0: timing0 {
screen-type = <SCREEN_HDMI>;
out-face = <OUT_P888>;
color-mode = <COLOR_YCBCR>;
clock-frequency = <74250000>;
hactive = <800>;
vactive = <500>;
hback-porch = <220>;
hfront-porch = <110>;
vback-porch = <20>;
vfront-porch = <5>;
hsync-len = <40>;
vsync-len = <5>;
hsync-active = <1>;
vsync-active = <1>;
de-active = <0>;
pixelclk-active = <0>;
swap-rb = <0>;
swap-rg = <0>;
swap-gb = <0>;
};
奇迹般的成功了,这个不是说和硬件配置有关吗?我随便改改也能正常显示?
改完之后,屏幕竖屏旋转总是不能成功,于是,把系统也改了frameworks\base\services\core\java\com\android\server\wm\WindowManagerService.java
旋转控制在这里面:
if (mRotateOnBoot) {
mRotation = Surface.ROTATION_0;
rotation = Surface.ROTATION_90;
+ } else {
+ rotation = Surface.ROTATION_90;
}
改完就成上图这样了。
还存在的问题:
1. 横向少显示20个像素:800x480的仍然不能显示,但是800x500的可以显示了,问题在哪里仍然不知道。
2. dtsi不是配置硬件的吗?怎么我随便改都可以,难道只有hactive和vactive生效?
暂时先这样,记录一下。
|
|