cuter

【原创】JTAG模式下Vivado SDK全速运行时的奇怪报错

0
阅读(5622)


问题描述

下载elf完毕后,弹出如图1所示的消息框,提示软件运行出现问题。软件运行结果却是OK的,比如我这里VGA接口就能够正常显示图片,如图2所示。此外,在Debug模式下,也不会报该错误。

图1 全速运行提示错误

图2 程序运行结果正常

点击图1中的Details按钮,如图3所示。

图3 错误详细描述

提示找不到ID为64的目标……


此时,点击图4所示红色方形按钮,尝试停止程序的运行。

图4 停止程序运行

停止失败,并弹出消息框如图5所示。

图5 停止运行报错

点击消息框中的Detais按钮查看详细的提示消息:

图6 停止运行报错描述

出现该错误后,无法再次运行软件,需要退出SDK,然后重新打开SDK,进入工作空间。


解决办法


解决方法一:

打开XMD命令行窗口,输入connect arm hw,与ARM核建立连接,连接成功后,就可以用GUI操作停止程序运行,同时也不会弹出错误提示。这样一来就必须要退出SDK,然后重新打开了。

注意:连接成功后,最后会出现图7红色方框内的提示信息,与图3的报错结合起来看能够知道,GUI操作未能成功与ARM内核建立连接。

图7 指令建立连接

但是,该办法并不能解决elf下载完毕会弹出错误提示的问题。也就是说,如果接下来仍采用GUI操作加载elfelf加载完毕后,会报错,运行无法停止。


解决方法二:

比较好的办法就是避免GUI操作,利用XMD命令行实现程序的整个运行过程。步骤如下:


  • ARM核建立连接。

  • 加载bitstream

  • 加载elf

注:这里需要指定bitelf文件的全部路径,并且用/进行分割,而非\,例如:

E:/Miz702/Miz702_Sys_MedianFilter/miz702_sys.sdk/MedianFilterTest/Debug/MedianFilterTest.elf

  • 全速运行软件。

  • 停止程序运行。

  • 断开连接,此处需要ARMID,需要和建立连接时打印出的ID保持一致,一般是64,如图7红色方框内的打印信息所示

  • 关闭开发板电源。


全过程指令为:

connect arm hw

fpga *.bit

dow *.elf

con

stop

disconnect 64

注:*.bit*.elf需要根据自己的情况指定详细路径