I 'm listing map file as below:
————————
Load Region LR_RETENTION_RAM2 (Base: 0x00080768, Size: 0x00000000, Max: 0x00002898, ABSOLUTE)
Execution Region ZI_RET20 (Base: 0x00080768, Size: 0x00000a8c, Max:
0x00080768 0x0000040c Zero RW 541 heap_db_area jump_table. db_area
Base Addr Size Type Attr Idx E Section Name Object 0x00080768 0x0000040co
0x00080b74 0x00000154 0 RW 542 heap_env_area jump_table. o
0x00080b74 0x00000154 0 RW 542 heap_env_area jump_table. oo
0x00080cc8 0x0000052c Zero RW 544 heap_msg_area jump_table. o
0x00080cc8 0x0000052co
执行区域ZI_RET21 (Base: 0x00082a20, Size: 0x000005e0, Max: 0x000005e0, ABSOLUTE)
Base Addr Size Type Attr Idx E Section Name Object
0x00082a20 0x000005de Zero RW 287 BLE_exchange_memory arch_main. oo
————————
关于这个.map文件,0x82a20 - (0x80cc8 + 0x52c) = 0x182c (Bytes)似乎是空的。 So we can use this area freely.
> Question 1. Is it correct??
If question 1 is correct, we can use these area to book any variables as __attribute((section(“retention_mem_area0"),zero_init)). There are two places where retention_mem_area0 is defined in Scatter file. (When ext-sleep usage) And if first place(0x20008000) for retention_mem_area0 is not enough to allocate retentioned variables, those variables will be allocated to second place(0x80768-).
> Question 2. Is it correct?? (Actually, I tested and it seems to work…)
I could move some variables from 0x200000000 area to 0x80000 area, but I couldn’t move code like function() in some_file.c by just adding "some_file.o" to LR_RETENTION_RAM2 region. I got error while writing code to Flash Memory via SmartSnipetts… Is it proper behavior? I think this is proper because I had not defined "some_file.o" to scatter_file as “Executed Region”.
> Question 3. Is it possible to move function/codes (not variables) to this free Retention area (0x811f4 - 0x82a20) editing scatter file like Executed Region or something else??
If I could have any comment on this, it would be much appreciated.
Thank you very much for your supports in advance.
Best Regards,
CD