捉鬼记-1/2

发布时间:2012-3-27 10:25    发布者:绝对好文
关键词: debug , 捉鬼
作者:merlin2007

当工程师的都知道“debug”这个词,意思是“排除故障”。英文的字面意思是“抓臭虫”。但我觉得这不太贴切。臭虫虽然讨厌,但大不了就是咬一口,叮个包,总归还要不了命。而且有时就在表面,抓起来并不困难。可在工程设计中要是留下个隐患,有时可要出大乱子。从这个意义上讲,说是“捉鬼”可能更恰当。鬼不但吓人,还可能要命啊。

从事硬件设计多年,捉的鬼不少了。本来嘛,硬件工程师的工作无非是俩部分:前期的工程设计,以及实验室里或现场的故障排除。而每个故障的表现尽管千奇百怪,但原因无外乎:设计错误,元器件失效,使用不当。对新产品设计而言,则主要在前两种。硬件工程师排除的自然是硬件故障,然而事情有时并非如此简单。在今天这样高度集成的电子设备中,这个界限越来越模糊。做个工程师,必须拳打脚踢,那样都不能含糊。要不然,麻烦就要上身。

说说我的一次捉鬼的经历吧。

遇见鬼

在C公司工作期间,一直做大型路由器接口模块的硬件设计。大约是在04年开始的一个项目用到了QDR静态存储器。当时这款存储器还属新品,生产厂家不多。开始时只有CYPRESS一家的可用。但C公司的产品设计要求是:除非功能特殊的器件,一般器件必须要有俩个以上的供应商,以防止因供应商的原因造成器件短缺影响生产。对存储器这种常规器件更要如此。于是一边设计一边要找这种存储器的替代厂家。最后,在设计基本完成时,又从K公司找到了同样的器件。至此全部器件的选型都满足了设计要求。公司器件数据库将这两家的器件列入同一器件编号下,表示可以相互通用。因当时K公司还不能提供器件样品,所以产品的测试只用了CYPRESS的器件。完成设计,样机制作,实验室调机,通过测试,为软件团队的软件开发提供支持,指导试生产,。。。,一系列的辛苦不必再说。最终,产品顺利投产。公司的产品目录上又多了一个,每年公司巨额的收入账上,又加入了新的一笔。。。。而我又转入了下一个轮回,开始了新项目的设计,命啊。。。

大约两年后,就在我已经渐渐淡忘了这个项目时,某一天,一个负责新品生产的工程师突然找到我,通报了一个严重情况:两年前投产的那个产品在近期的生产中突然发现大批的成品不能通过测试。问题全部集中在QDR存储器上。开始时工厂试图通过更换器件来解决问题但是无效。更可怕的是:这一故障情况不稳定,同一块板子,这次测试通过了,下次重复再测可能就通不过。这是最让搞硬件的肝儿颤的“软故障”。 听完情况介绍,哥们的冷汗就下来了。通常情况下,我们在投产前已经对工厂的技术人员进行了培训,常见的问题都有处理的措施。只有在无法解决的情况下才会联系我们。现在因为这个故障已经造成停产,大批的成品堆在那无法出厂。更为严重的是几年来已有上千件成品交付用户使用,很多现在处于运行状态。如果这些已经交付的产品中也存在同样问题,在使用中发生故障,造成用户数据流中断,停机,用户要求返修,退货,这麻烦可就大了去了。别说我这个小小的工程师,上面几级的头头脑脑都要有好看的。而事实也证明了我的猜想, 很快部门经理和高一级的主管就打电话或发来电邮询问情况,同时再三强调:这是目前压倒一切的中心任务,必须尽快破案!(呵呵,当然不是原话,但意思是对的,听着有点儿像这两天公安部急着抓杀人犯的口气,这中外当头儿都差不多)。

当时的感觉就是:遇见鬼了!

抓鬼

等一惊一炸的功夫儿过去后,我冷静下来,开始思考各种可能性。产品已经投产两年,一直没听说有质量问题。突然暴出这个问题,肯定哪有了变化。于是我找到新品工程师仔细的询问了情况,果然发现了线索:该产品在投产后一直使用CYPRESS的QDR存储器,一切正常。前不久K公司的存储器开始供货,所以近期的生产使用的是K公司的器件。而问题就是在换器件后爆发的。很明显,问题与K公司器件的使用有直接关系。 想到这儿我心里有了底:有目标就好办!于是我要求马上从工厂的测试通不过的板子中给我发5个过来,用来查找问题。与此同时,我还得恢复所需的测试设备。时间已经过去了两年,原来的测试平台或是已经拆除,或是转做它用,现在再恢复起来又是一番辛苦,自然是不在话下。

很快工厂发来的板子到了。放到系统上一测,果然,存储器的测试不断出错,而且出错的地址和数据不固定,完全是随机状态。按照存储器的技术指标反复核对了板子上的器件时间参数状态,没有发现问题。这说明问题不是由于时间关系计算错误引起的。这让我松了一口气。如果是这种问题,要解决就只能重新做板子了。那我基本上就死定了。这种随机状态的错误让我感觉,这并不是由于器件的物理故障所引起,而更像工作状态混乱造成的。我从厂家网站上下载了最新版本的技术文件,查找其中任何可能导致器件工作不稳定的原因。终于在有关数字锁相环(DLL)的内容中,发现了一段描述:

1. 必须在控制线DOFF为低电平情况下加电。

2. 器件核心部分必须先于接口部分加电。

3. 待电源电压及时钟稳定后再恢复DOFF为高电平。

4. 如果做不到上面三条,则必须将输入时钟中断30NS后再恢复。所有这些都是为了保证DLL的正常工作。

看了这段内容让我很兴奋,因为我清楚地记得以前的技术文件没有这些要求。我有个习惯,每开始一个项目设计,便将有关的技术文件放在一个独立的文件夹里。有问题抓过来一翻很方便。找到那个项目的文件夹,翻到原来保存的老版本的K公司存储器技术文件,果然找不到这部分内容,这就对了。在初始设计时,电源时序是个重要内容。所有的器件都核对过是否对此有要求。以便分配相应的供电线路。 不过即使如此,恐怕也很难按此要求办,该存储器的两路电源同为1.8V, 总不能为了两个存储器再多加一路电源和时序控制吧,那也太不经济了。 如果是这样,很有可能就不选它的器件了,因为同样的产品,CYPRESS并没有这些要求。文件中的这段描述,更像是在器件出来后发现了DLL的初始稳定性的问题而采取的一种补救措施。DLL是其内部工作的时钟源,如果它工作不稳定,其余电路的工作无从谈起。现在虽然还不能最后肯定,但直觉告诉我:它就是那个鬼!
本文地址:https://www.eechina.com/thread-87829-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表