原创 怎样通过调整硬件来增强嵌入式系统的可调试性

2008-7-4 01:30 2231 7 7 分类: 测试测量

















硬件设计工程师经常提到的两个概念是可制造性设计和可测试性设计,但是软件设计工程师更加关注使系统更容易调试的可调试性设计问题。本文介绍简化调试时需要做出哪些硬件上的调整,硬件设计工程师要做出怎样的调整才能缩短调试时间,从而加快整个项目的进度。


硬件设计工程师在绘制电路图和布线制板时并非没有考虑调试问题,只是他们对调试的要求可能与我们的要求南辕北辙。他们在制板前通常已经通过仿真或面包板实验验证了大部分硬件的功能是正确的,因而他们不必费心地逐个探测信号。然而软件设计工程师最关心的和最想探测的则是诸如地址总线和数据总线等最简单的部分是否工作正常。


许多项目的资料中都包含一定层次的硬件文档,例如需求定义设计文档和接口文档。这些文档中的许多信息都可能对调试大有帮助,但如果文档堆成山,那么对设计工程师而言与其说是帮助不如说是拖累。在调试程序时,除了我的代码外,我只关心电路图和印制电路板(PCB)。这就意味着我必须把有些文档信息转化为电路图或PCB信息。


电路图的标注0310B_TM_S1F1.GIF


软硬件之间最常见的联系之一就是寻址方案。因为许多设计中都有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


有些芯片上有一些模式管脚,这些管脚通常在某种特定的应用中应该接上拉电路或下拉电路(无法通过软件控制)。这时,应在它们旁边加上一些文字,说明当前采用的是哪种模式。0310B_TM_S1F2.GIF


一般来说,我们可以将管脚名看作变量,而将电路图标注看作注释。如果一个程序采用“XCVR_CK”或“POS_OFF_CH”这样含糊不清的变量名,或者“U12”或“SAA1064”这样的函数名,那么除了写程序的人,还有谁愿意读?如果我们理解了某个给定的信号或者芯片的作用,那么为它起一个描述性的名字并不困难。


图1给出的就是一个按以上种种建议补充过的电路图。





1 ? 2 ? 3 下一页 末页

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条