上文《时钟乱码幽灵般光顾了所有设备,追踪寻迹趁势扑捉?》讲到,经过近4昼夜的测试,时钟的乱码显现,如“幽灵”一般,光顾了在不同编号的设备,最少的只有一次,最多的有10次。从结果上看,与用户描述的情况基本一致:不一定什么时候,不一定是哪一台设备,在上传到后台的记录中,就会爆出一条错误的记录数据。ISP_Line刚好小试牛刀...
错误再现,便可以分析其原因了。研发的过程就是这样,有些时候更加需要逆向思维,根据现象和测试的结果,进行反向推理,究其根源,尤其是对于这种非逻辑关系引起的随机错误,更是如此。
分析之后,关于时钟乱码的问题,华容得到了初步的结论:EMC问题,也就是常说的电磁兼容问题。
EMC问题是产品设计和测试过程中最神秘的环节,如果没有专业设备的介入,看不见、摸不着的电磁干扰,只能凭着感觉进行处理,而“感觉”往往是因人而异的,就产品而言,这种感觉来自于设计者的经验,因此无法进行量化,有些时候,更是说不清道不明,所以进一步增加了神秘感。
与EMC的第一次交锋,华容便领教了它的威力。
当年,华容正在从事ECR产品的研发。在当时的项目组中,成员之间分工明确,各负其责,华容的工作是程序设计,精力主要集中在软件编写、算法处理及程序优化方面,而在硬件电路设计方面几乎未触及,对电路的认识,只不过是看懂连接和接口,这种硬件水平在硬件研发部来说,定义为“外行”的级别,也不为过。有些时候,华容也认识到了自己在硬件方面的“短板”,但是转念一想,又以“术业有专攻、精力有限”为由,任其自然退化,直到有一天,遭到了当头棒喝,才幡然醒悟。
事件的起因是源自客户的投诉,而被投诉的产品恰恰是全公司公认为功能最佳版本—HOD公司的定制版,版本号是6.18,这个版本在单机版上实现了日常的各级权限管理,交接班管理、各种财务报表、及盘点功能,用现在的流行语描述就是“神器”。
庆功宴的喜悦还未散尽,便接到了HOD集团沈阳公司的投诉,投诉的焦点就是在盘点报表的数据出现了乱码,突发性的随机乱码,毫无规律可言。
对于投诉,作为该软件负责人的华容责无旁贷,立即就故障问题进行分析:
1、排除硬件问题
因为这个设备的硬件通用的,同款主板的设备销量已经大于10K,从未出现过乱码问题。
2、既然不是硬件问题,那么问题应该出现在软件方面
由于报表数据是根据销售记录生成的,因此很肯能是软件处理问题,既然是软件问题,那么必定是可以重现的。但是,这个现象,在公司内部的测试的时候并没有发现,因此,可以推断,可能与客户的数据有关。
华容将自己的分析和思路,与部门经理的毛志勤进行了交流,并达成一致意见,征得他的同意后,立即部署最紧急的测试任务,调动测试部的所有测试人员,按照客户的使用数据和流程,在故障机上进行全天候的测试,目的是将故障重现。
连续2个工作日,从测试的数据量上来说,远远超过了客户的使用量,然而,结果却是令人倍感意外的:一切正常。
华容迷惑了,毛志勤迷惑了。于是将问题放到了研发部的内部会议上讨论,技术总监徐工沉思良久,提出了一个假设:也许是使用环境的问题。
对于徐工的说法,华容不解,毛志勤则是若有所思。
但事实终究是事实,在客户所打印报表中,错误数据就在眼前,虽然内部测试的结果与客户的投诉描述不符,但是研发工程师对待BUG的原则是零容忍的:宁可多试一千次,也不能放过一个疑点。
于是第二天一早,徐工和华容出现在距离公司最近的一个连锁店里。这样的组合可谓是强强联合,设备的电路板是出自徐工的设计,关于疑点也是徐工提出来的,而这版软件的方案是毛志勤和华容二人共同设计的,程序代码则多数出自华容之手。如此的阵容,旨在现场勘察,发现BUG的蛛丝马迹。
此情此景,目前唯一的解决办法就是情景再现。
情景再现的方法很简单,生成“影子”数据:营业员在前台,华容在幕后,在相同的工作环境下,使用同一路电源,按照营业员的销售数据,在测试机上进行相同的操作,这样的结果是将生成与用户相同的报表。与店里营业员不同的是,华容在“销售”的闲暇,随时打印出各类报表和汇总数据,并观察数据是否异常。
整整一天,没有任何异常,华容有些沮丧,徐工则是一直沉默。
临近店里交接班的时候,华容打印出最后一笔交易的账单,然后机械性地选择打印当日的盘点报表,习惯性地撕下了报表,然后准备关机。当眼睛扫过报表的时候,华容诧异了,随即将伸出去的手缩了回来,在废纸堆里快速地的翻查。虽然是废纸堆,但基本是按照打印的先后顺序堆叠的,华容很快找到了自己想要的那两张记录,瞄了一眼,然后奔向一直坐在窗前沉默的徐工。
“徐工,我的机器出现了错误的数据,”华容的声音虽然很低,但兴奋是难以掩饰的,然后将手里报表递了过去,“您看,左边这一张是刚才打印的,右边这一张是上一次打印的”。
徐工端详手里的两张报表,两张报表的内容基本相同,唯一差别是前者比后者多了一条记录,右边的一张数据完全正常,左边的那一张却出现了非法数据65535,即16进制的FFFF。
“这一张是最后一笔销售记录,两个报表之间的差别就是这条销售记录。”华容指着手里的销售明细,对照盘点报表,向徐工解释。
“这个销售记录,可以说明什么问题呢?”徐工依旧不解。
“稍等,我计算一下。”华容没有直接回答问题,而是将手里的报表翻过来,用笔迅速地计算着。
“有结果了”,华容放下手里的笔,将计算的结果递了过去,接着解释:“是这样的,按照刚才的销售记录来计算,问题出现在最后一条记录上,我计算了这条数据的存储地址,该记录的数据发生了跨页,商品的编号存储在第一片FLASH上,而数量的数据记录则在第二片FLASH上。”
“错误在第二片FLASH上?你确定吗?”徐工再次发问。
“没错,所有报表的首地址,每一条记录的长度,都是我来分配的,因此记得非常清晰,不会有错的。”华容自信地回答。
“这样啊”,徐工起身,面向窗外,双手抱肩,又陷入了沉思,华容不敢发问。
“根据你的了解,我们的其他产品中,有没有出现过类似的问题?”转过身来的徐工,抛出了一个貌似不相干的问题。
“据我了解,公司的产品一直只使用一片FLASH,因为1M的容量足够用户使用了,在这个主板上用到了2片FLASH的设备,只有这一款。”华容一边搜索记忆,一边回答。
“今天就到这里吧,小华儿,你收拾一下设备,保存好这三张打印记录,我去和店长打个招呼。”徐工的思维总是很跳跃,华容觉得自己有些跟不上。
“好的,但是…”,华容欲言又止,瞬间明白了徐工的用意,这里毕竟不是公司,这种场合下绝对不适合讨论技术问题。
走出连锁店,华容尚未提问,徐工便娓娓道来:是EMC的问题。
这是华容第一次听到EMC这个词。
事后,就EMC的问题及6.18的问题,徐工做了详细的解释,解开了华容的谜团:
1、EMC问题是电磁干扰,与电路板的设计和布局有关,也就是说是EMC的问题是先天性的。
2、EMC对电路的影响是不确定的,同时也会受到工作环境的影响,所以出现故障也是随机。从现象分来看,同一台设备在公司和现场,出现了不同的结果,很可能就是这个因素。从现场分析看,这种影响对第一片FLASH几乎不起作用,但是对第二片FLASH影响很大。
3、EMC是可以被量化的,但只有在专业的设备下才可能“显形”。而这种设备价格是相当昂贵的,一般规模的公司是没有这种奢侈品的,如果进行相关检测,需要到指定的机构才可以进行。
找到了问题的原因,自然找到了解决问题的办法:经过与客户的协商,在保留现有功能的前提下,减少了销售明细记录的流水,然后将所有的报表数据,设计在1M容量以内,也就是去掉了第二片存储器。这种手法,不亚于壮士断腕。
这个事件对于公司来说,挽回了一个大客户,对华容来说,最大的收获就是认识到了自身的不足:关于硬件设计的认知少得可怜,所以触发了她学习硬件电路设计的念头。
而关于EMC的进一步理解和认识,则是受益于两年前EMSCAN公司的培训。在技术中心工作的好处就是可以接触更多前沿的技术,因此,燕飞和华容便成为公司里接受EMC培训的第一批,也是唯一的一批受训人员,自然也是EMSCAN设备的第一批使用者和受益者。
历史总是惊人的重复着,想不到时隔4年,再次与EMC交锋,只不过此时的华容拥有了利器—全套的EMSCAN设备。眼下有一个很好的契机,可以对怀疑的对象进行全面的“体检”,找出谜团的答案,验证自己的推断。
在经过燕飞的同意后,华容来到调试区,熟练开启设备:将上电后的电路板置于扫描板上,然后依次打开控制器、频谱分析仪,最后运行系统软件。
运行的结果几乎没有悬念:扫描的图像中,有2个区域出现辐射峰值,辐射强度高出其他部位很多。由于没有PCB版图,因此无法加载布线图进行精确定位,但与测试的实物对比,可以判断出最高的辐射区的位置是中部偏上的LCD的接口附近,其次是底部的电源附近。
在LCD接口下方的电路有两颗芯片:时钟芯片和译码器,时钟芯片的位置在译码器的上方,更接近LCD接口。
华容将检测结果,向燕飞做了汇报,燕飞依旧波澜不禁,让华容按照自己的想法解决问题。
硬件的先天不足,只好用软件后天弥补,方法很简单:
1、增加对时钟数据的读取频率,改为400ms读取一次;
2、对读取的数据,逐个字节进行验证,使之符合时钟数据的正常范围,对于非法的数据,采取抛弃和再次读取的方法,保证每次被写入的数据是正确的格式。
最头疼的问题,就这样被解决了。
幽灵,任你神出鬼没,飘忽不定;
工程师,自有一定之规,毫不留情。
与非网原创内容,谢绝转载!
内容汇总:
摘要:沈阳的一场大雪似乎也预示着公司的某些变动,果然在休整后的第二天得到了证实,去掉一个部门,重组一个部门,孤立了一些人,拉拢了一些人,兵还是兵,将还是将...
摘要:部门虽然重新划分,但办公室里的格局和人员的位置都没有变动,好像没有发生任何事情。华容原本是个局部变量,从不参与本部门以外的事情,但这次人事变动,她的主管设计师的职位依旧,只不过属性变成了全局变量...
摘要:华工对自己的项目满腹疑惑,后来在和燕飞的一场谈话中了解到了很多缘由,看似表面风光的销售业绩只有还有不为人知的秘密...
摘要:经过与燕飞中午的一番谈话,华容不敢再对眼前的PDA(手持机)怠慢了,但是只有她自己清楚其中的问题:框图已经有了,芯片的资料可查,那么详细的电路原理图,就不再是问题,可是偏偏无人提供原理图的电子版,害得她不得不自己动手...
摘要:平心而论,华容觉得自己与华萍之间还谈不上“默契”,因为到目前为止,这个词只属于当年那个team。是她在转行之后,加入的第一个开发团队—中鼎公司中文版ECR的项目组...
摘要:真正的交接开始了,果然不出华容的意料,华萍想尽办法隐藏原理图,让她感到意外的是华容在两年前已经开始学习画板子,而华容也知道她开始写程序,曾经推心置腹的合作伙伴如今心有芥蒂...
摘要:华容冷静地思考了一下整个“事件”进展和所经历的“谈话”,她认定这个项目的背后,一定有不为自己所知的内幕,尤其是与华萍的一番交涉,加上自己对她的了解,更加确认了这一点:这个项目不简单...
摘 要:华容向家里人“请假”,然后埋头工作。按照既定的计划,第9个工作日,进行了网络联调,包括终端与网卡服务器以及服务器与后台软件的通信,由于物理层 的协议没变,数据层的定义和格式也没有变化,变化的只是填充的内容,因此,毫无悬念,网络联调顺利通过,但是在PDA检测的时候她却没有看到检测文 档...
摘要:由于项目工期紧张,华容从制定方案到实施方案,加班加点,甚至向家人请假,最后终于如期测试通过,在验收的时候她偶尔遇到了以前的合作伙伴林杰森,也是这次偶遇让她知道了自己的项目工期被压缩减半...
摘要:烟草局的项目验收完成以后,华容终于松了一口气,但是被压缩工期的阴影始终萦绕心头,以至于想起来心中难受。某一天华萍的项目组出了一个搞不定的Bug,于是要求华容过去解决...
摘要:烟草局的项目忽然出变,原本都测试通过的设备有好几台被退回,华容展开紧张地测试,后来发现是板子上的一颗芯片型号...
摘要:一天发布在OA里的一条最新消息,如一石激起千层浪,波及到了公司的各个角落—有史以来,SD公司第一次裁员。这则消息,如同前天的暴风雪一样,来势凶猛,威力强大...
摘要:岳海上任后开始了第一次裁员风暴,杨玉庭本来不在名单了,但是因为年龄偏大而成了这次裁员的牺牲品...
摘要:华容、岳海以及燕飞坐下来讨论项目的执行策略,由于已经提前知道岳海的态度,华容提出项目进展中的各种问题,最后为项目争取了时间和资源...
摘要:华容制定了一套严谨的研发计划,而她最擅长的射频卡的读写距离问题。这个问题对于其他人来说,也许高难的,但对于她来说几乎谈不上难度,只不过是一、两个小时的问题...
摘要:华容准备好测试流程,发现需要个测试助手,人选哪里来?经过与测试部的商议从中抽出一个新来的实习生林鸿阳帮助华容完成测试,经过一天的试用,华容发现小林出乎意料地满足自己的需求...
本系列为付丽华老师原创故事《51的江湖》连载,故事中有职场,故事中还有技术,最真实的项目案例与大家一起探讨。每周一期,更多内容请查看: