gpt4 book ai didi

c - ARM Cortex M4 和 C,如何为特定的 c 文件指定 RAM 部分

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:38 24 4
gpt4 key购买 nike

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

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

最佳答案

使用 EWARM,您可以使用几种方法放置变量。您可以使用 @ 放置在特定地址。来自 IAR's support site :

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 是特定于编译器的东西,而 @ 将自己隐藏在代码中并且不会突出显示。

关于c - ARM Cortex M4 和 C,如何为特定的 c 文件指定 RAM 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19627992/

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