我使用GNU for ARM,并希望在RAM内存空间中定义一些单元格如下:
#define FOO_LOCATION 0x20000000
#define foo (*((volatile uint32_t *) FOO_LOCATION ))
我的问题是 - 如果这样的声明会禁止在堆栈或堆中使用FOO_LOCATION
地址的单元格?为了避免内存碎片,优先使用哪个地址?
更新
我想在某个内存地址放置一些变量,并在看门狗复位后访问它。我想如果我会像往常一样宣布它
uint32_t foo;
重置后会有另一个物理位置。另外我读了一个post,其中说很可能没有这种方式来声明变量adddress。我有理由告诉GNU不要使用一些内存地址。例如,自定义变量不使用特殊寄存器。
更新2
除了之前的定义,我还在链接描述文件中添加了部分
SECTIONS
{
. = 0x20000000
.fooSection :
{
*(.fooSection)
. = 0x04 /* size = 4 bytes */
}
/* other placements follow here... */
}