首页 > 解决方案 > 当我访问微控制器中的内存值时,为什么它指向我的数据值的末尾?

问题描述

我试图在我的微控制器的内存地址中获取值。地址在0x1fff7000,这是内存块的开始(所以之前的任何东西都是未定义的)。在我的代码中,我有char *ptr = (char *)BASE_ADDR;where #define BASE_ADDR ((uint32_t)0x1FFF7000)。我的价值0x1FFF70000x12345678,而且我 100% 知道它就在那里。

在 GDB 中,我正在做(gdb) p/x *ptr,我的返回值为$6 = 0x78. 为什么它在0x78而不是返回0x12345678甚至0x12

标签: cmemorymemory-leaksmicrocontrollerstm32

解决方案


因为您有一个 little-endian system/mcu,这意味着首先存储最低有效字节。在您的示例中0x12345678,存储为 32 位整数的 将看起来像78 56 34 12内存中的原始数据。


推荐阅读