如何保护RAM单元不被使用

时间:2016-07-31 07:34:33

标签: c gcc arm gnu

我使用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... */
}

0 个答案:

没有答案