关于ZYNQ程序一直在“Disassembly“中的调试记录

在前段时间调试过程中碰到了一个现象记录一下,方便日后查找。

问题现象

如下,程序没有跑起来,进入DEBUG界面后停止程序运行,程序停留在了"Disassembly"中。
在这里插入图片描述

起因及初步排查

起因是我在测试DAC的功能是突然DAC的输出低了30dBm,但DAC发的波形还是正常的。我以为是板子太烫了,后我关电重新烧程序,这时电流起不来了,而且串口也没有打印信息,然后我进DEBUG界面发现程序一直停留在Disassembly,即程序没有进入main函数;这时,我以为是我不小心改了某些东西导致程序出错,然后我拿来一块相同的板子烧写程序,这块板子能正常启动,所以排除了程序的问题;后来想可能某些地方损坏了,一般有有损坏部分会存在大量大热的情况,我摸了一下板子,没有发现有特别烫的地方;后来在网上搜索解决方法,但网上有关“程序一直停留在Disassembly”的解决方法大多数的设置都是SDK的都默认设置。

原因分析

这之后我开始分析原因,有以下几种可能:

  1. ZYNQ的PS端或时钟芯片晶振没起振;
  2. 供电有问题;
  3. ZYNQ损坏;
  4. DDR损坏。

原因排查

  1. 首先,示波器测了ZYNQ的晶振及时钟芯片的晶振,发现都是起振了的,输出频率也是对的;
  2. 然后,万用表测板子的各组DC/DC输出电压,也是正常范围内。
  3. 之后,我怀疑ZYNQ的Core 0可能是坏了(我的程序用的是Core 0,而且程序能正常烧进去所以不太可能是整个ZYNQ坏了)后来我把程序抑制到Core 1,发现现象一致,所以判断不太可能是ZYNQ有问题。
  4. 也就只剩下了最后一种情况DDR有问题,由于DDR走线都是从板子内部走的,也没办法用示波器查看信号线的信号及时钟是否正常,所以准备换一个DDR再看看。

第二天我看原理图发现给DDR的还有一组单独的供电,用万用表一测发现,应该是0.75V的电压,只有0.3V了,最后检查发现是一个电容短路了,更换后,程序能正常启动了。
最后再说一句,像ZYNQ和DDR这类器件相对来说是比较稳定的一般也是不容易坏的,最有可能的就是他们外围电路损坏。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值