指针声明(非易失性存储器)初始化(易失性存储器)

Pointer declaration (non-volatile memory) initialization (volatile memory)

考虑具有以下数据成员的结构:

struct Data
{
   unsigned int  count;
   const char   *Name;
};

稍后在代码中创建类型为 struct Data 的变量:

PERSISTENT(struct Data log);

其中 PERSISTENT() 将变量映射到电池供电的 SRAM 存储器 space。

后面在代码中给Name赋值时(log.Name = "Sensor1";),字符串"Sensor1"存放在哪里。据我了解,指针 Name 存储在电池供电的 SRAM 中,但它指向的字符串是否存储在 MCU 内存中?如果是这种情况,如果 MCU 重新启动,字符串会丢失,但指针(存储在电池供电的 SRAM 中)仍然指向现在为空的地址。会是这样吗?

此代码在 ARM7 微控制器(具体为 LPC2368)上 运行。

字符串文字将存储在.rodata段所在的FLASH内存中。