1

我希望特定 .c 文件中的变量应该存储在特定的 RAM 位置,我该如何实现这一点。我正在为 ARM 使用 IAR IDE。

我想这样做的原因是当编译器将变量存储在 ARM 内核的位带 SRAM 区域中时,它们无法正确读取。如果我注释某些代码部分,则编译器将它们存储在非位带 SRAM 区域中,然后观察到正确的结果.

4

1 回答 1

2

使用 EWARM,您可以使用几种方法放置变量。您可以使用 放置在特定地址@。来自IAR 的支持网站

const char RELEASEDATE[16] @ 0x0000FF10 = __DATE__ ;
const char RELEASETIME[16] @ 0x0000FF20 = __TIME__ ;

或者,您可以使用 location pragma 在一个部分(听起来像您想要的)中定位变量。来自同一来源:

#pragma location = "ConstSection1"
__root const char RELEASEDATE[16] = __DATE__ ;
#pragma location = "ConstSection2"
__root const char RELEASETIME[16] = __TIME__ ;

在您的链接器文件 ( .icf) 中,您将拥有:

place at address mem: 0x0000FF10    { readonly section ConstSection1 };
place at address mem: 0x0000FF20    { readonly section ConstSection2 };

我更喜欢 ,#pragma因为@操作员看起来不合适。此外,阅读代码的人期望#pragma是特定于编译器的东西,而@将自己隐藏在代码中并且不会脱颖而出。

于 2013-10-28T06:19:13.683 回答