Chinaunix首页 | 论坛 | 博客
  • 博客访问: 501769
  • 博文数量: 225
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2443
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 22:02
个人简介

目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发

文章分类

全部博文(225)

文章存档

2024年(6)

2023年(68)

2022年(13)

2021年(7)

2020年(11)

2019年(3)

2018年(10)

2017年(8)

2012年(7)

2011年(4)

2010年(32)

2009年(41)

2008年(6)

2007年(9)

分类: 其他平台

2007-04-20 23:43:14

  小小的LCD,有时候也会出大毛病的,笔者在项目中就遇到好几次关于LCD的问题.
  记得刚进入公司做{BANNED}中国第一个项目的时候,领导上下都很重视,{BANNED}中国第一炮可不能哑啊.
  一切都很顺利,模拟器做好了,所有的代码都在模拟器上测试通过了,驱动和代码都集成了,大家就等硬件做好后准备10月14日的香港展览.
  从深圳传来不好的消息,老总直接打电话过来,说我们的代码在硬件板子上一跑就死机,我的天,这是怎么回事?领导很着急,因为离香港展览就差两天了,我和Peter连家也没回,中午直接坐飞机赶到深圳.
 哎,过去一看,发现一运行我们的代码就黑屏,我问驱动工程师,你的LCD驱动代码有问题吗?他说,我的代码测试过了,没问题,我跑给你看. 可是把系统,MMI代码加上后就不可以跑了.
 我要驱动的人监视一下电压,发现这是的LCD电压才6V,而datasheet上要求的是15V啊,原来当RF一开始工作的时候,这时电流很大,LCD的供电电压从15V变到6V了,难怪LCD不亮.
 硬件工程师也许是新手,对于这个小问题,开了一下午的会,终于想出了一个解决方法,换上一个大的电容,这样保证LCD的供电电压的稳定.这个问题总算解决了,板子一好,立马拿到香港去展览了.
   后来我们做了一个美国的项目,Hebe,LCD又出问题了,不过这次不是硬件的问题,是驱动的问题.也许正因为LCD驱动的不难,大家把这个环节疏忽了.
   事情是这样的,美国客户在美国做测试验货的时候,发现LCD时候刷新有问题.有时候LCD出现白屏,或者其他其他问题,怎么会这样呢?我们测试一切都很正常啊,没遇到这样的情况啊.
  于是大家就在讨论猜测(哈哈,这是我们一惯的作风,一遇到问题就开始猜测了),也许硬件没做好吧,美国的EMC比较严格,老外的手上毛可多了,静电厉害,会不会把我们的机器电傻了.
 硬件的同仁马上全盘出动,经过近1周的分析,找不出问题出在哪里,于是大家把目光转向LCD驱动,这时候想起要code review 了,终于发现代码有一处和datasheet有出入.
 我们所用的LCD是2行的字符型LCD,当上层MMI要在某个地方(x,y)上写一个字符char时,先必须把要写字符的位置发给lCD,然后把字符发给LCD chip .而位置的计算是第1行 从0xC2~0xC2+13,第2行从0x82 ~ 0x82+13 (其中13表示一行{BANNED}最佳多可写14个字符).
  代码本应该为:
  if(y==0) x+=0xc2;  // line 1
 else if(y==1) x+=0x82;
   DispWriteCommand(x);  //write the location
     DispWriteData(Char); //write the char code
结果驱动工程师粗心把 第1行写成x+=0xaa .
由于没有很好的项目流程,没有SQA,这个小错误就被一直带到{BANNED}最佳终的产品中,当{BANNED}最佳后发现的时候,软件已经放mask,118K,数量不小啊,说这118K就这样报废了.
 当然这个芯片也很奇怪,居然在正常情况下没一点问题,只有在低温的情况下(零下10度以下),才会出现出现LCD刷新不正常.而我们的测试工程师在深圳,当然发现不了这个问题.等一到美国的阿拉斯加,完了.
 我们卖出的产品中也有因为LCD驱动问题导致退货的例子,这次发生在希腊.
 原来当有未接电话时,我们会显示Missed Calls xx (xx表示个数),{BANNED}最佳多可存储20个未接电话,对应希腊有希腊语的显示,那个比较长,我说不出来,不懂希腊语啊:),开始的时候没问题,但达到20个未接电话时,在屏幕上此时显示希腊语的Missed Calls 20.
 可爱的LCD驱动又出问题了,问题还很怪,LCD屏幕是98,当要显示的字符串也为98时,如果{BANNED}最佳后一个字符宽度为奇数,就会死机.而希腊语的Missed Calls 20长度正好为98,0的宽度为3,必死.
 这个麻烦可大了,虽然在Apollo2的产品中发现的,但我们所有的项目驱动都一样,也就是所有的项目中都有这个问题,而在Apollo2中希腊语是写死在ROM中,{BANNED}最佳后一根救命的稻草也没了(如果在EEPROM中,可以把字符串修改一下,改短点避免这个问题,这也是其他的项目没暴露这个问题的原因,因为其他的项目的希腊语的Missed Calls这个字符串改短了).
集团的Marketing总经理气得大骂应该把研发部解散,QA经理急得上上下下忙个不停,{BANNED}最佳终怎么处理这个问题
不得而知.
 
 
 
 
 
阅读(1092) | 评论(0) | 转发(0) |
0

上一篇:Windows的GUI系统

下一篇:Linux PC启动过程

给主人留下些什么吧!~~