尝试将开发切换到 Linux,但遇到了一个(可能是简单的新手)问题。在我的 Mac 上,我可以使用 ARM GDB (arm-eabi-none-gdb
从 GNU ARM 嵌入式工具链)加载我的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
我提到的几乎所有内容都有标签,这让我相信这是一个适合提问的地方。我并不是在请求“调试帮助”,就像“帮助调试特定代码”一样,我是在请求在一些常见设备上使用非常广泛使用的调试器的帮助。
对于将来遇到此问题的任何人(sc.我自己),问题是 gdb 没有跟踪包括我的 SRAM 的内存区域(viz.0x2000c000 至 0x40000000)。解决方法是手动设置内存区域。
Before:
(gdb) info mem
Using memory regions provided by the target.
Num Enb Low Addr High Addr Attrs
0 y 0x00000000 0x00040000 ro nocache
1 y 0x08000000 0x08040000 flash blocksize 0x800 nocache
2 y 0x1fff0000 0x1fff7000 ro nocache
3 y 0x1ffff800 0x1ffff810 ro nocache
4 y 0x20000000 0x2000c000 rw nocache
5 y 0x40000000 0x5fffffff rw nocache
6 y 0xe0000000 0xffffffff rw nocache
After:
(gdb) mem 0x2000c000 0x40000000 32 rw
(gdb) info mem
Using user-defined memory regions.
Num Enb Low Addr High Addr Attrs
0 y 0x00000000 0x00040000 ro nocache
1 y 0x08000000 0x08040000 flash blocksize 0x800 nocache
2 y 0x1fff0000 0x1fff7000 ro nocache
3 y 0x1ffff800 0x1ffff810 ro nocache
4 y 0x20000000 0x2000c000 rw nocache
1 y 0x2000c000 0x40000000 rw 32 nocache
5 y 0x40000000 0x5fffffff rw nocache
6 y 0xe0000000 0xffffffff rw nocache
(gdb) x/x cr1
0x36c: 0x60f8af00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)