如何解决为什么 openocd 在通过 jtag 附加 gdb 以调试内核时会报告 EDSCR.SYS_ERR_PENDEDSCR、aarch64、avnet ultra96 的第 7 位?
我正在尝试让 gdb(multiarch cli/eclipse)通过 jtag 和使用 openocd 在 avnet ultra 96 板上调试 linux 内核。我的 jtag 调试探针是 Digilent HS3。我能够让 openocd 将内核显示为原生 gdb 线程,但随后发生此错误:
Error: 598 22320 aarch64.c:1948 aarch64_write_cpu_memory(): abort occurred - dscr = 0x03047d53
生成消息的行是:
if (retval != ERROR_OK)
return retval;
dpm->dscr = dscr;
if (dscr & (DSCR_ERR | **DSCR_SYS_ERROR_PEND**)) {
/* Abort occurred - clear it and exit */
LOG_ERROR("abort occurred - dscr = 0x%08" PRIx32,dscr);
armv8_dpm_handle_exception(dpm,true);
return ERROR_FAIL;
}
错误是由于上面调用了 retval = aarch64_write_cpu_memory_fast(target,count,buffer,&dscr);
十行。
我想知道这是否可能是由于粘滞位或类似的东西(JTAG-DP STICKY 错误)。 另一件让我感到困惑的事情(如果我弄错了请纠正我)是 gdb 似乎正在尝试向目标的内存写入一些内容,因此失败了。 不知道为什么 gdb 在没有设置断点的情况下会这样做。
欢迎提出任何想法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。