Other Parts Discussed in Thread: CC2745R10-Q1
器件型号: CC2745R10-Q1
尊敬的 TI 团队:
器件:CC2745R10-Q1
SDK:SimpleLink 低功耗 F3 SDK 9.14.00.xx (BLE5-Stack)
问题描述
我们观察到、BLE 连接始终如一 GATT 超时 (原因 0x08 或 0x13 ) 单路 从中央设备进行 GATT 写入。
出现问题 系统 我们会将写入事件转发到 FreeRTOS 队列。 如果我们避免发送到队列、则连接保持稳定。
有效载荷大小无关紧要(1 字节、40 字节等)、并且不会重复或垃圾处理写入。
事件流程
-
手机写入特性
-
BLE2Service_writeAttrCB()→调用BLE2Service_callback(paramID) -
BLE2Service_callback()执行:-
ICall_malloc() -
BleAppUtil_invokeFunction()
-
-
BleAppUtil 任务环境运行→
BLE2Service_invokeFromFWContext()→派单以注册的变更回调 -
在我们的变更回调
BLEService2_changeCB() 中、我们目前执行以下操作:
memcpy();
xQueueSendToBack(myQueue, &msg, 0);
xQueueSendToBack()始终返回pdPASS。
观察
即使队列发送是立即的、调用的回调内部花费的总时间仍然是几毫秒(由于 malloc、memcpy 和调试日志记录)。
我们现在明白这个回调是在中执行的 时间关键型 BleAppUtil 上下文 、且此处的任何延迟似乎会干扰 BLE 堆栈计时、从而导致对等设备与 GATT 超时断开。
问题
当需要进行内存分配/记录/解析时、当前官方建议使用哪种方法 (2025、BLE5-Stack 9.x) 将 GATT 写入事件(或者只是 paramID)从写入回调安全转发到我自己的 FreeRTOS 应用任务?
对于生产/Q1 项目、我只需要在 CC2745R10-Q1 上准确检测到 100%安全的几条线路。
谢谢!
此致、
教区 Jain