打印

如何调试开发板

[复制链接]
2352|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
txcy|  楼主 | 2010-12-15 18:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在调试自己焊的一块开板,简单谈一下如何调

     使用现成开发板做开发时,一般都不太需要调试开发板,因为成品开发板出厂时都经过测试,不会有什么问题。但是如果是自己设计焊接的板子,情况就不一样了。再简单的板子,都可能存在这样那样的小问题:有的是元器件选型引发的,有的是焊接引发的,还有的根本就是设计缺陷引入的。调试开发板一般都有一些固定的过程和方法。我们还可以借助工具来帮助找到问题。下文ARM开发板的调试过程同样也可以供调试别的电路时参考。


1、上电前应该先检查电源模块



新焊的板子在上电以前应该先用万用表的“哔哔”档检查地电是否短路。这是最基本的检查,因为在地电短路的情况下强行上电会导致非常严重的后果(烧毁电源或跳闸)。如果有短路现象,可以对照原理图一个个排查。还有上电以前必须检查所有带极性的元件的焊接方向是否正确,电解电容方向焊错是比较常见的问题。


对于多电源电路,要检查所有的电源输出是否与“地”短路。


2、上电以后检查各个电源模块的输出电压是否正确


在地电不短路的情况下上电,然后用万用表的电压档量各电源模块的输出电压是否正常,如果不正常,立刻断电检查。输出电压不正常的原因很多,有的是因为选错焊接器件导致的,我在实际中就曾经遇到过焊接工人把3.3V的LDO和1.8V的LDO焊错位置的情况;还有就是负载电路中存在故障模块,导致电流消耗过大,超过了电源模块的负载能力,这时可以断电检查电路中是否有发烫的元器件,进一步定位问题。


小窍门:对于新设计的板子,供电子系统和应用系统之间应该使用跳线连接。当确认各供电电压准确无误以后,才用跳线帽接通。这样可以防止供电系统的错误输出损坏次级电路。


3. 供电正常后电路不工作的原因


如果前面两项都检查通过,但是电路仍然工作不正常时,通常的原因有两个:reset(复位)信号不正常和时钟晶体不起振。


在多数情况下,reset信号是低电平复位,如果用万用表发现reset恒为低,电路在这种情况下是绝对不会工作的。reset 信号恒为低可能是由于 reset 对地短路或者是复位电路的缺陷导致的。


晶振不起振是电路不工作的另外一个常见的原因。通常晶振起振以后,开发板芯片的JTAG控制器就开始工作了。此时,可以用JTAG工具来间接测试晶振是否起振。当然,最直接的办法就是用示波器来量。有一种情况是示波器一量,晶振就起振,这一般和晶振的负载电容有关,尝试换其它容值的电容来试试,也许问题就解决了(有时候,直接拆掉负载电容也可以解决问题)。


4. 检查SDRAM,nandflash等外围器件



对于单片机系统,可能解决了晶振起振的问题后,系统就可以上程序调试了。但是,对于一些有SDRAM等外围器件的电路而言,检查可能还没有结束。例如,有一块配置为“从nandflash启动”的2440开发板,已经可以用JTAG工具读取CPU的JTAG ID,但是,烧写程序以后,板子还是运行不起来。不运行的原因不外乎两方面:软件不对或者硬件有问题。硬件问题排查起来比较容易,所以常常放在最前面。软件问题查起来比较费事,所以常常放在后面。软硬件交替检查的过程就是我们常说的“调试”。


最迫切需要确认的是:SDRAM和nandflash的硬件是正常的。这需要检查它们的焊接和器件本身的内部状况。


正确初始化SDRAM控制器是SDRAM正常工作的前提。通常我们不太会自己去设计SDRAM控制器的初始化参数和过程,而是直接参考厂家提供的源码。所以最需要确认的是:源代码在引用过程中是否有笔误?板子上焊接的芯片的型号和厂家的参考设计是否一致?确认无误后,可以接着往下排查。


焊接缺陷常常导致器件工作不正常,而常见的焊接缺陷则包括虚焊和短路。SDRAM的数据线和地址线非常多,是比较容易出现焊接缺陷的。下载一段确定的内容到SDRAM中,然后读出来比对,看看是否一致。可以用1010和0101的二进制数据来检查数据线上的焊接缺陷情况。地址线虚焊或短路常常导致相同的数据写到不同的地址区域中,所以当看到同样的数据在不同的SDRAM区域中重复出现就可以断定地址线上有焊接缺陷。


排查完数据线和地址线,如果问题还没有解决,可以再检查其它的控制信号是否也有焊接问题。例如,写操作有问题,可以查WR管脚;读操作有问题,可以查RD管脚;读写都有问题,可以查片选和时钟。可以用万用表和JTAG仿真器配合着一步步排查。


有虚焊就补点儿锡,有短路就加点儿助焊剂,拿烙铁“呼啦”一下,问题还是比较好解决的。


有时候,器件本身有问题,虽然这种情况很罕见但是也不能忽视。例如SDRAM内存颗粒中个别单元有坏区。这种情况怎么确定呢?下载一个覆盖SDRAM所有空间的大文件到SDRAM中,然后再把它读出来和源文件比对(当然是用工具比对),可以更精确地定位问题单元到底在什么地方。遇到这种情况,更换内存颗粒是唯一的解决方法。


nandflash的检查和SDRAM类似,它不存在地址线的问题。所以,数据线和控制线就成为重点。如果nandflash可以正确读出ID,就可以确信它没有大的问题。


5、检查下载的程序


常见的问题可能是:Endian选错了;二进制格式错了;下载的程序有bug;根本就是下载了一个不相干的文件。如果是下载程序的bug就只能慢慢调试了,我就不一一赘述了。

相关帖子

沙发
火箭球迷| | 2010-12-15 21:25 | 只看该作者
针对不同的开发板还得具体考虑

使用特权

评论回复
板凳
hsbjb| | 2010-12-16 16:49 | 只看该作者
电路不工作的原因似乎还有许多,还得具体问题具体分析

使用特权

评论回复
地板
baidudz| | 2010-12-18 18:45 | 只看该作者
这个调试开发板还得多实践

使用特权

评论回复
5
dfsa| | 2010-12-19 21:56 | 只看该作者
调试开发板JTAG口是少不了要用的

使用特权

评论回复
6
秋天落叶| | 2010-12-20 20:56 | 只看该作者
不错的心得

使用特权

评论回复
7
tear086| | 2010-12-20 21:26 | 只看该作者
不错。

使用特权

评论回复
8
bit6019| | 2010-12-20 22:31 | 只看该作者
写的不错,学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