交换调试指南.docx
- 文档编号:15897818
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:27
- 大小:118.88KB
交换调试指南.docx
《交换调试指南.docx》由会员分享,可在线阅读,更多相关《交换调试指南.docx(27页珍藏版)》请在冰点文库上搜索。
交换调试指南
调试指南
1.上电前的检查2
2.上电后的基本调试.2
3.调试过程中的注意事项.2
4.调试过程中常见问题的排查方法5
4.1、软件初始化交换相关芯片无法通过.5
4.2、端口无法linkup.5
4.3、端口无法进行正常交换.5
4.4、端口出现CRC或丢包.6
4.5、Throughput测试无法通过.6
4.6、AddressHandling测试无法通过.7
4.7、Latency测试无法通过.7
4.8、Pause功能测试无法通过.8
5.调试案例分析8
5.1、端口无法linkup.8
5.2、端口无法进行正常交换.12
5.3、端口出现CRC.14
5.4、软件配置相关问题.16
附录:
Debug界面下配置命令18
1.上电前的检查
在进行上电前,需要注意如下事项:
1)检查焊接,器件(特别是有极性的电容)是否焊接正确,各芯片是否焊接正确(如焊反等),是否有明显焊接问题(如漏焊、错焊、连焊等).
2)检查是否存在短路现象,可用万用表,对照原理图,把每路电源都点过去,确认是否有对地短路现象.
3)检查主要配置电路(如电源部分的反馈电阻的取值)是否正确(特别是核电压的反馈电阻的取值,若错误可能发生“芯片毁”的低级严重事件).
可以通过如下常用做法来保证焊接的正确性:
1)目测,仔细观察白油标记和器件的标记是否一致。
这个的前提是原理/PCB设计须保证是正确的!
2)将万用表打到200Ω档,测量各路输出电压的对地阻抗。
注意:
正负不能反!
一般的,核电压的电阻较低,在10-20Ω之间,最小的BCM1250的核电压的电阻为3Ω。
其它的电压电阻较高,一般大于200Ω。
3)核对原理图,检查器件标识。
4)对比两块板子,看是否有差异的地方.硬件上很小的问题有很多时候是很难发现的。
上述步骤确认无误后,可以准备上电.初次上电时,可能都有点紧张,怕出什么问题,芯片烧,电容爆之类的!
其实,调试前的准备做好后,上电调试不会出现那些恐怖事件的!
但为以防万一,需要注意如下四点:
1)看:
眼睛要仔细观察出现的一切异常情况:
冒烟,打火等。
千万不要东张西望。
2)闻:
充分调动感官功能,仔细辨别是否存在异味。
3)听:
耳朵要注意辨别是否有啸叫或啪嗒声。
4)快:
手上动作要快,发现冒烟,异味等情况,要立即下电(第一次上电,手要按着开关,发现不对劲就马上下电。
我们一般的作法是第一次上电的时间不超过5S,主要是观察是否有冒烟,异味等情况发生)
2.上电后的基本调试.
顺利的完成第一次上电后,再次上电,用手感觉下各功率器件的温度,如MOSFET,电感等,若温度过高觉得烫手,则存在问题。
若正常,则可以放心大胆的长时间上电了。
接下来可以进行如下初步调试:
1)测试各点电压是否正常,精度是否符合要求。
2)测试各路时钟是否正常。
各路时钟是否已经产生,频率是否正常。
3)测试复位是否正常,包括上电复位,软件复位,手动复位等。
3.调试过程中的注意事项.
接下来就可以按照“交换接口组调试规范”中的相关内容进行调试了.具体调试内容请参考“交换接口组调试规范”.
本文不对具体调试项目进行分别说明,只说明调试过程中需要注意的事项.
调试是对原理设计的初步验证,除了要验证我们的原理设计的正确性以外。
对于新的器件还需要验证器件可靠性,即器件是否符合标准,是否符合芯片资料,是否存在BUG等。
调试可以分为以下几个步骤:
一、发现问题:
在调试阶段我们追求的目标是“尽快”发现问题。
越早发现问题,对我们越有利。
在开发阶段要努力发掘问题,宁可错杀一百,不能放过一个。
不要以为暂时没有发现问题,就是万幸,遗漏问题相当于在家门口埋下的地雷,总有一天要爆发的。
发现问题的时候要把造成该问题的环境、软件、设备都备份或者记录下来,避免出现问题无法重现的情况。
如何尽快发现问题?
以下是几个建议:
1、调试的时候,就要安排拷机,比如可以白天调试,晚上拷机,越早烤机就越早发现问题,不要等到后期再安排拷机,万一出现问题,时间就来不及了,进度就会受影响.
2、要抱着“在鸡蛋里挑骨头”的思想去调试.
3、不要拘泥于调试规范,要从原理上分析我们设计中最脆弱的地方。
通过设计调试/测试方案,主动地促进问题暴露,比如在信号完整性最差的地方采用01交替的数据来拷机等。
4、要从用户的角度来考虑,这些操作可能不合理,但是我们的设备必须能支持;比如在交换过程中插拔端口电缆。
5、当发现一个问题确实暂时无法解决时,不要停留在原处止步不前,其他方面的调试可以先做。
比如发现某颗芯片的某项指标确实是无法达标,需要更换芯片厂家时,不要一直等待新的芯片,而没有对其他指标进行测试,等到新的芯片到了,经过测试却发现还有其他指标不能达标,造成进度延迟。
二、寻找原因:
这个阶段的重点是“目标明确,思路清晰”。
如果有多个问题混合在一起,应该将问题分解后再解决,切忌眉毛胡子一把抓。
要做到目标明确,建议可以将这个过程分为以下几个阶段:
1、问题现场测试:
经常在出了问题以后,程序已经崩溃无法跟踪当前CPU的状态,但这时往往可以利用示波器来检测“案发”第一现场,切勿随便下电丢失证据。
另外,出现异常时不要轻易下电,尽可能从寄存器或信号及调试界面等收集尽可能多的信息以利于后面的分析。
2、重现问题:
要稳定重现问题,并尽量提高问题重现的概率。
这样可以帮助我们更容易的找到原因,更重要的是当找到原因了以后可以验证问题是否消失。
比如说起先我们发现某款产品在使用过程中容易死机,可能是几天出现一次。
那我们首先就要找到一个方法提高死机的概率,比如说在某种条件下只要1个小时就会死机,甚至在修改到几分钟就会死机一次,这样问题就好解决了。
遇到问题的时候最忌讳的就是随便修改配置,再试一试会不会死机,这样解决问题将陷入长期循环中。
(有时可以通过恶化条件或者是增加条件来提高概率)
3、简化环境:
当问题可以稳定重现以后,就要简化环境,并且是越简单越好。
问题往往是内因与外因综合的结果。
这时可能会有多个外部环境和内部原因混合在一起,我们需要尽量简化这些因素。
比如在一个总线上有多个设备连接在一起,为了查问题可以将表面上看上去无关的设备先隔离掉,这种方法和软件调试出问题时先关闭无关的中断是一个道理。
4、对比分析:
在简化环境的过程中,我们会发现在某种条件下问题将不再出现。
我们要将出问题和不出问题的环境进行对比,尽量缩小差别,当差别足够小时,差别就和原因密切相关了。
5、从原因到现象:
必须能够根据原因完整地推出问题,“寻找原因”阶段才算完成。
以上所做的现场测试、重现问题、简化环境和对比分析,都是在对现象做观察和处理,处理现象的目的还是为了更容易的发现原因。
这时我们就需要根据内部原理,大胆假设,细心求证。
求证可以通过波形测试,修改配置或者其它方法来实现。
在分析原理的同时,根据现象多做一些实验,特别是与芯片BUG相关的问题,经常都会是先找到解决方法,然后才彻底的分析出原因。
三、解决问题:
找到原因彻底解决问题这是最理想的结果。
不过我们不能排除有的时候实在无法找到原因,却找到了解决问题的方法,将问题绕过去了,对产品来说这个结果也是可以接受的。
在选择解决问题的方法的时候要兼顾到产品的不同阶段,选择最合适的方法酌情处理。
调试过程中的其它几个建议:
1、调试过程要有调试日志,可以将调试日志发布在WIKI上,大家可以互相了解情况,出谋划策。
在调试过程做记录一方面可以帮助自己理清思路,另一方面便于专业组归档积累。
调试日志格式不限,但最好是在调试完成后对调试过程中出现的问题整理下,把有用的案例整理出来,然后合并到调试报告中或项目结束好写到项目总结中。
2、做好私下的而非要提交的调试记录,除了记录你更改的信息外,还需要记录更改的目的,有利于后面的回溯;
3、软件崩溃的时候不要盲目的认为一定是软件问题,经常是硬件出错导致软件出现致命的错误。
比如以前就出现过SDRAM信号完整性不好,CPU取数据出错,导致进程无法退出,而且这种完整性缺陷只有在某种特殊的指令下才会爆发,拷机程序都无法发现。
4、在调试阶段,软件硬件相结合的思想很重要,不要孤立软件和硬件的联系,将故障人为界定为纯软件或纯硬件的问题,这样也切断了很多故障分析的道路.
5、有的芯片有提供调试接口,比如JTAG接口或者其它用于调试的模块(如CPU),或者是芯片状态输出接口(如GT-48520)。
可以通过接口来观察芯片内部的工作情况,帮助我们分析问题。
6、在调试的时候若发现问题,需要及时查看ERRATA、Demo等,要吃透相关方面的资料。
7、寻求帮助的途径:
向技术支持确认是否有新的勘误表,其它用户是否碰倒类似情况;其它同行是否也有这种经历;向本组技术专家求助。
8、在和技术支持(如BCM)做BUG交流时,要注意从他们提供的信息中挖掘疑点,然后步步紧逼。
这或许会对他们的解决进度起到加速的作用。
9、在调试阶段若陷入胶着状态(尤其是那些国内没有支持力度的项目),当某个问题陷入胶着达一周或以上的时间时,调试者要汇总出问题、进行过的实验和希望得到的支持(比如人力、设备资源等,又或是项目暂停),提交上级并进行讨论;
10、在项目进度紧急的情况下,快速的解决调试中出现的问题,可以多点出击,同时从几个方向着手,充分调动各种可用资源。
比如我们可以从如下几方面并行着手分析:
分析处理过的类似故障;向上游芯片厂家、OEM厂商反馈详细的异常情况;申请demo板进行测试比对;研究互联芯片文档努力找出错误原因。
4.调试过程中常见问题的排查方法
说明:
以下排查方法,只是给出了解决问题的方向和思路,实际处理问题的时候,需要根据具体问题的情况而定;另外,各问题点给出的处理方法,并不只适用于该问题,在处理别的类似问题的时候可能也会用到,重在学会处理问题的思维方式.
4.1、软硬件联调中不确定问题对策
软硬件联调过程中,会出现很多的问题,其中多数问题,由于软件硬件都有改动,不能明确到底是软件问题还是硬件问题,导致双方都需要投入资源,或者排查的重点不明确,导致进展缓慢。
这时,重点关注的范围是如何尽快的缩小故障范围。
(1).确认本次的设计和以前哪个版本的设计最为接近。
如CPU和哪款已验证产品一样或接近;MAC/PHY芯片和哪款已验证产品一样或接近;确认一下软件是否从该款已验证产品上移植,列出本次设计和已验证产品的区别点,确认已经在软件中导入已经修改。
(2).确认硬件设计和Demo板/已验证设计是否一致。
确认硬件修改点,确认修改是否正确。
把设计修改和Demo板/已验证设计一致,查看是否能够正常工作。
注意确认复位时序,时钟实现方式,上电时序等。
(3).对于CPU部分设计和原有产品一致的产品,如果Boot调试出现问题,可以考虑将原有产品的boot烧写到现有设计上,已确认软件存在问题的可能性。
对于硬件设计相对于已有产品有少量改动,观察改动的范围对软件是否有影响,如果没有影响,则可以直接烧写原有程序,进行验证;如果改动不大,可以将改动的地方修改为和原有产品一致,烧写原有的程序进行验证。
但是要注意Setmac的操作。
(4).上游常常会提供E2或者Flash等芯片简单初始化的配置文件,在出现问题时,可以使用E2或Flash进行故障简单定位的手段。
(5).可以通过测试初始化阶段的波形,去定位故障出现在什么阶段,已针对性地进行排查。
……………
4.2、软件初始化交换相关芯片无法通过.
出现该问题的原因可能很多,可以从以下几方面入手排查:
(不分先后,根据实际情况而定)
(1).确认供给芯片的电压是否正常,相关管脚的配置是否正确(特别是第一轮板,芯片封装做错,导致相关配置管脚出错也是有可能的),供给芯片的各路时钟是否正常(有些供给接口的时钟信号虽然因为接口没有使用,暂时还用不到,但还是建议提供).
(2).如果是PCI接口的设备无法初始化,则需要确认软件是否已经认到了这个芯片,PCI的几个关键信号(如IDSELET等)是否正常,查类似问题的时,需要和软件人员多沟通.
(3).如果是PHY无法初始化,则需要重点检查SMI信号是否正常,PHY地址是否设置正确等.
(4).确认芯片是否有焊接问题,如怀疑可能是虚焊问题,可以通过摇晃/震动等实验,或把相关器件重焊一遍,如果是BGA芯片,可以尝试压芯片的方式(注意带上防静电手套),看故障是否依旧.
4.3、端口无法linkup.
可以从以下几方面入手排查:
(不分先后,根据实际情况而定)
(1).确认端口工作在各个模式下是否能linkup,如分别在1000M,100M,10M模式是否能linkup;1000M光模式下或1000M电模式下是否能linkup;端口AN功能打开和关闭的情况下是否可以linkup;端口MDIX功能打开/关闭情况下是否可以linkup;使用正线和反线的情况下,是否能linkup;另外需要注意软件上配置完相关模式后,需要读出PHY的相关寄存器,看是否确实已经修改了.
(2).如果是长线,则改为短线进行和其他正常端口连接,看是否Link正常。
(3).检查板上是否有明显焊接问题或器件被磕掉现象,对于怀疑可能出现的虚焊问题,可以通过摇晃/震动等实验,或把相关器件重焊一遍,看故障是否依旧.
(4).对相关的时钟/电源/复位/接口信号进行测试,和正常的端口作比较,看是否有异常.
(5).对于一块板上相同电路的设计,若出现有些端口无法link,有些端口可以link时,需要注意对比分析,包括比较周边信号的差异,端口的对地阻抗,差分线对的阻抗等,另外也可以用替换排除法,如把有问题的电路通过飞线连到没有问题的电路上验证,看问题是否跟着走,从差异点中分析问题,这种方法对查问题很有帮助.
(6).注意对寄存器进行对比分析,特别是PHY寄存器,找出和正常端口(也有可能是Demo板)不一样的地方,从这些差异点出发,分析导致问题的可能原因.这样查找问题就会显得比较容易.
(7).若是机架式交换机出现管理板和线卡之间的higig口出现一会linkup,一会linkdown现象,或者根本无法link,则需要查看higig口的预加重设置是否正确.
4.4、端口无法进行正常交换.
首先需要排除交换机软件配置问题(如端口不在同一个vlan内进行二层转发,肯定是不通的),若是用SMB测试,则要排除SMB设置不正确导致的交换不通.
可以从以下几方面入手排查:
(不分先后,根据实际情况而定)
(1).在Debug界面下,输入命令“showcounters”,读出相关计数,看是一点都无法收发还是说发出去了,对方收不到,或者是有hol等异常.根据这些异常信息进一步处理.
(2).确认PHY地址是否正常,有些芯片PHY地址是不能随便设置的,需要注意查阅芯片的DATASHEET.找出和设计差异的地方.
(3).检查板上是否有明显焊接问题或器件被磕掉现象.对于怀疑可能出现的虚焊问题,可以通过摇晃/震动等实验,或把相关器件重焊一遍,看故障是否依旧.
(4).对相关的时钟/电源/接口信号进行测试,和正常的端口作比较,看是否有异常.
(5).需要注意把故障范围缩小,可以使用软件回环测试(loopback)的方法来定位具体的故障点,如在PHY端回环测试,在MAC端回环测试,也可以使用硬件回环测试,如在隔离变压器的前端回环,或在隔离变压器的后端回环等,从测试结果判断故障点,把问题的范围缩小.根据数据帧的走向,进行各种的分组实验,找出帧传递到哪里后出问题了,找到出问题的点后,就可以把重点放在该部分上了.这种回环测试,在处理很多接口问题的时候很有用.软件回环测试的相关命令参见附录:
Debug界面下配置命令.
(6).要注意对比分析,和Demo板,或同方案的别的产品做对比分析,或者本板上相同电路设计的正常端口和异常端口的对比分析,包括硬件设计上的和软件配置方面的,从中找出差异点,对差异点重点分析.
(7).当出现跨片交换不通时,需要注意两片MAC芯片的MODID是否设置正确,MAC的higig口转发配置是否设置正确.相关配置可和软件人员沟通解决.
4.5、端口出现CRC或丢包.
可以从以下几方面入手排查:
(不分先后,根据实际情况而定)
(1).排除线缆,或端口的驱动能力的影响,如把长线换短线,通过配置PHY寄存器,增强端口的驱动能力等.
(2).使用回环测试(loopback)的方法来定位具体的故障点,如在PHY端回环测试,在MAC端回环测试,看具体哪一部分加入测试的时候会出现CRC或丢包.根据数据帧的走向,进行各种的分组实验,找出帧传递到哪里后出问题了,找到出问题的点后,就可以把重点放在该部分上了.回环测试的相关命令参见附录:
Debug界面下配置命令.
(3).检查板上是否有明显焊接问题或器件被磕掉现象.对于怀疑可能出现的虚焊问题,可以通过摇晃/震动等实验,或把相关器件重焊一遍,看故障是否依旧.
(4).对相关的时钟/电源/接口信号进行测试,和正常的端口作比较,看是否有异常.如GMII的RX_ER信号,该信号有效时,则会导致CRC或丢包.
(5).注意对比分析,若出现CRC的端口是在同一片PHY下的,而其他PHY没有问题,则需要对该片PHY做重点分析/测试.包括和原理图的对比分析,该片PHY周边电路信号的测试等.特别是调试阶段,有可能清单会做错,或焊接会焊错的,因此需要和原理图仔细对比.
(6).查阅芯片的EERATA,看是否有说明什么情况下可能会出现CRC.
4.6、Throughput测试无法通过.
Throughput测试无法通过,首先需要确认哪里出现丢包,可以在Debug界面下,输入命令“showcounters”,读出相关计数,并对照MAC芯片PR文档,看是否有哪个计数是异常的,这种方法在排查很多帧收发问题时都很有帮助,可以帮助我们定位出哪个端口出现问题,具体是什么问题,如CRC,HOL,碎片帧等.然后根据这些提示,分别去查找原因.曾经出现该问题的原因有:
1.晶振正/负偏问题:
当交换机的晶振出现负偏,而测试设备(如SMB/IXIA)正偏时,将导致交换机的接收速率低于测试设备发送速率,将出现丢包,使Throughput无法达到100%.
这种情况下,可以通过SMB或IXIA的counter计数看到,SMB或IXIA的收帧速率明显比发帧速率慢.
解决方法:
(1).可以通过更换正偏时钟进行测试.
(2).可以通过修改交换机MAC的IPG(帧间隙)进行测试,IPG的含义可参见MAC芯片的PR文档.
(3).如果是用IXIA来测试万兆口,可以通过修改IXIA的时钟为负偏后进行测试,相关设置请参考“IXIA测试软件使用简介.ppt”.
2.MAC芯片MMU设置问题:
软件配置MMU时可能配置的不合理,导致丢包.比如把HOL水线设置的很低.
解决方法:
可以对照厂家提供的“MMU-config”文档,把里面提到的相关寄存器读出来,和推荐配置作对比,看是否有异常.相关寄存器的含义请参考MAC芯片的PR文档.
3.若出现跨片Throughput测试验证不通过时,需要注意软件对跨片端口配置的影响,如片间端口作为cascaded Port,增加了8Byte的DSA Tag,需要通过缩减Preamble和IPG进行补救,各缩减Preamble和IPG 4字节可以腾出8Byte的DSA Tag空间,软件进行这些设置后,Throughput测试才能通过.
4.7、AddressHandling测试无法通过.
地址表测试无法通过时,首先需要确认是什么原因导致测试无法通过的,比如测试方法问题,没有按正确的设置方法去测试,所测地址的数量不够多(我们一般设置地址增量数为理论值的2到3倍);
若出现实测结果比理论值小1或者2的现象,首先确认是否有设置静态地址,具体可以在清除地址后,用“L2show”命令,看地址表中是否还有被分配的地址;如果这个原因被排除则需要核对是否把其中一个测试端口占用的那个MAC地址计算在内;
有时出现地址学习不正常时,需要对地址的学习速度做降低处理;
另外需要注意地址老化的影响,如地址老化时间设置的很短,在还没来得及进行下次发帧测试时,原来地址已经老化了,则会出现测试无法通过问题.
4.8、Latency测试无法通过.
首先确认测试方法是否有问题,比如半双工模式下,用全双工的收/发去测试,当然是会出问题的.注意观察测试Fail的现象是怎么样的,如出现刚开始的时候测试得到的值很小,随着测试时间的加长,测试值变的越来越大.这种情况一般是由交换机的时钟负偏引起的.当交换机的时钟出现负偏时,测试设备(如SMB)发过来的帧没来的及转发出去,堆积在交换机的buffer中,这样就导致测试出来的Latency变大.解决方法参考因晶振正/负偏问题导致Throughput测试无法通过的解决方法.
4.9、Pause功能测试无法通过.
在Debug界面下,输入命令“showcounters”,读出相关计数,并对照MAC芯片PR文档,看是否有哪个计数是异常的,如是否有pause帧计数,是否有hol计数等.
若出现无法收到pause帧的情况,或者收到pause帧,但还是会丢包.一般和MMU的pause水线配置相关.需要修改水线相关寄存器.修改的时候注意核对厂家提供的“MMU-config”文档.该寄存器不能随便设置,需要和软件人员确认.
5.调试案例分析
5.1、端口无法linkup.
1、故障现象:
在调试过程中发现,S3750-481#板千兆电口的51端口与其余的千兆电口无法linkup。
处理过程:
首先检查有无焊接问题,板上千兆部分的电路焊接良好,未见器件有漏焊,虚焊现象。
然后对主板电源和时钟进行排查,重点检测BCM5464S的时钟和电源,结果正常。
由以上现象,认为故障是由部品引起的。
从电路的输入端开始,对部品进行排查。
验证RJ45和隔离变压器之间连接正常,接触良好。
对隔离变压器的上的线对阻抗进行测量。
发现51端口使用的隔离变压器上除了T10的8,9两个管脚间阻抗为101欧,其余的阻抗均接近0欧。
由于隔离变压器上是交流耦合,对于直流信号阻抗为0,可知T10上的线对存在问题。
由于设计中,我们的线对匹配阻抗均为100欧,而8,9管脚间线对阻抗为101欧,由此现象可以得出结论,故障是由隔离变压器之间的连线断引起的。
与板上正常的隔离变压器做了对比测试,正常隔离变压器所有线对之间的直流阻抗均为0欧。
后续领出新的隔离变压器(GS5012),更换后,故障现象消除。
分析:
出现这种端口无法linkup的问题,首先需要确认端口工作在各个模式下是否有问题,如分别在1000M,100M,10M模式是否能linkup;1000M光模式下或1000M电模式下是否能linkup;端口AN功能打开和关闭的情况下是否可以linkup;端口MDIX功能打开/关闭情况下是否可以linkup;使用正线和反线的情况下,是否能linkup.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交换 调试 指南