硬件调试方法总结

一.思考问题的方式

1/是什么:首先要明确自己的问题是什么,要具体且有内容,通过接下来的调试和排查,一步步地缩小自己问题的范围,给出尽可能详细的问题描述。例如我最近在调试的PL2030给51系统板下载的问题,最开始我的问题是:为什么stc-isp烧录时无法检测到单片机?到最后深化为:电流倒灌导致单片机无法冷启动应该怎样解决?

2/为什么:在这一步思考问题发生的原因,帮助我们深入问题,搞清楚”我的问题到底是什么?“。例如:stc-isp检测不到单片机,那么为什么检测不到单片机?这时候可以去各大网站上搜寻解决方案,看看是否有前辈们已经遇到过相似的问题了。检测不到单片机的原因可能是型号错了、端口错了、可能是晶振没有起振、可能是没有冷启动。然后就需要一个个排查,我的型号选错了吗?端口错了吗?晶振起振了吗?等等等等。

3/怎样做:这一步是至关重要的一步,我把怎样做分为两种怎样做,第一种是"观察型",比如端口和单片机型号是否选错这样的问题,我可以直接通过观察来检查,这一类比较好处理。重点是第二种的“实验型”,比如晶振是否起振,单片机是否冷启动,你需要用万用表测试,有些问题还需要在程序里一行行的调试。实验型的问题需要花费大量时间,而且很容易就进入了“无意义的重复工作之中”,表面上看起来自己正在费时费力的调试,但是自己心中却一片混乱。我遇到了什么问题?我是否是经过思考选择了这种实验方法?我预期的实验结果是什么?这样的实验结果说明什么?得到了这种结果,我下一步需要干什么?这些问题都是需要不断思考的。而在实验前需要思考的至关重要的一点是:该实验的停止条件是什么?也就是说要时刻问问自己应该在什么时候停下来,如果我要做第二遍,那我做第二遍的目的是什么?我修改了什么条件所以才要进行第二次实验?如果不这样时刻提醒着自己,很容易就进入一个死循环中。

二.实验时的细节

1.善做记录。首先记下我们正在探究的问题,其次每次实验都要标注实验条件和实验现象,不要刚做完一次实验就忘记了自己实验的内容是什么。

2.善于思考。不管遇到了什么样的问题,我认为思考的时间都是要大于动手的时间的。我们解决问题时绝大部分时间应该用来思考上面所说的是什么、为什么、怎样做的问题,反复实验却缺少思考是非常低效的方式。

3.善于使用工具。我发现我非常不善于使用万用表,其实万用表是一个非常强大的工具,可以检测是否短路、电路两端的电压是多少,流过的电流是多少等等,还有在程序调试中的打印串口等,都是非常有用的工具。这里的工具范围非常广,不只是物理中的工具,像是搜索引擎,周围的学长、老师、大牛……都是解决问题非常好的“工具”。

4.注意自己的状态。排查错误、进行调试是非常耗费精力的事情,如果发现自己的精力不足、效率下降,停下来去休息是最好的选择,及时止损!

三.一点感想

以前我对硬件的认识就是经常会出现一些莫名其妙无法解决的问题,而且这似乎成为了硬件的一个feature?尤其是和每次运行结果必定相同的软件程序比起来更是如此。

但是我最近看了知乎用户invalid s在“编程究竟难在哪”问题中的回答以后,我有了新的感想。

他是这样说的:解释一下这个抽象的0/1是如何出现/消失于电路中的。
事实上,电路中压根就没有0和1。
就好像你的手机充电器的指示灯一样,当它接通电源时,指示灯亮;拔下来扔桌子上,指示灯灭。
很多人胶柱鼓瑟,非要在里面找“充电器是怎么知道自己有没有插到电源上的”。
但实际上,我们每个人都知道,指示灯就是盏灯而已。接到电上,它不亮也得亮;拔下电源,它想亮也亮不了。
同样的,电路中根本不存在什么0和1。我们给它插电,然后合上开关,某段电路便得到了供电——然后我们给这个状态起个名字叫高电平。
它和充电器一样,是一件死物。它压根不知道任何东西。
……

虽然我以前也知道这些事情,但是从来没有这么透彻的想过,他的那句“接到电上,它不亮也得亮;拔下电源,它想亮也亮不了”让我很触动。硬件说到底只是一堆死物而已,哪有那么多“莫名其妙”、“玄学”的bug?仿照那位大牛来一句:它有bug、那它想不出问题也不行;它没bug,你想让它出问题也出不了。

所以我觉得所有硬件问题要是真的“追根溯源”都是可以解决的,只是和软件比起来调试硬件的代价比较大。模块我们可以调试,元件我们可以看出没出问题,电路我们可以看它短没短路,但是深入到电路板的层次,其实就很难再去做什么了,而且大量元件和电路揉到一起去我觉得在某种意义上就是一个混沌系统,你很难发现里面运行的问题,从这个角度来说有些硬件问题确实没办法解决。

说了这么一大堆,其实我想说,永远保持一个良好的心态,硬件不过是一堆死物而已,根本不存在所谓的“玄学”,要相信调试的力量。但是也不要过激,虽然最终都能解决,但是白花费时间和精力的事情也不要去干,要懂得权衡,知道“坚定”和“固执”之间细微的区别。

发布了8 篇原创文章 · 获赞 0 · 访问量 434

猜你喜欢

转载自blog.csdn.net/weixin_45467056/article/details/103206857