您好!
我将在我们的定制板上使用 LSR CC2640模块以及 BLE SDK 2.2.1。 该项目基于来自 TI GitHub 库的最新多角色示例项目。 一切运行正常、只是系统在随机一段时间后随着 BLE 广播停止。 当调试并通过 JTAG 连接时、这个问题似乎不会出现(或者需要更长的时间)。
可发现 模式设置为常规、 以无限期启用广播。 应用任务使用 UART 控制2G/GPRS 模块、并每30秒将数据发布到互联网。 通过 UART 的所有控制调用均为非阻塞调用。 我们在回调模式下使用 UART。 此周期性处理由发布应用事件的 RTOS 计时器调度。 此周期性过程的每个步骤都异步执行、以确保应用任务不会占用 RTOS 系统的大量时间。 由于我们必须等待通过 UART 传输的2G 模块的结果、因此我们每一步都将相同的 RTOS 计时器重新安排在很短的时间内。 完成后、它会将计时器安排在接下来的30秒内重新开始计时。 此过程稳定运行、不会停止。
此测试期间不会建立 BLE 连接、BLE 广播停止后应用任务保持运行。 AL 任务保持在其堆栈大小定义的范围内、对于最大堆大小也是如此。 不会发生异常。
步态任务的堆栈大小增加到512 (对于多角色而言、默认大小似乎太潮)、应用程序任务大小为1104。
如果发生事件 GAP_END_DISCOVERATed_DONE_EVENT、则会再次启用广播。 当建立或终止外部 BLE 连接(但在测试中未建立外部 BLE 连接)时也是如此。
我们已经对系统进行了很长时间的测试、除广播部分外、所有器件都运行稳定。 即使我们定期检查是否启用了广播、如果不启用广播、它也会再次启用、但它仍会在一段时间后停止。
是否有人知道为什么会出现此问题以及我们可以检查哪些选项来解决此问题?
感谢您的帮助。
Peter