时间:20100423
现象:我司做的一个品牌项目在量产的产线上发现有机器白屏想象
解决过程:
花了很长一段时间在查找发生白屏的想象。后来在不经意间发现在屏进入sleep然后不停地操作键盘让屏除sleep时很容易发生白屏的想象。
然后和IC原厂的人分析可能导致的原因。但是没有一点解决方案。于是我们把初始化代码尽量的加延时,把不必要的去掉。可是还是没有用。可是问题还是没有解决掉。于是一时大家没有方向,并且出现的概率也很低。
自己为了验证是不是在进出sleep出的问题。于是自己在进出sleep的地方把延时的时间加很长。发现出现白屏的概率变大了。于是我们一直怀疑是在写出sleep的时候代码没有写正确,受到了干扰。于是自己在写寄存的时候加上了保护SaveAndSetIRQMask();RestoreIRQMask。但是问题还是没有解决掉。
最后在同事的分析帮忙下,认为一定是出sleep出了问题,但是到底是哪里出了问题还不确认,于是先试试看是不是开始写出sleep的时候bb对屏的供电还没有,于是导致写的寄存器失败。于是用了函数kal_sleep_task()这个函数延时,于是是否问题没有了。
但是最后测试的发现应用java一出sleep就会白屏(100%)。于是用kal_sleep_task()这个函数不能解决这个问题。于是后来换成用循环实现的延时,但是问题一直解决不掉。一时之间很郁闷。后来才发现我们前期硬件工程师写的循环太短,现在是35和以前的25在处理器的速度上不是一个等级上的。导致延时始终不够。后来自己加大了延时,问题解决了。
总结:1、自己分析问题和解决问题的能力不够,够MTK平台上的东西了解不够。
2、自己对嵌入式的基础了解太少。
3、在凭着自己的经验办事,这样不好。
4、公司对项目的安排极为不合理,这个屏白屏在前期测试早已发现并告诉了硬件可是就是没有人解决这个问题,到最后量产的时候才交到我手上(驱动),严重影响手机的量产。