lin 发表于 2013-12-11 21:05:26

关于A20调LCD屏的若干见解

查看/frameworks/base/services/java/com/android/server/SystemServer.java
看到这么一段:
final String srcPath = "/data/displaysetmode";
      final File FILE = new File(srcPath);
      final String values = new String(finalFormat.mOutputType + "\n" + finalFormat.mFormat);

      try {
            FileOutputStream fos = new FileOutputStream(FILE);
            fos.write(values.getBytes());
            fos.flush();
            fos.getFD().sync();
            fos.close();
      } catch (FileNotFoundException e) {
      } catch (IOException e) {
      }
大概意思是说把finalFormat.mOutputType和finalFormat.mFormat的数据存到/data/displaysetmode

adb进入到android系统的cb2,发现了/data/displaysetmode这个文件,看到的内容为:
2
14

或许有时是:
3
5

这个和设置的sys_config有关,也和开机时检测显示器的连接状态有关,具体得跟进finalFormat是怎么来的(这个没去看),反正知道这里就够用了。

之后跳到/frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp

有个void SurfaceFlinger::bootFinished() ,读取了displaysetmode的内容。这里会导致我们在sys_config配置的lcd失效,所以会出现开机显示android,后面就暗了。

大概原理知道了,怎么改,见仁见智,最好别影响vga和HDMI。(反正我改好了)

还有个疑问是sys_config有个screen1,对它设置无效,如果有效,直接使用就好了,源码不用改。


ticozhang 发表于 2013-12-12 19:57:09

能分享一下如何修改吗?
我把改了java代码,让它写入:
1
4
可惜还是看不到LCD上的输出啊。
能帮帮忙吗?

lin 发表于 2013-12-13 08:44:51

直接把这句注释掉
final String srcPath = "/data/displaysetmode";

dreamer 发表于 2014-1-9 13:35:09

你好,我用是a10的板子,扩展了7寸的lcd,用ubuntu系统显示正常,用android也是开机动画后黑屏。http://forum.cubietech.com/forum ... 1856&extra=page%3D1 这个要怎么搞啊,求帮助啊

dark16 发表于 2014-4-24 15:50:48

有用,谢谢,mark

unprince 发表于 2014-5-19 20:28:07

我们使用cb2驱动3.5寸的I8080接口的显示屏,调试了半个月,最终成功了.
在所有调试的过程中最令人无奈的是显示开机动画后就黑屏了,浪费了好几天的时间,最后才发现是A20的源码有问题,显示输出做旋转后就显示到了屏幕的可视区域之外了.这点是通过使用Eclipse的截屏功能发现的.
在开机动画之后进入系统的时候被莫名其妙的修改了输出的分辨率(好像是720P),但是这个时候是按照我们设置的320*480的分辨率绘图,并且绘图的(0,0)点离屏幕的可视区域非常远,导致显示屏上看到的是黑色的.
到最后没有办法了,无奈的将所有关于HDMI输出的代码全部删除,终于显示了.

lin 发表于 2014-5-20 12:06:53

屏幕旋转后,显示半屏需要修改内核fb_disp驱动,有个分辨率问题。默认1080P 要改720P

f839903061 发表于 2014-5-23 23:28:49

lin   我想问一下,sys_config.fex文件中有关lcd屏显示(lvds)不是要去读好几个参数的吗,比如hbphtvbpvt以及单双通道这些!
可是我在SurfaceFlinger.cpp 文件中,看到他只读取了两个数据一个type   一个format!这一块看着有点迷惑

/data/displaysetmode文件是通过哪个.c或者.cpp文件处理sys_config.fex之后得到的呢?

lin 发表于 2014-5-24 09:27:11

f839903061 发表于 2014-5-23 23:28 static/image/common/back.gif
lin   我想问一下,sys_config.fex文件中有关lcd屏显示(lvds)不是要去读好几个参数的吗,比如hbpht   ...

sys_config.fex这个文件是由内核驱动处理的,具体位子在内核里使用grep搜一下应该可以找到

yanggis 发表于 2014-7-15 13:03:22

lin 发表于 2013-12-13 08:44 static/image/common/back.gif
直接把这句注释掉
final String srcPath = "/data/displaysetmode";

高手你直接把
final String srcPath = "/data/displaysetmode";
这行注释掉,后面这句:
      final File FILE = new File(srcPath);
肯定就找不到srcPath,就会报错了啊,那你编译怎么通过啊?如果连后面这句注释掉,下面这几行也会报错啊:
      final String values = new String(finalFormat.mOutputType + "\n" + finalFormat.mFormat);

      try {
            FileOutputStream fos = new FileOutputStream(FILE);
            fos.write(values.getBytes());
            fos.flush();
            fos.getFD().sync();
            fos.close();
      } catch (FileNotFoundException e) {
      } catch (IOException e) {
      }

怎么解决呢?求指点
页: [1] 2 3
查看完整版本: 关于A20调LCD屏的若干见解