如何通过Vitis调试器查看Arty Z7 FPGA程序运行时DDR内存内容
Vitis调试器完全支持实时查看Arty Z7板载DDR的内存内容,不需要额外工具,只要你能正常通过JTAG连接板子进入调试模式就行,具体操作如下:
前置准备
- 先确保你的Vitis工程已经完成编译,JTAG下载器连接正常,给Arty Z7上电后可以正常下载程序进入调试模式。建议先在你完成DDR数据写入、需要做校验的代码位置打上断点,避免数据还没写入就读取导致结果不准。
操作步骤
- 调出内存视图:点击顶部菜单栏的
Window->Show View,在列表里找到Memory选项点开就能调出内存监控面板;如果列表里没直接显示,就点Other,在Debug分类下就能找到Memory视图。 - 添加监控地址:在Memory面板点击带+号的「Add Memory Monitor」按钮,在弹出的输入框里填你要查看的DDR地址即可:如果你是要查看自己代码里定义在DDR段的数组、缓存,直接输入变量名或者取地址表达式比如
&ddr_write_buf就行,调试器会自动解析对应内存地址;如果是直接操作地址写入的数据,直接填对应的十六进制地址即可,注意Arty Z7的DDR默认映射起始地址为0x00100000,不要填到其他内存段的地址区间。 - 调整显示格式:右键你添加的内存监控项,在
Format子菜单里可以按需选择显示位宽(8bit/16bit/32bit/64bit)、显示进制(十六进制/十进制)、显示类型(数值/ASCII字符),方便直接和你预期的写入数据做比对。 - 实时读取内容:当程序停在断点处时,内存视图会自动拉取对应地址的最新值;如果需要在程序运行过程中实时查看,可以点击面板上的手动刷新按钮拉取最新值,也可以点开自动刷新开关设置刷新间隔,注意刷新间隔不要设置得小于100ms,避免JTAG频繁占用总线影响程序正常运行。
常见踩坑提醒
- 如果你的工程开了L1数据Cache,写入的数据可能会暂时存在Cache中没有同步到DDR物理内存,这时候直接读DDR地址会拿到旧值,建议在写完待校验数据后调用
Xil_DCacheFlushRange(addr, len)接口把对应地址段的Cache刷到DDR,再做读取校验,结果才准确。- Arty Z7分256MB和512MB两个DDR版本,对应的DDR地址范围上限分别是
0x0FFFFFFF和0x1FFFFFFF,不要越界访问不存在的内存地址。- 程序高速运行时不建议开高频自动刷新,JTAG读内存会短暂暂停ARM内核,可能会导致板上实时外设、PL交互逻辑时序出错。
内容的提问来源于stack exchange,提问作者29belgrade29
相关产品推荐
相关产品推荐

