4个帖子/ 0新
最后一篇
young_dialog
离线
最后一次露面:4年1个月前
加入:2016年5月10日07:14
系统SRAM与SRAM滞留问题

在我的工程里,主要程序逻辑是:ADC采集完数据后经过一个算法函数处理,然后将数据发送给手机(当然是连接上之后),算法函数算法()会占用大量的系统SRAM,具体数量不知,因为要发送的数据量比较大,算下来大概1KBytes /秒,所以又加了一个缓冲器(大小1000bytes)用于缓存数据以免数据丢失,问题就出在添加缓冲液的时候,当缓冲放于系统SRAM即定义为普通的uint8_t变量时,发现连接之后数据怎么也发不出来,怀疑是系统SRAM空间不够了,所以试着将缓冲放于保持SRAM即定义为__attribute __((部分( “retention_mem_area0”),zero_init))的变量时,发现连接之后可以发送数据但是部分数据被修改了,但是当注释掉算法函数算法()的时候,数据发送恢复正常,我奇怪的是算法()的SRAM空间位于系统区域,而缓冲的SRAM空间位于保留区域,理论上不会相互影响才对,而且算法函数算法()本身不会对数据产生任何影响即不会改变数据内容,可现在的情况确实是改变了!
接着又做了另一个试验,将缓冲缩小到500bytes,存储空间仍然是保持SRAM,问题不再出现。

这是什么原因?是两块SRAM之间的串扰还是其它什么原因?还有怎么看分别用掉了多少系统SRAM和保留SRAM?谢谢

年轻

设备:
Gongyu_dialog.
离线
最后一次露面:21小时56分钟前
加入:2016-04-27 07:07
不知道里面有没有涉及动态分配,580现在采用case23

不知道里面有没有涉及动态分配,580现在采用case23的存储器分配模式,详见附件。也可以查看散射文件,在\ DA1458X_SDK_5.0.3 \ 5.0.3 \ SDK \ common_project_files \ scatterfiles里面。

RAM的分配结果,可以查看地图文件,可以确认一下你提到冲突的两块区域是否相邻。

young_dialog
离线
最后一次露面:4年1个月前
加入:2016年5月10日07:14
好的,谢谢了。

好的,谢谢了。

我想知道怎么实现一个连接间隔发三包数据,BLE最多可以支持一个连接间隔六包数据。谢谢

年轻

Gongyu_dialog.
离线
最后一次露面:21小时56分钟前
加入:2016-04-27 07:07
一般580是作为从属

一般580是作为从设备,那么只能由手机那里的发包速度来决定。