每当我尝试运行设备来调试C代码时,我都会收到此错误,这是什么意思?它是指堆栈还是堆内存错误?最初,当我再次尝试运行它时运行正常,我一次又一次地收到此错误。
答案 0 :(得分:1)
“访问超时,目标运行”通常意味着您无法访问内存,因为您的CPU(即“目标”)正在运行。
要避免这种情况,请中断目标程序执行或启用运行时内存访问。
默认情况下,当CPU运行时,TRACE32不访问内存,因为从调试器访问内存通常会对CPU的执行性能产生一些影响。 (考虑到任何内存通常只有一个单独的接口,这意味着如果调试器和CPU想要同时访问,它们中的任何一个都必须停止,直到另一个完成其访问。)这种影响可能非常小并且可能不会导致任何问题,但是在保存方面,默认情况下会阻止运行时内存访问。
要启用运行时内存访问,请使用命令SYStem.CPU.MemAccess.CPU
(使用ARM Cortex CPU,而不是SYStem.CPU.MemAccess.DAP
)并使用地址访问类E:
打开内存转储窗口。 E.g:
Data.dump E:0x1000
Data.dump E:myvariable
Var.AddWatch %E myvariable
对于某些CPU(例如Cortex-M),TRACE32提供选项SYStem.Option.DUALPORT.ON
,这会导致所有内存窗口自动打开地址访问类E:
。
答案 1 :(得分:1)
trace32有时会报告此错误,因为文件夹名称中有空格,因此从中提取可执行文件到Flash的路径中有空格。 例如:D:\嵌入式培训 用下划线将空格替换为D:\ Embedded_training。