让项目陷入僵局的阻抗匹配bug
扫描二维码
随时随地手机看文章
2005年五一期间我们解决了ADSL局端及终端设备的频带干扰问题,初步测试下来功能正常,性能满足要求,终于可以交付到测试部门进行完整的测试。不出意料的,新问题来了。
测试工程师测试下来发现一个问题,设备正常工作一段时间后会莫名奇妙的自动重启,从开机到重启的时间每次不固定,而且手上的5台样机都存在同一问题。
接到测试报告后,软硬件团队开始联手进行系统调试。有系统开发经验的都知道,这个问题对工程师调试来说喜忧参半,喜的是这是一个必现的bug,相对来说问题比较容易复现和定位,问题是否得到解决比较好验证;忧的是这个问题出现的时间长短是随机的,功能都已实现,性能也达到要求,这种情况下的问题往往不简单,需要调试的工作量很大。
这个问题对于硬件部分比较常见的问题一般有电源设计不良、复位电路、晶振电路、过热保护、元器件不良、生产制程不良等;软件部分可能存在的问题有系统配置不正确、异常流程处理不当、内部看门狗不正确触发等。
硬件团队首先排查了可能存在制程问题,通过目视检查和X-ray照射,未发现明显异常;全面监测复位、供电和晶振等,均未发现自动重启时存在异常状态,通过对电路板全面的热监测也未发现存在过热区域;软件团队也对可能存在的问题逐一排除,未发现任何异常。调试陷入僵局,项目一时无法进展。
没办法,软硬件团队再次回到对故障现象的分析梳理,重新拟定测试方案,寻找重启时的共同点。经常大量的测试,终于发现当系统传输大容量数据时出现重启概率要大很多,而那种很轻负载状态的设备重启几率较小,时间间距也会拉开更大。找到规律不代表就能找到确切问题点,甚至更加让人迷茫。
当所有的分析测试都没有结果时,我们重新回到对生产制程的分析,由于主控芯片和MAC芯片都是BGA封装,电路板本身是10层板,大部分走线都是走在内层,对我们的排查来说困难重重。经过不懈努力,发现主控芯片到MAC的16根地址线因走线和贴装工艺存在瑕疵而有虚短路现象,其中一根和地之间的阻抗由正常的10兆欧左右降为1兆欧左右,由于检查BGA贴装质量的X-ray主要检查是否存在短路或断路问题,对于虚短是很难检查出来的。由于该地址线并未短路,在初始化或低速率传输数据时问题不大,但当大容量数据高速传输时,地址线之间的差异就会显现出来,导致程序运行异常而触发内部看门狗,从现象上看就是系统自动重启。
经验教训:
1、 不是能够正常工作了硬件就万事大吉,还要关注压力测试和长时间测试;
2、 阻抗匹配很重要,对于很多问题,数据线和地址线等对地阻抗测试会告诉我们很多信息;
3、 嵌入式系统的调试一定要有系统概念,软硬件及测试团队的通力协作是快速发现问题、定位问题和解决问题的前提和保证,很多现象是多种因素引起的,只有经多细致分析,大胆推测、反复验证才能解决问题。