硬件调试流程及说明书

  • 格式:doc
  • 大小:35.72 KB
  • 文档页数:9

1 硬件调试流程

硬件调试是一项细心的工作,一定要有耐心。硬件调试工具需要示波器、万用表等,同时需要主芯片调试开发软件及相应的仿真器。硬件调试首先要熟悉原理图原理和PCB布局,然后根据功能模块进行相关调试。调试流程如下。

1.1 PCB裸板测试

PCB加工生产故障往往由于设计和加工制板过程中工艺性错误所造成的,主要包括错线、开路、短路。当用户的PCB板制作完毕后,不要急于焊接元器件,请首先对照原理图仔细检查印制电路板的连线,确保无误后方可焊接。应特别注意电源系统检查,以防止电源短路和极性错误,利用数字万用表的短路测试功能测量一下板上所有的电源和地有没有短路的。

然后检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。

对于需要SMT的PCB板,量小建议每个PCB板都进行一下检查,如果量大可抽样检查。检查完毕无异常后交由SMT焊接,SMT焊接资料有硬件工程师提供焊接用partlist,PCB工程师提供PCB的SMT相关文档。

如果是手工焊接,建议焊接3块,以便调试时进行比较,排除焊接异常出现的问题。并且焊接时建议根据功能模块进行焊接,功能模块调试完成后再焊接其他功能模块。焊接及调试的一般顺序如下:

➢ 电源

➢ 主芯片及外围最小系统,包括主芯片,晶振,复位电路

➢ RAM,FLASH,串口外设

➢ 其他功能模块

按照这样的序调试焊接,优点在于能一步一步的排除问题点。假设,当你把主芯片,存储器都焊好,而且也调试可以工作了,再去焊你的电源,结果板上的电源部分出问题了,一个高压窜到了主芯片上,那后果不是很严重?

1.2 排除元器件SMT错误

SMT后,观察板上是否有下述现象

➢ 有漏贴的器件

➢ 有焊接不牢固的现象

➢ 有极性电容、二极管、芯片是否焊接方向有错误

➢ 芯片的相邻管脚焊接短路

➢ 小封装的无极性的瓷电容,电阻焊接短路

➢ 相同封装的芯片焊接错误

➢ 芯片管脚有虚焊,挂锡现象

➢ 。。。。。。 若发现不正常现象,应分析其原因,并排除故障,再进行调试,直到满足要求。然后用万用表测量电路板上各种电源对地阻抗,记录各电源到地的阻抗值;由于CPU/FPGA等核电容越来越低,所以1.2V等电压的对地电阻可能会低于100欧姆,需要用万用表的200欧姆档来测量。

如果有短路现象出现,分析并查找原因,处理完毕后再进行下一步硬件调试。

1.3 电路板上电操作

上电前一定要检查外接电源电压的幅值是否为输入所需的电源电压数值,极性是否正确,否则很容易造成系统损坏,并确定电路板电源端无短路现象后,才能给电路接通电源。

上电时可用带限流功能的可调稳压电源。先预设好过流保护的电流,一般情况下限流为1.5-2倍的工作电流,如果不确定工作电流,可以先从低到高限流,比如开始限流1A,第一次上电后再改为2A。

电源一经接通,不要急于用仪器测量波形和数据的电气指标,而是要观察是否有异常现象,如冒烟、放电的声光、听听有无异常杂音,闻闻有无异常气味,用手触摸集成电路有无温度过高现象。如果有,应立即关断电源,待排除故障后方可重新接通电源。如果瞬间出现电压值变小,电流变大或出现过流保护,说明电路板有短路或其他问题,则要断开电源,寻找故障点,并重复上述步骤,直到电源正常为止。

上电,同时监测输出电流和输出电压,并记录输入电压值和电流值,以便调试互相比较。

电源电路、晶振电路和复位电路是整个系统正常工作的基础,应首先保证它们的正常工作。

1.4 电源调试

上电通过万用表测试各电源输出值是否正常(如果有电源指示灯,观察指示灯是否正常点亮)。记录此时系统各模块的工作状态和电源的输入电流。

通过示波器测试各电源输出的纹波是否满足设计要求,并保存波形和幅值,纹波等数据记录。

如果板上各电源输出有0R短接电阻,可去掉此0R电阻,串万用表测试电流(万用表打到电流档,表笔测量为电流输出档),记录此时各电源负载的工作状态和电源的输出电流。

1.5 主芯片硬件调试

主芯片供电正常后,可调试其最小系统外围电路。这个环节容易出问题的就是复位电路工作不正常,主芯片某些引脚虚焊。主芯片的系统配置正确与否暂时不会影响到芯片是否工作,可以最后检查。

➢ 外接晶振调试 通过示波器检测晶振是否起振,振幅,起振时间等参数是否满足要求,并进行波形保存和参数数据记录,如果晶振没有起振,一般说明主芯片没有正常工作,但有些芯片上电缺省采用部晶振,需要软件配置后,外部晶振才可以起振;

有些主芯片有CLKO管脚,即缺省32.768KHz的时钟输出,可通过示波器检查此管脚是否有时钟输出,开确定主芯片是否上电正常工作。

➢ 复位信号调试

复位信号电压是否满足设计要求,上电复位时间是否满足要求; 如果外部有硬件看门狗,测试其是否按照设计要求复位。并进行相关波形保存和参数数据记录,

