Part Number:CC2340R5
Hi,
改用改用8.40版本后,CC2340R5接收200多条手表通知后,就再也接收不到手表的心率通知,怀疑是内存泄露触发了BLE STACK异常。在case ATT_HANDLE_VALUE_NOTI:语句中增加GATT_bm_free((gattMsg_t*)pMsgData, ATT_HANDLE_VALUE_NOTI);后,有时CC2340接收200多条手表心率通知后就再也接收不到了,有时CC2340接收手表1000多条的心率通知后仍可继续接收。可以推测接收异常跟内存泄露有关。在BLEAppUtil_Task中,调用BLEAppUtil_processStackEvents(stackMsg->pMessage, stackMsg->eventAndHandlerType);后,有做内存释放 BLEAppUtil_free(stackMsg);,照理不用再在case ATT_HANDLE_VALUE_NOTI:语句中增加内存释放GATT_bm_free((gattMsg_t*)pMsgData, ATT_HANDLE_VALUE_NOTI);,比较迷惑。BLE Stack的内存处理有文档介绍吗?有的话,请提供下。
Vivian Gao:
已经收到了您的案例,调查需要些时间,感谢您的耐心等待
,
Vivian Gao:
我为延误表示歉意。您能否澄清一下,自您上次回复以来,该问题的最新状态是否发生了变化?
,
ke liu:
增加了内存释放后,有时能接收手表1000多次以上的心率通知后,仍能继续接收,没有继续长时间测试观察。有时又只能接收200多次心率通知,就无法接收了。想请你们提供关于内存释放的策略。顺便问下TI有Central读写数据的例子吗?我看例子都是peripheral的
,
ke liu:
也许有主机端的例子,就知道怎么做内存释放了
,
Vivian Gao:
你说的内存释放是指节省内存吗?如果是这样,那么在项目属性的优化部分中启用链路时间优化(LTO)应该可以节省一些额外的内存。我们在GitHub上确实有一个GATT客户端示例,这可能会有所帮助:
https://github.com/TexasInstruments-Sandbox/ble_examples/tree/simplelink_low_power_f3_sdk-7.40.03/examples/rtos/LP_EM_CC2340R5/ble5stack/basic_ble_GATT_client
,
ke liu:
好的,谢谢!
TI中文支持网




