使用保留RAM区域

7个帖子/ 0新
最后一篇
光盘
离线
最后一次露面:4年2天前
加入:2015-11-18 02:51
使用保留RAM区域

大家好,

请让我询问关于“保留RAM”和“SYSRAM(PACE0,1)”的用法的问题。
我们正在努力收缩代码大小。(RAM区域(代码)小于我们的想法......)
我已经阅读了UM-B-011文档,但我仍然无法置信使用这些区域。

=我的条件=
- 使用延长睡眠
- ble_connection_max_user = 1

=我的理解=
关于UM-B-011,ATT的大小,ENV和MSG堆是:
ATT 1036字节
env 360字节
msg 1324字节
这些堆被分配给lr_retention_ram2,具体取决于分散文件。
(我还检查了真实的地图文件。)
和“Arch_Main.o(ble_exchange_memory)”也被分配给LR_Retention_Ram2区域。

我列出了地图文件作为下文:
--------
加载区域LR_Retention_RAM2(基数:0x00080768,尺寸:0x00000000,MAX:0x00002898,绝对)

执行区域zi_ret20(基数:0x00080768,大小:0x00000a8c,max:0x000022b8,绝对,uninit)

基础Addr大小类型attr idx e section name对象

0x00080768 0x0000040c zer rw 541 heap_db_area jump_table.o
0x00080b74 0x00000154 zer rw 542 heap_env_area jump_table.o
0x00080cc8 0x0000052c zer rw 544 heap_msg_area jump_table.o

执行区域zi_ret21(base:0x00082a20,大小:0x000005e0,max:0x000005e0,绝对)

基础Addr大小类型attr idx e section name对象

0x00082A20 0x000005de Zero RW 287 BLE_EXCHANGE_MEMORY ARCH_MAIN.O
--------
关于这个.map文件,0x82a20 - (0x80cc8 + 0x52c)= 0x182c(bytes)似乎是空的。所以我们可以自由地使用这一区域。
>问题1.它是否正确?

如果问题1是正确的,我们可以使用这些区域将任何变量预订为__attribute((部分(“Retention_mem_area0”),zero_init))。分散文件中定义了保留_mem_area0的两个位置。(当Ext-睡眠用法时)如果保留的第一名(0x20008000)是不足以分配保留变量,那么这些变量将被分配给第二位置(0x80768-)。
>问题2.是否正确?(实际上,我测试了,似乎工作......)

我可以将一些变量从0x200000000区域移动到0x80000区域,但是只需将“some_file.o”添加到lr_retention_ram2区域,我无法在you_file.c中移动代码等函数()。通过smartsnipetts写入闪存的代码,我出错了......它是正确的吗?我认为这是合适的,因为我没有定义“某些_file.o”以将散射为“执行的区域”。
>问题3.是否可以将函数/代码(不变量)移动到此游离保留区域(0x811f4 - 0x82a20)编辑散点图,如执行的区域或其他东西?

如果我对此有任何评论,那就非常感谢。
非常感谢您的支持。

此致,
光盘

设备:
mt_dialog.
离线
最后一次露面:4个月6天前
职员
加入:2015-06-08 11:34
嗨CD,

嗨CD,

是的,您可以使用该区域将数据放在内部。是,当你在延长睡眠时,Sysram不会关闭,因此在使用__Attribute时保留所有Sysram((第(章节(“保留_MEM_AREA0”),ZERO_INIT))如果您的保留已满,则将额外的变量放在sysram中,每当你在actionfile中指示,以将变量与特定属性(Retention_mem_area0)放置在一起。我想你经过智能片段工具的经验是正确的。为了将功能从Sysram移动到保留RAM(例如0x80000区域)您必须在AllReady现有负载区域中排名在0x80000中的新执行区域。

谢谢mt_dialog.

光盘
离线
最后一次露面:4年2天前
加入:2015-11-18 02:51
嗨mt_dialog,

嗨mt_dialog,

非常感谢你的回复。
我可以理解我们可以使用此保留区域进行数据。实际上,它很好。
“将数据从Sysram移动到保留RAM”显然我认为,使0x20000000的内存区域获得更多的房间到代码。(因为除堆叠和堆之外,我们不会使用0x80000区域。当然,总体大小几乎相同,但...)
- 这是正确的吗?(现在我对DA14583的代码大小限制有问题....我正在寻找警惕以减少/制作代码的房间。即使我将数据移动到Ret.ram区域,大小0x20000000地区不会让房间......我以这种方式假设为0x20000000的房间进行编码。)

关于执行区域(ER),我仍然来自SmartSnippets的错误....

从文件BLE_APP_BAREBONE_580.HEX中读取0个字节。已忽略15684个字节,因为它们的记录地址大于或等于0x80000。

我只是在测试BareBone示例上将“user_barebone.o”移动到保留区域。我尝试将SDK标准分散文件“ScitsFile_Common.sct”更改为类似附件。但我无法做到。我的分散文件有什么问题?(样本散射文件是一个复杂的小位,但我修改了它引用了辅助引导加载程序示例中的bootloader.sct,我希望它能够工作....但它尚不起作用。)

如果有人可以建议我,那就得到了很多欣赏。

此致,
光盘

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
嗨,你解决了这个吗?

嗨,你解决了这个问题吗?我与你的问题相同,你可以分享你的解决方案吗?

mt_dialog.
离线
最后一次露面:4个月6天前
职员
加入:2015-06-08 11:34
嗨CD,

嗨CD,

对话框的当地会员将与您联系以获取更多详细信息。

谢谢mt_dialog.

盲文
离线
最后一次露面:2年6个月前
加入:2016-07-29 10:01
嗨,对话,我也遇到了这个

嗨,对话框,我也遇到了这个问题。我的应用程序受代码大小的限制。我也希望将一些函数放在lr_retention_ram2。你能告诉我一个例子吗?谢谢。

mt_dialog.
离线
最后一次露面:4个月6天前
职员
加入:2015-06-08 11:34
嗨caiziee,

嗨caiziee,

如您的其他帖子中所述,我们将直接与您联系,因为没有一个超过32KB的代码,您可以使用与keil的评估版本编译。

谢谢mt_dialog.