调试就是系统出现了问题,找到问题并改正的过程。硬件调试等于黑箱调试,因为看不到系统里那一地方出现了问题和为什么出现了问题,需要用一定的方法和经验去排查它,找出错误所在地方。如何快速定位问题,下面给出一家之言。
1.1. 调试流程要定位问题,先分析问题可能产生的环节,即从硬件系统的实现过程来分析可能产生的问题。如图1所示,硬件系统的实现可分成8个步骤。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
图1:硬件系统的实现过程
1.系统设计
系统设计师根据需求报告设计出概要设计和详细设计,并把系统分成软件部分和硬件部分。
2.原理图设计
硬件工程师根据设计要求,画出原理图。可能出现些致命错误,比如:上下拉电阻搞反了,管脚连错了等等,在进行下一步流程前要仔细检查。
3.PCB设计
硬件工程根据原理图画出PCB,主要考虑关键信号的信号完整性和电磁兼容性。高频接口部分最容易出现问题。
4.PCB制作
目前PCB板在出厂前已进行了检验,都能保证质量,所以PCB制作出现问题的可能性就不考虑了。
5. 焊接
如果是第一板,不建议一次焊上,可分块焊接、分块调试吧。可按先电源,后芯片,芯片的焊接顺序可按数据流的方向依次焊接调试。焊接时注意:虚焊,焊短路,焊锡滴滴在PCB板或芯片管脚上,器件焊错(比如电容焊成电阻,焊的电阻大小不一致,焊的位置不对)。特别是焊短路,每焊一个芯片应用万用表检查是否短路,芯片上电后是否发烫。
6. 验证各芯片是否正确工作
首先保证芯片能工作,要从电源、时钟和复位来看:确保芯片的电源稳定和电压符合要求;芯片如外接晶振,要确保时钟输入正确;复位信号要确保存在、存在时间长短,及系统多个复位信号的先后顺序。其次要保证芯片正确工作,这里所说的正常工作是指按照指定的方式工作,大部分芯片都有几种工作模式,需要设置芯片的工作参数和外围配置电路。大部分前期调试失败,主要是没有按datasheet的要求设置参数,事后,一般会发现是阅读datasheet不仔细,或者是没有完整阅读手册(或没有阅读到关键部分)。
7. 验证各种总线/接口是否正确互联
在系统中,芯片、板卡、设备之间,是能过各种总线来连接的。芯片间总线有:SPI、I2C、UART三种串行总线,和并行总线;板卡间总线有:ISA,PCI,PCIE;设备间总线有:USB,IE1394,RS232,CAN。常用的显示接口有VGA、DVI 和HDMI。在调试过程中,要确保系统上的各种总线/接口正确互联,首先按照总线协议,要确保物理特性满足,特别是电压电平要求,再确保能正确工作,特别是时序方面和多个实体互联的总线不要冲突。该过程也是软硬联调的部分,出现问题可能性极高,它占了绝大部分的调试时间。
8. 软件编程
软件编程中,主要实现整个系统的灵魂,一般是在一些可编程的芯片里实现,如单片机、ARM和FPGA等。
在调试过程,按照上面的8个步骤来定位错误,虽然慢,但个人认为确是最有效的方法。当然在调试过程中,各步骤是不可分的,比如焊接和验证芯片是否正确工作两个步骤,是反复的过程。当每进行一步,就必须确保前一步骤没有。
1.2. 个人体会
1.2.1. 三个关键点
上面介绍是一般的调试流程,但在这过程中,有三个关键点要注意:电源、时钟、复位。电源、时钟、复位是系统里的各芯片工作的三要素,所以一定要确保其没有问题。
1.保证电源的稳定可靠:对于系统来说,电源提供给各路的电压要稳定并符合要求,才能确保整个的各个模块正常工作。在调试时,芯片(特别是模拟芯片)不能正常工作,或时好时坏,这时要检查芯片是否烧坏,电压是否稳定,电压是否够(最好高于标准值,但不要大于最大容限)。
2.保证时钟的稳定可靠:时钟是系统和芯片的工作时动作的触发条件。在调试时,要注意:a)有时钟信号,晶振正常工作。在调试时,由于虚焊或焊短路等原因,造成晶振没有工作。b)时钟信号达到芯片的管脚时信号质量要保证。由于时钟速率越来越高,信号边缘速率越来越快,设计PCB时的存局和走线越来越复杂,造成时钟信号在传输过程中不能保持其完整性。可用示波器检测,如看到非常清晰的正弦波,则说明时钟信号质量好;反之,波峰削平、波型歪斜等,则要检查时钟电路。c) 几个芯片同用一个时钟时,要保证同步到达。可用示波器两个通道来检查时钟的相位是否一致。
3.保证复位的稳定可靠:复位信号使系统和芯片的状态跳转到可知的起始状态。在调试时,由于原因可能没有复位信号,或者一直处于复位状态。根据芯片手册,查看复位信号的最短时间是否满足。对于复杂系统中,各芯片的复位时间不一样,有先后次序的,可用示波器多个通道观察是否满足,在设计时,可用专用的复位芯片管理各路复位信号。
1.2.2. 两方面要仔细:一要仔细阅读芯片手册,二要仔细记录调试过程中的异常现象。在调试时,应仔细阅读芯片手册中的配置(主要是操作模式)、管脚定义(是否复用、电压电平)、协议、时序图;有人统计说,70%以上的调试错误是由于没有仔细看手册等文档。在记录异常现象时,一定要记下来前几步的操作,这样可以重复模拟,如果重复出现三次以上,应考虑该地方必有问题存在,应及时解决;如果该现象是由某特定原因造成的,而没有及时重复模拟发现问题所在,可能造成后期出现问题多,而无从下手。
用户1773510 2014-7-14 00:15
用户400850 2008-6-15 10:45
用户1384026 2008-6-14 19:54
用户1384026 2008-6-14 19:52
用户400850 2008-6-14 16:24