设备中的 trace32 “访问超时,目标 运行” 错误

trace32 “access timeout,target running” error in the device

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

"access timeout, target running" 通常意味着您无法访问内存,因为您的 CPU(又名 "the target")是 运行ning。

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

TRACE32默认不访问内存,而CPU是运行ning,因为调试器访问内存通常会对CPU的执行性能有一定的影响。 (考虑到任何内存通常只有一个接口,这意味着如果调试器和 CPU 想要同时访问它,则它们中的任何一个都必须停止,直到另一个完成访问。)这种影响可能是非常小,可能不会造成任何问题,但为了省事,运行-time 内存访问默认被阻止。

要启用 运行-time 内存访问使用命令 SYStem.CPU.MemAccess.CPU(对于 ARM Cortex CPU,它是 SYStem.CPU.MemAccess.DAP)并打开内存转储 window 与地址访问 class E:。例如:

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

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

trace32 有时会报告此错误,因为您将可执行文件提取到闪存的路径中有一个 space,因为文件夹名称有 space。 eg: D:\嵌入式训练 用下划线替换 spaces 作为 D:\Embedded_training.