强制Const数据保存在RAM而非ROM中



是否可以强制将常量值保存在嵌入式设备上的RAM而不是ROM中,而不是向编译器提出建议。我想保持从RAM读取的速度,但要确保值不会在代码中的某个位置更改?

您可以强制变量位于数据段(或任何位置(,并告诉编译器它不会被修改:

const int variable __attribute__((section(".data")));

表示节的方式取决于编译器,但通常__attribute__是有效的方法。

要知道你想要的部分,请检查你的启动代码,在那里你会看到它们的地址和大小(或检查链接器(。

在Arduino上,它们将被放置在RAM中。问题是访问FLASH,这需要特定的操作,因为AVR uC具有分离的地址空间。

如果没有像gcc命名地址空间或PROGMEM这样的特殊编译器扩展,你就无法访问FLASH中的数据。

因此,所有const数据都将被放入RAM中。你什么都不需要做。


如果您决定从FLASH 访问它们,则需要采取措施

最新更新