【精品博文】JTAG模式下Vivado SDK运行时的奇怪报错
问题描述下载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 hwfpga *.bitdow *.elfconstopdisconnect 64注:*.bit和*.elf需要根据自己的情况指定详细路径