- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
通过调整硬件来增强设计的可调试性
硬件设计工程师经常提到的两个概念是可制造性设计和可测试性设计,但是软件设计工程师更加关注使系统更容易调试的可调试性设计问题。本文介绍简化调试时需要做出哪些硬件上的调整,硬件设计工程师要做出怎样的调整才能缩短调试时间,从而加快整个项目的进度。
硬件设计工程师在绘制电路图和布线制板时并非没有考虑调试问题,只是他们对调试的要求可能与我们的要求南辕北辙。他们在制板前通常已经通过仿真或面包板实验验证了大部分硬件的功能是正确的,因而他们不必费心地逐个探测信号。然而软件设计工程师最关心的和最想探测的则是诸如地址总线和数据总线等最简单的部分是否工作正常。
许多项目的资料中都包含一定层次的硬件文档,例如需求定义设计文档和接口文档。这些文档中的许多信息都可能对调试大有帮助,但如果文档堆成山,那么对设计工程师而言与其说是帮助不如说是拖累。在调试程序时,除了我的代码外,我只关心电路图和印制电路板(PCB)。这就意味着我必须把有些文档信息转化为电路图或PCB信息。
电路图的标注
软硬件之间最常见的联系之一就是寻址方案。因为许多设计中都有ROM、RAM、内存映射I/O以及其他可寻址设备。硬件设计工程师通常通过离散寻址解码逻辑或一个可编程逻辑器件(PLD)来选择地址。有时也通过可编程片选来达到软件设置地址的目的。但不论采用何种方式,都应把每个器件的地址标注在电路图上的器件参考符号旁。
硬件设计工程师可能会争辩说,器件的地址在调试过程中可能会发生变化,因此不应把地址信息标在电路图上。但我认为信息应该出现在最有用之处,如果这意味着必须修改某个文档或者至少将它标注出来,那么就该这样做。
硬件设计工程师总要花费几周时间来绘制电路图并阅读每块芯片的数据手册,所以当他们看到芯片旁印有“74AC244”时他们就会想到“4+4三态缓冲”。但我们软件设计工程师对芯片型号可能并不如此熟悉,因而如果电路图上标有芯片的具体描述那么调试就会变得容易很多。
对芯片的管脚名也是如此。有些芯片的管脚名过于普通,无法表示其功能,而且对这种情况我们无能为力,因为管脚名与它在CAD的工具库中所指示的部分直接相关。但硬件设计工程师却可以在电路图上添加一些标注,用以说明每个管脚的功能,例如用“backlight”代替“P1.0”。
另外,含义模糊的节点名简写描述也常把电路图弄乱,例如“POS_OFF_CH”用来表示正向偏移通道。如果我们无法说服硬件设计工程师用完整拼写的名字来作节点名,至少我们应该努力说服他们将完整拼写的标注标在芯片旁。如果能将一个信号是输入或输出标示出来也会很有帮助,例如“POSITIVE_OFFSET_CHANNEL_IN”。当然,如果为芯片的每个管脚都这样标注,电路图会显得有点杂乱,所以最好是只标注出关键管脚或关键的管脚群。
对我来说,有一个地方绝对需要看到每个管脚的标注,那就是在连接器处。不论信号管脚、未连接管脚、电压管脚还是接地管脚,都应该标注出来。而且图纸上的连接器应该与实物一样。如果实物是一个两列的接头,左上角为管脚1,那么图纸上用于表示它的符号就应该是一个两列的图形,并且管脚1位于左上角。连接器还应该附带一个功能标注,例如“串口”或“显示”。如果有足够的空间,可以请硬件设计工程师将器件编号和生产商标在连接器旁。如果还有空间,还可以请硬件设计工程师将与其对接的连接器的器件编号添加进来。如果系统中存在许多连接器,那么最好另外创建一个电路图,给出系统中每个连接器所接的连接器的器件编号。
如果电路板上包含一些专门用于某些应用的LED,那么我建议设计工程师在它们旁边加上与其功能匹配的标注,如“Alive”或“Rx”。如果板上包含一些只用于调试的通用LED,那么应在旁边标注上I/O标识符,如“P1.0”,或地址位,如“0xFF00:2”。另外,器件的极性也是十分有用的信息。如果某个LED为低电平有效,那么就应在其标注前加一个斜线,如“/Rx”。有了这些标注之后,我们只要快速地一瞟电路图就能知道怎样利用该LED作为调试工具。
在电路板上,常常会用DIP(双列直插)开关、跳线或者焊点短路来实现某种可通过硬件选择的功能。当电路图上出现这种情况时,应请硬件设计工程师在器件旁加上一些文字,解释清楚每个不同的接法代表哪种功能。例如某个跳线旁可能有这样的标注:J3 =
RS-232
/J3 = RS-485
有些芯片上有一些模式管脚,这些管脚通常在某种特定的应用中应该接上拉电路或下拉电路(无法通过软件控制)。这时,应在它们旁边加上一些文字,说明当前采用的是哪种模式。
一般来说,我们可以将管脚名看作变量,而将电路图标注看作注释。如果一个程序采用“XCVR_CK”或“POS_OFF_CH”这样含糊不清的变量名,或者“U12”或“SAA106?”这样的函数名,那么除了写程序的人,还有谁愿意读?如果我们理解了某个给定的信号或者芯片的作用,那么为它起一个描述性的名字并不困难。
图1给出的就是一个按以上种种建议补充过的电路图。
电路板标注
程序员在需要判断某段程序工作情况如何时通常会查看电路图,因此以上谈到的大多数电路图注释都着重于描述电路的功能性。但当程序员在查看电路板时,努力寻找的则是需要探测的信号
印制电路板(PCB)上的标注应该帮助我们找到我们需要的信号,而PCB上的布线则应让我们容易获取这些信号。当然,如果PCB上能加入所有电路图上的标注和文字,那是最好,但这种情况恰恰不太容易出现。试想,若要求硬件设计工程师将电路板的空白区增大10%以便腾出空间为每个连接器上的每个管脚作标注,结果会怎样!
程序员在实验室里最常做的事情就是在某个芯片上寻找某个管脚。然而不幸的是,芯片的发展趋势却是体积越来越小,而管脚越来越多。您可曾试过在一块208脚QFP封装的芯片上寻找第135遇到这类情况时,以下几条简单的标注规则可以帮助您快速找到您所需的管脚:1. 清楚地标出管脚1;2. 标出芯片每个角上地管脚号;3. 每5个或每10个管脚打一个点或划一条线;4. 图2给出了按这种规则标注的一个例子。
在调试时我们首先应为示波器探头找到一个接地信号。尽管电路板上满布着接地焊盘和接地过孔,但若没有标注很难找到它们。这时可以请PCB设计工程师在我们感兴趣的每一组信号旁标出一个接地焊盘或接地过孔。如果电路板空间很紧张,无法在每一个需要的地方写下“GND”,那么可以试试采用和电路图上一样的标准三线接地符号。连接器上的接地点尤其重要,因为这些接地点不但可用于示波器接地,在插入一根电缆时还能提供一定的视觉反馈信息(如果电缆中的红线连到了连接器的接地脚上,那么我们最好在打开电源之前重新慎重考虑)。
示波器探头一般都需要接地,但由于某种原因大多数示波器探头的接地夹都是一个相对较大的鳄鱼夹。要想将这样的鳄鱼夹连到一个接地点上而不发生任何短路现象,需要十分小心。在嵌入式系统的设计艺术一书中,Jack Ganssle提倡将鳄鱼夹用一个微抓钩代替。我本人赞成这一做法,但我不敢肯定我的经理看见我拿着一对切线钳去剪他才买来的价值150美元的名牌新示波器探头时会说什么。Ganssle还建议我们在某些接地过孔中插入一个电阻,并将其焊上,然后从电阻下端将引脚剪断。这样就能得到几个较硬的管脚桩子,我们可以轻易地将鳄鱼夹夹到桩子上。我的经理不会介意我切断多少电阻,所以我通常都选择这种方法。
另外一些程序员在探测信号时会关心的信号通常包括片选信号、触发信号、读写信号和时钟信号。我们应该请PCB设计工程师清楚地在PCB上标明这些信号。因为到了实验室里,我们可能也会想将电阻脚焊在这些信号点上。
调试连接器的标注
有时我会发现某个我想探测的信号根本不可能探测到。例如,我曾调试过这样的电路板,板上写信号线走到了处理器下的一个过孔上,然后通过中间层连到另一块芯片下的过孔。为避免出现这种情况,我们应该与PCB设计工程师紧密配合,以保证这些信号能被探测到。如果一个信号并没有连接到一个易探测的过孔,那么就应增加一个易探测的过孔,并把该信号连到该过孔。同时,应在该过孔旁附上一个标注,以保证今后能够找到该信号。最好是将这些常用的信号汇聚成一个接头,这样就能将探头轻易地挂到接头的管脚上,但必须对这些管脚进行标注。
在对电路板进行布线之前,应该保证板上有一个可与逻辑分析仪连接的连接器(逻辑分析仪的用户手册中会列出型号和厂商)。但要小心,不要让硬件设计工程师过于吝啬地对待这些信号。要保证连接器的每个管脚都连接了某个信号。首先,也是最重要的一点,就是将数据总线和地址总线信号接在连接器上。然后可以加上一些控制信号,例如读写信号。如果系统中有I2C或SPI之类的串行总线,那么把这些信号也接到连接器上。如果连接器已经连接了所有我们感兴趣的信号,而仍有管脚悬空,那么就可以开始加入一些我们不感兴趣的信号。如果接出所有我们感兴趣的信号需要两个连接器,那么一定要坚持用两个。在生产时并不一定要安装这些连接器,因而他们只会消耗一点电路板空间而已。
程序员学到的第一项调试技术是将调试数据送到一个显示屏("Beginning of interrupt: X = 2"),但很多嵌入式系统要么根本不具备显示屏,要么即使有一个小的显示屏,也没有多余的空间显示调试信息。就算系统有一个合适的显示屏,向显示屏上写入信息通常也是一项占用时钟周期较多的任务,会改变系统性能。
采用逻辑分析仪捕捉调试数据则只需付出很小的性能代价。可以请硬件设计工程师向地址解码器中添加一个未分配的I/O地址,并将信号和数据信号连接到逻辑分析仪连接器上。当我们想要捕捉某实时跟踪数据时,我们可以设置逻辑分析仪,让它来捕捉写入该地址的数据。然后再增加一个调试语句来向该地址写入数据。当然,这样着仍然会改变系统的时间开销,但这个开销通常远小于向显示屏写数据所带来的开销。关于利用逻辑分析仪来捕捉数据的做法可参看Stuart Ball的《嵌入式微处理器系统调试》一书。
仿真器几何学
如果您准备采用实时在线仿真器(ICE),应该确保PCB设计工程师没有在处理器附近安置任何较高的元件或连接器。我曾作过一个项目,电路板上微处理器旁有一个连接器,位于ICE之下。与之相连的连接器和电缆插上之后高达2英寸,而ICE离电路板面也不过1英寸左右。这时,必须用一个电缆插入角度正确的连接器来替换原有的连接器才能保证在ICE在场时我们能够接触到电缆。还有一个项目中的电路板上,微处理器旁焊有一个小LCD,当使用ICE时,从ICE中引出的电缆将LCD完全遮住了。
如果电路板很小,而且并不复杂,那么布线时最好专门将尺寸布得比要求大一些,因为这样更容易说服硬件设计工程师和PCB设计工程师采用我们前面谈到的方式加入连接器和标注。这样做的另一个好处就是可以应付各种处理器封装。最近我从事的一个项目中,电路板空间非常紧张,我们不得不采用TQFP封装。我们有一个ICE可对这部分仿真,但我们并不愿意冒险在一个焊在板上的TQFP座子上安装价值2英镑的仿真器。尽管我们所用的微处理器也有另一种大得多的封装PLCC,但这种封装无法满足系统对空间的严格要求。
我们解决这一问题的方法就是在同一块PCB上并排布置两块电路板,一块以生产时所需的TQFP封装形式设计,另一块则是比它大2到3倍的PLCC封装插座。我们用大的一块带ICE的电路板来调试软件,然后将其烧录到一块TQFP封装的器件上,并将该器件焊上电路板进行测试。
在利用ICE调试而进行布线的过程中,常见的另一个问题是微处理器和存储器通常挨得很近,所以在使用ICE时,总线控制信号即使能探测到也会很难。因此我们应该请PCB设计工程师将逻辑分析仪连接器放置在离微处理器足够远的位置,使它不至于与ICE互相干扰。如果设计者并未使用逻辑分析仪,那么就应考虑存储器芯片是否可以移开,或者总线控制信号能否引至一组远离微处理器的过孔或连接器。
这里,针对我提出的以上布线建议,我还要添加一则警告:如果电路板上有高频信号,那么改变布线布局和添加电阻桩脚可能会彻底改变电路板性能。因此我们应该与硬件设计工程师紧密配合,以保证信号完整性不受影响。
对于PCB,还有最后一点建议:尽量留出一点富余空间。因为在寻找某一特殊参考指示符时,空白的PCB是非常有用的。此外,空白PCB在规划那些无法避免的添添减减的改动时也非常有用,因为在没有元件的板上追踪走线毕竟容易得多。
硬件改动
如果您的电路板上幸运的还有一些空余的I/O管脚,那么应保证这些管脚可被探测到。硬件设计工程师通常会将未使用的输入接地,将未使用的输出悬空。
将管脚接地后出现的一个非常令人讨厌的问题,就是今后再想将该管脚隔开会非常困难。通常在一排管脚中同时会有2到3个管脚被接地,这时,PCB设计工程师可以简单地在每两个需接地的管脚焊盘间用走线连接,然后将走线连向一个过孔(这个过孔有时在芯片下面),并通过该过孔与接地层相连。这样,若想将其中的一个管脚隔离开,只需将该管脚两侧的走线割断,然后在被隔离的管脚外围布一圈跳线以保证所有其他的管脚仍然接地。当然我们也可以更大胆地将该管脚从焊盘中拔起来,并直接将需要连接的线焊在管脚上。但必须确保在测试时,该管脚不会被压回焊盘上。
通过直接在芯片上焊一根导线可更容易地探测到未连接地输出,但当遇到间距很小的小元件时,这样做就很困难。
还好,针对这个问题,另有更简单的解决方法。我们可以请PCB设计工程师将每个未使用的输入管脚与一个上拉或下拉电阻相连,而将每个未使用的输出管脚与一个另一端悬空的电阻相连(见图1)。这样这些电阻就能将与其相连的管脚与其他管脚分离开来,而无需切断任何走线,同时还提供了一个可以轻易焊接的焊盘。此外,如果电路板可能需要进行任何一种实时在线测试的话,具备上拉电阻或下拉电阻还可能恰好是所需具备的一个条件。我们可以在第一次原型构建时在电路板上放置这些电阻,然后根据调试过程的需要来决定是否除去它们。将一根导线焊接到一个电阻焊盘上确实比焊到微处理器的一个管脚上要容易得多,也更可靠。
在硬件方面我的最后一个建议就是在电路板上添加一个复位开关。有许多种小型表面贴装的开关可用于这个目的,因此空间不是问题,而且复位开关在调试和测试过程中几乎可以说肯定用得上。
恰当的练习
许多嵌入式系统的程序员都将很多调试时间花费在实验室里看电路图以及用示波器测试PCB上。因此,对电路图和PCB作出一定的有益的改动可以大大缩短调试周期。所以,在下一次对您的项目进行硬件评估时,最好确保您也能参加。注意一下硬件设计工程师对本文中谈到的一些想法接受能力如何,针对不同的项目尝试提出不同的意见,从而决定哪些对您的项目有益,并且最容易接受。然后根据您尝试过的所有想法制定一个设计准则,将其添加到您的硬件设计标准评估文档中。这样做的结果,会使您的产品质量更高、项目进度更快,小组合作氛围也更浓。
(全文请见www.eet-china.com)
作者简介:
Tony Gray在Lehigh大学获得计算机工程学士学位,他有10年的嵌入式系统软件开发经验,目前他在Invensys Climate Controls工作。可以通过电子邮件:tony.gray@invensys.com与他联系。