软件:vivado 2018.3,调试打印hello world。
问题概述
VIVADO SDK Jtag Dbug 程序时断点调试一直在Disassembly中循环,无法进入main函数。
现象
1. Programming 程序一直卡在99%不动,疑似hdf文件有问题或 dbug configuration设置有问题,修改后可以下载烧录。
2. 下载程序后,断点调试按键不亮,点 suspend后断点调试进入 Disassembly ,在几行地址上循环。
分析
当时是未进入main函数。PS端程序运行时在DDR中占用一部分空间当作ram使用,如果DDR有问题,那程序无法继续运行下去。
(此处留坑,PS程序运行时在DDR中申请的空间多大?地址范围是怎样?怎么配置?)
参考:Vivado SDK 调试程序时,DBUG模式相关设置_generate linker script-CSDN博客
验证
Xilinx Tools --> 点击generate linker script --> 点击ok,将Basic 下面 Place...三项选成ram,程序可以正常dbug了。此时是在PS自带的一小片ram上运行程序。这个空间大小看芯片型号,一般 64/192KB.
另参考:
关于ZYNQ程序一直在“Disassembly“中的调试记录_sdk的helloworld用debug进入到disassemby-CSDN博客
排查以下4项,有很大参考性:
- ZYNQ的PS端或时钟芯片晶振没起振;
- 供电有问题;
- ZYNQ损坏;
- DDR损坏。
其他参考:
2. vivado sdk在release模式下调试时总是进disassembly页面而不是c代码界面的处理方法_vivado sdk 卡在disassembly-CSDN博客3. Xilinx SDK程序Debug无法在main函数入口处停住解决_sdk 调试不进main-CSDN博客
zynq调试时未进入main函数,直接进入Disassembly解决方法_vitis直接进入 disassembly-CSDN博客