尝试将开发环境切换到Linux,但遇到了一个(可能是新手)问题。在我的Mac上,我可以使用ARM GDB(来自GNU ARM嵌入式工具链的arm-eabi-none-gdb)将我的elf文件加载到我的STM32L432上,然后在我的断点处,简单的“i lo”(或者检查等)就可以给我本地变量。然而,在Linux上,完全相同的代码会给我类似以下的东西:
cr1 = <error reading variable cr1 (Cannot access memory at address 0x2000fff4)>
有没有什么我应该做的不同来正确地映射内存?
编辑:今天我想重新开始,使用整个SRAM块(数据手册RM0394第63页)的内存转储,看看是否存在某些偏移量(也许是我不知道的某种内存别名),但即使是dump
命令也被阻止了:
(gdb) dump ihex memory result.bin 0x20000000 0x40000000
Cannot access memory at address 0x2000c000
这个问题在我的 Mac 上没有发生,我可以在示波器上看到我正在寻找的数据(没有什么比使用示波器调试软件更好的了),因此问题不在 SRAM 上,而是在 gdb
上。
对于投票关闭的人,你能具体说明这个问题为什么不相关吗?我正在使用 gdb
调试代码,并且几乎每个我提到的内容都有标签,这让我相信这是一个适当的提问地点。我不是在请求“调试帮助”,例如“帮助调试特定代码”,而是在请求帮助使用一种非常广泛使用的调试器来调试某些常见设备。
apt-get update && apt-get dist-upgrade
命令。 - jww