一款SDH 信道传输设备启动故障分析
2022-07-20中国电子科技集团公司第三十研究所杨小钶
中国电子科技集团公司第三十研究所 杨小钶
产品中试过程中离不开对样机的调试检测,从而达到对产品进行优化的目的。本文针对一款2.5G SDH 信道产品在进行调试过程中出现的开机启动故障进行排查分析,通过循序渐进的方式最终找出故障原因并开展优化设计,将产品研发中的问题扼杀在量产前。通过该文,可以了解电子产品故障排除的基本思路。
本文通过对一台2.5G SDH 信道传输设备样机在测试过程中出现的开机启动故障进行分析,对整个故障排查过程进行描述,总结出产品调试、维修的一些基本思路和方法。
1 故障定位的基本思路
设备故障排除的关键是如何准确定位故障点,只有准确定位故障点才能进行硬件维修或软件升级。
故障定位一般应遵循先外部,后内部;先整体,后局部的原则,故障排查思路如图1 所示。
图1 故障排查思路示意图Fig.1 Schematic diagram of troubleshooting ideas
(1)先外部,后内部。在定位故障时,应首先排除设备外部的可能因素,如线缆、连接器、供电、接地、指示灯等;如果排除外部因素,就再考虑内部因素,如内部线缆,机内各模块。
(2)先整体,后局部。对于设备故障来说,出现故障现象后,不要盲目进行维修处理,先分析故障现象,查看外部和内部指示灯的状态,分析可能导致故障现象的因素,最后对可能导致设备故障的点进行逐一排查。
2 故障现象描述
在对多台2.5G SDH 信道传输设备测试运行后重启,其中一台设备无法正常启动。设备无法完成开机启动流程,打开设备机盖,发现其中一个接口FPGA 指示灯未点亮,表明接口FPGA 程序未成功加载;该接口FPGA 程序需要在设备启动过程中,通过主控板加载到该FPGA中,FPGA 才能正常工作。
3 产品设计框图及业务流
产品设计框图及数据业务流如图2 所示。数据流通过接收端光模块进入线路处理FPGA,接收端线路处理FPGA 将数据解析后送到接口FPGA,接口FPGA 将数据送入运算FPGA 完成运输后送到输出段线路处理FPGA 进行封装,最后送入发送端光模块。
图2 设计框图及业务流示意图Fig.2 Design block diagram and business flow diagram
4 维修工具
维修检测工具列表如表1 所示。
表1 维修工具列表Tab.1 List of maintenance tools
5 故障定位过程描述
本节主要介绍整个故障分析及排查过程,故障定位流程如图3 所示。
图3 故障定位流程示意图Fig.3 Schematic diagram of fault location process
5.1 外部、内部供电检测
故障定位第一步先检查供电是否有问题。用万用表测试外部电源输入220V 电压、输出直流12V 电压、主板上的各电压测试点和FPGA 供电的2.5V、1.2V 以及FPGA 核电压均未发现异常。由此表明,主板供电正常且无电压短路点。设备各模块及供电示意图如图4 所示。
图4 设备各模块及供电示意图Fig.4 Schematic diagram of each module and power supply of the equipment
5.2 时钟信号检测
FPGA 不能正常工作,第二个需要怀疑的是时钟信号。通过对该FPGA 外围时钟电路进行了检测,用万用表测试有源晶振的供电端、接地端,用示波器测试晶振的信号输出端,排除晶振工作异常。排除了晶振异常后,继续检测时钟信号通路是否异常,通过示波器检测后,发现进入FPGA 的时钟信号未见异常。
(1)FPGA 程序加载过程故障检测。由于该故障现象表现是接口FPGA 程序未进行加载,在排除供电和时钟信号故障后,就应该检测程序加载通道是否存在问题。按照PCB 原理图及技术资料检测主控板与接口板之间的FGPA 加载通道,发现该通道上的两个电阻焊接不正,电阻一边焊盘仅与焊盘少许接触,另一端则超出焊盘,整个电阻顺着焊盘的方向移动了一大段距离。检测该电阻的阻值,发现电阻的阻值正常,为了保证可靠性,将两只电阻进行了重新焊接,将电阻焊于焊盘内。虽然在排查过程中发现了一个焊接问题,但这并不是导致设备无法正常启动的真正原因。整个下载通道未发现异常。
(2)FPGA 虚焊检查。完成上述步骤后,只能将目标集中到FPGA 本身。首先怀疑虚焊,通过二维X 光机进行检查,按照经验未有明显的虚焊引脚,受限于二维X 光机的限制,并不能完全呈现BGA 各焊点的焊接情况,只能按照工作经验来排除BGA 焊接虚焊的问题,通过X 光机并为发现明显焊接异常点。
(3)FPGA 自身故障检查。通过上述检测后,故障现象是由FPGA 自身故障引入的概率较高。由于受限于BGA 测试困难的问题,只能测试印制板上有限测试点,通过示波器输出显示,各测试点信号均无明显异常,但这并不能排除FPGA 本身故障。为了不将问题扩大化,笔者继续通过其他途径进行排查,暂时先不考虑更换FPGA芯片。
(4)软件启动流程检查。由于暂时不更换FPGA 芯片,下一步就从软件着手。
主控板是否向FPGA 加载程序控制是通过主控板上SPI FLASH 一段存储标志位来确定。通过断点运行,读取SPI FLASH 的具体数值,发现该段地址的数据为全F。可以确定的是,该段SPI FLASH 标志位已被改写,导致主控板无法向接口FPGA 加载程序。
通过上述系列检测后,定位该故障应为软件设计BUG 导致。导致标志位被修改。后续工作就是对软件BUG 的分析、修正。
(5)软件启动程序跟踪。通过对程序进行断点跟踪,主控板SPI FLASH 中关于FPGA 程序加载的标志位始终为全F。该标志位应该是在启动前就已被置为全F。
(6)SPI FLASH 加载标志位修改函数分析。在程序中修改该标志位的函数仅出现有一处;通过该函数代码进行分析,发现在两端设备进行同步的过程中,会先擦除该程序加载标志位,然后将新的同步信息写入该SPI FLASH 标志位。
(7)标志位被置为全F 原因分析。由于代码中只有一处修改SPI FLASH 中程序加载标志位,可能导致该标志位被置为全F 的原因有3 个:(1)程序运行过程中,程序对其他标志位的操作越界;如果存在此种情况,该标志位应为一个随机值或固定值,而不会是全F。出现全F 的情况应是被人为写入,或人为擦除。(2)开关机时的电流或电压浪涌导致SPI FLASH 数据损坏;如果是电流、电压浪涌导致数据损坏,那将不会是固定标志位损坏,应该是随机出现或SPI FLASH 损坏,而其数值也可能是随机数。实际现象是SPI FLASH 中固定位出现的全F。因此,可以排除浪涌导致SPI FLASH 数值错误。(3)对设备的某个操作导致程序对该标志位进行了操作;通过操作人员对操作过程描述,最终确定了该标志位被写为全F 的原因——设备在某个特定时间关机,导致程序会擦除该标志位,将该标志位置为全F。两端信道传输设备进行链路信号同步后,会先擦除SPI FLASH 中FPGA 程序加载标志位,然后再将正确信息写入FLASH。操作人员在链路信号同步后,未等待上层协议同步完成就关机,此时标志位刚擦除结束,还未写入正确的标志位信息,导致下次启动时,该标志位为全F。
为了明确是否上述原因导致故障,将擦除标志位和复写标志之间加入时延进行测试,上述情况被复现。通过上述分析,最终定位该问题为软件设计BUG 导致程序在某些特殊情况下不能正常工作。
6 结语
论文描述了一台具体设备的故障排除过程,最终准确定位故障点,修复软件BUG,使设备能够稳定工作,对于调试维修人员来说,如何准确定位故障点是维修的关键。在检测故障设备时,切忌盲目、切忌扩大问题、切忌维修带来次生问题。
引用
[1] 阴家龙.无线电调试工实训教程[M].北京:电子工业出版社, 2016.
[2] Jobn Catsoulis.嵌入式硬件设计[M].北京:中国电力出版社, 2007.
[3] 张小勇,郭文龙.浅谈SDH系统故障定位及排除方法[J].信息化建设,2011(5):54-55.
[4] 许伟,林彩娥.鸟哥的Linux私房菜[M].北京:人民邮电出版社, 2009.