如何将结构数组放置在 RAM 中的特定位置,例如 STM32F4 MCU 中的备份 RAM?

How to place an array of struct at specific location in RAM such as backup RAM in STM32F4 MCUs?

我正在尝试在 STM32F4 MCU 的备份 RAM 中存储一个数组,因此内容可以在系统电源循环(例如由看门狗引起的重启)中保存下来。

typedef struct {
  //
} Foo;

Foo foos[40];

有没有办法确保 foos 指向备份 RAM 的开始(BKPSRAM_BASE)?

提前致谢。

编辑您的链接描述文件并添加将在您的备份 RAM 中的部分。

到内存段:

MEMORY
{
    /* other segments */
    BKPRAM (rw)       : ORIGIN = 0x40024000, LENGTH = 4k
}

添加部分

  .bkpram :
  {
    _BKPRAM_START = .;
    . = ALIGN(4);
    KEEP(*(.bkpram)) 
    _BKPRAM_END = .;
  } >BKPRAM

然后:

__attribute__((section(".bkpram"))) Foo foos[40];

但请记住,必须先启用对此 SRAM 的访问。