gpt4 book ai didi

c - ARM GDB 无法仅在 Linux 上访问内存

转载 作者:太空狗 更新时间:2023-10-29 11:20:55 24 4
gpt4 key购买 nike

尝试将开发切换到 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 block 的内存转储(数据表 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)。解决方法是手动设置内存区域。

之前:

(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

之后:

(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

关于c - ARM GDB 无法仅在 Linux 上访问内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51623111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com