工程师们,你们好,
请问下CC2640R2F在使用官方例程rtos中的simple_central和simple_peripheral后,可供开发人员使用的内存还有多少呢?
有没有参考的文档?
我发现我在给我自己创建的任务栈增加大小时,会导致主从机连接不上,或者工作一段时间死机或消息处理变慢,这也是内存导致的吗?
Viki Shi:
有可能是内存导致的。内存使用情况请查看map文件,build project以后会在workspace里生成该文件
GuppyCat:
回复 Viki Shi:
您好,我这几天查看了协议栈的文档,并查看了map文件以及.cmd文件,目前编译完成后map文件如图所示:
我确认了我的参数配置,并移除了多余的特征值,目前只保留了一个服务及其支持的一个特征值,由于网上教程上说明CCC值由主机来写会较为安全,所以在连接后向从机写入CCC,主机在申请写入值空间时失败,也就是这个部分返回了NULL,
req.pValue = GATT_bm_alloc(scConnHandle, ATT_WRITE_REQ, 2, NULL);从上面的内存空间上来看的话,那么多的剩余空间不可能连两个字节都拿不出来啊,请您帮忙分析一下,谢谢!
另外一个问题是这个map文件输出的信息是否和运行时不同?
GuppyCat:
回复 Viki Shi:
您好,能再帮忙看一下我这个问题吗?拜托啦!
Viki Shi:
回复 GuppyCat:
跟运行时不同,但是map文件显示的是内存占用峰值
“我发现我在给我自己创建的任务栈增加大小时,会导致主从机连接不上” 请问加大多少出现此情况?增加heap size的方法请看这边:dev.ti.com/…/memory_management.html
GuppyCat:
回复 Viki Shi:
您好,增加了约有2.2K左右,我该怎么修改呢?刚才尝试了在.cmd文件中修改,将那个保留空间改成了0,但是还是不行,是改错了吗?
如果我这个增加的空间不够,可以按照您提供的链接直接把cache打开当RAM吗?我使用的是ble5.0版本
GuppyCat:
回复 Viki Shi:
您好,我这边已经将这个CACHE_AS_RAM修改完成了,现在出现了以上问题,在红色框标出的一段时间内,我的定时事件基本是不工作的,也就是不工作了,这段事件是去确认连接了更新参数了吗?如果要是确认连接和更新参数,我怎样才能在不影响当前效率的情况下,让这两个确认连接和更新参数的时间间隔变长呢?
我阅读了协议里面的内容,也根据协议自行修改了一下,目前情况如下:
主机最小连接间隔7.5ms,最大连接间隔50ms,从机默认更新延迟 0,默认更新连接超时事件 500ms
从机最小连接间隔7.5ms,最大连接间隔12.5ms ,从机默认脱离延迟 0,默认更新连接超时事件 130ms
以上参数会出现上图所示情况;
(这些参数会导致死机情况吗?我调节这几个参数的时候出现了死机)
Viki Shi:
回复 GuppyCat:
这个测的是吞吐量的还是simple_central和simple_peripheral?
GuppyCat:
回复 Viki Shi:
您好,我这边项目已经差不多了,速率十几KB,就是simple_central和simple_peripheral的通讯,主要的一个目的是串口的透传,如果您收到此条消息,而且关于这个速率能否再有提升的话请回复我一下,芯片是CC2640R2F,谢谢!
如果换成SPI的话效果能有进一步的提升吗?
在官方文档中看到SPI支持μDMA,然后里面有说串口的DMA驱动没有写,能把这个DMA给到串口使用吗?
simple_peripheral上发会比较快,但是simple_central下发会比较慢,这个是从机延迟导致的吗?
Viki Shi:
回复 GuppyCat:
理论上SPI的速度可以更高,SPI+DMA是支持的,参考SDK里的_u_d_m_a_c_c26_x_x_8h,_s_p_i_c_c26_x_x_d_m_a_8h文件