1.6 JTAG仿真器连接调试

以通过JTAG口对S3C2410进行调试为例。

在保证S3C2410X已正常工作的情况下,可使用ADS或SDT通过JTAG接口对片的部件进行访问和控制。

在此,首先通过对片控制通用I/O口的特殊功能寄存器的操作,点亮连接在GPG1,GPG8,GPG9,GPG10口上的4只LED,用以验证ADS调试环境是否已正确设置,以及与JTAG接口的连接是否正常。下图为调试系统的硬件连接。

按图接好硬件后,打开AXD Debugger,建立与目标板的连接,AXD Debugger有软件仿真方式和带目标系统的调试方式,此时应工作在带目标系统的调试方式。

首先打开Multi-ICE Server(v1.2),点击左上角的Auto-configure按钮,此时检测板子上S3C2410的ARM920T核,如果能检测到,证明 JTAG连接没有问题,否则,则应检查电路连接,直至检测到ARM920T核才可进行下面的操作。

打开ADS中的AXD Debugger,首先对其进行配置,打开option-->configure target,要使Multi-ICE与AXD Debugger 连接,需要添加一个动态库,点击add,把Multi-ICE安装目录下的Multi-ICE.dll添加进去。然后双击,对其进行配置,这里自动给配置好ARM920T,点击OK即可。

打开ADS中的CodeWarrior(代码编辑编译器),新建工程选择ARM

Executable Image,并在工程中新建文件,添加亮灯代码到文件中。然后选择菜单中project-->addfile,将刚才写好的代码文件添加进去。打开新建的工程,选择DebugRel Settings按钮,对Target Settings进行设置。(具体设置见笔记)然后对该工程代码进行编译,若编译成功,则会在当前工程目录下生成.axf文件。 回到AXD Debugger,点击File-->load image,将之前生成的.axf文件导入,然后点击运行,若灯如设想的正常工作,表示调试系统的软、硬件连接完好,可以进行下一步的调试工作。

也可以通过命令行直接点亮灯。 选择菜单“System Views”→“Command

Line Interface”功能,该选项为AXD Debugger的一个命令行窗口,可在该窗口输入各种调试命令,使用非常方便。在命令行窗口输入:

>setmem 0x56000060, 0xFFD5FFF7,32//通用I/O G口控制寄存器设为输出状态

>setmem 0x56000064, 0xF8FD,16 //通用I/O G口数据寄存器,低电平亮

外接RAM,FLASH的主芯片,需要通过JTAG仿真器调试,编写相关驱动软件,让最小系统工作正常。

Flash存储器的编程、擦除操作均需要用户编程控制,且程序还应在SDRAM中运行,因此,应先调试好SDRAM存储器系统,再进行Flash存储器系统的调试。

1.7 外接RAM调试

SRAM可以直接由ARM芯片来读写,只要信号线接的没错,系统设置没错,SRAM一定会工作,除非买到坏的SRAM。用JTAG接口将板和电脑连接,打开AXD的Command line和Memory watch,使用命令行来对芯片进行初始化。AXD中使用setmem命令对相关寄存器进行设置。如果不知道如何使用Command line,可以在命令行中输入help来查询。设置完寄存器后,后在Memory watch中修改对应地址单元的数据,就可以看到修改后的数据保存下来了。用这个方法可以测试LPC2214,4510,44B0,2410外部SRAM是否已经工作。

对SDRAM调试之前,首先要对CPU 、SDRAM等进行初始化。

在“Command Line Interface”窗格中的“Debug>”提示符下依次键入以下命令:

spp vector_catch,0x00

spp semihosting_enabled,0x00

sreg psr,0x60000013

smem 0x53000000,0,32

smem 0x4C000004,((0x47<<12) (0x1<<4) 0x2),32

smem 0x56000070,0x280000,32

smem 0x56000078,0x0,32

smem 0x48000000,((2<<28) (2<<24) (1<<20) (9<<16) (1<<12) (1<<8)

(1<<4) 0),32

smem 0x48000004,((3<<13) (3<<11) (7<<8) (3<<6) (3<<4) (3<<2) 3),32 smem 0x4800001c,((3<<15) (1<<2) 1),32

smem 0x48000020,((3<<15) (1<<2) 1),32

smem 0x48000024,((1<<23) (0<<22) (0<<20) (3<<18) (2<<16) 1113),32

smem 0x48000028,0x32,32

smem 0x4800002c,0x30,32

smem 0x48000030,0x30,32

或者将以上容保存在C:\memmap.txt中,然后在“Debug>”提示符下键入以下命令:obey C:\memmap.txt,也可以达到上面的命令效果。

选择菜单Processor Views→Memory选项,出现存储器窗口,在存储器起始地址栏输入SDRAM的映射起始地址:0x3000,0000,数据区应显示SDRAM中的容,此时所显示的容为一些随机数。双击其中的任一数据,输入新的值,如输入0xAA,若对应的存储单元能正确显示刚才输入的数据,则表明SDRAM存储器已能正常工作。 在连续的4个字节输入0xAA,然后再输入0x55,检测32位数据是否正确传输,若其中的某一位或几位数据出现错误,则多半是由于对应的数据线不通或连接错误所引起的。

在SDRAM可以正确访问之后,用户可以将自己编写的应用程序编译后下载到SDRAM中运行。