4个职位/ 0个新职位
最后发表
young_dialog
离线
最后看到:4年1个月前
加入:2016-05-10 07:14
系统存储器与保留SRAM问题

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

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

年轻的

设备:
Gongyu_Dialog
离线
最后看到:1天2小时前
加入: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-05-10 07:14
好的,谢谢了。

好的,谢谢了。

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

年轻的

Gongyu_Dialog
离线
最后看到:1天2小时前
加入:2016-04-27 07:07
一般580是作为奴隶

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