我正在使用带CCS 10.3 .1.0.0003万 的simplelink_cc13x2_26x2_4_20_01_04。
我使用的是传统的TI编译器(而不是iclang)。
我使用的是自定义硬件,无法在LaunchPad上测试代码。
我的项目基于simple_peripheral_oad_offchip示例。
我从 iPhone/iOS应用程序连接到设备时,'AssertHandler()'偶尔会挂起。 故障很少发生,很难重现。 在我尝试连接到设备的次数中,这种情况可能只有1/50次。 (但是,当 我向重要的人演示时,这种情况确实会发生)。
我只看到AssertHandler()在连接时挂起。 连接设备后,我从未见过此断言。
我在AssertHandler()中输入了一个b/p,并且能够跟踪对SimplePeripheral_processStackMsg()函数的调用AssertHandler。
根据代码示例和其他论坛帖子的建议,我在下面添加了硬代码,尝试收集有关错误的其他信息。 我还将对AssertHandler()的调用替换为我的自定义'sm_abort()函数,该函数将记录致命错误(带有时间戳)并刷新,以便我们可以对任何致命错误进行事后分析。 sm_abort()记录要刷新的字符串,然后重新引导设备。 当设备运行时,我们可以将这些错误字符串发送到移动电话以帮助调试。
错误日志中的消息为:
2022年04月12日 14:19:25-07:00:事件(05)中止:BLE ERR:0x81,(0x91,0x10)
有人能帮我解码此错误吗? 什么是0x81? 而0x91和0x10又如何呢? 我希望这些错误ID能让我了解一些事情。
请注意,我在下面附加了一些屏幕截图,其中显示了任务堆栈(一切看起来都正常)以及各种memmgr变量的值。 我的堆看起来不是太小。
非常感谢您的任何提示!
谢谢!
卡尔-
case HCI_BLE_HARDWARE_ERROR_EVENT_CODE: { char abortBuf[32]; /* * According to this forum page, '81' indicates a memory allocation error. * e2e.ti.com/.../cc2640r2f-hal_assert_cause_hardware_error */ hciEvt_HardwareError_t *hardCode = (hciEvt_HardwareError_t *)pMsg; System_snprintf(abortBuf, 32, "BLE ERR: 0x%x, (0x%x, 0x%x)", hardCode->hardwareCode, hardCode->hdr.event, hardCode->hdr.status); SM_abort(abortBuf); break; }
一