Retention_mem_area0中的变量

了解更多常见问题解答教程

6个帖子/ 0新
最后一篇
斯坦利_yeh.
离线
最后一次露面:1年8个月前
加入:2016-12-23 06:52
Retention_mem_area0中的变量

嗨,您好,
我声明了许多变量,例如以下示例......
静态UINT8_T测试__Attribute __((部分(“保留_mem_area0”),ZERO_INIT));

我的问题是......
1.在打印变量的地址后,它是0x7FD4804(在Sysram4 :)中。为什么?
2.为什么变量不存储在Sysram1中?
3.是否表示将在延长睡眠模式下清除变量?但是变量的值仍然是正确的,为什么?

4.此外,如果我想要保留一些“全局变量”或“函数静态变量”,则应添加这些变量“__Attribute __((”Retention_mem_area0“),Zero_Init)”描述,是真实的?

5.如果该区域已满,我该怎么知道?

6.如果我想给变量初始值,我可以写:“静态UINT8_T测试__Attribute __((部分(”保留_mem_area0“))))= 0xFF;”?

非常感谢。

关键词:
设备:
mhv_dialog.
离线
最后一次露面:1周5天前
员工
加入:2013-12-06 15:10
嗨,

嗨,

  1. Sysram 4是保留记忆区域0所在的位置
  2. 往上看
  3. Sysram4中的变量在睡眠期间保留
  4. 那是真实的
  5. 该项目未能链接
  6. 是的,这就是它的完成

/ mhv.

斯坦利_yeh.
离线
最后一次露面:1年8个月前
加入:2016-12-23 06:52
非常感谢!

非常感谢!

斯坦利_yeh.
离线
最后一次露面:1年8个月前
加入:2016-12-23 06:52
嗨mhv,

嗨mhv,
我发现项目6的问题。
如果我使用“静态Int8_t time_zone __Attribute __((部分(”Retention_mem_area0“)))= 0x08;”,Init值0x08将位于Bin文件的0x14404地址。
它会导致我的bin文件变得大尺寸(从30 kB - > 80 kB)。0x9EE0和0x14403之间有0xFF。
我无法理解,你有什么想法吗?
非常感谢。

mt_dialog.
离线
最后一次露面:2周3天前
员工
加入:2015-06-08 11:34
嗨斯坦利_yeh,

嗨斯坦利_yeh,

出于此的原因是,当您在保留存储区域中应用初始化值时,那就是保留存储区域远离实际代码作为地址,当您在保留区域中应用初始化变量时链接器无法正确处理它,并且生成的二进制文件在大地址中扩展(它将明确地硬码该特定存储器地址中变量的值以及直到该值的巨大填充)。作为周围的工作,可以将变量设置为零初始化,然后通过代码应用值。

谢谢mt_dialog.

斯坦利_yeh.
离线
最后一次露面:1年8个月前
加入:2016-12-23 06:52
非常感谢。:)

非常感谢。:)