This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2650:'未找到 Attribute;#39;发现特征时

Guru**** 2609955 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/844079/cc2650-attribute-not-found-when-discovering-characteristics

器件型号:CC2650

您好!  

有时、我会进入移动设备(iOS 或 Android)无法发现我的特征的状态。 一旦处于此状态、除非 TI CC2650复位、否则任何移动设备都无法持续发现特征。 重置 TI 可解决此问题、器件能够再次发现我的特征。  

我想了解这种状态下正在发生的情况以及从 CC2650的角度来看、这种情况是如何实现的。

我在此应用中使用2.2.1 TI 堆栈、最大 PDU 大小为255、MAX_NUM_PDU 大小为5。 使用 BLE 监听器、我发现当移动应用尝试发现服务时、我收到"资源不足"响应。  

根据此主题中给出的建议 :https://e2e.ti.com/support/wirelessconnectivity/bluetooth/f/538/t/794010tisearch=e2equicksearch&keymatch=services%20cannot%20be%20discovered#pi320995filter=all&pi320995scroll=false,我将 MAX_NUM_PDU 减少为1,并使用 iCall_getHeapMgranityCheck()来查看我是否正在内存不足。

此新配置中的 BLE 监听器输出为我提供了"未找到属性"响应:

在达到此状态前后、在主应用程序函数中定期调用 iCall_getHeapMgranityCheck()、并指示 OSAL 堆在整个时间内"有效"。

非常感谢您提出任何建议或执行调试步骤。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Erik、

    指派专家进行评论。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Erik、

    发生这种情况时、CC2650上同时存在多少个活动连接?

    从您的日志中、似乎使用了句柄0x0001、但对于单个连接、我希望它为0?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉,我的错。 看不到它是属性句柄。

    您是否分析过堆栈峰值?

    是否可以尝试将 MAX_PDU_SIZE 设置为251?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Erik 的回复。

    下面附加了已分析的堆栈峰值。

    初始化时:

    在每次 BLE 操作(连接、数据交换、断开连接)后:

    CC2650处于该特定状态后、堆栈峰值看起来与上图相同(BLE 操作)。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SimpleBLEPeripheral_taskFxn 堆栈溢出可能导致所有类型的未定义行为。 尝试增加堆栈大小、或者如果需要、减少使用堆栈的任务函数内的大型变量。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当前增加堆栈大小并重新测试、以查看是否能够再次达到此状态。 谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    就像后续行动一样:下面是将 PDU 更改为251的结果:

    增大 STACKSIZE 可以解决堆栈溢出问题、我将重构 simplePeripheralTask 以减少堆栈使用。 谢谢!