一个早就发布并且使用了至少几千次的软件突然不能正常工作了。
某同事更新了DSP的固件版本后,发现由PC端应用程序不再正常工作了。现象是:PC端应用通过CAN下发一个命令给MCU后,就再也接收不到MCU的任何反馈了。重现概率10次可以重现9次,剩余的那次的成功也有很大问题:频谱仪捕捉不到我们的电子产品发射出的任何射频信号(正常情况下,下发CAN消息后,该产品应该发射出指定频率的射频信号)。
但是,我们的PC端软件版本还是很老的,近2个月没有做任何修改。通过替换验证了几乎所有的周边设备和模块。
1. 替换了一个正常的电子产品,检验是否是频谱仪发生故障了;
实验证明:频谱仪是正常可用的。
2. 替换了CAN卡设备,检验是否是CAN卡设备发生故障;
实验证明:CAN卡是正常的,在其他设备上该CAN卡是正常使用的。
3. 重新烧率了DSP以前的早期版本;
使用老版本的DSP固件,电子产品故障现象依然。
4. 替换了电子产品里的主板;
替换后故障依然。
在忙碌了整个下午后,毫无头绪的我们只能按照硬件软件的分层debug思路,把MCU工程师T拖入进来参与debug。
小T把故障的主板取下回到自己的座位上,使用CAN通信软件下发和收取CAN消息,一切正常。小T怀疑PC端软件根本就没有下发CAN消息给MCU。小T要求PC端软件提供下发CAN消息的log作为证据。事情到这,就必须修改代码了重新编译发布新的软件版本了。
迷惑了整个晚上。在第2天,重新调试时,奇迹发生了,故障居然消失了。
无论是使用老版本的PC端软件,还是使用增加了log记录的新版本软件,重复测试10次,都正常了。我无意间看了下交流转直流电源适配器,上面的电流显示550MA,比昨天的大了15-20MA,并且电源适配器上的一个红色LED不再常亮了。我很疑惑地问了另一个同事。原来他一早来后就发现该电源适配器似乎被设置了限流,电流强度上限只能达到533MA。
是否是电流强度被限制,导致电子产品工作不正常呢?我们重新将电流限制设置到533MA,那个红色LED灯常亮起来,再次重新测试,发现昨晚的故障出现了,重新测试5次,在限流的情况下,故障重现了5次。再次关闭限流后,故障消失。至此,该BUG的根本原因被发现,问题彻底解决了。
并且,软件工程师和硬件工程师约定,不要把这次debug工作报告给上级领导,因为,因为,因为故障原因太丢人了!!
问题总结:在以后的测试中,一定要优先检查电流电压.。即使电流强度有15MA的减小(排除电压调大,电流减小,而功率不变的情况),也要寻找下原因。在电压不变的情况下,限流的后果就是功率减小。没有工作在额定功率的电子设备,会出现各种意想不到的BUG。硬件软件即使分层测试,如果没有使用同一台电源适配器,也很难重现故障。
经验教训:
1. 我们替换测试验证了很多配件和仪器,唯独没有替换电源适配器;
如把电源适配器也替换测试,可能很快就能找到问题。
2. 在PC端加入log来记录和MCU的CAN通讯记录;
在下发消息给MCU的操作写log,接收到CAN消息也写log记录,方便出错时debug。
3. 为人处世建议;
在debug过程中,硬件工程师不相信软件工程师没有修改任何东西;而软件工程师清楚知道软件根本就没做修改,并且之前一直可以正常使用,大家相互埋怨,不信任。最后发现bug原因后,证明了软件工程师和硬件工程师都没有过错。在debug过程里,提前就设定是谁的错误,肯定不合适。
当然大胆的推测来验证排除问题,又导致硬件工程师很不耐烦是另外一个问题。在之前的多次软件bug中,最终都发现是硬件线缆虚焊断裂等问题(定制的夹具和线缆,连接处经常会上下机械运动带来磨损)。一旦出现问题,肯定首先表现在软件上。软件工程师在这样的环境下,确实生存不易。练就过硬的DEBUG功夫,快速查明问题是求生必备技术。
一次电流限流引发的血案
最新推荐文章于 2025-03-18 10:32:11 发布