1

每当我尝试运行设备以调试 C 代码时,我都会收到此错误,这是什么意思?这是否意味着堆栈或堆内存错误?最初当我再次尝试运行它时它运行良好,我一次又一次地收到此错误。

4

2 回答 2

1

“访问超时,目标运行”通常意味着您无法访问内存,因为您的 CPU(又名“目标”)正在运行。

为了避免这种情况,要么中断目标程序的执行,要么启用运行时内存访问。

默认情况下,TRACE32 在 CPU 运行时不会访问内存,因为从调试器访问内存通常会对 CPU 的执行性能产生一些影响。(考虑到任何内存通常只有一个接口,这意味着如果调试器和 CPU 要同时访问,它们中的任何一个都必须停止,直到另一个完成访问。)这种影响可能非常小并且可能不会造成任何问题,但为了保存,默认情况下会阻止运行时内存访问。

要启用运行时内存访问,请使用命令SYStem.CPU.MemAccess.CPU(使用 ARM Cortex CPUSYStem.CPU.MemAccess.DAP代替)并使用地址访问类打开内存转储窗口E:。例如:

Data.dump E:0x1000
Data.dump E:myvariable
Var.AddWatch %E myvariable

对于某些 CPU(例如 Cortex-M),TRACE32 提供了选项SYStem.Option.DUALPORT.ON,这会导致所有内存窗口以地址访问类E:自动打开。

于 2018-05-29T12:13:50.650 回答
1

trace32 有时会报告此错误,因为您从其中获取可执行文件到闪存的路径中由于文件夹名称有空格而在其中有空格。例如:D:\Embedded training 用下划线替换空格为 D:\Embedded_training。

于 2020-07-07T13:46:05.953 回答