【原创】JTAG模式下Vivado SDK全速运行时的奇怪报错
0赞问题描述
下载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操作加载elf,elf加载完毕后,会报错,运行无法停止。
解决方法二:
比较好的办法就是避免GUI操作,利用XMD命令行实现程序的整个运行过程。步骤如下:
与ARM核建立连接。
加载bitstream。
加载elf。
注:这里需要指定bit和elf文件的全部路径,并且用/进行分割,而非\,例如:
E:/Miz702/Miz702_Sys_MedianFilter/miz702_sys.sdk/MedianFilterTest/Debug/MedianFilterTest.elf
全速运行软件。
停止程序运行。
断开连接,此处需要ARM核ID,需要和建立连接时打印出的ID保持一致,一般是64,如图7红色方框内的打印信息所示。
关闭开发板电源。
全过程指令为:
connect arm hw fpga *.bit dow *.elf con stop disconnect 64 |
注:*.bit和*.elf需要根据自己的情况指定详细路径