Topic

FAQ
Login Register
请问当出现"Retention Area Overflow, Check your data/bss usages"通常是因为什么原因导致的,如何解决?
Oct 17, 2022 16:54

/

A

/A






TL_Soyo Oct 18, 2022 09:42
0
/A

你好,用的什么协议栈,错误是sram在睡眠时需要保存的数据超了,参考对应协议栈的handbook把sram retention的大小改大。

9 replies
TL_Soyo Oct 18, 2022 09:42
0
/A

你好,用的什么协议栈,错误是sram在睡眠时需要保存的数据超了,参考对应协议栈的handbook把sram retention的大小改大。

TL_Soyo Oct 19, 2022 09:46
0
/A

缓存数组是怎么修饰的呢,有没有加什么前缀,如果不需要改变值,用const。

TL_Soyo Oct 19, 2022 15:08
0
/A

是超sram的大小了,是否还有其他大数组呢,我测试在mesh_lpn工程下,定义u8 OLED_GRAM[144][65];这么大的数组才会超。还有能贴下编译bin文件夹的 工程名.lst文件的这部分吗?你可以看看你编译.bss段的大小

Sections:
Idx Name Size VMA LMA File off Algn
0 .vectors 00000210 00000000 00000000 00008000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .ram_code 00002b04 00000210 00000210 00008210 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .text 0001724c 00002d20 00002d20 0000ad20 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .rodata 000018e4 00019f6c 00019f6c 00021f6c 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .data 0000022c 00843700 0001b850 0002b700 2**2
CONTENTS, ALLOC, LOAD, DATA
5 .bss 00004540 00843930 0001ba80 0002b930 2**4
ALLOC
6 .retention_bss 00000014 00847e70 0001ba7c 0002fe70 2**2
ALLOC
7 .TC32.attributes 00000010 00000000 00000000 0002b92c 2**0
CONTENTS, READONLY
8 .comment 0000001a 00000000 00000000 0002b93c 2**0
CONTENTS, READONLY
SYMBOL TABLE:

TL_Soyo Oct 21, 2022 10:52
0
/A

数据自动放到retention区域了,在数据定义前缀加上_attribute_no_retention_data_或_attribute_no_retention_bss_就可以,但是休眠唤醒后数据会丢失,所以看看有啥不需要保存的数据都加上前缀,检查bss段的Size小于0x8000(32K)。