十一、删繁就简,从最小系统开始!
这篇手记写到上一节,原本已经结束了,直到今天看到网友问的一个问题:“我的程序调试都通过啦,为什么烧片后没有反应?”
匠人突然发现,这篇手记的一个缺陷,就是过于集中讨论了调试中的软件技巧,却疏忽了硬件方面的问题。所以特意补充这个小节的内容:
当你辛辛苦苦在仿真上完成了所有调试工作,却发现烧片后系统不工作,该怎么办?
到百脑汇去看看电脑修理工是怎么干活的:面对一台故障不明的电脑,修理工会把先不相关的部件拆掉,只留下电源、主板、CPU三样基本核心部件,看能否启动;如果这一步通过了,他们会继续加上内存、显卡、显示器,看能否点亮;如果点亮了,接下来再加上:硬盘、键盘;最后才是鼠标、光驱、网卡、打印机、摄像头之类。
从最小系统开始,有条不紊地排查。这就是有经验的修理工们惯用的“最小系统法”!
所谓的最小系统法,是指构建一个可运行的系统,必不可少的、最基本的硬件和软件环境。而在这里,我们特指硬件方面。
如果要让一个单片机系统正常工作起来,需要哪些硬件条件,我们罗列一下:
1、电源
2、复位信号
3、晶振信号
Ok!无需多说了,这就是我们要优先排查的目标(也许你需要一个示波器!)。暂时忽视那些不相关的硬件。等单片机能够正常运行了,再去检查其它外围功能电路吧。
如果上述3个方面都排查无误,系统还不能工作,那就是人品问题啦。赶紧找个牧师去忏悔,或者到百脑汇去帮老板干几天活。完了再回来继续查自己的板子上有没有短路、开路等弱智问题。
最后再引申一下:在软件调试时,最小系统法也同样可以使用。先写一个只有最少的代码的系统,让程序跑起来,然后把模块一个个加入调试,不失为一种明智的方法。 |