问题现象,接手移植后发现LCD在启动到Android闪光字的时候图像错乱。

1.实验一对比framebuffer参数

利用Framebuffer原理、使用、测试系列文章中的demo进行测试并对比fb_var_screeninfo。

编译arm-linux-gccfb-test.c-static。将a.outpush到/system/bin/中使用adbshella.out得到此刻framebuffer参数。

在Recovery模式下发现不能启动adb,根据提示信息是没有/system/bin/sh,执行busyboxln-s/sbin/busybox/system/bin/sh将busybox链接到/system/bin/sh后adb得以启动,测试程序也得以运行,Framebuffer参数拿到。

对比结果:其中b是正常显示的,a是花屏扭曲的。

会不会是fb_var_screeninfo不一样导致的呢?对其进行反举证,将测试demo中设置成a的参数,看图像会不会出现撕裂状,在xres_virtualbits_per_pixelnonstdred相关参数修改后并不能引起图形显示有所变化,其中xoffset没有成功更改。基本排除是由于fb_var_screeninfo问题引起。

补充:Android中自带有framebuffer测试程序mmmsystem/extras/tests/framebuffer/-B会得到一个test-fb-simple。显示效果:


2.实验二应用层绘图错误

Framebuffer向下没有问题,很自然就怀疑是上层绘图导致的错乱。查阅提供的开发文档。根据《RockChip_LCD开发文档v1.6.pdf》Android设置分辨率的代码在这里:

androidsrc/hardware/rk29/libgralloc_ump/framebuffer_device.cpp根据FBIOPUT_VSCREENINFO来顺藤摸瓜。源码中并没有这个文件正在向rk求助。另一方面是推测会从哪里读这个参数。

根据Android系统的开机画面显示过程分析的分析,闪动ANDROID字样是第三屏动画。第三屏动画是基于graphic的。直接操作fb的都没有问题,问题就是出在了graphic上。

分辨率问题是根据问题现象推测的,这里是具体现象。

现在LCD的现象是:

1.内核驱动正常,在kernel中企鹅logo显示正常;

2.Android的recovery模式显示效果正常;

3.使用framebuffer测试程序直接读写/dev/graphics/fb0显示效果正常。

3.但是在Android上层图形错乱,从闪动ANDROID字样(android-logo-mask.png)的开机动画就开始扭曲的不能正常显示。如附件:

唯一的区别就是Android上层是基于gralloc.rk30board.so来进行图形显示的,所以推测问题在这个库中对framebuffer的参数进行了修改。由于这部分并没有给出源码,增加了问题定位难度。也或者是Android上层并没有根据实际的LCD的分辨率参数进行绘图导致。

Rk答复:将内核中1366x768改为1376x768。照做后,显示正常。

首先说下结果:显示正常了。如图:

再补充一下,由于测试程序正常所以我就排除内核中的问题了,所以您说改参数的时候一直没有向内核中想。另你能说下我的推测是否正确:gralloc.rk30board.so中根据framebuffer的参数来进行图形的绘制?十分感谢。

答复:gpu驱动版本不一样。

总结:最后修改的代码并不多,但是在理清问题非常重要。

更多相关文章

  1. Android中的Intent标准跳转应用
  2. 解决android sdk无法更新 更新慢的问题
  3. Android(安卓)ListView滑动过程中图片显示重复错乱闪烁问题解决
  4. Android命令Monkey压力测试,详解
  5. blcr加速android启动速度遇到的问题及解决方法
  6. ionic 开发小问题集锦
  7. Android(安卓)ListView滑动过程中图片显示重复错乱闪烁问题解决
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. Python技巧匿名函数、回调函数和高阶函数

随机推荐

  1. Android边框背景
  2. 关于"match_parent"这个xml的布局设定值
  3. 2011.11.22——— android jni简单用法
  4. Android之蓝牙设备使用
  5. Android(安卓)打开浏览器的几种方法
  6. Android(安卓)获取包名,版本信息
  7. ADT下载地址整理
  8. Android下Notification(通知栏)的使用
  9. Android(安卓)ListView简单实用
  10. Android之圆角矩形